— Android — 1 min read
컴파일 오류는 찾기 쉽지만, 실행오류는 찾기 힘들다. 그래서 앱 출시 전 항상 검수과정을 거치는데, 일일히 기능을 체크하고 정해진 순서로 누르면 시간도 오래걸리고, 사람이 하는 테스트는 아무래도 루틴이 정해져 있기 때문에 예측불가능한 상황을 만들기 어렵다.
좋은회사라면 QA가 있어 이런 고민들을 할 필요가 없지만... QA가 따로 없는 회사에서는 개발자가 테스트를 하기도 한다.
아무튼 앱을 테스트하는 방법은 여러가지가 있다.
1.txt파일을 밀어넣어서 스크립트대로 동작하게하기 2.adb 명령어를 통한 랜덤테스트 3.Junit 테스트를 작성하여 실행
먼저 텍스트파일을 이용해서 스크립트를 짜면 원하는 화면좌표를 클릭할 수 있고, 로그인이 필요한 경우라면 텍스트 입력도 가능하다. 텍스트파일을 이용하는 것도 adb명령어를 통해 이루어지기 때문에 먼저 Android sdk가 설치된 경로로 이동해야한다.
1cd /Users/usr/Library/Android/sdk
adb 명령 실행시 command line not found 가 나오면 환경 변수 설정이 필요하다.
1//환경변수 file 생성2touch ~/.bash_profile3
4//file opne5open -e ~/.bash_profile6
7//새로고침8source ~/.bash_profile9
10//환경변수 제대로 설정됬는지 확인11adb version
bash_profile path 예시 : 환경변수에 SDK 경로를 입력한다.
1export PATH=${PATH}:/Users/usr/Library/Android/sdk/tools:${PATH}:/Users/usr/Library/Android/sdk/platform-tools
다음으로 스크립트를 작성한다. 사용가능한 명령어는 다음과 같다
1//click event 2
3DispatchPointer(0, 0, 0, 831,1243, 0,0,0,0,0,0,0) //push 4DispatchPointer(0, 0, 1, 831,1243, 0,0,0,0,0,0,0) //release 5
6UserWait(3000) // sleep7
8//keycode event 9DispatchPress(KEYCODE_Y)10
11//종료12quit 13
14/*15* 사용가능한 명령어들16*17
18DispatchPointer(long downTime, long eventTime, int action, 19 float x, float y, float pressure, float size, int metaState, 20 float xPrecision, float yPrecision, int device, int edgeFlags)21
22DispatchTrackball same as DispatchPointer 23
24DispatchKey(long downTime, long eventTime, int action, int code, 25 int repeat, int metaState, int device, int scancode) 26
27DispatchFlip(boolean keyboardOpen) 28
29DispatchPress(int keyCode) 30
31LaunchActivity(String pkg_name, String cl_name) 32
33UserWait(long sleeptime) 34
35LongPress()36
37*38*/
DispatchPress(KEYCODE_Y)로 키보드 값을 입력할 수 있는데 키코드 값은 안드로이드페이지에서 자세히 설명하고 있다.
keycode값위에서 만든 파일을 txt 파일로 저장하고 adb가 있는 폴더로 이동한다
1cd /Users/usr/Library/Android/sdk
그리고 핸드폰에 이 script 파일을 복사한다.
1adb push /스크립트 경로/script.txt /sdcard/
마지막으로 script를 실행하여 결과를 확인한다.
1adb shell monkey -f /sdcard/script.txt 1
마지막의 1은 실행횟수를 말한다.