12/08/2018, 16:04

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 ...

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:

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

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

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:

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

  • Name: TestNG
  • Location: http://beust.com/eclipse Nhấn OK => tiến hành cài đặt TestNG

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:

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

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:

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"

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();
			    }

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

Right click Guru99test -> Run as -> TestNG test

Script start executed hiện ra như sau:

  • 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

0