Android 자동화 프레임워크를 사용한 APP 테스트 튜토리얼

Android 테스트?

Android 세계에서 가장 큰 운영 체제입니다. 동시에, Android 단편화되어 있습니다. 수많은 장치가 있고 Android 앱이 호환되어야 하는 버전입니다.

Android 지원

디자인과 구현에 얼마나 많은 시간을 투자하더라도 실수는 피할 수 없고 버그도 나타나게 마련입니다.

Android 지원

Android 테스트 전략

올바른 안드로이드 테스트 전략에는 다음이 포함되어야 합니다.

  1. 단위 테스트
  2. 통합 테스트
  3. Opera선택적 테스트
  4. 시스템 테스트

Android 테스트 전략

단위 테스트

단위 테스트에는 메서드나 클래스와 같은 소스 코드의 원자적 단위를 검증하도록 설계된 하나 이상의 프로그램 세트가 포함됩니다.

Android 플랫폼이 사전 통합되어 제공됨 주닛 3.0 프레임워크. 자동화를 위한 오픈 소스 프레임워크입니다. 단위 테스트. Android 테스트 프레임워크는 개발자가 효과적인 단위 테스트 프로그램을 작성할 수 있는 강력한 도구입니다.

통합 Android 그리고 JUnit 뼈대
통합 Android 그리고 JUnit 뼈대

단위 테스트에 UI(사용자 인터페이스) 테스트가 추가되었습니다. 이러한 테스트는 대상 애플리케이션의 UI 구성요소와 관련됩니다. UI 테스트는 애플리케이션이 장치에서 일련의 사용자 작업에 대한 응답으로 올바른 UI 출력을 반환하는지 확인합니다.

애플리케이션의 일반 사용자 UI 작업
애플리케이션에 대한 일반적인 사용자 UI 작업

장치에서 성능 UI를 테스트하는 일반적인 방법은 다음과 같습니다. Android 측정기 모델. 하지만 여기에는 성능 문제가 있습니다. UI 테스트를 수행하는 최고의 도구 중 하나 Android is 로보티움.

통합 테스트

In 통합 테스팅, 모든 단위 테스트 모듈이 결합되고 검증됩니다. ~ 안에 Android, 통합 테스트에는 종종 다음과의 통합 확인이 포함됩니다.Android 서비스 테스트, 활동 테스트, 콘텐츠 제공자 테스트 등과 같은 구성 요소

통합 테스트
통합 테스트 유형 Android

통합 테스트를 수행하는 데 사용되는 많은 테스트 프레임워크가 있습니다. Android Troyd, Robolectric, Robotium 등이 있습니다.

Opera선택적 테스트

  • Opera기능 테스트 또는 승인 테스트라고도 합니다. 이는 응용 프로그램의 완전성과 정확성을 확인하기 위해 고안된 높은 수준의 테스트입니다.
  • In Android, 피트니스 대상 애플리케이션에 대한 운영 테스트를 쉽게 수행할 수 있는 오픈 소스 프레임워크입니다.

시스템 테스트

In 시스템 테스트 시스템 전체를 테스트하고 구성 요소, 소프트웨어 및 하드웨어 간의 상호 작용을 확인합니다.

In Android, 시스템 테스트에는 일반적으로 다음이 포함됩니다.

  • GUI 테스트
  • 사용성 테스트
  • 성능 테스트
  • 스트레스 테스트

위 목록에서, 성능 시험 더 집중이 주어집니다. 다음과 같은 도구를 사용할 수 있습니다. 트레이스뷰 성능 테스트를 실시하기 위해 Android .이 도구는 애플리케이션을 디버깅하고 성능을 프로파일링하는 데 도움이 될 수 있습니다.

자동화된 ANDROID 테스트

안드로이드는 단편화되어 있기 때문에 다양한 기기에서 테스트하는 것이 필요합니다. 하지만 이는 비용도 들게 합니다. 자동화 Android 테스트는 비용 절감에 도움이 될 수 있습니다.

자동화된 안드로이드 테스트의 이점

  • 테스트 케이스 실행 시간 단축
  • 개발 프로세스의 생산성 향상
  • 조기 버그 감지, 소프트웨어 유지 관리 비용 절감
  • 구현 시 버그를 빠르게 찾아 수정
  • 소프트웨어 품질 보장

우리는 다음 2개의 프레임워크를 연구할 것입니다.

  • Android 테스트 프레임워크
  • 로봇 전기 테스트 프레임워크

Android 테스트 프레임워크

표준 테스트 프레임워크 중 하나 Android 응용 프로그램은 Android 테스트 프레임워크. 강력하고 사용하기 쉬운 테스트 프레임워크로, Android SDK 도구.

Android 테스트 프레임워크
Android 테스트 프레임워크 Archi강의
  1. 애플리케이션 패키지 테스트해야 할 대상 애플리케이션입니다.
  2. 계측 테스트 러너 이다 테스트 케이스 대상 애플리케이션에서 테스트 케이스를 실행하는 실행기입니다. 여기에는 다음이 포함됩니다.

2a) 테스트 도구: 테스트 구축을 위한 SDK 도구입니다. 그들은 통합되어 있습니다 Eclipse IDE를 사용하거나 명령줄로 실행하세요.

xnumxb) 원숭이러너: 제어하는 프로그램 작성을 위한 API를 제공하는 도구입니다. Android 외부 장치 또는 에뮬레이터 Android 암호.

  1. 테스트 패키지 테스트 프로젝트로 구성됩니다. 이 패키지는 명명 규칙을 따릅니다. 테스트 중인 애플리케이션의 패키지 이름이 "com.mydomain.myapp"인 경우 테스트 패키지는 "com.mydomain.myapp.test"여야 합니다. 테스트 패키지에는 아래와 같은 2개의 개체가 포함됩니다.

3a) 테스트 케이스 클래스: 대상 애플리케이션에서 실행할 테스트 메소드를 포함합니다.

3b) 모의 객체: 테스트 케이스의 샘플 입력으로 사용될 모의 데이터를 포함합니다.

Android 테스트 케이스 클래스

Android 테스트 케이스 클래스
AndroidTestCase 클래스 다이어그램
  1. 테스트 케이스 포함 JUnit 실행 방법 JUnit test
  2. 테스트스위트 테스트 케이스 세트를 실행하는 데 사용됩니다.
  3. 계측테스트 스위트 InstrumentationTestCase를 실행하기 전에 InstrumentationTestCase에 계측을 주입하는 TestSuite입니다.
  4. 계측 테스트 러너 대상 애플리케이션에서 테스트 케이스를 실행하는 테스트 케이스 실행기입니다.
  5. Android테스트 케이스 확장하다 JUnit 테스트케이스. 여기에는 활동 컨텍스트와 같은 리소스에 액세스하기 위한 메서드가 포함되어 있습니다.
  6. 애플리케이션테스트케이스 통제된 환경에서 애플리케이션 클래스를 확인합니다.
  7. 계측테스트케이스 대상 애플리케이션의 특정 기능이나 동작을 확인합니다(예: 애플리케이션의 UI 출력 확인).
  8. 활동테스트케이스 애플리케이션 활동 테스트를 지원하는 기본 클래스입니다.
  9. ProviderTestCase 단일 ContentProvider를 테스트하기 위한 클래스입니다.
  10. 서비스테스트케이스 테스트 환경에서 서비스 클래스를 테스트하는 데 사용됩니다. 또한 서비스의 수명주기를 지원합니다.
  11. SingeLauchActivityTestCase InstrumentationTestCase를 사용하여 단일 활동을 테스트하는 데 사용됩니다.
  12. ActivityUnitTestCase 단일 격리된 활동을 테스트하는 데 사용됩니다.
  13. 활동 계측TestCase2 을 확장 JUnit 테스트케이스 클래스. 계측을 통해 대상 애플리케이션에 연결됩니다. 이 클래스를 사용하면 애플리케이션의 GUI 구성 요소에 액세스하고 UI 이벤트(키 입력 또는 터치 이벤트)를 UI로 보낼 수 있습니다.

아래는 ActivityInstrumentationTestCase의 예입니다. Calculator 애플리케이션의 UI 작동을 검증하고 UI 출력의 정확성을 확인합니다.

ActivityInstrumentationTestCase2 테스트
ActivityInstrumentationTestCase2 테스트 예

로봇 전기 테스트 프레임워크

다음을 사용하여 테스트 Android 장치나 에뮬레이터를 사용하여 프레임워크를 테스트하는 것은 어렵습니다. 테스트를 구축하고 실행하는 것은 느리고 많은 개발 노력이 필요합니다. 이 문제를 해결하려면 또 다른 선택이 있습니다. 로보일렉트릭 테스트 프레임워크.

Robolectric 프레임워크를 사용하면 다음을 실행할 수 있습니다. Android 테스트 직접 JVM에서 없이 장치나 에뮬레이터가 필요합니다.

Robolectric의 고급 기능
Robolectric의 고급 기능

Robolectric 테스트 케이스 클래스

OperaRobolectric의 특징
OperaRobolectric의 특징
  • 위에 표시된 것처럼 Robolectric은 다음과 같은 작업을 수행할 수 있습니다.
  • Shadow 클래스 등록 및 생성
  • 로딩을 가로채다 Android 수업
  • javaassist를 사용하여 메소드 본문을 대체합니다. Android 수업
  • Shadow 개체를 바인딩합니다. Android 수업
  • 이를 통해 테스트 중인 코드를 실행하지 않고도 실행할 수 있습니다. Android 환경을 제공합니다.

기타 테스트 프레임워크

위에서 언급한 테스트 프레임워크 외에도 다음과 같은 다른 테스트 프레임워크가 많이 있습니다.

신화 Android 지원

많은 기업들이 안드로이드를 개발하고 있습니다 지원 일반적인 오해에 기초한 전략. 이 섹션에서는 다음과 같은 몇 가지 대중적인 신화와 현실을 검토합니다. Android 테스트.

오해 #1:모두 Android 기기는 동일합니다… 에뮬레이터 테스트로 충분합니다

간단한 예부터 시작해 보겠습니다. 애플리케이션은 에뮬레이터에서 완벽하게 작동하지만 일부 실제 장치에서는 실행 중에 충돌이 발생합니다.

실제 장치에서 실행 중 애플리케이션 충돌
실제 장치에서 실행하는 동안 응용 프로그램이 충돌합니다.

에뮬레이터는 충분치 않은 귀하의 모바일 테스트를 위해. 실제 기기에서 앱을 테스트해야 합니다.

오해 #2: 일부 일반적인 장치에서 테스트하는 것만으로도 충분합니다

  • 장치마다 하드웨어, 화면 크기, 메모리 등이 다르기 때문에 장치마다 애플리케이션이 다르게 보입니다. 다양한 장치, OS 버전, 이동통신사 네트워크 및 위치에서 애플리케이션을 테스트해야 합니다.

오해#3: 출시 직전 탐색 테스트로 충분하다

  • 일반적으로 모든 테스트에서는 테스트 케이스를 설계한 후 실행합니다. 그러나 탐색적 테스트에서는 테스트 설계 및 실행이 모두 함께 수행됩니다.
  • 탐색적 테스트에서는 계획이나 준비가 없으며 테스터는 자신이 원하는 테스트를 수행합니다. 일부 기능은 반복적으로 테스트되지만 일부 기능은 완전히 테스트되지 않습니다.

오해 #4: 애플리케이션에 버그가 있으면 사용자는 이해할 것입니다.

  • 애플리케이션이 작동하지 않고 버그가 있으면 사용자가 앱을 제거합니다.
  • 품질 문제는 Google Play에서 나쁜 평가를 받는 첫 번째 이유입니다. 이는 귀하의 평판에 영향을 미치고 고객의 신뢰를 잃게 됩니다.

따라서 적절한 안드로이드 테스트 전략을 갖추는 것이 필수적입니다.

의 모범 사례 Android 지원

  • 애플리케이션 개발자는 코드를 작성할 때 동시에 테스트 케이스를 생성해야 합니다.
  • 모든 테스트 케이스는 소스 코드와 함께 버전 제어에 저장되어야 합니다.
  • 지속적인 통합을 사용하고 코드가 변경될 때마다 테스트를 실행하세요.
  • 에뮬레이터와 루팅된 장치 사용을 피하세요