弱網(wǎng)測試屬于健壯性測試,用戶在地鐵里,巴士上甚至電梯,車庫等場景碎片化使用APP,我們需要針對這些場景的弱網(wǎng)環(huán)境下,驗證出現(xiàn)丟包、延時,軟件的處理機制,避免因用戶體驗不友好造成用戶的流失。
一、弱網(wǎng)測試場景
1. 結(jié)合APP本身屬性
比如社交類APP(聊天,搶紅包)對網(wǎng)絡(luò)環(huán)境依賴性大且用戶關(guān)注度高,弱網(wǎng)環(huán)境下需要重點關(guān)注
比如互聯(lián)網(wǎng)金融APP,申購流程中創(chuàng)建訂單后是否支付成功。例如弱網(wǎng)環(huán)境下,創(chuàng)建訂單失敗,是否被扣費,創(chuàng)建訂單成功后支付失敗,再次支付是否重復(fù)扣費等
2. 使用頻率,易遇到弱網(wǎng)的場景
比如微博APP【觀看小視頻】,用戶在碎片時間極易觀看小視頻(APP用戶喜歡使用碎片化時間進行娛樂操作)
比如金融APP,用戶在碎片時間使用金融APP,領(lǐng)取獎品,查看理財類新聞,查看收益
二、弱網(wǎng)環(huán)境測試點總結(jié)
1. 場景:弱網(wǎng)環(huán)境下某個操作響應(yīng)時間
原因:APP用戶對等待時間容忍度低,若弱網(wǎng)環(huán)境loading超過5s,用戶很容易kill應(yīng)用后再次進入應(yīng)用
測試點:性能測試中,加入弱網(wǎng)環(huán)境下,檢測各個場景網(wǎng)絡(luò)請求API消耗時間
2. 場景:弱網(wǎng)環(huán)境下直至超時,UI界面友好度和APP是否穩(wěn)定
原因:容錯機制主要是考慮弱網(wǎng)情況下帶來的不穩(wěn)定,比如loading超時導(dǎo)致沒有響應(yīng)或者Crash
測試點:弱網(wǎng)環(huán)境直至超時,判斷為斷網(wǎng)狀態(tài),UI界面和提示,友好且理解無歧義
3. 場景:斷網(wǎng)后恢復(fù),是否自動重發(fā)請求
原因:不同模塊,開發(fā)對請求處理不同,代碼是否支持自動重復(fù)請求,自動重發(fā)請求的頻率是什么?
測試點:斷網(wǎng)后恢復(fù)網(wǎng)絡(luò),是否堆積網(wǎng)絡(luò)請求(理財模塊,當(dāng)10s左右無返回,則會重發(fā)請求),此時請求和返回正常情況下,是否出現(xiàn)異常情況,比如1次支付操作,斷網(wǎng)后堆積多個支付請求,恢復(fù)網(wǎng)絡(luò)后因堆積多個支付請求,是否完成多次支付
測試點:斷網(wǎng)后恢復(fù)網(wǎng)絡(luò),考慮APP進行操作目的是否傷害用戶體驗,通過哪種手段,可以達到操作目的的同時,用戶體驗無感或者低傷害
比如,微信希望在線升級某些內(nèi)容,會自動監(jiān)聽用戶是否插著電,連著wifi, 一旦監(jiān)聽到了,就馬上告訴你可以升級
1)插電可確保升級過程中,耗電不會導(dǎo)致低電量甚至沒電
2)wifi確保升級過程中,流量消耗不會使用用戶話費中流量包,不會導(dǎo)致因消耗話費流量而傷害用戶體驗
4. 場景:網(wǎng)絡(luò)請求中,kill進程(導(dǎo)致APP狀態(tài)掉線)
登陸同一個賬號成功,應(yīng)該不繼續(xù)相同網(wǎng)絡(luò)請求
登陸不同賬號成功,應(yīng)該不繼續(xù)相同網(wǎng)絡(luò)請求
三、常見弱網(wǎng)問題和原因分析
- 場景:上傳大圖或者多圖時,在弱網(wǎng)環(huán)境下出現(xiàn)進度條走到一半卡住然后又從頭開始
原因:采用分段上傳方式,甚至請求超時,分段傳輸沒有結(jié)束,代碼邏輯不對,導(dǎo)致每次重試都重頭上傳,一直循環(huán) - 場景:在弱網(wǎng)情況下容易出現(xiàn)登陸不上或者登陸后立即掉線
原因:登陸沒有緩沖機制,而請求超時時間的設(shè)置沒有區(qū)分網(wǎng)絡(luò)情況
解決方案:建議開發(fā)針對wifi, 2g, 3g,4g設(shè)置不同的超時時間 - 場景:刷新網(wǎng)頁很快就給出暫無內(nèi)容的提示,明顯沒有到請求超時時間
原因:可能是連接超時時間太短,wifi下設(shè)置兩秒,在弱網(wǎng)下設(shè)置需要更長 - 場景:弱網(wǎng)環(huán)境下,請求的數(shù)據(jù)返回時間較長,等待的過程中,如果頁面上的相關(guān)控件仍可以操作,則容易出現(xiàn)異常
原因:依賴數(shù)據(jù)的控件操作,在數(shù)據(jù)返回前沒有做兼容處理
解決方案:在數(shù)據(jù)加載過程中,設(shè)置頁面對外暴露的控件為不可操作,當(dāng)數(shù)據(jù)加載完再釋放 - 場景:搜索時輸入關(guān)鍵字會連續(xù)發(fā)送請求,停下時,顯示最終的關(guān)鍵字搜索結(jié)果,但很快又會被前面的關(guān)鍵字搜索結(jié)果覆蓋了
原因:中間的請求返回較慢,顯示了最終的結(jié)果后,之前的請求返回的數(shù)據(jù)應(yīng)不做處理
解決方案:對異步請求未完成的任務(wù)進行cancel