首先蝇更,崩潰有幾種情況:
閃退
提示停止運(yùn)行
無響應(yīng)
( 不同情況雖然沒有嚴(yán)格意義上區(qū)分開引起原因沪编,但是都有側(cè)重。在之后的工作中年扩,我會(huì)實(shí)時(shí)補(bǔ)充統(tǒng)計(jì)蚁廓。)
[直接原因]:app無法解析接口返回值/獲取不到要獲取的參數(shù)/參數(shù)類型不對(duì) 導(dǎo)致客戶端代碼報(bào)錯(cuò)
[引起原因]:臟數(shù)據(jù)/網(wǎng)絡(luò)問題導(dǎo)致接口超時(shí)或漏了數(shù)組元素/前后臺(tái)沒有統(tǒng)一參數(shù)類型標(biāo)準(zhǔn)/參數(shù)名錯(cuò)誤/實(shí)體消失
[解決辦法]:在網(wǎng)絡(luò)順暢/不順暢情況下抓包,對(duì)著api文檔一個(gè)一個(gè)的參數(shù)對(duì)比厨幻,返回值有數(shù)組可以橫向?qū)Ρ认嗲叮赡苁瞧渲心硞€(gè)元素內(nèi)的某個(gè)參數(shù)和其他元素內(nèi)的這個(gè)參數(shù)有內(nèi)容不同/類型不同/為空/不存在/規(guī)范不同。
[測(cè)試方法]:首先要從2個(gè)角度考慮况脆。1:后臺(tái)不要返回這種臟數(shù)據(jù)饭宾,或者有臟數(shù)據(jù)要進(jìn)行處理再返回給app。2:app要有一定的容錯(cuò)性格了,不能因?yàn)橐粋€(gè)參數(shù)這么一點(diǎn)小事就導(dǎo)致崩潰(低級(jí)bug瞬間升級(jí)到致命bug)捏雌。所以要從倆邊測(cè)試。1:先進(jìn)行正常的接口測(cè)試笆搓,保證正常數(shù)據(jù)返回沒有問題。再通過操作數(shù)據(jù)庫或其他手段進(jìn)行構(gòu)造臟數(shù)據(jù)纬傲,測(cè)試服務(wù)器的錯(cuò)誤處理能力满败。2:再利用mock或抓包工具,強(qiáng)行修改返回值叹括,測(cè)試app端的容錯(cuò)能力算墨。用腳本或手動(dòng)把所有/特定 的參數(shù)進(jìn)行更改,包括 類型/內(nèi)容長度/為空/刪除掉/不符合規(guī)范 等情況來測(cè)試app的容錯(cuò)性和成熟性汁雷。
其次網(wǎng)絡(luò)問題也是有概率引起崩潰净嘀,就是在網(wǎng)絡(luò)環(huán)境很惡劣 或變動(dòng)頻繁的情況下進(jìn)行所有接口測(cè)試,保證返回值全面完整侠讯。觀察接口返回是否有拉下的數(shù)組元素挖藏。因?yàn)閍pp的超時(shí)判定 和服務(wù)器的超時(shí)判定是不統(tǒng)一的∠徜觯可能接口超時(shí)要60秒膜眠,但是app只等待10秒鐘,10秒沒到就判定失敗了,但這不是導(dǎo)致崩潰的原因宵膨。導(dǎo)致崩潰的原因在于服務(wù)器返回超時(shí)后(不是無網(wǎng)絡(luò)架谎,不是關(guān)掉wifi或數(shù)據(jù)流量),接口報(bào)什么http狀態(tài)碼辟躏,一般是502谷扣,app原則上是要對(duì)所有接口502都有對(duì)應(yīng)處理和提示,但實(shí)際情況是捎琐,很多接口有提示不崩潰会涎,更多的接口會(huì)崩潰。所以測(cè)試的時(shí)候要構(gòu)造特殊環(huán)境野哭,來讓所以接口依次超時(shí)在塔。方法可以是在抓包工具上打斷點(diǎn),然后不進(jìn)行繼續(xù)操作拨黔,挺著看app最終會(huì)不會(huì)崩潰蛔溃。
實(shí)體消失問題導(dǎo)致崩潰,其實(shí)是接口規(guī)范上的原因篱蝇,當(dāng)因?yàn)橄群蟛僮骱卮撁嫖醇皶r(shí)刷新的情況,導(dǎo)致app對(duì)一個(gè)已經(jīng)在后臺(tái)數(shù)據(jù)庫抹除的實(shí)體或關(guān)系進(jìn)行訪問時(shí)零截,后臺(tái)又恰好沒考慮過此情況麸塞,導(dǎo)致后臺(tái)返回結(jié)果不可預(yù)料,app又沒有抓取某種異常返回涧衙,導(dǎo)致崩潰哪工。測(cè)試辦法就是測(cè)試點(diǎn)中計(jì)劃好所有這種可以操作到消失實(shí)體的情況,來進(jìn)行模擬測(cè)試弧哎⊙惚龋或者抓包時(shí)強(qiáng)行更改請(qǐng)求實(shí)體,來達(dá)到請(qǐng)求一個(gè)不存在實(shí)體的場景撤嫩,觀察服務(wù)器如何處理并返回偎捎,app又是否會(huì)因此而崩潰。
[直接原因]:客戶端app代碼報(bào)錯(cuò)序攘。
[引起原因]:兼容不好/內(nèi)存不足/內(nèi)存泄露造成app開辟內(nèi)存空間失敗/內(nèi)存泄漏茴她。
[解決辦法]:提醒用戶更換手機(jī)或關(guān)掉后臺(tái)其他app進(jìn)程,崩潰的app要進(jìn)行全面測(cè)試程奠,定位到具體什么操作導(dǎo)致崩潰丈牢。
[測(cè)試方法]:先進(jìn)行兼容性測(cè)試,用不同的操作系統(tǒng)/手機(jī)型號(hào)/品牌/系統(tǒng)版本/藍(lán)牙版本去執(zhí)行一些跟寫入讀取有關(guān)的功能的用例梦染。用emmagee監(jiān)控app赡麦,看到各種操作后朴皆,占用的內(nèi)存是否超過預(yù)期。讓開發(fā)規(guī)范代碼泛粹,及時(shí)釋放掉占用的存儲(chǔ)空間遂铡。手機(jī)安裝很多app,然后后臺(tái)都打開晶姊,然后再運(yùn)行自家app扒接,觀察其是否會(huì)崩潰頻繁,可以用monkey測(cè)試(雖然monkey無法表明到底是什么原因引起崩潰们衙,但是可以通過 觀察后臺(tái)干凈/后臺(tái)運(yùn)行過多app 這倆種情況下多次測(cè)試钾怔,看是否因?yàn)楹笈_(tái)運(yùn)行過多app 就導(dǎo)致monkey崩潰概率高。而判斷出大致自家app的生存能力)其他待補(bǔ)充蒙挑。
[直接原因]:客戶端app代碼報(bào)錯(cuò)宗侦。
[引起原因]:需要操作的元素已經(jīng)消失/代碼錯(cuò)誤,超出實(shí)體數(shù)量/讀取or寫入本地文件或緩存時(shí)的IO錯(cuò)誤
[解決辦法]:調(diào)查引起崩潰的具體操作步驟忆蚀,然后提交開發(fā)解決矾利,前端代碼容錯(cuò)率需要提高。
[測(cè)試方法]:邊界值測(cè)試為核心思想馋袜,測(cè)試正常情況有關(guān)數(shù)量的功能用例
要進(jìn)行代碼review1:保證代碼沒有錯(cuò)誤男旗,循環(huán)中沒有超出實(shí)體數(shù)量。2:保證代碼容錯(cuò)性高欣鳖,每個(gè)循環(huán)都要有越界異常捕獲并處理察皇。/
要進(jìn)行手動(dòng)破壞性測(cè)試,1:如刪除本地文件泽台,比如app要調(diào)取本地緩存的4張圖片什荣,在app剛要調(diào)用的時(shí)候,已經(jīng)選擇好的時(shí)候怀酷,切換到本地文件管理中溃睹,刪掉其中一個(gè),那么app就會(huì)訪問到一個(gè)不存在的文件胰坟,會(huì)引發(fā)越界等代碼報(bào)錯(cuò)。2:破壞掉這個(gè)文件泞辐。那么app就會(huì)讀取的時(shí)候發(fā)生io錯(cuò)誤笔横。等情況來進(jìn)行測(cè)試。
[直接原因]:控件生成/調(diào)用受阻咐吼,導(dǎo)致前端app代碼報(bào)錯(cuò)
[引起原因]:渲染過慢吹缔,操作過快,兼容性不好
[解決辦法]:讓用戶換手機(jī)锯茄,或慢點(diǎn)點(diǎn)厢塘,重新設(shè)計(jì)避免用戶連點(diǎn)造成的操作過快茶没,重新設(shè)計(jì)減輕頁面加載渲染負(fù)擔(dān),異步處理
[測(cè)試方法]:對(duì)復(fù)雜/卡頓頁面進(jìn)行快速操作來讓本不應(yīng)該出現(xiàn)在一起的倆個(gè)控件出現(xiàn)在一起晚碾,或用monkey最大速度測(cè)試抓半。待補(bǔ)充
[直接原因]:客戶端未對(duì)無權(quán)限情況處理,導(dǎo)致代碼報(bào)錯(cuò)
[引起原因]:用戶訪問未獲取到系統(tǒng)相關(guān)權(quán)限的功能格嘁,客戶端又未對(duì)此情況進(jìn)行處理
[解決辦法]:修改崩潰bug笛求,設(shè)計(jì)此情況的處理機(jī)制,如提示用戶去手動(dòng)開權(quán)限糕簿,或自動(dòng)退出等情況探入。
[測(cè)試方法]:關(guān)掉app所有的系統(tǒng)權(quán)限,然后去訪問所有系統(tǒng)權(quán)限相關(guān)的頁面和功能懂诗。例如:相冊(cè)蜂嗽,照相,定位殃恒,開啟wifi植旧,藍(lán)牙,gps 等等權(quán)限芋类。
[引起原因]:第三方廣告的突然彈出/其他app分享進(jìn)來和出去/各種第三方app的強(qiáng)行搶鏡(如搶紅包提醒)
[測(cè)試方法]:在各個(gè)頁面隆嗅,手動(dòng)觸發(fā)大多數(shù)app的 或 本app的外接 廣告來測(cè)試。用其他主流app測(cè)試分享侯繁,或自家app分享出去再回來看是否已經(jīng)被退出胖喳。突然收到其他app的強(qiáng)制提醒。
[直接原因]:導(dǎo)致自家app突然被掛起或放置后臺(tái)
[引起原因]:突然來電話贮竟,突然收短信丽焊,鬧鐘,會(huì)議提醒系統(tǒng)原生app等情況
[測(cè)試方法]:在各個(gè)頁面咕别,功能運(yùn)行前中后技健。進(jìn)行接電話/短信來測(cè)試。主要測(cè)試是否會(huì)影響電話/短信惰拱,電話/短信結(jié)束后 app是否能恢復(fù)到之前的頁面,還是已經(jīng)閃退被強(qiáng)關(guān)了雌贱。
[直接原因]:因橫豎屏導(dǎo)致app崩潰
[解決方法]:重啟app
[測(cè)試方法]:
1.先橫,再開app
2.先豎偿短,再開app
3.開app后欣孤,各種頁面上,功能前中后昔逗,橫屏/豎屏來回切換
[直接原因]:各種語言導(dǎo)致崩潰
[測(cè)試方法]:
1.先切換成各國語言降传,再開app進(jìn)行各種功能用例測(cè)試
2.先開app,再來回切換各國語言進(jìn)行測(cè)試
[直接原因]:客戶端app代碼錯(cuò)誤
[引起原因]:各種異常操作勾怒,正常操作
[解決辦法]:adb shell logcat抓日志婆排,后臺(tái)查看崩潰日志
[測(cè)試方法]:執(zhí)行全部測(cè)試用例即可声旺。
[直接原因]:客戶端無法解析json返回值
[引起原因]:網(wǎng)絡(luò)差,json串過長
[解決辦法]:體型用戶換更快網(wǎng)絡(luò)段只,客戶端對(duì)此操作增加等待時(shí)間腮猖。接口返回進(jìn)行異步處理。增加翻頁功能翼悴。
[測(cè)試方法]:用抓包工具模擬出弱網(wǎng)環(huán)境缚够,包含丟包率,穩(wěn)定性等元素鹦赎。然后對(duì)接口返回值構(gòu)造超長數(shù)據(jù)進(jìn)行測(cè)試谍椅。