首先迅箩,崩潰有幾種情況:
閃退
提示停止運(yùn)行
無(wú)響應(yīng)
( 不同情況雖然沒(méi)有嚴(yán)格意義上區(qū)分開引起原因溉愁,但是都有側(cè)重。在之后的工作中饲趋,我會(huì)實(shí)時(shí)補(bǔ)充統(tǒng)計(jì)拐揭。)
1.接口返回值
[直接原因]:app無(wú)法解析接口返回值/獲取不到要獲取的參數(shù)/參數(shù)類型不對(duì) 導(dǎo)致客戶端代碼報(bào)錯(cuò)
[引起原因]:臟數(shù)據(jù)/網(wǎng)絡(luò)問(wèn)題導(dǎo)致接口超時(shí)或漏了數(shù)組元素/前后臺(tái)沒(mé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ù)返回沒(méi)有問(wèn)題。再通過(guò)操作數(shù)據(jù)庫(kù)或其他手段進(jìn)行構(gòu)造臟數(shù)據(jù)愿险,測(cè)試服務(wù)器的錯(cuò)誤處理能力颇蜡。2:再利用mock或抓包工具,強(qiáng)行修改返回值辆亏,測(cè)試app端的容錯(cuò)能力风秤。用腳本或手動(dòng)把所有/特定 的參數(shù)進(jìn)行更改,包括 類型/內(nèi)容長(zhǎng)度/為空/刪除掉/不符合規(guī)范 等情況來(lái)測(cè)試app的容錯(cuò)性和成熟性扮叨。
其次網(wǎng)絡(luò)問(wèn)題也是有概率引起崩潰缤弦,就是在網(wǎng)絡(luò)環(huán)境很惡劣 或變動(dòng)頻繁的情況下進(jìn)行所有接口測(cè)試,保證返回值全面完整彻磁。觀察接口返回是否有拉下的數(shù)組元素碍沐。因?yàn)閍pp的超時(shí)判定 和服務(wù)器的超時(shí)判定是不統(tǒng)一的≈则眩可能接口超時(shí)要60秒累提,但是app只等待10秒鐘,10秒沒(méi)到就判定失敗了磁浇,但這不是導(dǎo)致崩潰的原因斋陪。導(dǎo)致崩潰的原因在于服務(wù)器返回超時(shí)后(不是無(wú)網(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)境咆爽,來(lái)讓所以接口依次超時(shí)梁棠。方法可以是在抓包工具上打斷點(diǎn),然后不進(jìn)行繼續(xù)操作斗埂,挺著看app最終會(huì)不會(huì)崩潰符糊。
實(shí)體消失問(wèn)題導(dǎo)致崩潰,其實(shí)是接口規(guī)范上的原因呛凶,當(dāng)因?yàn)橄群蟛僮髂新Γ?yè)面未及時(shí)刷新的情況,導(dǎo)致app對(duì)一個(gè)已經(jīng)在后臺(tái)數(shù)據(jù)庫(kù)抹除的實(shí)體或關(guān)系進(jìn)行訪問(wèn)時(shí)漾稀,后臺(tái)又恰好沒(méi)考慮過(guò)此情況模闲,導(dǎo)致后臺(tái)返回結(jié)果不可預(yù)料,app又沒(méi)有抓取某種異常返回崭捍,導(dǎo)致崩潰尸折。測(cè)試辦法就是測(cè)試點(diǎn)中計(jì)劃好所有這種可以操作到消失實(shí)體的情況,來(lái)進(jìn)行模擬測(cè)試殷蛇∈导校或者抓包時(shí)強(qiáng)行更改請(qǐng)求實(shí)體,來(lái)達(dá)到請(qǐng)求一個(gè)不存在實(shí)體的場(chǎng)景粒梦,觀察服務(wù)器如何處理并返回亮航,app又是否會(huì)因此而崩潰。
2.內(nèi)存問(wèn)題
[直接原因]:客戶端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)存是否超過(guò)預(yù)期夫植。讓開發(fā)規(guī)范代碼讹剔,及時(shí)釋放掉占用的存儲(chǔ)空間油讯。手機(jī)安裝很多app,然后后臺(tái)都打開延欠,然后再運(yùn)行自家app陌兑,觀察其是否會(huì)崩潰頻繁,可以用monkey測(cè)試(雖然monkey無(wú)法表明到底是什么原因引起崩潰由捎,但是可以通過(guò) 觀察后臺(tái)干凈/后臺(tái)運(yùn)行過(guò)多app 這倆種情況下多次測(cè)試兔综,看是否因?yàn)楹笈_(tái)運(yùn)行過(guò)多app 就導(dǎo)致monkey崩潰概率高。而判斷出大致自家app的生存能力)其他待補(bǔ)充狞玛。
3.下標(biāo)越界問(wèn)題
[直接原因]:客戶端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:保證代碼沒(méi)有錯(cuò)誤慧瘤,循環(huán)中沒(méi)有超出實(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ì)訪問(wèn)到一個(gè)不存在的文件永部,會(huì)引發(fā)越界等代碼報(bào)錯(cuò)。2:破壞掉這個(gè)文件呐矾。那么app就會(huì)讀取的時(shí)候發(fā)生io錯(cuò)誤苔埋。等情況來(lái)進(jìn)行測(cè)試。
4.渲染不及時(shí)問(wèn)題
[直接原因]:控件生成/調(diào)用受阻蜒犯,導(dǎo)致前端app代碼報(bào)錯(cuò)
[引起原因]:渲染過(guò)慢组橄,操作過(guò)快,兼容性不好
[解決辦法]:讓用戶換手機(jī)罚随,或慢點(diǎn)點(diǎn)玉工,重新設(shè)計(jì)避免用戶連點(diǎn)造成的操作過(guò)快,重新設(shè)計(jì)減輕頁(yè)面加載渲染負(fù)擔(dān)淘菩,異步處理
[測(cè)試方法]:對(duì)復(fù)雜/卡頓頁(yè)面進(jìn)行快速操作來(lái)讓本不應(yīng)該出現(xiàn)在一起的倆個(gè)控件出現(xiàn)在一起遵班,或用monkey最大速度測(cè)試屠升。待補(bǔ)充
5.權(quán)限問(wèn)題
[直接原因]:客戶端未對(duì)無(wú)權(quán)限情況處理,導(dǎo)致代碼報(bào)錯(cuò)
[引起原因]:用戶訪問(wèn)未獲取到系統(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)限,然后去訪問(wèn)所有系統(tǒng)權(quán)限相關(guān)的頁(yè)面和功能亩鬼。例如:相冊(cè)殖告,照相,定位辛孵,開啟wifi丛肮,藍(lán)牙,gps 等等權(quán)限魄缚。
6.第三方問(wèn)題
[引起原因]:第三方廣告的突然彈出/其他app分享進(jìn)來(lái)和出去/各種第三方app的強(qiáng)行搶鏡(如搶紅包提醒)
[測(cè)試方法]:在各個(gè)頁(yè)面宝与,手動(dòng)觸發(fā)大多數(shù)app的 或 本app的外接 廣告來(lái)測(cè)試。用其他主流app測(cè)試分享冶匹,或自家app分享出去再回來(lái)看是否已經(jīng)被退出习劫。突然收到其他app的強(qiáng)制提醒。
7.系統(tǒng)高優(yōu)先級(jí)app問(wèn)題
[直接原因]:導(dǎo)致自家app突然被掛起或放置后臺(tái)
[引起原因]:突然來(lái)電話嚼隘,突然收短信诽里,鬧鐘,會(huì)議提醒系統(tǒng)原生app等情況
[測(cè)試方法]:在各個(gè)頁(yè)面飞蛹,功能運(yùn)行前中后谤狡。進(jìn)行接電話/短信來(lái)測(cè)試。主要測(cè)試是否會(huì)影響電話/短信卧檐,電話/短信結(jié)束后 app是否能恢復(fù)到之前的頁(yè)面,還是已經(jīng)閃退被強(qiáng)關(guān)了墓懂。
8.設(shè)備視圖方向問(wèn)題
[直接原因]:因橫豎屏導(dǎo)致app崩潰
[解決方法]:重啟app
[測(cè)試方法]:
1.先橫,再開app
2.先豎霉囚,再開app
3.開app后捕仔,各種頁(yè)面上,功能前中后盈罐,橫屏/豎屏來(lái)回切換
9.多語(yǔ)言問(wèn)題
[直接原因]:各種語(yǔ)言導(dǎo)致崩潰
[測(cè)試方法]:
1.先切換成各國(guó)語(yǔ)言榜跌,再開app進(jìn)行各種功能用例測(cè)試
2.先開app,再來(lái)回切換各國(guó)語(yǔ)言進(jìn)行測(cè)試
10.其他代碼錯(cuò)誤
[直接原因]:客戶端app代碼錯(cuò)誤
[引起原因]:各種異常操作盅粪,正常操作
[解決辦法]:adb shell logcat抓日志钓葫,后臺(tái)查看崩潰日志
[測(cè)試方法]:執(zhí)行全部測(cè)試用例即可。
11.弱網(wǎng)問(wèn)題
[直接原因]:客戶端無(wú)法解析json返回值
[引起原因]:網(wǎng)絡(luò)差湾揽,json串過(guò)長(zhǎng)
[解決辦法]:體型用戶換更快網(wǎng)絡(luò)瓤逼,客戶端對(duì)此操作增加等待時(shí)間笼吟。接口返回進(jìn)行異步處理。增加翻頁(yè)功能霸旗。
[測(cè)試方法]:用抓包工具模擬出弱網(wǎng)環(huán)境贷帮,包含丟包率,穩(wěn)定性等元素诱告。然后對(duì)接口返回值構(gòu)造超長(zhǎng)數(shù)據(jù)進(jìn)行測(cè)試撵枢。
————————————————
版權(quán)聲明:本文為CSDN博主「我去熱飯」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議精居,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明锄禽。
原文鏈接:https://blog.csdn.net/qq_22795513/article/details/74590956