(1)為了提高產(chǎn)品的穩(wěn)定性;
創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的明山網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
(2)為了提高產(chǎn)品的留存率;
(1)首輪功能測試通過以后;
(2)下班后的夜間進(jìn)行;
Monkey:在adb shell中,生成用戶或系統(tǒng)的偽隨機(jī)事件;
MonkeyRunner:通過API定義特定命令和事件來控制設(shè)備;
(1)MonkeyRunner API:用來連接設(shè)備或模擬器;
(2)MonkeyDevice:提供安裝,卸載應(yīng)用,發(fā)送模擬事件;
(3)完成圖像保存,及對比操作;
(1)crash:即崩潰,app在使用過程中,非正常退出;
(2)anr:應(yīng)用無響應(yīng),application not response;
(1)安裝Android sdk并配置環(huán)境變量;
(2)打開手機(jī)開發(fā)者模式;
(3)確定手機(jī)與電腦已經(jīng)連接:adb devices
(4)安裝測試APP:adb install package.apk
(5)發(fā)送壓力指令:adb shell monkey 1000,給手機(jī)發(fā)送10000個偽隨機(jī)指令
(6)獲取APP包名:adb logcat | grep START
(7)給指定包打壓力:adb shell monkey -p 包名 1000,給手機(jī)計算器app發(fā)送1000個偽隨機(jī)指令
(1)延時參數(shù):--throttle 1000,指定事件之間的間隔為1000毫秒;
(2)種子參數(shù):-s 100,指定隨機(jī)生成樹的seed值為100,使得兩次的隨機(jī)操作事件完全一樣,可以用來復(fù)現(xiàn)bug;
(3)觸摸事件參數(shù):--pct-touch 50,設(shè)置觸摸事件的百分比為50%,剩余的事件會隨機(jī);
(4)動作事件參數(shù):--pct-motion 30,設(shè)置動作事件的百分比為30%,剩余的時間會隨機(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,撥號及音量鍵;
(9)啟動Activity事件:--pct-appswitch percent,設(shè)置啟動activity的事件的百分比;
(10)不常用事件百分比:--pct-anyevent percent,設(shè)置不常用事件的百分比;
(11)忽略崩潰事件:--ignore-crashes event-count,設(shè)置忽略崩潰和異常;
(12)忽略超時事件:--ignore-timeouts event-count,設(shè)置忽略超時事件;
實例:adb shell monkey -v -p 包名 --pct-touch 50 --pct-motion 50 --ignore-crashes -ignore-timeouts 1000
實例:
安裝可以引起Crash 的APP
執(zhí)行壓力命令
析取CRASH 的Exception信息
在連線情況下,一般在晚上執(zhí)行壓力測試時,需要加上忽略崩潰事件和忽略超時事件,等第二天來之后,可以從adb log中過濾出CRASH和ANR異常的日志內(nèi)容,然后在adb log中的最后一行獲取seed值,用來復(fù)現(xiàn)問題。復(fù)制所獲取的內(nèi)容和monkey腳本到txt文本,發(fā)給開發(fā)定位具體問題原因。
找到ANR異常信息,發(fā)給開發(fā)
1、連線手機(jī)和電腦;
2、輸入如下命令:
cd /data/anr/
ls
more traces.txt
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)啟動應(yīng)用事件:LaunchActivity(package,Activity);
(5)等待事件:UserWait(1000),1000毫秒=1秒;
(6)按下鍵值事件:DispatchPress(int keycode),keycode 66 回車鍵;
實例:在瀏覽器APP中輸入一個字符串,重復(fù)點(diǎn)擊100次
1、啟動app;
2、點(diǎn)擊輸入框;
3、輸入test;
4、點(diǎn)擊回車鍵;
5、點(diǎn)擊搜索按鈕;
6、等待結(jié)果的出現(xiàn);
7、點(diǎn)擊clear按鈕。
編寫mook.script腳本內(nèi)容:
注意點(diǎn):
1、點(diǎn)擊位置坐標(biāo),可以使用UI Automator Viewer工具來獲取,bounds[376,97][464,145],表示某個區(qū)域的從左上角到右下角的兩個點(diǎn)的坐標(biāo);
2、app必須要允許被外部調(diào)起,這就需要在AndroidManifest.xml中的LauchActivity之下加入一個參數(shù):android:exported=true;
Monkey是Android中自帶的用來進(jìn)行壓力測試的一個命令行工具。
用Monkey進(jìn)行App壓力測試的結(jié)果有三種。
1、正常。
2、Crash :程序崩潰。
3、ANR:程序無響應(yīng)。
第一步:搭建環(huán)境:主要是安裝和搭建java和sdk環(huán)境,說白了,對我們安卓開發(fā)來說,只要搭建好了Android開發(fā)環(huán)境,Monkey測試環(huán)境基本就是OK的了。
第二步:準(zhǔn)備好要測試的項目,比如可以是一個.apk安裝包,也可以是已經(jīng)安裝到手機(jī)上的軟件 。
第三步:連接上Android測試設(shè)備,可以是模擬器,當(dāng)然也可以是手機(jī),通過adb 命令對測試項目進(jìn)行Monkey測試。
當(dāng)然這一測試也是存在著優(yōu)缺點(diǎn)的。
優(yōu)點(diǎn):功能強(qiáng)大, 主要用于壓力和穩(wěn)定性測試。缺點(diǎn):本身不提供截屏功能,本身無法完成錄制、回放的功能(不過都可以借用其他的開源工具來實現(xiàn)Monkey的截屏和錄制等功能)。
一:Android App漏洞測試工具:Safe.ijiami
Safe.ijiami四大特色
1. 文件檢查
檢查dex、res文件是否存在源代碼、資源文件被竊取、替換等安全問題。
2. 漏洞掃描
掃描簽名、XML文件是否存在安全漏洞、存在被注入、嵌入代碼等風(fēng)險。
3. 后門檢測
檢測App是否存在被二次打包,然后植入后門程序或第三方代碼等風(fēng)險。
4. 一鍵生成
二:Android App性能測試工具:iTest
iTest產(chǎn)品特色
1、 功能強(qiáng)大:iTest獨(dú)有的自動控制技術(shù),輕松完成手機(jī)應(yīng)用的自動測試。
2、 操作簡單:只需用鼠標(biāo)操作,點(diǎn)擊或拖動屏幕,即可錄制功能復(fù)雜的腳本。
3、 無限次運(yùn)行:設(shè)定運(yùn)行次數(shù)之后,iTest即可幫忙自動運(yùn)行腳本,只要愿意,運(yùn)行上億次也沒問題。
4、 腳本共享:在iTest上錄制的腳本,無需任何改動,即可在另一臺連接iTest的手機(jī)上運(yùn)行,只要它們擁有相同的分辨率
進(jìn)行壓力測試主要是保證app的穩(wěn)定性,而獲取CRASH、ANR的相關(guān)信息是為了快速定位問題。
什么是CRASH?app異常退出,影響用戶后續(xù)正常使用,這種情況就可以列為app崩潰
什么是ANR? 全拼為Application Not Responding ?即應(yīng)用程序無響應(yīng)
1、KeyDispatchTimeout (5 seconds) --按鍵或觸摸事件在特定時間內(nèi)無響應(yīng)
2、BroadcastTimeout (10 seconds) --BroadcastReceiver 在特定時間內(nèi)無法處理完成
3、ServiceTimeout (20 seconds) --Service在特定的時間內(nèi)無法處理完成
CRASH 以及ANR 的出現(xiàn)都會對用戶的使用出現(xiàn)非友好的體驗,所以在測試過程盡早、盡快的發(fā)現(xiàn)這類問題
以上是關(guān)于Android App之壓力測試的理論部分,接下來會針對性的更新實踐內(nèi)容