+1

Tìm hiểu về Selendroid (Phần 2)

Phần một của bài viết về Selendroid đã giới thiệu tổng quan và hướng dẫn cài đặt Selendroid, dưới đây là phần 2 sẽ tiếp tục hướng chi tiết từng bước để kiểm thử một ứng dụng andorid bằng Selendroid Giả sử rằng bạn có một file APK cần test có tên là Guru99App. Ứng dụng Guru99App cần test có một text field và một button tên là Show Text như hình dưới:

Giả sử chúng ta cần execute các Test Case sau với Selendroid:

Bước 1. Tạo một Java project trên Eclipse

Mở Eclipse => File => new project => Nhập tên project là Guru99test

Bước 2. Add selenium và Selendroid jar file

2.1.

Right click Guru99Test Project -> Build Path -> Add External Archives

2.2.

Folder lưu jar file hiện ra, add vào các file sau:

  • selendroid-client-0.10.0.jar : Selendroid java client library
  • selendroid-standalone-0.11.0-with-dependencies :Selendroid standalone server library
  • selenium-java-2.40.0.jar : Selenium Web Driver library

Bước 3. Tạo package

3.1.

Right Click Guru99Test -> New -> Package

3.2.

Nhập tên package là com.guru.test sau đó click Finish

3.3.

Cấu trúc thư mục trong Project sẽ như sau:

Bước 4: Install TestNG

Trong Eclipse mở mục Help -> Install New Software -> click Add và nhập text như sau:

Bước 5: Copy Guru99App.apk vào project

Bước 6: Lấy ID của file APK

6.1. Chạy dòng command dưới dây 6.2. Mở link: http://localhost:4444/wd/hub/status. 6.3. Copy appID như hình dưới:

Bước 7: Nhập appID

Việc cung cấp appID giúp tạo một test session với Selendroid. Nếu không set giá trị này hoặc giá trị này không mapping với Adroid device, test session sẽ bị lỗi hoặc không thể khởi động Sau khi tìm được device, Selendroid tạo một customized selendroid-server và cài đặt server trên device Sau khi xác định được test session, test command được khởi động và execute trên device

Bước 8: Khởi động Test session

Launch Selendroid server sử dụng câu lệnh như ở bước 6: Mở file Guru99Test.java sau đó double click vào line 77: Start session bằng cách nháy phải vào Guru99Test project -> Debug As -> Testng Test. Một test session sẽ như sau:

Bước 9: Lấy ID của element

Sau khi khởi động test session thành công, bạn mở link: http://localhost:4444/inspector trên browser Bạn sẽ nhìn thấy ứng dụng test được lauch như sau:

Đưa chuột hover tới từng UI element của AUT (Button, TextField, Text Label), ID của từng element sẽ được hightlight ở cửa sổ bên phải:

Ta sẽ lấy được ID của từng UI element như sau:

  • Button Show Text ID : "btnShow"
  • Text Field ID: "edtText"
  • Label Text ID: "txtView"

Bước 10. Viết scrip

Chương trình test bao gồm 3 session

10.1. Setup Test

Mục đích trong trường hợp test case phát sinh error, selendroid sẽ ném một exception (ngoại lệ) và app test sẽ được stop Scrips:

package com.guru.test;
		
 import io.selendroid.SelendroidCapabilities;
		import io.selendroid.SelendroidConfiguration;
		import io.selendroid.SelendroidDriver;
		import io.selendroid.SelendroidLauncher;
		import io.selendroid.device.DeviceTargetPlatform;
		
		import org.openqa.selenium.By;
		import org.openqa.selenium.WebDriver;
		import org.openqa.selenium.WebElement;
		import org.testng.Assert;
		import org.testng.annotations.AfterSuite;
		import org.testng.annotations.BeforeSuite;
		import org.testng.annotations.Test;
		
 /**
		 * @author Guru99 Test App using Selendroid
			 * Application under test: Guru99App
		 *
		 */
		public
				class Guru99Test {
				
				     //Declare web driver variable
		    private WebDriver driver;
					   
   
		    /**
		     * Setup the environment before testing
		     * @throws Exception
			     */
		    @BeforeSuite
		    public
					void setUp() throws Exception {
							
        //Start selendroid-standalone during test
		        SelendroidConfiguration config = new SelendroidConfiguration();
			        
		      // Add the selendroid-test-app to the standalone server
		        config.addSupportedApp("Guru99App.apk");
			        
                 
		        //start the standalone server
		        SelendroidLauncher selendroidServer = new SelendroidLauncher(config);
			        selendroidServer.launchSelendroid();
		        
		       // Create the selendroid capabilities
		        SelendroidCapabilities capa = new SelendroidCapabilities();
			        
        
		       // Specify to use selendroid's test app
		        capa.setAut("com.guru99app:1.0");
			       
		       // Specify to use the Android device API 19
		        capa.setPlatformVersion(DeviceTargetPlatform.ANDROID19);
			        
		        // Don't request simulator, use real device
		        capa.setEmulator(false);
			        
         
		        //capa.wait(10000000);
		        
		        // Create instance of Selendroid Driver
		        driver = new SelendroidDriver(capa);
					       
		    }
		

10.2. Execute test

Kịch bản như sau: 1 Nhập text "Hello world" 2. Click button Text Button 3. Chờ vài giây 4. Verify text được hiển thị xem có giống như text đã nhập ở bước 1 là "Hello world" hay không

/**
		     * Start execute the test case
		     * 01. Enter the text "Selendroid" to the textfield
		     * 02. Press OK button
		     * @throws Exception
			     */
		    @Test
		    public
					void selendroidTest() throws Exception {
							        
		        // Print the log 
		        System.out.print("Start executing test");
					        
		        // Find the input text field on screen
        // The id of this text field was get from step 9
		        WebElement inputField = driver.findElement(By.id("edtText"));
					        
		        // Verify that the text field enabled so user can enter text
		        Assert.assertEquals("true", inputField.getAttribute("enabled"));
					        
		        // Enter a text to text field
		        inputField.sendKeys("Hello Guru");        
			
         // click Show Text button
        // The id of this button was get from step 9
		        WebElement button = driver.findElement(By.id("btnShow"));
					        button.click();
		        
		        // Delay time to take effect
		        Thread.sleep(5000);
		        
		        //Find the label "Text Show Here" on screen
        // The id of this label was get from step 9
		        WebElement txtView = driver.findElement(By.id("txtView"));
					        
		        //Get the text display on screen
		        String expected = txtView.getText();
		        
		// Verify that the text which user enter on text field is same as text display on screen
		        Assert.assertEquals(expected, inputField.getText());        
		
     }

10.3. Finish Test

Đoạn code sau sẽ hoàn thành việc test và Stop Selendroid driver:

 /**
		     * Stop the Selendroid driver
		     * 
		     */
		    @AfterSuite
		    public
					void tearDown() {
					        driver.quit();
			    }

Bước 11. Connect Android device tới PC thông qua USB cable

Lưu ý:

  • Đảm bảo rằng device không thiết lập khóa màn hình
  • Device phải được kết nối với máy tính mà selendroid- standalone component chạy qua
  • Device được cài đặt Android Target Version API 10 trở lên

Bước 12. Run test app

Right click Guru99test -> Run as -> TestNG test

Script start executed hiện ra như sau:

Bước 13: Test report

Tổng kết

  • Selendroid là một công cụ rất mạnh để test ứng dụng Android cũng như là ứng dụng web.
  • Nó có thể kiểm thử với thiết bị thật và simulator
  • Cho phép kiểm thử song song cùng lúc trên nhiều device
  • Selendroid bao gồm 4 phần: Web Driver client, Selendroid-Server, Android Driver App Selendroid-stand alone
  • Để sử dụng Selendroid bạn cần có Java JDK, Android SDK và Eclipse.

Nguồn: https://www.guru99.com/introduction-to-selendroid.html


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.