반응형

이번에 내가 있던 스타트업에서 안드로이드 어플을 런칭할 기회가 생겨 테스트를 위해 AWS DeviceFarm 을 이용하여 테스트를 해볼 기회가 생겼다. 안드로이드 기기를 실제로 Device와 OS 버전을 전부 맞춰서 일일이 테스트하기란 거의 불가능에 가깝다. 그래서 자동화 테스트툴 Appium , Calabash, uiAutomator등이 나오게 되었고 DeviceFarm은 이런 자동화테스트 툴을 이용하여 실제 디바이스에서 테스트하는 것을 간단한 조작 만으로 가능하게 해주었다. 


그 과정이 한글로된 문서들이 없어서 힘들어할 사람들을 위해 내가 삽질했던 부분들을 다른 분들은 좀 더 편하게 작업하시라고 포스트를 할려고한다. 


먼저 Appium을 설치해야한다. 그리고 자신이 만들 프로젝트에 Selenium 라이브러리를 추가해주어야한다. 먼저 Appium 을 설치하는 방법이다. 


일단 이동영상을 먼저 보면 어떻게 설치하고 돌려야하는지 대충 감이 잡힌다. 

 

https://www.youtube.com/watch?v=FJ_GwSApOpo



그리고 SlideShare에서 가장 Appium에 대해 잘 설명되어있는 슬라이드를 올린다. 이 두가지를 먼저 보면 Appium을 어떻게 써야하고 무엇인지 대충 감이 잡힌다. 

일단 죄송하게도 내 컴퓨터가 맥이라 맥을 기준으로 설명을 한다. Window도 크게 다르지 않다. 


http://appium.io/ 로 일단 접속하여 Appium을 다운로드한다. 








핑크색으로 표시된 부분을 누르면 다운로드를 받을 수 있다. 다운로드를 받은 후 해야할 일은 Path들이 잘 설정 되어있는지 보아야한다. 그 방법은 간단하다. Appium을 실행 시켜 청진기 버튼을 누르면 간단하게 테스트 할 수 있다. 



Iphone Test는 신경쓰지 않아도 된다. 지금은 안드로이드 테스트를 해야하니까. 보통 Mac에서의 자바 경로는 저곳이다. JAVA_HOME과 ANDROID_HOME path는 무조건 설정을 해줘야한다.( 설정하는 방법을 검색해도 모르겠으면 댓글을 남겨주면 설명하는 블로그를 새로 올리겠습니다.)

이렇게 설정 테스트를 맞췄으면 인제 프로젝트를 생성해보면 된다. 

나는 Eclipse를 가지고 테스트를 하였다. 미리 테스트하고 싶은 apk파일로 만들어놓아야한다. 

아 그전에 테스트 코드를 어떻게 만들어야할지 모르는 사람들을 위해 github에 좋은 코드가 있어서 소개한다.

https://github.com/testvagrant/AppiumDemo

보통 찾아보면 있는 코드들(Main에 그냥 다때려받는) 과는 달리 이 코드는 상당히 깔끔하게 정리가 되어있다. 
이 코드를 보았으면 프로젝트를 만들 때 주의 할 점은 아까 위에서 소개한 동영상을 참고하면 프로젝트 라이브러리들을 쉽게 설정할 수 있다. 요점은 selenium의 버전이 최신버전이면 굳이 testng 라이브러리를 넣지 않아도 된다. selenium안에서 testng가 포함되어 있다. 

코드에 대한 설명은 더 하지 않겠다. 왜냐하면 설정하는 방법을 설명하는 것이기 때문에 (코드에대한 질문이 있으면 따로 질문해주면 답변해드리겠습니다. )

테스트 코드가 다 완성되었다는 가정하에 인제 애뮬레이터를 먼저 켜놓아야한다. 나는 Genymotion을 사용하였다.(설치 방법도 간단하고 기본 애뮬레이터보다 속도가 훨씬 빠르다.) 애뮬레이터를 켠 후 Appium을 실행시킨후 Launch를 누른다. (Appium의 대한 셋팅은 안드로이드 디자인의 아이콘을 누르면 설정할 수 있다. Package명과 시작시 Activity를 설정해주었다. 나머지는 자신에 맞게 설정해주면된다. )  그 이후 이클립스에서 프로젝트를 Run -> TestNG로 실행하면 테스트 코드가 수행되는 모습을 볼 수 있다. 

내가 좀 찾았던 힌트를 몇개 드리면 테스트 코드에서 디바이스의 backButton은 driver.navigate().back(); 메소드를 사용하면 백버튼을 구현할 수 있다. Appium testng 테스트 코드는 안드로이드 apk의 코드를 읽어 파싱하여 테스트 코드를 실행시키기 때문에 코드를 읽을 수 있는 안드로이드의 ID값이나 Text 이름 아니면 xpath값을 설정해주어야한다. xpath값을 찾는 방법을 모르는 사람을 위해 내가 찾은 방법을 설명하자면 테스트 코드가 실제로 돌아갈때 Appium에서 돋보기 버튼을 누르면 해당화면을 찍어 xpath값을 알아낼 수 있다. 그러나 이 값이 모든 디바이스에서 동일하지 않기 때문에 여러 디바이스에서 테스트하는 경우라면 id 값을 가져오거나 실제로 List 클래스를 구현하여 읽는것이 가장 낫다. 

다음번에는 AWS DeviceFarm에 실제로 테스트하기 위해 프로젝트를 셋팅하는 방법에 대해 포스팅하겠다. 


반응형

+ Recent posts