轉(zhuǎn)自:http://blog.csdn.net/qq_22795513/article/details/74590956
首先,崩潰有幾種情況:
閃退
提示停止運(yùn)行
無(wú)響應(yīng)
( 不同情況雖然沒(méi)有嚴(yán)格意義上區(qū)分開(kāi)引起原因,但是都有側(cè)重。在之后的工作中,我會(huì)實(shí)時(shí)補(bǔ)充統(tǒng)計(jì)。)
[直接原因]:app無(wú)法解析接口返回值/獲取不到要獲取的參數(shù)/參數(shù)類(lèi)型不對(duì) 導(dǎo)致客戶(hù)端代碼報(bào)錯(cuò)
[引起原因]:臟數(shù)據(jù)/網(wǎng)絡(luò)問(wèn)題導(dǎo)致接口超時(shí)或漏了數(shù)組元素/前后臺(tái)沒(méi)有統(tǒng)一參數(shù)類(lèi)型標(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)容不同/類(lè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)行更改,包括 類(lèi)型/內(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)一的??赡芙涌诔瑫r(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è)試?;蛘咦グ鼤r(shí)強(qiáng)行更改請(qǐng)求實(shí)體,來(lái)達(dá)到請(qǐng)求一個(gè)不存在實(shí)體的場(chǎng)景,觀察服務(wù)器如何處理并返回,app又是否會(huì)因此而崩潰。
[直接原因]:客戶(hù)端app代碼報(bào)錯(cuò)。
[引起原因]:兼容不好/內(nèi)存不足/內(nèi)存泄露造成app開(kāi)辟內(nèi)存空間失敗/內(nèi)存泄漏。
[解決辦法]:提醒用戶(hù)更換手機(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í)行一些跟寫(xiě)入讀取有關(guān)的功能的用例。用emmagee監(jiān)控app,看到各種操作后,占用的內(nèi)存是否超過(guò)預(yù)期。讓開(kāi)發(fā)規(guī)范代碼,及時(shí)釋放掉占用的存儲(chǔ)空間。手機(jī)安裝很多app,然后后臺(tái)都打開(kā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ǔ)充。
[直接原因]:客戶(hù)端app代碼報(bào)錯(cuò)。
[引起原因]:需要操作的元素已經(jīng)消失/代碼錯(cuò)誤,超出實(shí)體數(shù)量/讀取or寫(xiě)入本地文件或緩存時(shí)的IO錯(cuò)誤
[解決辦法]:調(diào)查引起崩潰的具體操作步驟,然后提交開(kāi)發(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è)試。
[直接原因]:控件生成/調(diào)用受阻,導(dǎo)致前端app代碼報(bào)錯(cuò)
[引起原因]:渲染過(guò)慢,操作過(guò)快,兼容性不好
[解決辦法]:讓用戶(hù)換手機(jī),或慢點(diǎn)點(diǎn),重新設(shè)計(jì)避免用戶(hù)連點(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ǔ)充
[直接原因]:客戶(hù)端未對(duì)無(wú)權(quán)限情況處理,導(dǎo)致代碼報(bào)錯(cuò)
[引起原因]:用戶(hù)訪問(wèn)未獲取到系統(tǒng)相關(guān)權(quán)限的功能,客戶(hù)端又未對(duì)此情況進(jìn)行處理
[解決辦法]:修改崩潰bug,設(shè)計(jì)此情況的處理機(jī)制,如提示用戶(hù)去手動(dòng)開(kāi)權(quán)限,或自動(dòng)退出等情況。
[測(cè)試方法]:關(guān)掉app所有的系統(tǒng)權(quán)限,然后去訪問(wèn)所有系統(tǒng)權(quán)限相關(guān)的頁(yè)面和功能。例如:相冊(cè),照相,定位,開(kāi)啟wifi,藍(lán)牙,gps 等等權(quá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à),突然收短信,鬧鐘,會(huì)議提醒系統(tǒng)原生app等情況
[測(cè)試方法]:在各個(gè)頁(yè)面,功能運(yùn)行前中后。進(jìn)行接電話(huà)/短信來(lái)測(cè)試。主要測(cè)試是否會(huì)影響電話(huà)/短信,電話(huà)/短信結(jié)束后 app是否能恢復(fù)到之前的頁(yè)面,還是已經(jīng)閃退被強(qiáng)關(guān)了。
[直接原因]:因橫豎屏導(dǎo)致app崩潰
[解決方法]:重啟app
[測(cè)試方法]:
1.先橫,再開(kāi)app
2.先豎,再開(kāi)app
3.開(kāi)app后,各種頁(yè)面上,功能前中后,橫屏/豎屏來(lái)回切換
[直接原因]:各種語(yǔ)言導(dǎo)致崩潰
[測(cè)試方法]:
1.先切換成各國(guó)語(yǔ)言,再開(kāi)app進(jìn)行各種功能用例測(cè)試
2.先開(kāi)app,再來(lái)回切換各國(guó)語(yǔ)言進(jìn)行測(cè)試
[直接原因]:客戶(hù)端app代碼錯(cuò)誤
[引起原因]:各種異常操作,正常操作
[解決辦法]:adb shell logcat抓日志,后臺(tái)查看崩潰日志
[測(cè)試方法]:執(zhí)行全部測(cè)試用例即可。
[直接原因]:客戶(hù)端無(wú)法解析json返回值
[引起原因]:網(wǎng)絡(luò)差,json串過(guò)長(zhǎng)
[解決辦法]:體型用戶(hù)換更快網(wǎng)絡(luò),客戶(hù)端對(duì)此操作增加等待時(shí)間。接口返回進(jìn)行異步處理。增加翻頁(yè)功能。
[測(cè)試方法]:用抓包工具模擬出弱網(wǎng)環(huán)境,包含丟包率,穩(wěn)定性等元素。然后對(duì)接口返回值構(gòu)造超長(zhǎng)數(shù)據(jù)進(jìn)行測(cè)試。