Share via


업로드를 위한 Appium 테스트 준비

중요

Visual Studio App Center는 2025년 3월 31일에 사용 중지될 예정입니다. Visual Studio App Center가 완전히 사용 중지될 때까지 계속 사용할 수 있지만 마이그레이션을 고려할 수 있는 몇 가지 권장 대안이 있습니다.

지원 타임라인 및 대안에 대해 자세히 알아보세요.

업로드를 위해 앱 및 해당 테스트 제품군을 준비하는 단계는 테스트 프레임워크에 따라 다릅니다. 이 가이드에서는 App Center에 업로드하기 위해 JUnit과 함께 Java를 사용하여 Appium 테스트를 준비하는 방법을 설명합니다. Appium 테스트 작성에 대한 지침은 Appium 설명서를 참조하세요.

Appium 지원에 대한 다음 제한 사항에 유의하세요.

참고

WebView 컨텍스트, Chrome 웹 드라이버 및 기능을 사용한 Chrome 브라우저 테스트 browserName 가 지원됩니다!

  • TestNG에 대한 지원이 없습니다(JUnit 테스트만 지원됨).
  • Android 4.2 또는 이전 버전에 대한 지원이 없습니다. 사용되지 않는 UIAutomator 드라이버에 대한 지원이 없습니다.
  • iOS 9.2.1 또는 이전 버전에 대한 지원이 없습니다. 사용되지 않는 UIAutomation iOS 드라이버에 대한 지원이 없습니다.
  • 에 대한 JUnit @Category attribute지원이 없습니다. ( 대신 포함/제외 를 사용할 수 있습니다.)
  • Maven 버전은 3.3.9 이상이어야 합니다.
  • 현재 Appium 버전은 1.22.0입니다. 새 릴리스로 정기적으로 업데이트됩니다.
  • JUnit 4.9 - 4.12가 지원됩니다. JUnit 5를 지원하지 않습니다.
  • 테스트는 정확히 하나의 앱을 대상으로 해야 합니다. (MobileCapabilityType.FULL_RESET 지원됨)

참고

지원되지 않는 도구 또는 기능을 사용하는 경우에도 App Center에서 테스트가 계속 작동할 수 있습니다. 그러나 지원되지 않는 기능은 향후 업데이트에서 QA가 아니며 경고 없이 중단될 수 있습니다.

사전 요구 사항

테스트는 Maven Surefire를 사용하여 실행되며, 테스트는 특정 명명 규칙을 따라야 합니다.

"**/Test*.java" - includes all of its subdirectories and all Java filenames that start with "Test".
"**/*Test.java" - includes all of its subdirectories and all Java filenames that end with "Test".
"**/*Tests.java" - includes all of its subdirectories and all Java filenames that end with "Tests".
"**/*TestCase.java" - includes all of its subdirectories and all Java filenames that end with "TestCase".

App Center 테스트에 업로드하기 전에 Maven을 사용하여 컴퓨터에서 로컬로 테스트를 실행하는 것이 작동하는지 확인합니다.

➜  AppiumTest git:(main) ✗ mvn verify
...
Running MainTest
started: SimpleTest (MainTest)
Setting up capabilities
failed
finished
Tests run: 2, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 0.728 sec <<< FAILURE!
SimpleTest(MainTest)  Time elapsed: 0.594 sec  <<< ERROR!
...

명령줄을 사용하여 로컬로 테스트를 실행할 수 없는 경우 App Center 테스트에서도 테스트가 작동하지 않습니다.

1. 빌드 시스템 변경

1단계 - 종속성 추가

Appium 테스트 확장에 대한 종속성을 추가해야 합니다.

<dependency>
    <groupId>com.microsoft.appcenter</groupId>
    <artifactId>appium-test-extension</artifactId>
    <version>1.6</version>
</dependency>

이 코드는 향상된 Android 및 iOS 드라이버를 컴파일 시간에 사용할 수 있도록 합니다. 향상된 드라이버는 주로 기능을 사용하도록 설정 label 하기 위해 제공됩니다. 기능에 대한 자세한 내용은 4단계를 label 참조하세요.

2단계 - 업로드 프로필 추가

이 코드 조각을 태그의 에 복사합니다 pom.xml<profiles>. pom에 섹션이 없는 <profiles> 경우 섹션을 만듭니다. 프로필이 활성화되면 테스트 클래스와 모든 종속성을 폴더에 target/upload 압축하여 테스트에 업로드할 준비가 됩니다.

2. 테스트 변경 내용

1단계 - 가져오기 추가

다음 패키지를 테스트 클래스로 가져옵니다.

import com.microsoft.appcenter.appium.Factory;
import com.microsoft.appcenter.appium.EnhancedAndroidDriver;
import org.junit.rules.TestWatcher;
import org.junit.Rule;

2단계 - TestWatcher 인스턴스화

각 테스트 클래스에 이 선언을 삽입합니다.

    @Rule
    public TestWatcher watcher = Factory.createWatcher();

3단계 - 드라이버 선언 업데이트

선언AndroidDriver<MobileElement> 또는 IOSDriver<MobileElement>EnhancedAndroidDriver<MobileElement> 바꾸기EnhancedIOSDriver<MobileElement>

    private static EnhancedAndroidDriver<MobileElement> driver;

4단계 - 드라이버 인스턴스화 업데이트

다음과 같은 형식의 줄과 같이 드라이버를 인스턴스화하는 방법을 바꿉 있습니다.

    driver = new AndroidDriver<MobileElement>(url, capabilities);

... 는 다음과 같이 변경됩니다.

    driver = Factory.createAndroidDriver(url, capabilities);

이러한 드라이버를 사용하면 추가 수정 없이 로컬로 테스트를 실행할 수 있지만 를 사용하여 driver.label("text")테스트 실행에서 테스트 단계에 "레이블을 지정"할 수 있습니다. 디바이스의 텍스트와 스크린샷은 App Center의 테스트 보고서에 표시됩니다.

앱 최종 상태의 스크린샷을 @After 만드는 메서드에서 를 호출 driver.label 하는 것이 좋습니다. 테스트에 대한 예제 @After 메서드는 다음 코드와 같습니다.

    @After
    public void TearDown(){
        driver.label("Stopping App");
        driver.quit();
    }

3. App Center 테스트에 업로드

테스트를 업로드하는 단계:

  1. 테스트 실행을 시작할 때의 지침을 사용하여 App Center 테스트 업로드 명령을 생성합니다.

  2. 테스트 클래스 및 모든 종속성을 폴더에 target/upload 압축합니다.

    mvn -DskipTests -P prepare-for-upload package
    
  3. 업로드 명령을 실행합니다.

    appcenter test run appium --app "APP_ID" --devices "DEVICE_SET_ID" --app-path PATH_TO_FILE.apk  --test-series "main" --locale "en_US" --build-dir target/upload
    

4. 성능 문제 해결

App Center의 디바이스에 대한 테스트는 로컬 디바이스보다 약간 느리게 실행됩니다. 일반적으로 더 많은 디바이스를 사용할 수 있으므로 실행 속도가 느려지고 병렬 테스트 실행이 허용됩니다.

테스트 실행 속도가 느린 기본 원본에는 다시 서명, 다시 설치 및 네트워크 작업의 세 가지가 있습니다.

다시 서명(iOS에서)

iOS 디바이스에 설치되기 전에 앱은 다시 서명이라는 프로세스를 진행합니다. 이 프로세스는 프로비전 프로필이 클라우드의 디바이스와 일치하도록 하는 데 필요합니다. 다시 서명하는 데는 일반적으로 ~1~2분 정도 시간이 걸립니다. 드물게 다시 서명하면 다시 서명된 앱이 캐시되기 때문에 성능이 저하됩니다. 시간이 많이 걸리는 프로세스는 이진당 한 번만 실행됩니다.

지속적인 업데이트 설정이 빌드 및 테스트하기 전에 IPA 버전을 업데이트하는 경우 각 테스트에 대해 이진 파일이 달라지고 재 서명 페널티가 더 자주 발생합니다.

재설치

공유 디바이스 클라우드에서는 각 테스트 간에 디바이스가 정리되도록 보장하는 것이 중요합니다. 디바이스를 사용하는 다음 고객은 다른 organization 사람일 수 있습니다. App Center 테스트에서 테스트 실행이 완료된 후 앱이 자동으로 제거됩니다.

테스트 실행 속도를 높이기 위해 생략 MobileCapabilityType.FULL_RESET 하고 로 true 설정할 MobileCapabilityType.NO_RESET 수 있습니다. 자세한 내용은 전략 재설정 을 참조하세요.

네트워크 작업

서버가 원격 호스트에 더 가깝고 전용이므로 로컬 네트워크 작업이 더 빠릅니다.