Nội dung chính
Giới thiệu về Appium
Appium là một công cụ mã nguồn mở được sử dụng để kiểm thử tự động (automation testing) các ứng dụng native, mobile web, và hybrid trên nền tảng iOS và Android.
Đặc biệt, Appium là "đa nền tảng": nó cho phép bạn viết các test script trên nhiều nền tảng khác nhau (iOS, Android), sử dụng cùng một API. Điều này cho phép bạn tái sử dụng mã giữa các nền tảng iOS và Android.
Appium hỗ trợ viết test cho rất nhiều ngôn ngữ như Java, C#, PHP, Python, Perl, Ruby. Giống như Selenium.
Triết lý Appium
Appium được thiết kế để đáp ứng nhu cầu tự kiểm thử tự động cho các ứng dụng di động theo triết lý được nêu trong bốn nguyên lý sau:
- Bạn không cần phải biên dịch lại ứng dụng của mình hoặc sửa đổi nó theo bất kỳ cách nào để tự động hóa nó.
- Bạn không nên bị trói buộc trong một ngôn ngữ hoặc framework cụ thể để viết và chạy test case của bạn.
- Một mobile automation framework không nên thực hiện các hành động không cần thiết khi nói đến các API tự động.
- Một mobile automation framework phải là mã nguồn mở.
Kiến trúc Appium
Appium là một máy chủ HTTP được viết bằng NODE.JS, tạo và xử lý nhiều WebDriver cho các nền tảng khác nhau như iOS và Android.
Appium khởi động một "test case" trên thiết bị mà có một máy chủ, và lắng nghe các lệnh proxy từ máy chủ Appum chính. Mỗi nền tảng iOS hoặc Android có một cơ chế khác nhau để chạy test case trên thiết bị sau khi nhận được các lệnh từ máy chủ Appium.
Appium hoạt động như thế nào trong Android?
Trên Android, Appium ủy quyền tập lệnh cho UIAutomator. UIAutomator là framework của Android hỗ trợ chạy các test case trực tiếp bằng Junit trên thiết bị từ dòng lệnh. Nó sử dụng ngôn ngữ lập trình Java, nhưng Appium sẽ làm cho nó chạy từ bất kỳ ngôn ngữ nào được hỗ trợ WebDriver.
Khi chúng ta thực thi các tập lệnh, sẽ có một yêu cầu http ở định dạng JSON đến máy chủ Appium. Sau đó, máy chủ Appium gửi lệnh tới UIAutomator cần bootstrap Jar. Để nghe lệnh của chúng ta, cần một máy chủ TCP. Vì vậy, ở đây bootstrap.jar hoạt động như máy chủ TCP. Và sau đó nó thực thi lệnh trên các thiết bị Android và trả về kết quả. Chu kỳ này tiếp tục cho đến khi tất cả các lệnh được thực thi.
Appium hoạt động như thế nào trong iOS?
Trên iOS , Appium ủy quyền tập lệnh cho UIAutomation chạy trong môi trường Mac. Apple cung cấp ứng dụng này có tên là 'instruments', được sử dụng để thực hiện nhiều hoạt động như lập hồ sơ, điều khiển và build ứng dụng iOS. Nhưng nó cũng có một thành phần tự động hóa để chúng ta có thể viết một số lệnh trong javascript sử dụng API UIAutomation để tương tác với UI App. Appium sử dụng các thư viện tương tự để tự động hóa ứng dụng iOS.
Khi chúng ta thực thi các tập lệnh, sẽ có một yêu cầu http ở định dạng JSON đến máy chủ Appium. Sau đó, máy chủ Appium gửi lệnh tới instruments được viết bằng NODE.js. Thực thi lệnh trong bootstrap.js trong môi trường instruments iOS. Khi lệnh được thực thi, máy khách lệnh sẽ gửi lại thông điệp đến máy chủ Appium để ghi lại mọi thứ liên quan đến lệnh trong console của nó. Chu kỳ này tiếp tục cho đến khi tất cả các lệnh được thực thi.