본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[Android/안드로이드] Test 는 원숭이에게 맡기자!! Monkey Test.

by 돼지왕 왕돼지 2012. 6. 19.
반응형




몽키 테스트 (Monkey Test)

  

1) 몽키 테스트란?
 

   Monkey는 Android SDK에서 제공하는 프로그램으로, emulator나 device에 대해 random한 event stream을 발생시킵니다. 마치 원숭이가 기기를 작동하는 것처럼 random event를 발생시키기 때문에 monkey라는 이름이 붙여졌습니다. Event는 click, touch, gesture, system level event 등이 있습니다.

 

  

 

2) 몽키 테스트의 목적.

 

 Smart phone을 사용함에 있어, 인간은 선행 학습에 의해 device와 상호작용을 합니다.

 따라서 극단적인 사용이나 Edge case 들에 대해 Error 가 발생하는지를 확인하기가 어렵습니다.

 

Ex) Android phone에 OK 버튼을 포함한 Pop up 메뉴가 나오면 인간은 OK 버튼을 클릭하지만, 
      Monkey는 이를 인지하지 못하고 아무 버튼이나 누르거나 아무곳이나 터치하게 됩니다.

  

 Monkey 의 경우 random event stream을 발생시키기 때문에  예측불허인 극단적인 상황도 테스트가 가능(Stress-test)하며, 프로그램 자체에서 event 발생 빈도, event 발생 주기, event 발생 횟수 등을 조절할 수 있기 때문에 human resource를 낭비하지 않고도 극단적인 상황을 쉽게 테스트 할 수 있습니다. Monkey test는 보통 Application를 release 하기 전에 edge case들에 대한 저항성을 기르기 위해 합니다.
 
 
  
3) 몽키 테스트 사용 방법.
 
 3-1) 기본 사용
 
 
Monkey test는 adb shell 환경에서 작동하는 어플리케이션입니다.
따라서, environment path가 지정되어 있지 않다면, android-sdk-windows\tools 에서
실행해야 합니다.
 
기본명령어 : adb shell monkey <count>
    ex) adb shell monkey 500 -> 500개의 random event를 생성합니다.
 
기본명령어 #2 : adb –s <device 명> shell monkey <count>
                      adb –s emulator-<emulator number> shell monkey <count>
 
 
 
 3-2) 옵션 #1
 
Event 발생 percentage 조절
 
--pct-touch <percent>           Touch event 발생 빈도 조절
--pct-motion <percent>          드래그 event 발생 빈도 조절
--pct-trackball <percent>       트랙볼 event 발생 빈도 조절
--pct-nav <percent>              Navigation event 발생 빈도 조절
--pct-majornav <percent>      Back, Home 버튼등의 major navigation event 발생 빈도 조절
--pct-syskeys <percent>       System event 발생 빈도 조절 (Volume, home, end call 등)
--pct-appswitch <percent>    새로운 app. 실행 event 발생 빈도 조절
--pct-anyevent <percent>      기타 event 발생 빈도 조절
  
Ex) ..tools> adb shell monkey --pct-trackball 0 --pct-nav 0 --pct-touch 60 --pct-motion 20 –v 500
                   : trackball, navigation 0%, touch 60%, motion 20%의 이벤트 비율로 event 500개 발생
 
 
 
  3-3) 옵션 #2
 
Seed & Throttle & Times
 
-s <seed>                      Seed 설정
 (Seed를 설정하지 않거나, 동일한 seed로 event를 발생시키면 항상 같은 event를 발생합니다.)
--throttle <milliseconds>   Event 사이의 delay 조정
-v <number of events>      설정한 수만큼의 event 발생
  
 Ex) ..tools> adb shell monkey –s 1234 --throttle 1000 –v 500
            : 1234를 seed로 1초(1000msec)마다, 총 500개의 event를 발생시킴
 
  
Tip) –v 가 가장 마지막에 와야 나머지 option들이 제대로 적용됩니다.
 
 
  
  3-4) 옵션 #3
 
Package 설정 및 기타
 
-p <allowed-package name>   지정해준 Package에 포함된 activity들에 한정하여 test 한다.
 
Ex) ..tools> adb shell monkey –p com.lge.email –v 200
                   : email application에 대해 200회의 event 발생
 
 
  
Tip) Monkey test package는 화면에 보여지는 activity가 있는 것만 가능합니다.
     ex) com.google.email (O)   com.google.service.weatherwidget (X)
 
  
 
기타 옵션들은 아래 reference 링크 참조하세요~


도움이 되셨다면 손가락 꾸욱~





 




반응형

댓글