1. 程式人生 > >【軟體測試】APP停止執行的bug分析

【軟體測試】APP停止執行的bug分析

                                         APP停止執行的bug分析

                                                                                 ——by PopStar_Z

一、事件起因

      操作手機自帶的返回鍵時,手機出現閃退,提示“***停止執行”,並退出到手機主頁,點選該軟體再次登入時,反覆操作又會出現類似的問題

二、原因分析

1、初步定位

定位分析:

       1、由於在軟體執行過程中,不斷的操作手機會產生大量的快取資料,當手機中安裝的軟體比較多時,手機記憶體佔用空間比較     大,此時如果快取資料過多,就會造成記憶體空間不足,從而產生手機閃退的情況;

      2、在安裝過程中,歷史版本資料如果不清除也有可能造成新版本的異常退出情況;

      3、弱網路環境原因,由於網路延遲問題。當手機需要從伺服器端獲取請求的資訊資料時,服務端將響應過後的資訊傳送給手機端,但是由於網路延遲會出現響應資料不能正常接收,從而閃退 ;

      4、手機韌體、機型的不同,造成軟體與手機的相容問題也不同,因此需要把相容問題考慮在內。

初步排查步驟:(軟體快取、手機版本安裝、弱網路、相容問題)

手機快取:在安裝A應用之前,排查手機快取

    1)  安裝A應用後檢視手機剩餘記憶體

    2) 執行A應用,反覆操作通知詳情,監控該軟體佔用手機快取佔用情況

歷史資料衝突:排查是不是因為在解除安裝之後,歷史資料並沒有刪除

   1)  首先安裝歷史版本,將軟體解除安裝時,保留歷史資料
   2) 然後安裝新版本,開啟A應用檢視能否正常執行

韌體、機型適配:排查是不是相容問題

    更換其他機型、韌體的手機,進行類似操作,是否會出現相似的問題

初步定位總結:

    從以上測試結論,由此推測,bug主要原因可能是由於手機軟體快取資料過多,造成記憶體不足的原因,而出現退出軟體。

2、Bug深入定位

   1)排查快取資料佔用大量記憶體

       反覆操作手機會產生過多的快取資料。可能由於手機系統盤安裝的軟體過多已經沒有空間了,開啟軟體的時候回產生快取資料,而手機已經沒有系統盤已經沒有放快取資料的空間了,因此你開啟軟體的時候會不斷的崩潰。

  具體操作:

   使用itest工具監控使用過程中的記憶體變化,進入手機自帶的“應用程式管理器”檢視軟體的快取資料大小。

  2

1

    檢視iTest記憶體監控,發現記憶體佔有較小,快取資料量也只有104K,可以初步排除快取容量過多的問題。

   2)排查歷史版本資料衝突

     A應用有可能是在解除安裝舊版本之後,還存在著歷史資料,有的時候是因為歷史版本與新版本衝突,會導致新版本的部分內容不可以使用,出現閃退。

  具體操作:

     首先安裝歷史版本,將軟體解除安裝時,保留歷史資料,然後安裝新版本,開啟A應用檢視能否正常執行 。結果在部分功能上,A應用由於歷史資料沒有刪除的原因。功能使用出現問題,比如聊天不同的問題,但並未出現“A應用停止執行”的情況。

   3)排查弱網路環境

      有時候會由於網路延遲問題。弱網路環境原因,造成網路延遲:當手機需要從伺服器端獲取請求的資訊資料時,服務端將響應過後的資訊傳送給手機端,但是由於網路延遲會出現響應資料不能正常接收,從而閃退

   具體操作:

    Fiddler的模擬限速是通過延遲上傳/下載速度來實現的。啟用該功能方法如下:

    Rules → Performances → Simulate Modem Speeds

    就能按照預設的引數限速,模擬弱網路。

    若要自定義modem speeds 操作如下:

    Rules →Customize Rules… 將開啟Fiddler ScriptEditor頁面(可以安裝一個fiddlersyntaxsetup.exe外掛,方便操作);

3

       反覆驗證後此時情況,弱網路環境下介面顯示載入的時間會比較長,最後會出現“請設定網路的提示”,並沒有出現手機閃退的情況,因此並不是bug的原因所在。

   4)排查程式碼:返回鍵按鍵事件的判斷忽略

       檢視相關的程式碼,發現在執行過程中,由於判斷分支並沒有考慮異常處理的情況所以在執行操作後,點選手機自帶的返回鍵後,由於軟體不知道該如何處理,而閃退出A應用。修復程式碼如下:

4

       與開發溝通之後,這個問題出現的真正原因是忽略了對社交介面的返回鍵按鍵事件的判斷,在比較早的版本,那個時候按返回鍵預設情況是退出,而在社交介面沒有設定按下返回鍵的操作,結果就認為是預設操作,當用戶點選返回鍵後,便會直接退出A應用。

三、規避bug方案

    1)當出現第一種情況解決的辦法是通過手機的自帶的刪除軟體把一些軟體刪除掉,騰出一些空間來。

    2)建議解除安裝重新安裝,安裝方式在選擇時,不要選擇覆蓋安裝,可以首先清理A應用的快取資料,然後解除安裝A應用,確認解除安裝完 畢後將A應用重新安裝

    3)這種處理方案可以首先檢視網路,將網路的異常情況的處理,寫到程式碼中去,當沒有接收到服務端的響應資料時,就可以按照異常的情況來處理,不會發生閃退或崩潰

   4)及時與開發交流溝通,在軟體程式碼方面由於手機返回鍵沒有寫到程式碼裡造成軟體閃退。

四、QA測試推斷A應用停止執行的bug的總結

初步定位:

  • 抓包工具fiddler,手機效能測試工具iTest,初步定位bug原因;

  深入定位:

  • 快取問題:藉助手機應用管裡器等檢視快取資料大小進行定位。
  • 歷史資料問題,覆蓋安裝但未清理歷史資料。
  • 弱網路問題:藉助fiddler等工具限制網速,模擬弱網路進行重現和定位。
  • 程式碼資料問題:由於返回資料為異常,而引起bug,模擬異常資料進行重現和定位。

  深入定位總結:

      這個問題出現的真正原因是忽略了對社交介面的返回鍵按鍵事件的判斷,在比較早的版本,那個時候按返回鍵預設情況是退出,而在社交介面沒有設定按下返回鍵的操作,結果就認為是預設操作,當用戶點選返回鍵後,便會直接退出A應用。