app崩潰的原因 和 提前測試流程/方法 和出現崩潰后怎么定位和處理

首先,崩潰有幾種情況:

閃退

提示停止運行

無響應

( 不同情況雖然沒有嚴格意義上區分開引起原因,但是都有側重。在之后的工作中,我會實時補充統計。)

1.接口返回值

[直接原因]:app無法解析接口返回值/獲取不到要獲取的參數/參數類型不對 導致客戶端代碼報錯

[引起原因]:臟數據/網絡問題導致接口超時或漏了數組元素/前后臺沒有統一參數類型標準/參數名錯誤/實體消失

[解決辦法]:在網絡順暢/不順暢情況下抓包,對著api文檔一個一個的參數對比,返回值有數組可以橫向對比,可能是其中某個元素內的某個參數和其他元素內的這個參數有內容不同/類型不同/為空/不存在/規范不同。

[測試方法]:首先要從2個角度考慮。1:后臺不要返回這種臟數據,或者有臟數據要進行處理再返回給app。2:app要有一定的容錯性,不能因為一個參數這么一點小事就導致崩潰(低級bug瞬間升級到致命bug)。所以要從倆邊測試。1:先進行正常的接口測試,保證正常數據返回沒有問題。再通過操作數據庫或其他手段進行構造臟數據,測試服務器的錯誤處理能力。2:再利用mock或抓包工具,強行修改返回值,測試app端的容錯能力。用腳本或手動把所有/特定 的參數進行更改,包括 類型/內容長度/為空/刪除掉/不符合規范 等情況來測試app的容錯性和成熟性。

其次網絡問題也是有概率引起崩潰,就是在網絡環境很惡劣 或變動頻繁的情況下進行所有接口測試,保證返回值全面完整。觀察接口返回是否有拉下的數組元素。因為app的超時判定 和服務器的超時判定是不統一的??赡芙涌诔瑫r要60秒,但是app只等待10秒鐘,10秒沒到就判定失敗了,但這不是導致崩潰的原因。導致崩潰的原因在于服務器返回超時后(不是無網絡,不是關掉wifi或數據流量),接口報什么http狀態碼,一般是502,app原則上是要對所有接口502都有對應處理和提示,但實際情況是,很多接口有提示不崩潰,更多的接口會崩潰。所以測試的時候要構造特殊環境,來讓所以接口依次超時。方法可以是在抓包工具上打斷點,然后不進行繼續操作,挺著看app最終會不會崩潰。

實體消失問題導致崩潰,其實是接口規范上的原因,當因為先后操作,頁面未及時刷新的情況,導致app對一個已經在后臺數據庫抹除的實體或關系進行訪問時,后臺又恰好沒考慮過此情況,導致后臺返回結果不可預料,app又沒有抓取某種異常返回,導致崩潰。測試辦法就是測試點中計劃好所有這種可以操作到消失實體的情況,來進行模擬測試?;蛘咦グ鼤r強行更改請求實體,來達到請求一個不存在實體的場景,觀察服務器如何處理并返回,app又是否會因此而崩潰。


2.內存問題

[直接原因]:客戶端app代碼報錯。

[引起原因]:兼容不好/內存不足/內存泄露造成app開辟內存空間失敗/內存泄漏。

[解決辦法]:提醒用戶更換手機或關掉后臺其他app進程,崩潰的app要進行全面測試,定位到具體什么操作導致崩潰。

[測試方法]:先進行兼容性測試,用不同的操作系統/手機型號/品牌/系統版本/藍牙版本去執行一些跟寫入讀取有關的功能的用例。用emmagee監控app,看到各種操作后,占用的內存是否超過預期。讓開發規范代碼,及時釋放掉占用的存儲空間。手機安裝很多app,然后后臺都打開,然后再運行自家app,觀察其是否會崩潰頻繁,可以用monkey測試(雖然monkey無法表明到底是什么原因引起崩潰,但是可以通過 觀察后臺干凈/后臺運行過多app 這倆種情況下多次測試,看是否因為后臺運行過多app 就導致monkey崩潰概率高。而判斷出大致自家app的生存能力)其他待補充。

3.下標越界問題

[直接原因]:客戶端app代碼報錯。

[引起原因]:需要操作的元素已經消失/代碼錯誤,超出實體數量/讀取or寫入本地文件或緩存時的IO錯誤

[解決辦法]:調查引起崩潰的具體操作步驟,然后提交開發解決,前端代碼容錯率需要提高。

[測試方法]:邊界值測試為核心思想,測試正常情況有關數量的功能用例

要進行代碼review1:保證代碼沒有錯誤,循環中沒有超出實體數量。2:保證代碼容錯性高,每個循環都要有越界異常捕獲并處理。/

要進行手動破壞性測試,1:如刪除本地文件,比如app要調取本地緩存的4張圖片,在app剛要調用的時候,已經選擇好的時候,切換到本地文件管理中,刪掉其中一個,那么app就會訪問到一個不存在的文件,會引發越界等代碼報錯。2:破壞掉這個文件。那么app就會讀取的時候發生io錯誤。等情況來進行測試。

4.渲染不及時問題

[直接原因]:控件生成/調用受阻,導致前端app代碼報錯

[引起原因]:渲染過慢,操作過快,兼容性不好

[解決辦法]:讓用戶換手機,或慢點點,重新設計避免用戶連點造成的操作過快,重新設計減輕頁面加載渲染負擔,異步處理

[測試方法]:對復雜/卡頓頁面進行快速操作來讓本不應該出現在一起的倆個控件出現在一起,或用monkey最大速度測試。待補充

5.權限問題

[直接原因]:客戶端未對無權限情況處理,導致代碼報錯

[引起原因]:用戶訪問未獲取到系統相關權限的功能,客戶端又未對此情況進行處理

[解決辦法]:修改崩潰bug,設計此情況的處理機制,如提示用戶去手動開權限,或自動退出等情況。

[測試方法]:關掉app所有的系統權限,然后去訪問所有系統權限相關的頁面和功能。例如:相冊,照相,定位,開啟wifi,藍牙,gps 等等權限。

6.第三方問題

[引起原因]:第三方廣告的突然彈出/其他app分享進來和出去/各種第三方app的強行搶鏡(如搶紅包提醒)

[測試方法]:在各個頁面,手動觸發大多數app的 或 本app的外接 廣告來測試。用其他主流app測試分享,或自家app分享出去再回來看是否已經被退出。突然收到其他app的強制提醒。

7.系統高優先級app問題

[直接原因]:導致自家app突然被掛起或放置后臺

[引起原因]:突然來電話,突然收短信,鬧鐘,會議提醒系統原生app等情況

[測試方法]:在各個頁面,功能運行前中后。進行接電話/短信來測試。主要測試是否會影響電話/短信,電話/短信結束后 app是否能恢復到之前的頁面,還是已經閃退被強關了。

8.設備視圖方向問題

[直接原因]:因橫豎屏導致app崩潰

[解決方法]:重啟app

[測試方法]:

1.先橫,再開app

2.先豎,再開app

3.開app后,各種頁面上,功能前中后,橫屏/豎屏來回切換

9.多語言問題

[直接原因]:各種語言導致崩潰

[測試方法]:

1.先切換成各國語言,再開app進行各種功能用例測試

2.先開app,再來回切換各國語言進行測試

10.其他代碼錯誤

[直接原因]:客戶端app代碼錯誤

[引起原因]:各種異常操作,正常操作

[解決辦法]:adb shell logcat抓日志,后臺查看崩潰日志

[測試方法]:執行全部測試用例即可。

11.弱網問題

[直接原因]:客戶端無法解析json返回值

[引起原因]:網絡差,json串過長

[解決辦法]:體型用戶換更快網絡,客戶端對此操作增加等待時間。接口返回進行異步處理。增加翻頁功能。

[測試方法]:用抓包工具模擬出弱網環境,包含丟包率,穩定性等元素。然后對接口返回值構造超長數據進行測試。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,460評論 6 538
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,067評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 177,467評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,468評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,184評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,582評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,616評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,794評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,343評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,096評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,291評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,863評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,513評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,941評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,190評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,026評論 3 396
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,253評論 2 375

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,692評論 25 708
  • 轉自:http://blog.csdn.net/qq_22795513/article/details/74590...
    __Andy__閱讀 2,059評論 0 0
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,809評論 18 139
  • 1.思維轉換 每個人所處的位置不同,相對做出的反應自然形成多面性,每個人都需要透過情景轉變思維。 2.成熟模式圖 ...
    楊平的閱讀 129評論 0 0
  • 現代與原始并存!繁華與骯臟同在
    聽風景閱讀 73評論 0 0