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