Amazon Web Services 한국 블로그

AWS Device Farm – 실제 기기로 모바일 앱 테스트하기

“Write once, test everywhere”(개발하면 어디에서도 테스트 할 수 있다)”는 캐치 프레이즈는 다른 기술을 설명하기 위해서 만들어졌지만, 모바일 어플리케이션에도 동일하게 적용될 수 있다고 생각합니다. 다양한 통신사, 제조사, 모델, 운영체제(버전, 패치, 확장 등 포함), 화면 크기, 입력 장치, 연결 옵션, 장치 설정 그리고 권한 설정 등의 종류를 테스트 지표로 삼으면 거의 무한대 테스트 케이스를 만들게 됩니다. 장치의 위치나 언어 선택 등은 넘어가더라도요. 이뿐 아니라 인기있는 어플리케이션들의 빠른 배포 주기 (경우에 따라 일일 배포) 및 테스트는 비용이 많이 들고, 복잡하고 힘든 일입니다. 따라서 많은 어플리케이션 개발자들이 통합 테스트를 포기하거나 어플리케이션의 배포 대상을 적절한 종류의 가능한 장치들로만 한정하게 됩니다.

새로운 AWS Device Farm
오늘 새로운 AWS Device Farm을 소개하려고 합니다. 이 새로운 서비스는 여러분들이 안드로이드 및 Fire OS 어플리케이션을 200개 이상(장치 및 운영체제 종류 별)의 고유한 환경에서 빠르고 안전하게 테스트함으로서 품질을 향상 시킬 수 있도록 도와드립니다.

여러분께서는 쉽게 여러분의 어플리케이션을 업로드하고, 테스트를 수행하기 위한 장치를 선택하고, 여러분의 선택에 따른 테스트를 수행하도록 할 수 있습니다. 테스트가 완료되면 여러분들께서는 실시간 보고서를 받으실 수 있어, 문제점을 신속하게 확인하고 해결할 수 있도록 합니다.

테스트 팜 사용하기
Device Farm을 살펴 보도록 하겠습니다. 테스트를 위하여 IMDB Movie App을 사용하도록 하겠습니다. 첫번째 단계로 새로운 프로젝트를 생성합니다.

테스트가 준비가 되면, 새로운 Run을 생성합니다. Run은 테스트 될 어플리케이션 및 수행되어야 할 테스트 및 테스트가 실행될 장치를 인식합니다. 만약 업로드 된 어플리케이션을 가지고 있으면, 이 곳에서 시작할 수 있습니다. 그렇지 않으면 간단히 Upload를 클릭합니다. 안드로이드 및 Fire OS 어플리케이션은 APK 파일들로 업로드 됩니다.

만약에 패키지가 한 개 이상의 어플리케이션을 가지고 있으면 원하는 하나의 어플리케이션을 선택 할 수 있습니다. (Minimum SDK 항목은 해당 바이너리가 SDK 14 또는 이상에서 실행될 것을 나타냅니다. 이는 어플리케이션과 호환 가능한 장치를 결정하는데 사용됩니다.)

그리고 나서 Run을 위한 Test 를 구성합니다. 내장된 fuzz 테스트를 사용할 수도 있고, Appium, Calabashuiautomator를 위한 스크립트 작성을 선택할 수도 있습니다. 또한, JUnit, RobotiumEspresso를 이용한 기기 테스트를 실행할 수도 있습니다.

Calabash 스크립트가 있어서 이를 업로드하고 사용하겠습니다 :

이제 테스트를 수행하고자 하는 장치를 선택할 수 있게 됩니다. AWS Device Farm은 어플리케이션 호환성을 확인하고 모든 호환 가능한 장치를 선택할 수 있습니다. 또는 Device Pool을 생성하고 원 하는 장치를 선택할 수 있습니다. 첫번째 옵션을 선택하고 진행하겠습니다.

장치 상태에 대하여 제어할 수 있습니다. 파일을 추가로 업로드하거나, 다른 어플리케이션을 설치하거나, 원하는 통신 채널을 활성화하거나, 장치의 위치 설정을 지정하거나, 로케일을 선택할 수 있습니다.

그리고나서 테스트를 수행을 준비하기 위한 설정을 확인합니다 :

테스트는 Confirm and start run을 클릭하자마자 시작되며, 장치 가용 여부에 따라(일반적으로 수초 단위) 테스트를 시작합니다. 콘솔에서 장치 별 기준으로 테스트 상태를 표시합니다.

테스트가 진행되면 화면이 업데이트됩니다. 이번 테스트 싱행에서는 몇 가지 문제가 확인되었습 니다. (실패 및 경고 항목 참고). AWS Device Farm은 결과를 단순화하여 표시하기 위하여 테스트 결과를 그룹화하여 표시합니다.

여기에서는 개별 문제를 조사 할 수 있습니다 :

테스트 수행 중에 캡처된 스크린 샷에 접근할 수 있습니다 :

또한 테스트 중에 성능(CPU, 메모리 활용율 및 쓰레드 개수) 또한 확인할 수 있습니다 :

테스트 중에 생성된 파일들에 접근할 수 있습니다 :

테스트 결과 문제를 조사하여 파악한 후, 수정하여 다시 테스트를 작성하고 실행할 수 있습니다.

또한, 위의 각 단계의 일부나 전체를 자동화하는 옵션도 있습니다! 프로젝트 생성 장치 풀 생성, 파일 업로드, 장치/프로젝트/작업 (테스트 결과 포함)에 대한 정보 취득 등 각종 기능은 Device Farm API에서 실행할 수 있습니다. 그리고 ScheduleRun를 한 번 호출 만하면 테스트하도록 스케줄링 할 수 있다는 것은 매우 중요합니다. 또한 Jenkins 플러그인을 제공하고 다른 CI( Continuous Integration) 시스템과 연계할 계획을 가지고 있습니다.

정식 출시
AWS Device Farm은 오늘 정식 출시되어 여러분의 어플리케이션 테스트를 지금부터 시작할 수 있습니다.(자세한 것은 AWS Device Farm Developer Guide를 참고하십시오.)

과금은 장치 사용 시간(Device minutes) 단위로 과금되며, 즉, 각 장치에서 하나의 테스트를 실행 한 시간(분)에 의해 결정됩니다. 먼저 250 device minutes 무료 사용이 가능합니다. 요금은 device minutes 당 $0.17입니다. 또한 비종량 과금 계획도 준비하고 있으며, 지원되는 Android 또는 Fire OS 장치에서 1개월 장치 당 $250의 정액 요금으로 이용하실 수 있습니다.

Jeff;

이 글은 AWS Device Farm – Test Mobile Apps on Real Devices의 한국어 번역으로 AWS코리아 솔루션즈 아키텍트로 일하는 김상필님이 수고해주셨습니다.