Thực hiện kiểm thử tự động ứng dụng di động với Appium

Chuẩn bị môi trường kiểm thử

Để thiết lập môi trường kiểm thử cho ứng dụng Android, cần chuẩn bị các thành phần sau:

  • Android SDK: Phiên bản 26.1.1
  • Trình giả lập: LDPlayer phiên bản 4.0.70
  • Appium Server: Chạy tại http://localhost:4723/wd/hub

Thông tin phiên bản SDK có thể kiểm tra trong tệp source.properties thuộc thư mục tools của Android SDK.

Cài đặt ứng dụng bằng mã tự động

Ngoài cách kéo thả tệp APK vào trình giả lập hoặc sử dụng lệnh adb install, có thể viết script Python để cài đặt tự động:

import time
from appium import webdriver

config = {
    'platformName': 'Android',
    'platformVersion': '7.1.2',
    'deviceName': 'emulator:5554'
}

client = webdriver.Remote("http://localhost:4723/wd/hub", config)
time.sleep(2)

package_id = "com.bjcsxq.chat.carfriend"
apk_path = r"E:\APK\学车不.apk"

if client.is_app_installed(package_id):
    client.remove_app(package_id)
else:
    client.install_app(apk_path)

time.sleep(3)
client.quit()

Đoạn mã trên kiểm tra xem ứng dụng đã được cài chưa thông qua is_app_installed(). Nếu đã tồn tại thì gỡ bỏ bằng remove_app(), ngược lại thì tiến hành cài đặt từ đường dẫn APK chỉ định.

Lấy thông tin gói và hoạt động chính

Trước khi viết kịch bản kiểm thử, cần xác định appPackage và appActivity của ứng dụng. Sử dụng lệnh ADB sau khi mở ứng dụng trên thiết bị:

adb shell dumpsys window windows | findstr mFocusedApp

Kịch bản kiểm thử chức năng

Dưới đây là ví dụ kiểm thử luồng người dùng cơ bản: mở ứng dụng, thực hiện tìm kiếm, quay lại, sau đó chuyển đổi giữa các tab chính.

import time
from appium import webdriver

capabilities = {
    'platformName': 'Android',
    'platformVersion': '7.1.2',
    'deviceName': 'emulator:5554',
    'appPackage': 'com.bjcsxq.chat.carfriend',
    'appActivity': '.module_main.activity.MainActivity t7'
}

driver = webdriver.Remote("http://localhost:4723/wd/hub", capabilities)
time.sleep(3)

# Thao tác tìm kiếm
search_btn = driver.find_element_by_class_name("android.widget.TextView")
search_btn.click()
time.sleep(2)

# Quay lại từ màn hình tìm kiếm
back_icon = driver.find_element_by_xpath(
    "//android.widget.ImageView[@resource-id='com.bjcsxq.chat.carfriend:id/img_search_back']"
)
back_icon.click()
time.sleep(2)

# Chuyển sang tab "Học lái xe"
study_tab = driver.find_element_by_xpath(
    "//android.widget.RelativeLayout[@resource-id='com.bjcsxq.chat.carfriend:id/home_layout']"
)
study_tab.click()
time.sleep(2)

# Chuyển sang tab "Đăng ký"
register_tab = driver.find_element_by_xpath(
    "//android.widget.RelativeLayout[@resource-id='com.bjcsxq.chat.carfriend:id/baoming_layout']"
)
register_tab.click()
time.sleep(2)

driver.quit()

Lưu ý quan trọng khi thực hiện

Trước khi chạy kịch bản tự động, cần thực hiện một số thao tác thủ công:

  • Cấp quyền ứng dụng: Vị trí, bộ nhớ và các quyền khác phải được bật thủ công trong cài đặt hệ thống. Nếu không, script sẽ bị gián đoạn bởi hộp thoại yêu cầu quyền.
  • Cập nhật phiên bản: Lần đầu khởi động, ứng dụng có thể hiển thị thông báo cập nhật. Cần xử lý thủ công trước khi chạy tự động.
  • Chế độ hiển thị: Đảm bảo trình giả lập đặt ở chế độ dọc (portrait) để định vị phần tử chính xác.

Thẻ: appium Android SDK ADB UI Automation Mobile Testing

Đăng vào ngày 24 tháng 10 lúc 06:33