UFO ET IT

Android 테스트 : UIAutomator 대 Espresso

ufoet 2020. 12. 25. 00:16
반응형

Android 테스트 : UIAutomator 대 Espresso


나는 안드로이드 UI 자동화를위한 테스트 프레임 워크 추구하고 있었고, 난 우연히 UI Automator그리고 Espresso이것은 내가 대해 혼동하고있는 부분입니다 -

  1. 둘 다 Google에서 관리합니다.
  2. 둘 다 기능적 UI 테스트에 사용됩니다.
  3. 둘 다 Android프레임 워크 일뿐

그래서 여기 내 질문 / 의심은-

  • UI Automator의 주요 차이점은 무엇입니까 Espresso?
  • 이러한 프레임 워크를 통합하려면 소스 코드를 수정해야합니까?
  • 한 프레임 워크가 다른 프레임 워크에 비해 이점이 있습니까? 그렇다면 Android 앱의 UI 자동화에 가장 적합한 프레임 워크는 무엇입니까?

UIAutomator – 강력하고 외부 OS 시스템 통합이 우수합니다. 예를 들어 테스트 중에 WiFi를 켜고 끄고 다른 설정에 액세스 할 수 있지만 Jelly Bean 이상이 필요하므로 이전 버전과의 호환성이 없습니다. 그러나 상세보기 액세스가 부족하여 순수한 블랙 박스 테스트에 가깝다고 말할 수 있습니다. Espresso가 내부를 볼 수있는 경우 (아래 참조). 이는 developer.android.com에서 "여러 앱의 UI 테스트"에 권장됩니다.

Espresso-ui automator에 비해 약간 더 가볍고 2.2 Froyo를 지원하며 강력한 hamcrest ( https://github.com/hamcrest ) 통합 으로 유창한 API를 제공하여 코드를 더 읽기 쉽고 확장 가능합니다 (보다 최신 버전입니다. Ui 자동화). 시스템 통합 테스트에 대한 액세스 권한은 없지만 내부보기에 대한 액세스 권한이 있습니다. 예를 들어 웹보기를 테스트 할 수 있습니다 (하이브리드 앱 테스트 또는 웹보기 무거운 테스트에 유용함). UI Automator에 비해 약간 더 많은 회색 상자 테스트. 이는 developer.android.com에서 "단일 앱용 UI 테스트"에 권장됩니다. Android Studio 2.2부터는 이제 UIAutomator와 같은 UI 테스트 기록을 제공합니다.


사실, 선택할 필요가 없습니다. UIAutomator와 Espresso는 동일한 계측 실행기를 사용하므로 단일 테스트에서 두 명령 모두에서 명령을 사용할 수 있습니다. Espresso에는 UI에 대한 다양한 matcher, assertion 및 작업이 있지만 automator에는 다음이 없습니다.

에스프레소 치트 시트

Espresso는 별도의 스레드에서 실행되며 다른 테스트 프레임 워크에 비해 정말 빠릅니다.

요약 : 테스트에서 두 가지를 모두 사용하십시오. Espresso는 기본이며 UIAutomator는 OS 통합을위한 추가 도구입니다.


하나의 애플리케이션 만 테스트하는 경우 Espresso입니다.

둘 이상의 응용 프로그램 또는 다른 응용 프로그램 또는 시스템과의 통합을 테스트하는 경우 UiAutomator입니다.


두 가지를 모두 사용해야하는 이유를 설명하는 흥미로운 기사를 찾았습니다. 보세요:

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

이미 Espresso충분하지만 앱 알림 테스트와 같은 몇 가지 이유로 몇 주 만에 uiautomator.

시간을 보내십시오

  • 다음 프레임 워크 사용에 대한 Google의 예를 확인하세요.

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

  • 다음 프레임 워크에 대한 문서를 읽으십시오.

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

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


두 가지가 어떻게 작동하는지 빠르게 이해하기 위해 예를 들어 보겠습니다. Lollipop에서 UIAutomatorand를 사용하여 제목이 "시작"인 버튼을 찾아 클릭 해 보겠습니다 Espresso.

  • UIAutomator : Lollipop 버튼은 대문자로 렌더링되므로 대문자 "START"를 검색해야합니다. device.findObject(new UiSelector().text("START")).click();
  • Espresso : R.string.start플랫폼에서 문자열을 실제로 렌더링하는 방법을 사용 하고 신경 쓸 필요가 없습니다. 뷰가 있는지 textAllCaps=true또는 타 원화 되어 있는지 상관하지 않습니다 . onView(withText(R.string.start)).perform(click());

TL : DR;

UIAutomator 는 계측 메커니즘을 통해 AccessibilityNodeInfo보기 계층 구조 트리를 통과하여 Espresso보다 낮은 수준 의보기를 검색합니다. Espresso는 일반적으로 뷰 계층 구조 자체를 순회합니다.


UIAutomator를 사용할 때는 18+ API를 사용해야하지만 Espresso에서는 API 8까지 낮출 수 있습니다.

Android 문서에 나와 있듯이 다중 애플리케이션 테스트는 UIAutomator로 수행해야하며 테스트를 자체 앱 패키지 내에서만 실행하려면 Espresso를 사용할 수 있습니다.

이 문서의 페이지 하단 에서 두 테스트 스타일에 대한 소개와 예제를 찾을 수 있습니다.


Espresso 사용의 주요 이점은 테스트중인 앱의 UI와 테스트 작업의 자동 동기화를 제공한다는 것입니다. Espresso는 주 스레드가 유휴 상태 일 때를 감지하므로 적절한 시간에 테스트 명령을 실행할 수 있으므로 테스트의 안정성이 향상됩니다. 이 기능은 또한 테스트 코드에 Thread.sleep ()과 같은 타이밍 해결 방법을 추가하지 않아도됩니다.

Espresso 테스트 프레임 워크는 계측 기반 API이며 AndroidJUnitRunner 테스트 실행기와 함께 작동합니다.

출처 : https://developer.android.com/training/testing/ui-testing/espresso-testing.html

참조 URL : https://stackoverflow.com/questions/31076228/android-testing-uiautomator-vs-espresso

반응형