Bài 3: CÔNG CỤ KIỂM THỬ TỰ ĐỘNG APPIUM

1. Tổng quan Appium

Appium là một công cụ mã nguồn mở được sử dụng để kiểm thử tự động (test automation) các native app, mobile web app, và hybrid app trên nền tảng iOS và Android.

Appium được phát triển từ nền tảng hệ thống Selenium (kế thừa các đối tượng, cấu trúc và cú pháp) nên Appium có khả năng làm việc với nhiều nền tảng khác nhau, iOS và Android, trên cùng một mã kiểm thử (cross-platforms).

Khả năng cross-platforms của Appium đến từ việc sử dụng các thư viện của Appium, thông qua một chương trình server, chuyển các câu lệnh sử dụng trong mã kiểm thử thành các lệnh UIAutomation (với iOS) hay UIAutomator (với Android) để tương tác với thiết bị.

Đặc biệt là Appium hỗ trợ “đa nền tảng” (cross-platform) cho phép bạn sử dụng API giống nhau để viết test cho các nền tảng khác nhau (iOS và Android). Điều này khá là tiện lợi khi bạn muốn sử dụng lại các bộ ca kiểm thử của mình. Bên cạnh đó, Appium hỗ trợ viết test cho rất nhiều ngôn ngữ, từ Java cho đến Ruby, Python, JavaScript,…

2. Cách thức hoạt động Appium

Appium là một “ máy chủ HTTP” được viết bằng cách sử dụng nền tảng Node.js và thúc đẩy iOS và phiên Android sử dụng giao thức dây JSON của Webdriver. Do đó, trước khi khởi tạo máy chủ Appium, Node.js phải được cài đặt sẵn trên hệ thống. Appium có thể được built và cài đặt từ nguồn hoặc cài đặt trực tiếp từ NPM.

Khi Appium được tải xuống và cài đặt, thì một máy chủ được thiết lập trên máy của bạn và lộ ra một API REST. Nó nhận được yêu cầu kết nối và lệnh từ máy khách, thực thi lệnh đó trên thiết bị di động ( Android/ iOS) Nó phản hồi lại với các phản hồi HTTP và để thực hiện các yêu cầu, nó lại sử dụng các test automation framework để xử lý giao diện người dùng của ứng dụng.

  • Cách hoạt động của Appium trong hệ điều hành Android:

Hình 3.1: Cách hoạt động của Appium trong hệ điều hành Android

Tương tự trong trường hợp của Android nơi Appium proxies lệnh đến một trường hợp thử nghiệm UIAutomator đang chạy trên thiết bị. UIAutomator là framework tự động hóa giao diện người dùng của Android hỗ trợ chạy các trường hợp thử nghiệm junit trực tiếp vào thiết bị từ dòng lệnh. Nó sử dụng java làm ngôn ngữ lập trình nhưng Appium sẽ làm cho nó chạy từ bất kỳ ngôn ngữ nào do WebDriver hỗ trợ.

Trong sơ đồ trên chúng ta có thể thấy, Bootstrap.jar thay cho bootstrap.js đại diện cho trường hợp kiểm tra khi biên soạn trong java. Ngay sau khi nó được tung ra nó sinh ra một máy chủ TCP. Ở đây, máy chủ TCP nằm bên trong thiết bị và khách hàng đang trong quá trình Appium, điều này ngược lại với cách thức của nó trong iOS.

  • Cách hoạt động của Appium trong hệ điều hành iOS:

Hình 3.2: Cách hoạt động của Appium trong hệ điều hành iOS

Trên iOS, Appium proxies lệnh cho một tập lệnh UIAutomation đang chạy trong môi trường Mac Instruments. Apple cung cấp ứng dụng này được gọi là “dụng cụ” được sử dụng để thực hiện nhiều hoạt động như lập hồ sơ, kiểm soát và xây dựng ứng dụng iOS nhưng nó cũng có một thành phần tự động hóa, ở đó có thể viết một số lệnh trong javascript sử dụng API của UIAutomation để tương
tác với giao diện ứng dụng.

Appium sử dụng các thư viện tương tự để tự động hoá ứng dụng iOS.

Kiến trúc của Appium trong ngữ cảnh cho iOS tự động:

  • Selenium webdriver chọn một mẫu lệnh như mã (Element.click) và gửi nó dưới dạng JSon qua yêu cầu http đến máy chủ Appium.
  • Máy chủ Appium biết bối cảnh tự động hóa như iOS và Android và gửi lệnh này đến máy chủ lệnh của thiết bị, chờ đợi ứng dụng trình điều khiển thiết bị (viết bằng node.js) để nhặt nó lên và thực hiện nó trong tệp bootstrap.js trong môi trường cụ iOS.
  • Khi lệnh đã được thực hiện, trình khách lệnh sẽ gửi lại thông báo tới máy chủ Appium, nó sẽ ghi lại mọi thứ liên quan đến lệnh trong bảng điều khiển của nó.
  • Chu kỳ này tiếp tục cho đến thời gian tất cả các lệnh được thực hiện.

3. Điều kiện tiên quyết để sử dụng Appium

  • Cài đặt JDK (Java Development Kit).
  • Cài đặt SDK Android.
  • Cài đặt Eclipse.
  • Cài đặt TestNG cho Eclipse.
  • Cài đặt Selenium Server JAR.
  • Cài đặt Appium Desktop.

4. Cài đặt Appium

4.1. Cài đặt JDK(Java Development Kit).

-Bước 1:

-Bước 2:

  • Cuộn xuống cho đến khi bạn tìm thấy phiên bản Windows

-Bước 3:

  • Tiến hành cài đặt
  • Mở file tải xuống, click vàoNext

Hình 3.3: Màn hình khi mở file jdk

  • Trên màn hình tiếp theo, bạn sẽ gặp phải một số tùy chọn. Chỉ cần để những thứ này một mình và click vào Next.

Hình 3.4: Màn hình chọn thư mục lưu trữ Java

  • Java đã được cài thành công.

Hình 3.5: Màn hình khi cài đặt jdk thành công

-Bước 4:

  • Thiết lập môi trường Java
  • Trên Desktop, nhấn phải chuột vào Computer, chọn Properties.

Hình 3.6: Màn hình hiển thị chọn properties

  • Chọn Advanced system setting

Hình 3.7: Màn hình hệ thống Windows

  • Chọn tab Advanced và click vào Enviroment Variables.

Hình 3.8: Màn hình tab Advanced

  • Phần System variable, tạo biến JAVA_HOME bằng cách:
    • Click vào New
    • Nhập Variable name là JAVA_HOME và Variable value là folder đã cài Java ở trên
    • Click OK

Hình 3.9: Màn hình thêm biên JAVA_HOME

  • Thêm biến JAVA_HOME vừa tạo vào Path:
    • Click vào Path
    • Click vào Edit
    • Click vào New và thêm dòng %JAVA_HOME%\bin sau đó click OK

Hình 3.10: Màn hình thêm biến JAVA_HOME vào Path

  • Sau khi cấu hình xong biến môi trường cho Java, ta thực hiện kiểm tra version của Java bằng cách:
    • Nhấn tổ hợp phím ‘window’ + ‘R’ để mở cửa sổ cmd.
    • Trên màn hình cmd: gõ java –version.

Hình 3.11: Màn hình kiểm tra version Java

4.2. Cài đặt Android SDK

Hình 3.12: Màn hình mở file Android JDK

  • Bước 3: Chương trình sẽ tự động phát hiện vị trí cài đặt JDK trên máy tính. Tiếp tục click Next

Hình 3.13: Màn hình phát hiện vị trí cài đặt JDK trên máy tính

  • Bước 4: Chọn Install just fore me. Sau đó click Next.

Hình 3.14: Màn hình chọn người dùng

  • Bước 5: Chọn thư mục cài đặt Android SDK rồi click Next.

Hình 3.15: Màn hình chọn thư mục lưu trữ Android

  • Bước 6: Chọn thư mục Start Menu chứa đường dẫn của Android SDK rồi click Install.

Hình 3.16: Màn hình tải thư mục của Android SDK

  • Bước 7:  Chờ quá trình cài đặt hoàn tất, sau đó click Next.

Hình 3.17: Màn hình tải thư mục thành công

  • Bước 8: Chọn các gói bạn muốn cài đặt. Mình chọn một số gói quan trọng như Android SDK Tools, Android SDK Platform-Tools, Android SDK Build-Tools, Google USB Driver và Intel x86 Emulator Accelerator. Sau đó click Install packages…

Hình  3.18: Màn hình chọn gói Android SDK

  • Bước 9: Chọn Accept License rồi click Install.

Hình 3.19: Màn hình tải các gói đã chọn của Android SDK

  • Bước 10: Chờ chương trình cài đặt những thành phần đã chọn. Sau khi hoàn thành, click Close rồi tắt cửa sổ Android SDK Manager.

Hình 3.21:Màn hình chạy chương trình cài đặt đã xong

  • Bước 11: Thiết lập môi trường Android SDK
    • Trên Desktop, nhấn phải chuột vào Computer, chọn Properties.
    • Chọn Advanced system setting.
    • Chọn tab Advanced và click vào Enviroment Variables.
    • Tạo biến ANDROID_HOME

Hình 3.22: Màn hình tạo biến ANDROID_HOME

    • Thêm biến ANDROID_HOME vào Path

Hình 3.23: Màn hình thêm biến ANDROID_HOME vào Path

4.3. Cài đặt Eclipse

Hình 3.24: Màn hình mở file cài đặt

  • Bước 2: Click vào file đã tải. Chọn Eclipse for Java Developers

Hình 3.25: Màn hình sau khi mở file cài đặt

  • Bước 3: Install Eclipse đã chọn

Hình 3.26: Màn hình cài đặt eclips

Click vào Accept Now sau khi install xong

Hình 3.27: Màn hình sau khi install xong

Hình 3.28: Màn hình khi cài đặt thành công

4.4. Cài đặt Appium Desktop

Các bước thực hiện cài đặt công cụ kiểm thử tự động Appium:

Hình 3.29: Trang chủ Appium

  • Bước 2: Với Windows, chọn file exe và download

Hình 3.30: Màn hình các phiên bản Appium

  • Bước 3: Mở file .exe vừa download xuống và thực hiện cài đặt.

Sau khi cài đặt thành công phần mềm Appium sẽ xuất hiện ở màn hình desktop. Click chuột vào phần mềm Appium.

Server Appium khởi động ở window. Nó sẽ hiển thị host và port mặc định và bạn có thể tự thay đổi thông số này.

Hình 3.31: Giao diện của Appium

  • Bước 4: Khi click chuột vào button Start Server, một máy chủ mới sẽ khởi động ở địa chỉ host và post đã cài đặt. Server đầu ra được hiển thị.

Hình 3.32: Giao diện Server của Appium

5. Thành phần của Appium

  • Chương trình máy chủ Appium – Appium Server: là một chương trình tạo lập một máy chủ Java, dùng để chuyển các lệnh trong mã kiểm thử thành các lệnh có thể tương tác với thiết bị: UIAutomation với iOS hay UIAutomator với Android.
  • Hệ thống thư viện Appium: Cũng như Selenium, Appium có một hệ thống thư viện dùng để nhận diện và tương tác với các đối tượng UI trên ứng dụng di động. Hệ thống thư viện Appium được cung cấp cho nhiều ngôn ngữ lập trình khác nhau như C#, Java, Python, v.v. để kỹ sư kiểm thử tự động có thể chọn ngôn ngữ lập trình quen thuộc cho việc tự động hóa kiểm thử.

6. Ưu nhược điểm của công cụ Appium

a) Ưu điểm:

  • Nguồn mở và miễn phí
  • Appium hỗ trợ nhiều platform khác nhau bao gồm:
    • Android
    • IOSFirefoxOS
  • Appium hỗ trợ đa ngôn ngữ: Java, Objective-C, JavaScript với node.js, PHP, Ruby, Python, C #,…
  • Ngoài ra còn có những ưu điểm khác như không cần mã nguồn để kiểm thử ứng dụng khi bạn có thể kiểm tra trực tiếp, bạn cũng có thể tương tác với các ứng dụng như máy ảnh, lịch vv trong kịch bản kiểm thử nếu cần.

b) Nhược điểm:

  • Không hỗ trợ cho Android API có version > 17, tức là Android > 4.2.
  • Chạy script rất chậm trên platform iOS.
  • Hỗ trợ hành động cử chỉ có giới hạn.
  • Không hỗ trợ cho tin nhắn chúc mừng.

7. Một số công cụ kiểm thử tự động khác

7.1.  Selendroid

Selendroid là một framework kiểm thử tự động để thử nghiệm các ứng dụng native và hybrid của Android. Kiểm tra Selendroid được viết bằng cách sử dụng API client Selenium Webdriver.

Do Selendroid được xây dựng trên Selenium nên bạn cũng có thể sử dụng trực tiếp Selenium 2 client APIs để kiểm thử . Selendroid là một công cụ đa năng, có thể sử dụng để kiểm thử với thiết bị giả lập (emulator) và thiết bị thật.

Selendroid bao gồm 4 thành phần:

  • Web Driver Client – Java client library based trên Selenium. Đây là thư viện của của Selenium được cài trên máy tính để tạo test case
  • Selendroid-Server – Selendroid-Server được chạy dưới thiết bị test, đây là thành phần chính trong Selendroid architecture.
  • Android Driver-App – bản built Android driver, Web View app để test
  • Selendroid-Standalone – Dùng để cài đặt Selendroid server và ứng dụng test.

Ưu điểm:

  • Không sửa đổi các ứng dụng theo thử nghiệm cần thiết để tự động hoá nó.
  • Cùng ý tưởng cho việc tự động hóa các ứng dụng native hoặc hybrid.
  • Các yếu tố giao diện người dùng có thể được tìm thấy bằng các loại định vị khác nhau.
  • Các cử chỉ được hỗ trợ: Tương tác Advanced User API.
  • Emulators hiện đang bắt đầu tự động.
  • Tích hợp đầy đủ như một nút vào Selenium Grid cho rộng và thử nghiệm song song.
  • Hỗ trợ các version Android API từ API 10 đến API 19
  • Được xây dựng trong sự kiểm duyệt để đơn giản hóa phát triển trường hợp kiểm thử.
  • Selendroid có thể được mở rộng trong thời gian chạy với phần mở rộng của riêng bạn.
  • Selendroid có thể tương tác với nhiều thiết bị Android (emulators hoặc các thiết bị phần cứng) cùng một lúc.

Nhược điểm:

Hạn chế của công cụ này là khá chậm và trên một số máy có < 4GB RAM thì không sử dụng được.

7.2. Robotium

Robotium là một khung kiểm thử tự động mã nguồn mở, được sử dụng để kiểm thử hộp đen mạnh mẽ và đặc biệt là các ứng dụng Android . Nó hỗ trợ đầy đủ cho các trường hợp kiểm thử ứng dụng gốc và lai. Ứng dụng gốc được phát trực tiếp trên thiết bị, được thiết kế cho một nền tảng cụ thể và có thể được cài đặt từ Cửa hàng Google Play. Trong khi đó ứng dụng Hybrid (lai) chứa một phần web cơ bản và một phần là ứng dụng mobile, nó cũng có thể được cài đặt từ kho ứng dụng, nhưng yêu cầu HTML phải được hiển thị trong trình duyệt.

Robotium chủ yếu được sử dụng để kiểm thử tự động UI và kết nối ràng buộc các thao tác cũng như thời gian chạy với các thành phần có trong giao diện.

Các trường hợp kiểm thử được viết bằng Robotium có thể được thực hiện trên giả lập Android hoặc trên thiết bị Android thực. Nhà phát triển có thể viết các kịch bản kiểm thử chức năng, hệ thống và chấp nhận trên nhiều hoạt động.

Ưu điểm:

  • Dễ viết, code ngắn hơn. thời gian tối thiểu cần thiết để viết các testcase được chủ động.
  • Bạn có thể phát huy hết năng lực của test case , với kiến ​​thức tối thiểu của ứng dụng được test.
  • Framework xử lý tự động nhiều hoạt động Android. Độ khó của test case được cải thiện rất nhiều, so với test bằng các thiết bị chuẩn.
  • Tự động định thời (thời gian) và độ chậm trễ.
  • Tự động hoạt động theo quy trình hiện tại.
  • Tự động tìm kiếm lượt xem.
  • Tự động đưa ra quyết định riêng của mình.
  • Không sửa đổi sang nền tảng Android.
  • Thực hiện test nhanh.
  • Test case được phát huy mạnh mẽ hơn do thời gian chạy liên kết với các thành phần GUI.
  • Tích hợp thông suốt với Maven hoặc Ant.

Nhược điểm:

  • Robotium không thể xử lý Flash hoặc các thành phần Web.
  • Nó chỉ kiểm soát một ứng dụng tại một thời điểm.
  • Nó không thể mô phỏng cách nhấp vào bàn phím mềm(cần phải sử dụng ‘enterText ()’ để nhập văn bản vào một trường EditText).
  • Robotium không thể tương tác với Status Bar Notifications – Đó là, kéo xuống khu vực thông báo và nhấp chuột vào một thông báo cụ thể.
  • Có thể chạy chậm, đặc biệt là chạy trên các thiết bị cũ.

7.3. So sánh giữa Appium, Selendroid, Robotium

Tiêu chí Appium Selendroid Robotium
iOS Không Không
Android
Android API Androi AIP >= 17 Android API 10-19 Tất cả
Kiểm thử tác nhân người dùng Không
Người sử dụng Nhiều người sử dụng Ít người sử dụng Ít người sử dụng
Kiểm thử trên thiết bị thực
Kiểm thử trên thiết bị đám mây
Ngôn ngữ lập trình Java, Python, Ruby,… Java Java
Môi trường hỗ trợ iOS: Mac OSX 10.7

Android: Mac OSX 10.7, Windowns, Linux

Mac, Windowns, Linux

Bảng 3-1: Bảng so sánh các công cụ kiểm thử tự động trên thiết bị di động

Có thể bạn sẽ thích…

Trả lời

EnglishVietnamese