12/08/2018, 15:31

Sử dụng Appium trong kiểm thử tự động ứng dụng trên Android (P2)

Phần một mình đã giới thiệu đến các bạn Appium và cách cài đặt mội trường code, tiếp đây mình sẽ tiếp tục hướng dẫn các bạn các bước để có thể viết test script và thực hiện chạy test script đó với appium để có thể test được một ứng dụng android nhé. 6. Viết testsscrip Các bước cụ thể để có thể ...

Phần một mình đã giới thiệu đến các bạn Appium và cách cài đặt mội trường code, tiếp đây mình sẽ tiếp tục hướng dẫn các bạn các bước để có thể viết test script và thực hiện chạy test script đó với appium để có thể test được một ứng dụng android nhé.

6. Viết testsscrip Các bước cụ thể để có thể viết testscript chạy test case cho ứng dụng android như sau:

  • Tạo testscript để có thể cài đặt file apk lên device test
  • Viết testscript theo test case

Tạo testscript để có thể cài đặt file apk lên device test Nào, bây giờ để cho các bạn có cái nhìn tổng quan hơn, mình sẽ nêu ra một kịch bản để bắt đầu viết test script cho nó nhé. Mình có một úng dụng android với file cài đặt là "flipkart.apk". Trước tiên mình phải cài đặt file ứng dụng lên máy android, công việc này là chuẩn bị cho việc run test case về sau, do đó mình để đoạn code này vào mục @BeforeTest.

Đầu tiên bạn phải tạo mới một class bằng cách tạo mới Java Class trong src-> main. Gọi thư viện và viết steps:

import org.testng.Assert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
@BeforeTest
   public void setUp() {
           DesiredCapabilities capabilities = new DesiredCapabilities();
           capabilities.setCapability("appium-version", "1.5.3");
           capabilities.setCapability("platformName", "Android");
           capabilities.setCapability("platformVersion", "5.0.1");// Bạn phải điền lại version của máy Android bạn đang dùng, máy mình là Android 5.0.1
           capabilities.setCapability("deviceName", "0217da38"); // 0217da38 là deviceName mình đã lấy lúc trước
           
           capabilities.setCapability("app", "/Users/hienvu/AppiumDemo01/APKFile/flipkart.apk"); // Mục đích của đoạn code này là tìm đường dẫn đến file apk của bạn, ở đây file cài của mình  là "flipkart.apk"
           capabilities.setCapability("appPackage", "com.flipkart.android"); //Bạn điền Package name của app đã lấy được ở trên vào đây
           capabilities.setCapability("appActivity", "com.flipkart.android.SplashActivity"); //Bạn điền Activity name của app đã lấy được ở trên vào đây
           driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); //Các bạn điền server address và port đã note lại ở bước trước
           driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); //Là dòng lệnh để set timeout
   }

Viết testscript để test file apk ứng dụng mình cần test là Flipkart, mình sẽ demo test case cho kịch bản login vào ứng dụng với tài khoản không tồn tại nhé.

@Test
   public void flipkart_TC01() throws IOException {
       System.out.println("Run Test Case 01 ");

       By userId = By.id("mobileNo");
       By password = By.id("et_password");
       By login_Button = By.id("btn_mlogin");
       By existingUser_login = By.id("btn_mlogin");

       wd.manage().timeouts().implicitlyWait(80, TimeUnit.SECONDS);
       wd.findElement(existingUser_login).click();
       wd.findElement(userId).clear();
       wd.findElement(userId).sendKeys("someone@gmail.com");
       wd.findElement(password).sendKeys("12345678");
       wd.findElement(login_Button).click();
       Assert.assertTrue(wd.findElement(By.id("pageLevelError")).getText().equalsIgnoreCase("Account does not exist")); // verify rằng với case login failed sẽ hiện thông báo "Account does not exist"
   }

Trong đoạn code trên, các bạn thấy mình dùng assertion "assertTrue" để check lại kết quả test. Assertion là một phần quan trọng trong Automation test để giúp verify lại kết quả test có được như mong muốn hay không. Như ở ví dụ trên, sử dụng assertion "assertTrue" có thể xác mình rằng element đích "pageLevelError" có được hiển thị trên ứng dụng hay không, nếu nó trả về true thì kết quả Test case sẽ Passed, ngược lại sẽ là Failed.

@AfterTest
public void tearDown() {
    wd.quit(); // đóng webdriver sau khi đã chạy xong 
}

7. Start Appium Server Click vào nút Play (nút phía trên bên phải) start appium server để có thể chạy được test script.

8. Chạy Appium Test Script Sau khi đã hoàn tất, các bạn hãy click chuột phải vào tên class viết test script và Run thử script đầu tiên test ứng dụng trên Android nào.

9. Đọc report kết quả test Appium server sẽ log lại toàn bộ quá trình chạy, các bạn có thểo theo dõi các bước đang thực hiện trên log của Appium. Trên Android studio, kết quả test case sẽ được log như sau:

Cac bạn thấy test case của mình đã pass với biểu tượng màu xanh, trường hợp failed nó sẽ có màu đỏ.

Chúng ta đã thực hiện viết xong test script rất đơn giản cho trường hợp kiểm thử trang login ứng dụng Flipkart trên Android. Sẽ còn rất nhiều phần khi chúng ra đi sâu vào viết test script, như sử dụng chỉ định vị tên ở trên. Trong bài viết tới mình hy vọng sẽ giới thiệu chi tiết hơn các bộ định vị phần tử khác nhau để các bạn có thể dễ dàng và thuận tiện hơn khi viết test script cho các trường hợp kiểm thử của mình.

0