app壓力測試-monkey實(shí)踐筆記

1樱拴、為什么要開展app壓力測試柠衍?
(1)、為了提高產(chǎn)品的穩(wěn)定性晶乔;
(2)珍坊、為了提高產(chǎn)品的留存率;

2正罢、什么時(shí)候開展app壓力測試阵漏?
(1)、首輪功能測試通過以后;
(2)履怯、下班后的夜間進(jìn)行回还;

3、如何開展app壓力測試叹洲?
Monkey:在adb shell中柠硕,生成用戶或系統(tǒng)的偽隨機(jī)事件;
MonkeyRunner:通過API定義特定命令和事件來控制設(shè)備疹味;
(1)仅叫、MonkeyRunner API:用來連接設(shè)備或模擬器;
(2)糙捺、MonkeyDevice:提供安裝,卸載應(yīng)用笙隙,發(fā)送模擬事件洪灯;
(3)、完成圖像保存竟痰,及對(duì)比操作签钩;

4、異常app壓力測試結(jié)果分類:
(1)坏快、crash:即崩潰铅檩,app在使用過程中,非正常退出莽鸿;
(2)昧旨、anr:應(yīng)用無響應(yīng),application not response;

5祥得、app壓力測試過程:
(1)兔沃、安裝Android sdk并配置環(huán)境變量;
(2)级及、打開手機(jī)開發(fā)者模式乒疏;
(3)、確定手機(jī)與電腦已經(jīng)連接:adb devices
xuxiankaideMac:~ staff$ adb devices
List of devices attached

  • daemon not running; starting now at tcp:5037
  • daemon started successfully
    S9B7N17A28002645 unauthorized
    SWYDU17407005822 unauthorized
    (4)饮焦、安裝測試APP:adb install package.apk
    (5)怕吴、發(fā)送壓力指令:adb shell monkey 1000,給手機(jī)發(fā)送10000個(gè)偽隨機(jī)指令
    (6)县踢、獲取APP包名:adb logcat | grep START
    (7)转绷、給指定包打壓力:adb shell monkey -p com.android.calculator2 1000,給手機(jī)計(jì)算器app發(fā)送1000個(gè)偽隨機(jī)指令

6殿雪、monkey高級(jí)參數(shù):
(1)暇咆、延時(shí)參數(shù):--throttle 1000,指定事件之間的間隔為1000毫秒;
(2)爸业、種子參數(shù):-s 100其骄,指定隨機(jī)生成樹的seed值為100,使得兩次的隨機(jī)操作事件完全一樣扯旷,可以用來復(fù)現(xiàn)bug拯爽;
(3)、觸摸事件參數(shù):--pct-touch 50钧忽,設(shè)置觸摸事件的百分比為50%毯炮,剩余的事件會(huì)隨機(jī);
(4)耸黑、動(dòng)作事件參數(shù):--pct-motion 30桃煎,設(shè)置動(dòng)作事件的百分比為30%,剩余的時(shí)間會(huì)隨機(jī)大刊;
(5)为迈、軌跡球事件:--pct-trackball <percent>,設(shè)置軌跡球事件的百分比缺菌;
(6)葫辐、基本導(dǎo)航事件:--pct-nav <percent>,設(shè)置基本導(dǎo)航事件的百分比伴郁,輸入設(shè)備的上下左右耿战;
(7)、主要導(dǎo)航事件:--pct-majornav <percent>焊傅,設(shè)置主要導(dǎo)航事件的百分比剂陡,兼容中間鍵,返回鍵租冠,菜單按鍵鹏倘;
(8)、系統(tǒng)導(dǎo)航事件:--pct-syskeys <percent>顽爹,設(shè)置系統(tǒng)導(dǎo)航事件的百分比纤泵,HOME,BACK镜粤,撥號(hào)及音量鍵捏题;
(9)、啟動(dòng)Activity事件:--pct-appswitch <percent>肉渴,設(shè)置啟動(dòng)activity的事件的百分比公荧;
(10)、不常用事件百分比:--pct-anyevent <percent>同规,設(shè)置不常用事件的百分比循狰;
(11)窟社、忽略崩潰事件:--ignore-crashes <event-count>,設(shè)置忽略崩潰和異常绪钥;
(12)灿里、忽略超時(shí)事件:--ignore-timeouts <event-count>,設(shè)置忽略超時(shí)事件程腹;
實(shí)例:adb shell monkey -v -p com.android.calculator2 --pct-touch 50 --pct-motion 50 --ignore-crashes -ignore-timeouts 1000

7匣吊、 CRASH和ANR異常,異常測試日志信息提却缌省:
在連線情況下色鸳,一般在晚上執(zhí)行壓力測試時(shí),需要加上忽略崩潰事件和忽略超時(shí)事件见转,等第二天來之后命雀,可以從adb log中過濾出CRASH和ANR異常的日志內(nèi)容,然后在adb log中的最后一行獲取seed值池户,用來復(fù)現(xiàn)問題咏雌。復(fù)制所獲取的內(nèi)容和monkey腳本到txt文本,發(fā)給開發(fā)定位具體問題原因校焦。

如果是沒有連線時(shí),手機(jī)上的app突然出現(xiàn)ANR统倒,那么可以執(zhí)行如下操作獲取日志:
1寨典、連線手機(jī)和電腦;
2房匆、輸入如下命令:
cd /data/anr/
ls
more traces.txt
3耸成、找到ANR異常信息,發(fā)給開發(fā)浴鸿。

8井氢、執(zhí)行monkey腳本的命令:
adb shell monkey -f <scriptfile> <event-count>
(1)、軌跡球事件:DispatchTrackball(int action,float x,float y)岳链,action參數(shù)花竞,0代表按下,1代表彈起掸哑,x和y代表坐標(biāo)點(diǎn)约急;
(2)、點(diǎn)擊事件:DispatchPointer(int action,float x,float y)苗分,action參數(shù)厌蔽,0代表按下,1代表彈起摔癣,x和y代表坐標(biāo)點(diǎn)奴饮;
(3)纬向、輸入字符串事件:DispatchString(String text);
(4)戴卜、啟動(dòng)應(yīng)用事件:LaunchActivity(package,Activity)逾条;
(5)、等待事件:UserWait(1000)叉瘩,1000毫秒=1秒膳帕;
(6)、按下鍵值事件:DispatchPress(int keycode)薇缅,keycode 66 回車鍵危彩;

實(shí)例:在瀏覽器APP中輸入一個(gè)字符串,重復(fù)點(diǎn)擊100次
1泳桦、啟動(dòng)app汤徽;
2、點(diǎn)擊輸入框灸撰;
3谒府、輸入test;
4浮毯、點(diǎn)擊回車鍵完疫;
5、點(diǎn)擊搜索按鈕债蓝;
6壳鹤、等待結(jié)果的出現(xiàn);
7饰迹、點(diǎn)擊clear按鈕芳誓。

編寫mook.script腳本內(nèi)容:
type=user
count=10
speed=1.0
start data >>

LauchActivity(com.example.zhagnjina.minibrowser2,com.example.zhagnjina.minibrowser2.myapplication.MainActivity)
UserWait(2000)
DispatchPointer(10,10,0,100,100,1,1-1,1,1,0,0)
DispatchPointer(10,10,1,100,100,1,1-1,1,1,0,0)
DispatchString(test)
UserWait(1000)
DispatchPress(66)
UserWait(1000)
DispatchPointer(10,10,0,400,100,1,1-1,1,1,0,0)
DispatchPointer(10,10,1,400,100,1,1-1,1,1,0,0)
UserWait(6000)
DispatchPointer(10,10,0,300,100,1,1-1,1,1,0,0)
DispatchPointer(10,10,1,300,100,1,1-1,1,1,0,0)
UserWait(6000)

將mook.script腳本推送到手機(jī)中:
adb push mook.scripts /data/local/tmp
cd /data/local/tmp
ll

執(zhí)行腳本:
adb shell monkey -f /data/local/tmp/mook.script 2,2代表執(zhí)行2遍腳本

注意點(diǎn):
1啊鸭、點(diǎn)擊位置坐標(biāo)锹淌,可以使用UI Automator Viewer工具來獲取,bounds[376,97][464,145]赠制,表示某個(gè)區(qū)域的從左上角到右下角的兩個(gè)點(diǎn)的坐標(biāo)赂摆;
2、app必須要允許被外部調(diào)起憎妙,這就需要在AndroidManifest.xml中的LauchActivity之下加入一個(gè)參數(shù):android:exported=true库正;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市厘唾,隨后出現(xiàn)的幾起案子褥符,更是在濱河造成了極大的恐慌,老刑警劉巖抚垃,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件喷楣,死亡現(xiàn)場離奇詭異趟大,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)铣焊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門逊朽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人曲伊,你說我怎么就攤上這事叽讳。” “怎么了坟募?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵岛蚤,是天一觀的道長。 經(jīng)常有香客問我懈糯,道長涤妒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任赚哗,我火速辦了婚禮她紫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘屿储。我一直安慰自己贿讹,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布够掠。 她就那樣靜靜地躺著围详,像睡著了一般。 火紅的嫁衣襯著肌膚如雪祖屏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天买羞,我揣著相機(jī)與錄音袁勺,去河邊找鬼。 笑死畜普,一個(gè)胖子當(dāng)著我的面吹牛期丰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播吃挑,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼钝荡,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了舶衬?” 一聲冷哼從身側(cè)響起埠通,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎逛犹,沒想到半個(gè)月后端辱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體梁剔,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年舞蔽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了荣病。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡渗柿,死狀恐怖个盆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情朵栖,我是刑警寧澤颊亮,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站混槐,受9級(jí)特大地震影響编兄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜声登,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一狠鸳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧悯嗓,春花似錦件舵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至合武,卻和暖如春临梗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背稼跳。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來泰國打工盟庞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人汤善。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓什猖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親红淡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子不狮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354