기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Appium 테스트를 Device Farm과 통합
다음 지침을 사용하여 Appium 테스트를 AWS Device Farm 과 통합합니다. Device Farm에서 Appium 테스트를 사용하는 방법에 대한 자세한 내용은 섹션을 참조하세요Appium 테스트 및 AWS Device Farm.
Appium 테스트 패키지 구성
다음 지침을 사용하여 테스트 패키지를 구성하세요.
- Java (JUnit)
-
-
pom.xml
를 수정하여 패키징을 JAR 파일로 설정합니다.
<groupId>com.acme</groupId>
<artifactId>acme-myApp-appium</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
-
pom.xml
를 사용하여 테스트를 JAR 파일로 빌드maven-jar-plugin
하도록 를 수정합니다.
다음 플러그인은 테스트 소스 코드(디렉src/test
토리의 모든 항목)를 JAR 파일로 빌드합니다.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
-
pom.xml
를 사용하여 종속성을 JAR 파일로 빌드maven-dependency-plugin
하도록 를 수정합니다.
다음 플러그인은 종속 항목을 dependency-jars
디렉터리에 복사합니다.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/dependency-jars/</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
-
다음 XML 어셈블리를 에 저장합니다src/main/assembly/zip.xml
.
다음은 구성 시 Maven에 빌드 출력 디렉터리와 dependency-jars
디렉터리의 루트에 있는 모든 항목이 포함된 .zip 파일을 빌드하도록 지시하는 어셈블리 정의XML입니다.
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>zip</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${project.build.directory}</directory>
<outputDirectory>./</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
<fileSet>
<directory>${project.build.directory}</directory>
<outputDirectory>./</outputDirectory>
<includes>
<include>/dependency-jars/</include>
</includes>
</fileSet>
</fileSets>
</assembly>
-
maven-assembly-plugin
을 사용하도록 pom.xml
을 수정하여 테스트와 모든 종속성을 하나의 .zip 파일에 패키징합니다.
다음 플러그인은 앞의 어셈블리를 사용하여 mvn package가 실행될 때마다 빌드 출력 디렉터리에 zip-with-dependencies
이라는 .zip 파일을 만듭니다.
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>zip-with-dependencies</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/main/assembly/zip.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
1.3에서 주석이 지원되지 않는다는 오류 메시지가 나타나면 pom.xml
에 다음을 추가하세요.
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
- Java (TestNG)
-
-
pom.xml
를 수정하여 패키징을 JAR 파일로 설정합니다.
<groupId>com.acme</groupId>
<artifactId>acme-myApp-appium</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
-
pom.xml
를 사용하여 테스트를 JAR 파일로 빌드maven-jar-plugin
하도록 를 수정합니다.
다음 플러그인은 테스트 소스 코드(디렉src/test
토리의 모든 항목)를 JAR 파일로 빌드합니다.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
-
pom.xml
를 사용하여 종속성을 JAR 파일로 빌드maven-dependency-plugin
하도록 를 수정합니다.
다음 플러그인은 종속 항목을 dependency-jars
디렉터리에 복사합니다.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/dependency-jars/</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
-
다음 XML 어셈블리를 에 저장합니다src/main/assembly/zip.xml
.
다음은 구성 시 Maven에 빌드 출력 디렉터리와 dependency-jars
디렉터리의 루트에 있는 모든 항목이 포함된 .zip 파일을 빌드하도록 지시하는 어셈블리 정의XML입니다.
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>zip</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${project.build.directory}</directory>
<outputDirectory>./</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
<fileSet>
<directory>${project.build.directory}</directory>
<outputDirectory>./</outputDirectory>
<includes>
<include>/dependency-jars/</include>
</includes>
</fileSet>
</fileSets>
</assembly>
-
maven-assembly-plugin
을 사용하도록 pom.xml
을 수정하여 테스트와 모든 종속성을 하나의 .zip 파일에 패키징합니다.
다음 플러그인은 앞의 어셈블리를 사용하여 mvn package가 실행될 때마다 빌드 출력 디렉터리에 zip-with-dependencies
이라는 .zip 파일을 만듭니다.
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>zip-with-dependencies</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/main/assembly/zip.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
1.3에서 주석이 지원되지 않는다는 오류 메시지가 나타나면 pom.xml
에 다음을 추가하세요.
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
- Node.JS
-
Appium Node.js 테스트를 패키징하여 Device Farm에 업로드하려면 로컬 컴퓨터에 다음을 설치해야 합니다.
-
nvm이 있는지 확인합니다.
command -v nvm
출력에 nvm
이 나타납니다.
자세한 내용은 의 nvm을 참조하세요 GitHub.
-
이 명령을 실행하여 Node.js를 설치하세요.
nvm install node
다음과 같이 Node.js의 특정 버전을 지정할 수 있습니다.
nvm install 11.4.0
-
올바른 버전의 노드가 사용 중인지 확인합니다.
node -v
-
npm-bundle 전 세계 설치
npm install -g npm-bundle
- Python
-
-
불필요한 종속 항목이 앱 패키지에 포함되지 않도록 테스트를 개발하고 패키징하기 위해서는 Python virtualenv를 설정하는 것이 좋습니다.
$
virtualenv workspace
$
cd workspace
$
source bin/activate
-
--system-site-packages
옵션으로 Python virtualenv를 생성하지 마세요. 글로벌 사이트 패키지 디렉터리에서 패키지를 상속하기 때문입니다. 이로 인해 테스트에 필요하지 않은 종속성이 가상 환경에 포함될 수 있습니다.
-
또한 이러한 테스트가 실행되는 인스턴스에 이러한 기본 라이브러리가 없을 수 있으므로, 테스트가 기본 라이브러리에 종속된 종속성을 사용하지 않음을 확인해야 합니다.
-
가상 환경에 py.test를 설치하세요.
$
pip install pytest
-
가상 환경에 Appium Python 클라이언트를 설치하세요.
$
pip install Appium-Python-Client
-
사용자 지정 모드에서 다른 경로를 지정하지 않으면 Device Farmd은 테스트가 tests/
에 저장될 것으로 예상합니다. find
를 사용하여 폴더 내의 모든 파일을 표시할 수 있습니다.
$
find tests/
이러한 파일에 Device Farm에서 실행할 테스트 스위트가 포함되어 있는지 확인합니다.
tests/
tests/my-first-tests.py
tests/my-second-tests/py
-
가상 환경 작업 공간 폴더에서 이 명령을 실행하여 실행 없이도 테스트 목록을 표시합니다.
$
py.test --collect-only tests/
출력에 Device Farm에서 실행하려는 테스트가 표시되는지 확인하세요.
-
테스트/폴더 아래의 모든 캐시된 파일을 정리하세요.
$
find . -name '__pycache__' -type d -exec rm -r {} +
$
find . -name '*.pyc' -exec rm -f {} +
$
find . -name '*.pyo' -exec rm -f {} +
$
find . -name '*~' -exec rm -f {} +
-
작업 공간에서 다음 명령을 실행하여 requirements.txt 파일을 생성하세요.
$
pip freeze > requirements.txt
- Ruby
-
Appium Ruby 테스트를 패키징하여 Device Farm에 업로드하려면 로컬 컴퓨터에 다음을 설치해야 합니다.
-
필요한 키, RVM및 Ruby를 설치합니다. 지침은 RVM 웹 사이트에서 설치를 RVM 참조하세요.
설치가 완료되면 로그아웃한 후 다시 로그인하여 터미널을 다시 로드합니다.
RVM 는 bash 쉘에 대해서만 함수로 로드됩니다.
-
rvm이 올바르게 설치되었는지 확인하세요.
command -v rvm
출력에 rvm
이 나타납니다.
-
다음과 같은 Ruby의 특정 버전을 설치하려는 경우 2.5.3
에서 다음 명령을 실행합니다.
rvm install ruby 2.5.3 --autolibs=0
요청된 버전의 Ruby를 사용하고 있는지 확인하세요.
ruby -v
-
원하는 테스트 플랫폼용 패키지를 컴파일하도록 번들러를 구성하세요.
bundle config specific_platform true
-
.lock 파일을 업데이트하여 테스트를 실행하는 데 필요한 플랫폼을 추가하세요.
-
Android 디바이스에서 실행할 테스트를 컴파일하는 경우 다음 명령어를 실행하여 Android 테스트 호스트의 종속성을 사용하도록 Gemfile을 구성하세요.
bundle lock --add-platform x86_64-linux
-
iOS 디바이스에서 실행할 테스트를 컴파일하는 경우 다음 명령을 실행하여 iOS 테스트 호스트에 대한 종속성을 사용하도록 Gemfile을 구성하세요.
bundle lock --add-platform x86_64-darwin
-
bundler gem은 대개 기본적으로 설치됩니다. 설치되어 있지 않다면 다음을 설치하세요.
gem install bundler -v 2.3.26
압축 테스트 패키지 파일 생성
Device Farm 에서는 압축 테스트 패키지에 있는 파일의 폴더 구조가 중요하며, 일부 아카이브 도구는 ZIP 파일의 구조를 암시적으로 변경합니다. 로컬 데스크톱의 파일 관리자에 내장된 아카이브 유틸리티(예: 파인더 또는 Windows 탐색기)를 사용하는 대신 아래에 지정된 명령줄 유틸리티를 따르는 것이 좋습니다.
이제 Device Farm에 대한 테스트를 번들하세요.
- Java (JUnit)
-
테스트 빌드 및 패키징
$ mvn clean package -DskipTests=true
zip-with-dependencies.zip
파일이 결과로 생성됩니다. 이것은 테스트 패키지입니다.
- Java (TestNG)
-
테스트 빌드 및 패키징
$ mvn clean package -DskipTests=true
zip-with-dependencies.zip
파일이 결과로 생성됩니다. 이것은 테스트 패키지입니다.
- Node.JS
-
-
프로젝트를 확인하세요.
프로젝트의 root 디렉터리에 있어야 합니다. root 디렉터리에서 package.json
을 볼 수 있습니다.
-
이 명령을 실행하여 로컬 종속 항목을 설치합니다.
npm install
또한 이 명령은 현재 디렉터리에 node_modules
폴더를 만듭니다.
-
이 명령을 실행하여 현재 폴더의 파일을 *.tgz 파일로 패키징하세요. 이 파일은 package.json
파일의 name
속성을 사용하여 이름이 지정됩니다.
npm-bundle
이 tarball(.tgz) 파일에는 모든 코드와 종속 항목이 들어 있습니다.
-
이 명령을 사용하여, 전 단계에서 생성한 tarball(*.tgz 파일)을 하나의 압축 아카이브로 묶어 생성하세요.
zip -r MyTests.zip
*.tgz
이것이 다음 절차에 Device Farm에 업로드하는 MyTests.zip
파일입니다.
- Python
-
- Python 2
-
pip를 사용하여 필요한 Python 패키지(“wheelhouse”라고 불림)의 아카이브를 생성하세요.
$
pip wheel --wheel-dir wheelhouse -r requirements.txt
wheelhouse, 테스트 및 pip 요구 사항을 Device Farm용 zip 아카이브로 패키징하세요.
$
zip -r test_bundle.zip
tests/ wheelhouse/ requirements.txt
- Python 3
-
테스트 및 pip 요구 사항을 zip 파일로 패키징하세요.
$
zip -r test_bundle.zip
tests/ requirements.txt
- Ruby
-
-
다음 명령을 실행하여 가상 Ruby 환경을 생성하세요.
# myGemset is the name of your virtual Ruby environment
rvm gemset create myGemset
-
다음 명령을 실행하여 앞에서 생성한 환경을 사용하세요.
rvm gemset use myGemset
-
소스 코드를 확인하세요.
프로젝트의 root 디렉터리에 있어야 합니다. root 디렉터리에서 Gemfile
을 볼 수 있습니다.
-
이 명령을 실행하여 Gemfile
의 로컬 종속 항목과 모든 gem을 설치하세요.
bundle install
이제 테스트를 로컬로 실행할 수 있습니다. 다음 명령을 실행하여 테스트를 로컬로 실행하세요.
bundle exec $test_command
-
vendor/cache
폴더의 gem을 패키징하세요.
# This will copy all the .gem files needed to run your tests into the vendor/cache directory
bundle package --all-platforms
-
다음 명령을 실행하여, 소스 코드와 모든 종속 항목을 하나의 압축 아카이브로 묶어 생성하세요.
zip -r MyTests.zip Gemfile vendor/ $(any other source code directory files)
이것이 다음 절차에 Device Farm에 업로드하는 MyTests.zip
파일입니다.
Device Farm에 테스트 패키지 업로드
Device Farm 콘솔을 사용하여 테스트를 업로드할 수 있습니다.
https://console.aws.amazon.com/devicefarm 에서 Device Farm 콘솔에 로그인합니다.
-
Device Farm 탐색 패널에서 모바일 디바이스 테스트를 선택한 다음 프로젝트를 선택하세요.
-
새 사용자인 경우 새 프로젝트를 선택하고 프로젝트 이름을 입력한 다음 제출을 선택하세요.
프로젝트가 이미 있는 경우 해당 프로젝트를 선택하여 테스트를 업로드할 수 있습니다.
-
프로젝트를 연 후 새 실행 생성을 선택하세요.
-
- 기본 Android 및 iOS 테스트의 경우
-
애플리케이션 선택 페이지에서 모바일 앱을 선택하고 파일 선택을 클릭하여 애플리케이션의 배포 가능 패키지를 업로드하세요.
파일은 Android .apk
또는 iOS .ipa
여야 합니다. iOS 애플리케이션은 시뮬레이터가 아닌 실제 디바이스용으로 빌드되어야합니다.
- 모바일 웹 애플리케이션 테스트의 경우
-
애플리케이션 선택 페이지에서 웹 앱을 선택하세요.
-
테스트에 적절한 이름을 지정하세요. 여기에는 공백이나 구두점 조합이 포함될 수 있습니다.
-
Next(다음)를 선택합니다.
-
구성 페이지의 테스트 프레임워크 설정 섹션에서 Appium을 선택합니다.language
에서 파일 을 선택합니다.
-
테스트가 포함된 .zip 파일을 찾아서 선택하세요. 이 .zip 파일은 Appium 테스트 패키지 구성에 설명된 형식이어야 합니다.
-
사용자 지정 환경에서 테스트 실행을 선택하세요. 이러한 실행 환경을 사용하면 테스트 설정, 해제 및 간접 호출을 완벽하게 제어할 수 있을 뿐만 아니라 특정 버전의 런타임 및 Appium 서버를 선택할 수 있습니다. 테스트 사양 파일을 통해 사용자 지정 환경을 구성할 수 있습니다. 자세한 내용은 AWS Device Farm의 사용자 지정 테스트 환경 작업을 참조하세요.
-
다음을 선택한 다음 지침에 따라 디바이스를 선택하고 실행을 시작하세요. 자세한 내용은 Device Farm에서 테스트 실행 생성 단원을 참조하세요.
Device Farm은 Appium 테스트를 수정하지 않습니다.
테스트의 스크린샷 캡처(선택 사항)
테스트의 일부로 스크린샷을 캡처할 수 있습니다.
Device Farm은 Appium 스크린샷 저장 위치로 예상하는 로컬 파일 시스템의 정규화된 경로로 DEVICEFARM_SCREENSHOT_PATH
속성을 설정합니다. 스크린샷이 저장되는 테스트별 디렉터리는 런타임에 정의됩니다. 스크린샷은 Device Farm 보고서에 자동으로 포함됩니다. 스크린샷을 보려면 Device Farm 콘솔에서 스크린샷 섹션을 선택하세요.
Appium 테스트에서 스크린샷을 찍는 방법에 대한 자세한 내용은 Appium API 설명서의 스크린샷 가져오기를 참조하세요.