Ví dụ kiểm thử tự động với Appium

Kịch bản kiểm thử

Trong ví dụ này, chúng ta sẽ kiểm thử tự động với một ứng dụng cơ bản trong Android – Calculator:

  1. Mở ứng dụng Calculator trên Android
  2. Nhấn vào một số (5)
  3. Nhấn dấu công (+)
  4. Nhấn vào số thứ hai (6)
  5. Nhấn dấu bằng (=)
    >> Kiểm tra kết quả hiển thị (11)

Các bước chuẩn bị

  • Để mã kiểm thử kết nối với thiết bị Android thông qua Appium, chúng ta cần tên của thiết bị.
  • Để có thể khởi động được một ứng dụng thông qua Appium, chúng ta cần hai giá trị đại diện cho một ứng dụng trong trong Android: PackageActivity
  • Để tương tác với các đối tượng UI, chúng ta cần các thông tin về đối tượng UI thông qua UIAutomator hay Appium Inspect

Lấy tên của thiết bị

Để lấy tên của thiết bị đang được kết nối với máy tính, chúng ta sử dụng câu lệnh adb devices trong màn hình console:

Tìm Package và Activity của một ứng dụng

Có nhiều cách để chúng ta có thông tin về Package/Activity của một ứng dụng:

  • Thông qua một ứng dụng thứ ba – ví dụ như APK Info và UIAutomatorViewer
  • Thông qua tập tin AndroidManifest.xml của ứng dụng, cách này chúng ta cần có tập tin APK của ứng dụng
  • Đọc tập tin log khi ứng dụng đang hoạt động – adb logcat
  • Hỏi trực tiếp các kỹ sư phát triển 🙂

Ở đây, mình dùng cách đơn giản nhất, dùng một ứng dụng thứ ba để có thông tin cần thiết:

  1. Đầu tiên, chúng ta sẽ cài đặt ứng dụng APK Info từ Google Play
  2. Khởi động ứng dụng APK Info, chúng ta sẽ có một danh sách các ứng dụng có trong thiết bị
  3. Lựa chọn ứng dụng Calculator và hiển thị các thông tin của ứng dụng, bao gồm Package và Activity. Đối với một số ứng dụng mặc định của Android (như ứng dụng Calculator), APK Info không thể lấy được thông tin về Package nên chúng ta chỉ lấy thông tin về Activity.
  4. Đối với thông tin Package, chúng ta có thể sử dụng công cụ UIAutomatorViewer

Lấy thông tin về đối tượng UI

Theo bài trước về công cụ UIAutomatorViewer, chúng ta có các đối tượng mà kịch bản kiểm thử cần tương tác, vì ứng dụng này khá cơ bản nên mình sẽ dùng những cách khác nhau để xác định đối tượng UI:

  • Nút số 5: By.id(‘com.android.calculator2:id/digit5’)
  • Nút cộng: By.xpath(“//android.widget.Button[@text=’+’]”)
  • Nút số 6: By.id(“com.android.calculator2:id/digit6”)
  • Nút bằng: By.xpath(“//android.widget.Button[@text=’=’]”)
  • Hiển thị kết quả: By.className(“android.widget.EditText”)

Viết mã kiểm thử

// Thiết lập các thông tin để kết nối với thiết bị Android và khởi động ứng dụng Calculator
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(“deviceName”, “emulator-5554”);
capabilities.setCapability(“platformName”, “Android”);
capabilities.setCapability(“appPackage”, “com.android.calculator2”);
capabilities.setCapability(“appActivity”,”com.android.calculator2.Calculator”);
// Khởi tạo các đối tượng driver để thực thi kiểm thử
AndroidDriver driver = new AndroidDriver(new URL(“http://127.0.0.1:4723/wd/hub”), capabilities);
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);

// Các bước tương tác với ứng dụng
driver.findElement(By.id(“com.android.calculator2:id/digit5”)).click();
driver.findElement(By.xpath(“//android.widget.Button[@text=’+’]”)).click();
driver.findElement(By.id(“com.android.calculator2:id/digit6”)).click();
driver.findElement(By.xpath(“//android.widget.Button[@text=’=’]”)).click();
// Kiểm tra kết quả hiển thị
Assert.assertEquals(“11”, driver.findElement(By.className(“android.widget.EditText”)).getText());
// Kết thúc kiểm thử bằng việc đóng ứng dụng
driver.quit();