2015-06-26 17 views
40

tôi đang tìm kiếm cho các khuôn khổ kiểm tra dành cho Android UI tự động hóa và tôi stumbled khi UI AutomatorEspresso và đây là phần tôi đang bối rối về -Testing Android: UIAutomator vs Espresso

  1. Cả hai đều được duy trì bởi Google
  2. cả hai đều được sử dụng cho giao diện người dùng chức năng kiểm tra
  3. cả hai đều Android chỉ khuôn khổ

vì vậy, câu hỏi của tôi/nghi ngờ đây là -

  • Sự khác biệt chính giữa UI AutomatorEspresso là gì?
  • sẽ mã nguồn đã được sửa đổi để tích hợp bất kỳ của các khuôn khổ?
  • Một khuôn khổ có giữ được lợi thế nào so với cách khác không? Nếu có, thì khung nào phù hợp nhất cho tự động hóa giao diện người dùng của một ứng dụng Android?

Trả lời

9

Nếu bạn đang thử nghiệm chỉ có một ứng dụng, sau đó Espresso.

Nếu bạn đang thử nghiệm nhiều hơn một ứng dụng hoặc tích hợp với các ứng dụng khác hoặc hệ thống, sau đó UiAutomator.

+1

tôi có thể cần phải tích hợp với các hệ thống cho các ứng dụng được thử nghiệm nhưng là sự kết hợp của 'UIAutomator' và 'Espresso' có thể? – Shikhar

+1

Có, cả hai có thể được sử dụng –

1

Khi sử dụng UIAutomator bạn phải sử dụng một API 18+ trong khi với Espresso, bạn có thể đi càng thấp càng API 8.

Theo các tiểu bang tài liệu Android, kiểm tra đa ứng dụng nên được thực hiện với UIAutomator trong khi nếu bạn chỉ muốn các bài kiểm tra chạy bên trong gói ứng dụng của riêng bạn, bạn có thể sử dụng Espresso.

Ở dưới cùng của this documentation's page, bạn có thể tìm thấy sự ra đời, cũng như ví dụ để cả hai phong cách thử nghiệm.

+0

Hỗ trợ mức API tối thiểu không phải là vấn đề nhưng có phải giả định an toàn rằng trong trường hợp «Espresso', mã nguồn của ứng dụng đang thử nghiệm phải được sửa đổi không? – Shikhar

33

UIAutomator - là mạnh mẽ và có tích hợp hệ thống hệ điều hành bên ngoài tốt ví dụ có thể bật và tắt WiFi và truy cập các cài đặt khác trong khi thử nghiệm nhưng thiếu khả năng tương thích ngược vì yêu cầu Jelly Bean trở lên. Tuy nhiên, cũng thiếu quyền truy cập chế độ xem chi tiết để người ta có thể nói rằng đó có thể là một thử nghiệm hộp đen tinh khiết hơn. Khi Espresso có quyền truy cập để xem nội bộ (xem bên dưới). Điều này được đề xuất trên developer.android.com cho "Thử nghiệm giao diện người dùng cho nhiều ứng dụng"

Espresso - có trọng lượng nhẹ hơn một chút so với ui automator và hỗ trợ 2.2 Froyo và nó cũng có api thông thạo với hamcrest mạnh mẽ (https://github.com/hamcrest) tích hợp làm mã dễ đọc hơn và mở rộng (nó là mới hơn so với Ui automator). Nó không có quyền truy cập vào các bài kiểm tra tích hợp hệ thống nhưng có quyền truy cập để xem nội bộ, ví dụ: có thể kiểm tra chế độ xem web (hữu ích cho thử nghiệm ứng dụng Hybrid hoặc thử nghiệm webview nặng). Kiểm tra hộp xám hơn một chút so với Máy tự động UI. Điều này được khuyến nghị trên developer.android.com cho "Kiểm tra giao diện người dùng cho một ứng dụng duy nhất". Tính đến Android Studio 2.2 này hiện nay cung cấp ghi âm thử nghiệm giao diện người dùng (như UIAutomator)

+1

Hỗ trợ mức API tối thiểu không phải là vấn đề nhưng giả sử tôi không yêu cầu bất kỳ tích hợp hệ thống nào trong quá trình thử nghiệm, không thể đạt được các chức năng tương tự bằng cách sử dụng 'UIAutomator'? – Shikhar

+2

Không. Nếu bạn không thử nghiệm hệ thống/ứng dụng chéo, tôi sẽ đích thân đi Espresso. ví dụ. espresso-web 2.2 vừa được phát hành, cho phép kiểm tra các bản xem trước web không được hỗ trợ bởi UI Automator. Espresso dường như thu hút nhiều sự chú ý hơn. Xem https://code.google.com/p/android-test-kit/wiki/ReleaseNotes –

25

Trên thực tế, bạn không cần phải chọn. UIAutomator và Espresso sử dụng cùng một thiết bị đo đạc, vì vậy bạn có thể sử dụng lệnh từ cả hai trong một thử nghiệm. Espresso có nhiều quẹt, khẳng định và hành động trên giao diện người dùng, công cụ tự động mà không có:

Espresso 2.1 Cheat Sheet

Espresso đang chạy trong thread riêng biệt và nó thực sự là nhanh so với các khuôn khổ thử nghiệm khác.

dưới dạng Tóm tắt: sử dụng cả hai trong số đó trong các thử nghiệm của bạn, Espresso là chính và UIAutomator là một công cụ bổ sung cho tích hợp hệ điều hành.

+0

+1 Để đề cập rằng bạn có thể sử dụng cả hai. Ngay cả khi bạn không sử dụng cả UIAutomator lẫn Espresso trong cùng một trường hợp thử nghiệm, bạn có thể sử dụng cả hai trường hợp thử nghiệm riêng biệt trong cùng một bộ. –

4

Tôi đã tìm thấy một bài viết thú vị, nói về lý do tại sao bạn nên sử dụng cả hai. Hãy xem tại địa chỉ:

http://qathread.blogspot.com/2015/05/espresso-uiautomator-perfect-tandem.html

Đã Espresso là đủ cho tôi, nhưng đối với một số lý do như thông báo thử nghiệm ứng dụng tôi sẽ chỉ trong vòng một vài tuần học uiautomator.

hãy dành đôi chút thời gian để

  • kiểm tra ví dụ của Google sử dụng các khung:

https://github.com/googlesamples/android-testing/tree/master/ui

  • đọc một tài liệu hướng dẫn của những khung:

http://developer.android.com/training/testing/ui-testing/espresso-testing.html

http://developer.android.com/training/testing/ui-testing/uiautomator-testing.html

1

Để có được một khái niệm nhanh chóng như thế nào cả mọi thứ làm việc chúng ta hãy đưa ra một ví dụ. Hãy cố gắng tìm và bấm vào một nút với tiêu đề "Start" trên Lollipop sử dụng UIAutomatorEspresso:

  • UIAutomator: Bạn cần phải tìm kiếm các chữ hoa "START" bởi vì trên nút Lollipop đang render chữ hoa. device.findObject(new UiSelector().text("START")).click();
  • Espresso: Bạn sẽ chỉ cần sử dụng R.string.start và sẽ không cần phải chăm sóc như thế nào chuỗi thực sự được đưa ra bởi nền tảng này. Bạn không quan tâm nếu chế độ xem có textAllCaps=true hoặc chế độ xem được bỏ qua. onView(withText(R.string.start)).perform(click());

TL: DR;

UIAutomator tìm kiếm quan điểm theo kiểu cấp thấp hơn Espresso - thông qua cơ chế đo lường và đi qua cây AccessibilityNodeInfo của hệ thống phân cấp xem. Espresso trên lượt của nó thường đi qua chính phân cấp khung nhìn.

0

Lợi ích chính của việc sử dụng Espresso là nó cung cấp đồng bộ hóa tự động các hành động thử nghiệm với giao diện người dùng của ứng dụng bạn đang thử nghiệm. Espresso phát hiện khi luồng chính không hoạt động, vì vậy nó có thể chạy các lệnh kiểm tra của bạn vào thời điểm thích hợp, cải thiện độ tin cậy của các thử nghiệm của bạn. Khả năng này cũng giúp bạn không phải thêm bất kỳ giải pháp thời gian nào, chẳng hạn như Thread.sleep() trong mã thử nghiệm của bạn.

Khung kiểm tra Espresso là API dựa trên thiết bị và hoạt động với nhân viên thử nghiệm AndroidJUnitRunner.

Nguồn: https://developer.android.com/training/testing/ui-testing/espresso-testing.html

Các vấn đề liên quan