brunch

You can make anything
by writing

C.S.Lewis

by 이지원 Oct 01. 2022

안드로이드 에뮬레이터 E2E 병렬 테스트 방법

3달 전 클래스팅 웹페이지 E2E 코드 작성 간에 테스트 스위트를 정의하고 병렬 테스트를 해보았다. 3개의 크롬 브라우저가 정의한 테스트 파일을 동시에 실행하는 모습이 되게 신기했는데, 문득 모바일은 어떻게 하면 될까?라는 호기심이 생겼다.


오늘은 휴가니까 15분만 고민해보고 안되면 업무시간에 해야겠다 생각했는데 의외로 간단했다. iOS는 테스트해보지 않았지만 동일한 방식으로 설정 값만 바꿔주면 될 것 같다. 로컬에서 실행하는 거라면 iOS가 더 편할 수 있겠다. Appium 포트를 실행하는 사전 과정은 동일하지만, 안드로이드는 에뮬레이터를 실행한 상태에서 실행이 되어야 하고, iOS는 시뮬레이터 구동을 하지 않아도 자동으로 실행해주기 때문이다.


큰 차이 없어 보이지만 은근 불편하다. (프로그래밍 관점에서 이러한 작업을 간편하게 해주는 방법이 있을지도 모르겠지만..) 이와 비슷한 원리로 추후 람다 테스트, 소스 랩, 브라우저 스택과 같은 클라우드 테스트 서비스를 사용할 때 동일하게 활용해보면 좋을 것 같다.


처음에는 사용할 Appium 포트를 두 개로 분리 필요한 줄 알았는데, 에뮬레이터라 그런지 1개의 포트로 서로 다른 에뮬레이터 동시 실행이 가능했다. 리얼디바이스는 실행 간에 UDID 값이 필요할 텐데, 이 부분으로 인해 서로 다른 포트가 필요할지도 모르겠다.


테스트 자동화 실무를 언제까지 할지는 모르겠지만 계속하게 된다면 Appium 동작 원리에 대해서 조금 더 깊게 알아봐야겠다. 다만 이미 시장에 괜찮은 클라우드 리얼디바이스 테스트 서비스가 많이 등장했는데 맥에다가 실기기를 주렁주렁 연결해놓고 진행하지는 않을 것 같아서, 필요하다면 그때 리얼디바이스도 테스트해보려 한다.

에뮬레이터 병렬 실행 방법은 간단하다. 우선 병렬 실행할 에뮬레이터를 실행시키고, wdio.conf.js 파일의 Capabilities 설정에 병렬 실행할 값을 추가로 작성 후 실행하면 된다. WebdriverIO도 어차피 Appium을 사용하는 거라 Capabilities 설정 방법은 다른 언어도 비슷하지 않을까 싶다. 그 외 테스트 그룹화 설정은 각자 속한 조직의 QA 상황에 맞춰서 설정해주면 된다.

Capabilities 설정 후 실행하면 2개의 에뮬레이터에서 동시에 실행되는 모습을 확인할 수 있다. 실행이 끝나면 Cucumber HTML Reporter에는 실행된 Feature 전체 개수와, 각 Feature에 대응하는 Scenario의 전체 개수가 나타난다. Features overview에는, 서로 다른 에뮬레이터가 실행되었다는 정보가 나타난다.

매거진의 이전글 특정 시나리오에 대해서만 특정 후크를 실행하는 방법
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari