Robotium 지도 시간: Android 예제를 포함한 테스트 프레임워크

⚡ 스마트 요약

Robotium 오픈 소스입니다 Android 네이티브 앱과 하이브리드 앱의 사용자 인터페이스를 테스트 자동화하는 프레임워크로, 테스터가 여러 영역에 걸쳐 기능, 시스템 및 인수 시나리오를 스크립팅할 수 있도록 지원합니다. Android 활동.

  • 🔘 핵심 과목: Solo는 모든 사용자가 사용할 수 있는 클릭, 검색, 드래그 및 어설션 메서드를 제공합니다. Robotium 테스트 케이스 호출.
  • ☑️ 블랙박스 친화적: 테스트는 런타임에 UI 구성 요소에 연결되므로 애플리케이션 소스에 대한 최소한의 지식만 필요합니다.
  • 4단계 절차: 테스트 명세를 설계하고, 테스트 프로그램을 작성하고, 장치에서 실행한 다음 결과를 수집합니다.
  • 🧪 실제 예제: 완전한 안녕하세요Android테스트 클래스는 표시되는 텍스트, 현재 액티비티 및 시작 버튼을 확인합니다.
  • 🛠️ 두 가지 실행 모드: IDE 또는 터미널에서 `adb shell am instrument` 명령어를 사용하여 테스트를 실행할 수 있습니다.
  • ⚙️ 현재 상태: Robotium 5.6.3 버전이 마지막 릴리스이므로 새로운 버전은 없습니다. Android 프로젝트에서는 일반적으로 이를 다른 것과 짝을 이루거나 대체합니다. Espresso.

Robotium 튜토리얼

Robotium?

Robotium 는 Teledyne LeCroy 오실로스코프 및 LSA-XNUMX 시리즈 임베디드 신호 분석기가 Android 네이티브 및 하이브리드 애플리케이션의 테스트 케이스를 자동화하는 테스트 프레임워크입니다. Robotium개발자는 강력한 자동화된 GUI 테스트 케이스를 생성할 수 있습니다. Android 개발자는 여러 애플리케이션에 걸쳐 있는 기능 테스트, 시스템 테스트 및 인수 테스트 시나리오를 작성할 수도 있습니다. Android 활동.

Robotium 테스트 프레임워크

표준 Android 테스트 프레임워크는 다음과 같은 제한 사항을 가지고 있습니다.

  • 여러 활동을 처리할 수 없음
  • 테스트 실행 성능이 느림
  • 테스트 케이스는 복잡하고 구현하기 어렵습니다.

The Robotium 프레임워크는 테스트를 수행하는 데 더 나은 선택입니다. Android 응용 프로그램.

Robotium 오픈 소스 프레임워크이며, 다음의 확장 기능으로 간주됩니다. Android 테스트 프레임워크를 사용합니다. Robotium개발자는 강력한 자동화된 GUI 테스트 케이스를 생성할 수 있습니다. Android 또한 개발자는 여러 애플리케이션에 걸쳐 있는 기능 테스트, 시스템 테스트 및 인수 테스트 시나리오를 작성할 수 있습니다. Android 활동.

아래 표는 차별화되는 고급 기능을 요약한 것입니다. Robotium 일반적인 계측 프레임워크에서.

고급 기능 Robotium 표준과 비교했을 때 Android 계측 프레임워크

고급 기능 Robotium

Robotium 테스트 케이스 클래스

Robotium 테스트를 위해 소수의 클래스를 제공하며, 기사의 예제는 기존 버전을 가져옵니다. com.jayway.android.robotium.solo 패키지에 포함된 이 클래스들은 여러 액티비티에 걸쳐 있는 테스트 케이스를 지원합니다. Solo 통합되어있다. ActivityInstrumentationTestCase2.

참고 : current Robotium 릴리스는 더 짧은 버전에서 동일한 클래스를 노출합니다. com.robotium.solo 패키지는 그대로 유지되었지만, Maven 좌표는 그대로 남아 있었습니다. com.jayway.android.robotium:robotium-solo프로젝트에 실제로 추가하는 JAR 버전에 맞게 가져오기 설정을 조정하십시오.

아래 다이어그램은 Solo 클래스가 계측 테스트 케이스 위에 어떻게 위치하는지를 보여줍니다.

Solo 클래스가 ActivityInstrumentationTestCase2와 통합되었습니다. Robotium 테스트 사례

통합 Robotium 및 활동 계측 테스트 케이스2

테스터는 애플리케이션 설계에 대한 지식 없이도 테스트 케이스를 작성할 수 있으므로, 이러한 접근 방식은 일종의 특수한 형태라고 할 수 있습니다. 블랙 박스 테스트이는 일반 모델과 비교했을 때 매우 뛰어난 장점입니다. Android 테스트 케이스 수업.

이용 방법 Robotium

사용 Robotium 귀하의 Android 테스트 프로젝트를 진행하려면 아래 단계를 따라야 합니다.

추가 및 사용에 필요한 단계 Robotium 내부 Android 테스트 프로젝트

이용 방법 Robotium

귀하의 제품 품질을 보장하기 위해 Android 신청하시려면 아래의 4단계 절차를 따르십시오.

  • 시험 사양을 설계하십시오.
  • 테스트 프로그램을 개발하세요
  • 대상 장치에서 테스트 케이스를 실행합니다.
  • 검사 결과를 수집하세요

아래 순서도는 네 단계를 순서대로 나타낸 것입니다.

4단계 흐름도 Android 애플리케이션 테스트 절차

Android 애플리케이션 테스트 절차

1단계) 테스트 명세 설계

이는 애플리케이션 테스트의 첫 번째 단계입니다. 이 단계에서는 테스트할 대상을 정의합니다. Android 애플리케이션에는 UI, 액티비티, 컴포넌트, 서비스 등 테스트해야 할 대상이 많습니다. 테스트 대상을 명확하게 정의하면 광범위한 테스트 범위를 확보하는 데 도움이 됩니다.

  • 수행해야 할 테스트 유형(단위 테스트, 기능 테스트, 시스템 테스트)을 계획하십시오.
  • 각각을 디자인하세요 테스트 사례 최대한의 보장을 유지하면서ping 테스트 케이스 수가 적습니다. 테스트하는 코드가 많을수록 버그를 조기에 발견할 가능성이 높아집니다.

2단계) 테스트 프로그램 작성

이 섹션에서는 글쓰기 과정을 안내합니다. Android 테스트 프로그램을 사용하여 Android JUnit 테스트 및 Robotium이미 개발을 완료했다고 가정해 보겠습니다. Android Hello라는 프로그램Android이 프로그램은 아래에 설명된 기능을 가지고 있습니다.

  • 화면에 "Hello world!"라는 텍스트를 표시하세요.
  • 안녕하세요를 표시하세요Android 사용자가 "시작" 버튼을 눌렀을 때 표시되는 메시지입니다.

아래 스크린샷은 테스트 대상 애플리케이션이 기기에서 실행되는 모습을 보여줍니다.

안녕하세요Android 테스트 대상 애플리케이션이 "Hello world" 텍스트와 시작 버튼을 표시하는 모습입니다.

안녕하세요Android 신청

시스템 요구 사항

  • The Android 플랫폼은 사전 통합된 기능을 갖추고 출시됩니다. JUnit 3 프레임워크, 즉 ActivityInstrumentationTestCase2 기반으로 구축됩니다.
  • 만들려면 Android 테스트 프로젝트 Eclipse기계에는 작동 가능한 부품이 필요합니다. Android SDK 설치.
  • 현재 버전을 설치하세요 Android 이전 릴리스를 고정하는 대신 플랫폼 SDK를 사용합니다.

이 튜토리얼의 스크린샷은 다음을 사용합니다. Eclipse 예제가 작성될 당시 표준 툴체인이었던 ADT 플러그인을 사용했습니다. Eclipse ADT는 더 이상 지원되지 않으므로 최신 컴퓨터에서는 다음과 같이 해야 합니다. 다운로드 Android Studio 대신에 동일한 테스트 코드를 내부에서 재사용하세요. Gradle 기준 치수.

다음 Robotium 테스트 프레임워크를 다운로드하세요. Robotium 도서관에서 Robotium 프로젝트 페이지.

를 생성 Android 테스트 프로젝트

  • 파일 -> 새로 만들기 -> 기타를 클릭하세요.
  • 왼쪽 메뉴에서 Android -> Android 아래 그림과 같이 테스트 프로젝트를 선택한 다음 다음을 선택하십시오.

Eclipse 새 프로젝트 마법사 Android 테스트 프로젝트 선택됨

새 항목 만들기 Android 테스트 프로젝트

테스트 프로젝트의 이름을 작성하세요. 명명 규칙에 따라 테스트 프로젝트 이름은 "Hello"로 지정해야 합니다.Android시험".

Eclipse Hello라는 이름의 테스트 프로젝트와의 대화Android명명 규칙에 따라 테스트하십시오.

명명 규칙에 따라 테스트 프로젝트 이름을 추가하세요.

테스트할 대상 애플리케이션을 선택하세요. 이 경우 Hello입니다.Android을 클릭한 다음, 마침을 클릭합니다.

Eclipse 마법사 단계에서 "안녕하세요"를 선택합니다.Android 테스트 대상 애플리케이션으로서

테스트할 대상 애플리케이션을 선택하세요.

테스트 스위트 생성

테스트 명세를 바탕으로 이제 테스트 프로그램에 대한 테스트 스위트를 생성합니다. 다양한 옵션 중에서 선택할 수 있습니다. 소프트웨어 테스팅 프레임워크. 이 튜토리얼에서는 표준 프레임워크를 사용합니다. Android 테스트 프레임워크 ActivityInstrumentationTestCase2. 테스트하려면 Robotium추가 Robotium 라이브러리 파일을 libs 프로젝트 폴더 내의 디렉토리입니다.

테스트 케이스는 여러 테스트를 실행하는 데 사용되는 픽스처를 정의합니다. 테스트 케이스를 정의하려면 아래의 프로그램 구조를 따르십시오.

  • TestCase의 하위 클래스를 구현하세요.
  • 조명기구의 상태를 저장하는 인스턴스 변수를 정의합니다.
  • setUp() 메서드를 재정의하여 픽스처 상태를 초기화합니다.
  • 테스트 후 정리를 위해 tearDown() 메서드를 재정의하세요.

아래 다이어그램은 해당 구조를 여러분이 작성하게 될 테스트 프로그램에 적용한 것입니다.

구조 Robotium 설정, 테스트 방법 및 종료 과정을 보여주는 테스트 프로그램입니다.

테스트 프로그램 구조

package com.example.helloandroid.test;

import com.example.helloandroid.HelloAndroid;
import com.jayway.android.robotium.solo.Solo;
import android.test.ActivityInstrumentationTestCase2;
import android.widget.TextView;

public class HelloAndroidTest extends ActivityInstrumentationTestCase2 <HelloAndroid> {
    
	private HelloAndroid mActivity;
	private TextView mView;
	private String resourceString;
	private Solo solo;
	
	public HelloAndroidTest () {
		// TODO Auto-generated constructor stub
		super("com.example.helloandroid",HelloAndroid.class);	
	}
	
	 @Override
	protected void setUp() throws Exception {
		// TODO Auto-generated method stub
	//	super.setUp();
		 
	 	mActivity = this.getActivity();
		solo = new Solo(getInstrumentation(),getActivity());
		mView = (TextView) mActivity.findViewById(com.example.helloandroid.R.id.textview2);
		resourceString = mActivity.getString(com.example.helloandroid.R.string.hello_world);
		
	}
	 
	 @Override
	protected void tearDown() throws Exception {
		// TODO Auto-generated method stub
		//super.tearDown();
		solo.finishOpenedActivities();
	}
	
	public void testPrecondition() {
		assertNotNull(mView);
	}
	
	/* test Target application contains a text display "Hello World!"*/
	public void testSearchText() {
		assertEquals(resourceString,(String) mView.getText());
	}
	
	/* test HelloAndroid Activity on target application is exist*/
	public void testCurrentActivity() throws Exception  {
    	solo.assertCurrentActivity("wrong activity", HelloAndroid.class);
    }
    
	/* test Application UI contains "Start" button */
	/* send event click button to target application */
    public void testSearchButton() throws Exception {
    	boolean found = solo.searchButton("Start");
    	solo.clickOnButton("Start");
    	assertTrue(found);
    }

	

}

테스트 케이스 추가

  • 테스트 스위트와 동일한 패키지에 TestCase 클래스를 생성합니다.
  • 예를 들어 Hello와 같은 특정 활동을 테스트하려면AndroidActivityInstrumentationTestCase2를 확장하는 테스트 케이스를 생성합니다.Android>.
  • 해당 클래스 내부에서 테스터는 getActivity() 메서드를 통해 테스트 대상 액티비티를 가져옵니다.
  • "test + 원래 메서드 이름"이라는 이름의 메서드를 추가하여 활동에 대한 테스트를 자유롭게 작성하세요.
  • 테스트 메서드 내부에서 테스터는 다음을 사용할 수 있습니다. Android JUnit 실제 값과 예상 값을 비교하는 함수입니다. 이러한 메서드는 아래에 나와 있습니다.

아래 표는 두 프레임워크에서 가장 자주 사용되는 어설션 및 상호 작용 방법을 나열합니다.

예시 메서드 Robotium 솔로 수업과 Android 테스트 프레임워크

예시 메서드 Robotium 그리고 Android 테스트 프레임워크

위의 테스트 스위트는 애플리케이션 GUI에 "Hello World!"라는 텍스트가 표시되고 "Start"라는 이름의 버튼이 있는지 확인합니다.

3단계) ​​테스트 실행

테스트 프로그램을 작성한 후에는 아래 단계에 따라 테스트를 실행하십시오.

  • 연결 Android 기기를 PC에 연결하거나, 실제 기기를 사용할 수 없는 경우 에뮬레이터를 실행하세요.
  • IDE에서 테스트 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 '다른 이름으로 실행'을 선택하세요. Android 단위 테스트.

아래 스크린샷은 IDE에서 테스트 실행이 시작되는 모습을 보여줍니다.

시작 Robotium 테스트 프로그램으로서 Android IDE에서 유닛 테스트 실행

테스트 프로그램 실행

IDE에서 테스트를 실행하는 것 외에도 명령줄에서 실행할 수 있습니다. 이 테스트 프로그램에서 테스트 패키지는 다음과 같습니다. com.example.helloandroid.test리눅스 터미널에서 다음 명령어를 사용하여 해당 패키지에 포함된 모든 테스트를 실행하세요.

$ adb shell am instrument -w -e package com.example.helloandroid.test

4단계) 테스트 결과 확인하기

테스트 실행 후 테스트 결과를 수집합니다.

이 테스트 프로그램에서는 네 가지 테스트 메서드가 실행됩니다. 아래 실행 결과에서 모든 테스트 케이스가 통과했습니다.

테스트 결과 출력 (네 가지 모두 표시) Robotium 테스트 케이스 통과

모든 테스트 케이스가 통과했을 때의 테스트 결과 출력

테스트 케이스가 실패하면 실패한 테스트 케이스를 보여주는 출력 메시지가 표시됩니다.

테스트 결과 출력 목록 Robotium 실패한 테스트 케이스

테스트 케이스가 실패했을 때의 테스트 결과 출력

출처 Code 예

이 글에는 튜토리얼을 더 명확하게 따라가고 기술적인 세부 사항을 빠르게 파악하는 데 도움이 되는 소스 코드 예제가 포함되어 있습니다.

비교하고 싶다면 Robotium 이 공간의 다른 옵션들을 보려면 다음을 참조하세요. 모바일 애플리케이션 테스트 가이드, Appium 지도 시간 그리고 요약 모바일 앱 테스트 도구.

자주 묻는 질문

Robotium 5.6.3은 마지막으로 공개된 릴리스이며 활발한 개발은 몇 년 전에 중단되었습니다. 프레임워크는 여전히 실행되고 아티팩트는 여전히 Maven Central에 있지만, 새로운 버전은 더 이상 출시되지 않습니다. Android 프로젝트는 일반적으로 선택합니다 Espresso, 그 Google 유지합니다.

Robotium 이는 런타임에 위젯에 바인딩되는 블랙박스 프레임워크로, 소스 코드에 대한 지식이 거의 필요하지 않습니다. Espresso is GoogleUI 스레드와 동기화되며 애플리케이션 코드에 대한 접근 권한을 필요로 하는 화이트박스 도구입니다.

Robotium 한 번에 하나의 애플리케이션만 구동할 수 있고, WebView 외부의 Flash 또는 웹 콘텐츠를 안정적으로 처리할 수 없으며, 오픈 소스 JAR에 내장된 레코딩 기능이 없고, 더 이상 사용되지 않는 계측 클래스에 의존하기 때문에 최신 환경에서 사용하기가 복잡합니다. Gradle 빌드.

선언 androidTestImplementation 'com.jayway.android.robotium:robotium-solo:5.6.3' 모듈 빌드 파일에서 또는 삭제 robotium-solo JAR 으로 libs 그리고 해당 파일을 파일 종속성으로 참조하십시오.

예. Robotium 테스트는 일반적인 계측 테스트이므로 동일한 APK가 에뮬레이터 또는 실제 단말기에서 실행됩니다. 제스처, 센서 및 성능 검사에는 에뮬레이터의 실행 시간이 다를 수 있으므로 실제 하드웨어를 사용하는 것이 좋습니다.

Robotium UI 레벨에서 기능, 시스템 및 사용자 승인 시나리오에 적합합니다. 하지만 JVM에서 더 빠르게 실행되는 단위 테스트나 더 광범위한 테스트를 대체하는 것은 아닙니다. 소프트웨어 테스트 유형 아직 릴리스가 필요합니다.

머신 러닝은 레이아웃 변경에도 살아남는 자가 복구형 로케이터, 렌더링 오류를 표시하는 시각적 비교 기능, 재실행 우선순위를 정하는 불안정한 테스트 감지 기능 등에 사용됩니다. 이러한 도구는 유지 보수 작업을 줄여주지만, 어떤 동작이 중요한지는 여전히 사람이 결정합니다.

GitHub 부조종사 액티비티 클래스에서 Solo 설정, 해제 및 검증 메서드를 구성할 수 있습니다. Rev제안 내용을 주의 깊게 살펴보십시오. 해당 제안에는 기존 패키지 가져오기 또는 앱이 절대 충족하지 않는 어설션이 포함될 수 있습니다.

이 게시물을 요약하면 다음과 같습니다.