Sử dụng Appium trong mobile app testing automation
Hiện nay có rất nhiều tool được sử dụng cho testing automation các native app, mobile web app, và hybrid app trên nền tảng iOS và Android. Appium là 1 công cụ như thế. Đặc biệt hơn Appium lại là 1 cross-platform, cho phép bạn test trên nhiều nền tảng, sử dụng chung API, và 1 source code lại được ...
Hiện nay có rất nhiều tool được sử dụng cho testing automation các native app, mobile web app, và hybrid app trên nền tảng iOS và Android. Appium là 1 công cụ như thế. Đặc biệt hơn Appium lại là 1 cross-platform, cho phép bạn test trên nhiều nền tảng, sử dụng chung API, và 1 source code lại được dùng cho nhiều nền tảng
Các ưu điểm của appium
Appium được thiết kế để đáp ứng các yêu cầu của mobile automation như sau:
- Không cần recompile hay modify app trong bất kì trường hợp nào để kiểm thử
- Không cần cố định ngôn ngữ hay framework cụ thể nào để viết hay run test case
Appium concept
- Sử dụng kiến trúc Client/ Sever trong đó Appium là trái tim của websever. Nó sẽ tiếp nhận kết nối từ client, lắng nghe các câu lệnh, thực thi những lệnh này trên mobile device và trả ra định dạng HTTP đại diện cho kết quả thực thi câu lệnh. Thực tế là việc sử dụng cấu trúc client/sever tạo ra khá nhiều ưu điểm như là có thể viết code test bằng bất kì ngôn ngữ nào có HTTP client API nhưng sẽ dễ dàng hơn nếu bạn sử dụng các thư viện Appium client.
- Automation sẽ được thực thi trên ngữ cảnh của 1 session. Clients khởi tạo 1 session với sever với các thông tin cụ thể đối với mỗi thư viện và tất cả sẽ kết thúc bằng việc gửi 1 request POST/sesion đến sever với 1 JSON Object được gọi là ‘desired capabilities’. Tại thời điểm này sever sẽ bắt đầu khởi tạo 1 automation session và trả về session ID được sự dụng cho việc gửi các câu lệnh sau này
- Desired Capabilities là 1 tập hơn các key/value được gửi đến Appium sever để mô tả về các đặc tính mong muốn của automation session. Có rất nhiều loại capabilities mà bạn có thể modify các hành vi của sever trong suốt giai đoạn automation. Ví dụ như là chúng ta set platformName capability là iOS để Appium biết chúng ta muốn start 1 iOS session thay vì Android hay window. Hoặc chúng ta có thể set safariAllowPopups capability giá trị true để đảm bảo trong suốt 1 Safari automation session, chúng ra được cho phép sử dụng Js để mở 1 cửa sổ mới. Thông tin cu thể về các capabilities bạn có thể tham khảo doc Chắc các bạn cũng khá là mong chờ Appium được sử dụng như thế nào rồi nhỉ, sau đây tôi sẽ hướng dẫn các bạn cách cài đặt cũng như là việc sử dụng Appium để kiểm thử 1 ứng dụng iOS nhé
Cài đặt sever
- Down load sever tại đường dẫn https://github.com/appium/appium-desktop/releases/tag/v1.1.0-beta.1
- Bật appium lên, sẽ có cấu hình như sauhttps://viblo.asia/uploads/9efea0ec-a5d9-4cf6-ad04-94a178c3f5d4.png Chọn start sever để bật sever lên
- Sau khi sever được bật thì bạn có thể quan sát
Cài đặt Client
Cài đặt từ giao diện Appium
- Chọn vào start new session và điền một số thông tin như hình dưới đây: Trong đó app chính là đường dẫn chứa file ipa của app iOs cần test. Bạn có thể tham khảo thêm các capabilities khác bằng cách tham khảo đường link dưới đây https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md Chọn Start Session để bât client Lúc này có thể thực hiện các thao tác mô phỏng tương tự như thao tác trên máy ảo
Cài đặt từ source code
Down load source code theo địa chỉ dưới đây https://github.com/appium/sample-code/tree/master/sample-code/examples Có rất nhiều ngôn ngữ, ở đây ta lựa chọn java. Nếu bạn chọn java thì down source code mình đã sửa theo đường link sau : https://github.com/oLeThiVanAnh/AppiumClientSample để khởi động Client nhé Sau khi down load về thì ta sẽ build unit test bằng eclipse
- Chọn File -> Import -> Maven -> Existing maven project Chuột phải vào project, chọn Maven -> Update Project Điền đầy đủ thông tin về device , tên đường dẫn thư mục chứa ipa, và sever như hình sau: Sau đó chuột phải vào tên junit test case cần chạy rồi chọn: run as junit Quan sát kết quả xem test case pass hay fail
Có 2 cách để cấu hình và start client sẽ cho ra kết quả giống nhau. Các bạn hãy thử sử dụng cả 2 cách để tìm xem cách nào là hiệu quả và phụ hợp hơn với mục đích testing của các bạn nhé.