1. Từ một test đến quy mô lớn
Một ứng dụng bán lẻ phải hoạt động tốt trên hàng loạt điện thoại giá rẻ lẫn cao cấp, nhiều phiên bản hệ điều hành và độ phân giải màn hình khác nhau. Khi bộ test Appium lớn dần, chạy tuần tự từng thiết bị trở nên quá chậm để kịp mỗi lần phát hành. Bài này bàn về cách đưa nền tảng Appium lên quy mô sản xuất: chạy song song, dùng device farm, kiểm soát flake, đồng bộ hoá và tích hợp CI.
Bài toán cốt lõi khi mở rộng là thời gian và độ phủ. Chạy song song rút ngắn thời gian, còn device farm mở rộng độ phủ thiết bị mà không cần mua và bảo trì kho máy vật lý. Nhưng cả hai đều làm lộ ra sự mong manh của test mobile, nên kiểm soát flake và đồng bộ hoá trở thành kỹ năng bắt buộc chứ không còn là tuỳ chọn.
2. Chạy song song nhiều thiết bị
Chạy song song trong Appium nghĩa là mở nhiều phiên độc lập cùng lúc, mỗi phiên gắn với một thiết bị riêng qua udid. Mấu chốt kỹ thuật là mỗi phiên phải có cổng nội bộ riêng để driver không tranh chấp tài nguyên: trên Android là systemPort cho UiAutomator2, trên iOS là wdaLocalPort cho WebDriverAgent. Nếu hai phiên dùng chung cổng, chúng sẽ chồng chéo và gây lỗi ngẫu nhiên rất khó gỡ.
// wdio.conf: nhiều capabilities song song, mỗi thiết bị cổng riêng
export const config = {
maxInstances: 3, // 3 phiên chạy đồng thời
capabilities: [
{ platformName: 'Android', 'appium:automationName': 'UiAutomator2',
'appium:udid': 'emulator-5554', 'appium:systemPort': 8201,
'appium:app': '/builds/retail.apk' },
{ platformName: 'Android', 'appium:automationName': 'UiAutomator2',
'appium:udid': 'emulator-5556', 'appium:systemPort': 8202,
'appium:app': '/builds/retail.apk' },
{ platformName: 'iOS', 'appium:automationName': 'XCUITest',
'appium:udid': '00008110-0011', 'appium:wdaLocalPort': 8101,
'appium:app': '/builds/retail.ipa' },
],
};3. Device farm đám mây
Device farm đám mây như BrowserStack hay Sauce Labs cho bạn truy cập hàng trăm thiết bị thật và mô phỏng qua mạng, kèm video, log và khả năng chạy song song rất lớn mà không cần tự mua và bảo trì kho máy. Bạn tải bản build lên farm, nhận về một mã định danh ứng dụng, rồi trỏ capabilities tới điểm cuối của nhà cung cấp thay vì server Appium cục bộ. Phần còn lại của kịch bản gần như giữ nguyên.
// Trỏ WebdriverIO tới BrowserStack thay vì server cục bộ
export const config = {
user: process.env.BROWSERSTACK_USERNAME,
key: process.env.BROWSERSTACK_ACCESS_KEY,
hostname: 'hub.browserstack.com',
path: '/wd/hub',
capabilities: [{
platformName: 'Android',
'appium:automationName': 'UiAutomator2',
'appium:app': 'bs://<app-hash-sau-khi-upload>',
'appium:deviceName': 'Samsung Galaxy S22',
'appium:platformVersion': '12.0',
'bstack:options': { projectName: 'Retail App', buildName: 'PR-1284' },
}],
};Điểm khác biệt nằm ở cách xác thực và địa chỉ điểm cuối, còn các bước tìm element và thao tác vẫn dùng cùng API WebDriver. Nhờ vậy bạn có thể phát triển cục bộ trên emulator rồi chuyển sang farm chỉ bằng cách đổi cấu hình. Với đội bán lẻ, farm đặc biệt hữu ích để phủ các dòng máy phổ biến ở từng thị trường mà đội không sở hữu vật lý.
💬 Bình luận (0)
Chưa có bình luận nào. Hãy là người đầu tiên!