弱網(wǎng)測(cè)試作為健壯性測(cè)試的重要部分据过,對(duì)于移動(dòng)端測(cè)試來(lái)說(shuō)必不可少绳锅。這是因?yàn)槟壳耙苿?dòng)端產(chǎn)品的使用用戶所處的網(wǎng)絡(luò)并非完全的流暢WIFI環(huán)境酝掩,仍有相當(dāng)體量的用戶主要使用4G、3G原朝、2G等網(wǎng)絡(luò),另外因移動(dòng)端產(chǎn)品使用場(chǎng)景多變鞠评,如進(jìn)地鐵壕鹉、上公交、進(jìn)電梯等晾浴,使得弱網(wǎng)測(cè)試顯得尤為重要脊凰。畢竟考慮到各種場(chǎng)景的客戶端展示及容錯(cuò),能極大提升產(chǎn)品印象和用戶體驗(yàn)钉答。
一、弱網(wǎng)測(cè)試的思路篇
總結(jié)了下(如上圖所示),弱網(wǎng)測(cè)試主要進(jìn)行特殊網(wǎng)絡(luò)狀態(tài)下的功能測(cè)試同時(shí)關(guān)注用戶體驗(yàn)惶楼,具體來(lái)說(shuō)诊杆,弱網(wǎng)測(cè)試包括弱網(wǎng)功能測(cè)試、無(wú)網(wǎng)狀態(tài)測(cè)試豹储、網(wǎng)絡(luò)切換測(cè)試等淘这,測(cè)試的同時(shí)關(guān)注用戶體驗(yàn)的諸多方面。
1.弱網(wǎng)功能測(cè)試
這一部分主要是在各種非wifi網(wǎng)絡(luò)環(huán)境下進(jìn)行的功能測(cè)試钠怯,同時(shí)模擬高延時(shí)和高丟包的異常網(wǎng)絡(luò)環(huán)境進(jìn)行健壯性測(cè)試曙聂。2G/3G/4G的網(wǎng)絡(luò)可以通過(guò)使用電話卡移動(dòng)/聯(lián)通/電信等網(wǎng)絡(luò)進(jìn)行模擬晦炊,關(guān)注頁(yè)面的響應(yīng)時(shí)間、頁(yè)面呈現(xiàn)是否完整一致等。高延遲和高丟包的網(wǎng)絡(luò)環(huán)境需要借助工具來(lái)模擬断国,在windows環(huán)境下可以使用fiddler和network emulator for windows toolkit來(lái)模擬贤姆,在mac環(huán)境下則可以使用charles和Xcode自帶的開(kāi)發(fā)環(huán)境網(wǎng)絡(luò)異常模擬工具進(jìn)行。工具的使用在工具篇具體介紹稳衬。
弱網(wǎng)功能測(cè)試建議將整體的功能測(cè)試用例在弱網(wǎng)環(huán)境下進(jìn)行一輪測(cè)試霞捡,相同模塊下的功能可以分多個(gè)網(wǎng)絡(luò)條件進(jìn)行測(cè)試。這部分發(fā)現(xiàn)的問(wèn)題可能會(huì)有:頁(yè)面圖片在弱網(wǎng)環(huán)境下加載不出來(lái)(圖片加載邏輯需優(yōu)化)宋彼、需要模版的頁(yè)面版式結(jié)構(gòu)混亂(模版文件在弱網(wǎng)環(huán)境的加載需優(yōu)化)弄砍、頁(yè)面響應(yīng)時(shí)間較長(zhǎng)沒(méi)有任何顯示(頁(yè)面顯示邏輯待優(yōu)化音婶、重試機(jī)制加入)等莱坎。
2.無(wú)網(wǎng)狀態(tài)測(cè)試
無(wú)網(wǎng)狀態(tài)測(cè)試則是在切段網(wǎng)絡(luò)的情況下進(jìn)行的測(cè)試檐什,主要關(guān)注頁(yè)面的顯示與交互乃正、本地?cái)?shù)據(jù)的存儲(chǔ)、斷網(wǎng)功能的使用等荧飞,經(jīng)常該部分也需要與網(wǎng)絡(luò)切換部分協(xié)同進(jìn)行叹阔。通常來(lái)說(shuō)耳幢,(1)斷網(wǎng)情況下請(qǐng)求一個(gè)非本地?cái)?shù)據(jù)的頁(yè)面需要設(shè)定一定的時(shí)間等待上限睛藻,及時(shí)提示網(wǎng)絡(luò)異常以及提示重試堂油;(2)斷網(wǎng)情況下請(qǐng)求一個(gè)部分本地?cái)?shù)據(jù)的頁(yè)面需要觀察本地?cái)?shù)據(jù)的部分是否加載顯示正常府框,待請(qǐng)求的部分是否符合交互給的缺省樣式一致;(3)斷網(wǎng)情況下請(qǐng)求一個(gè)完全本地?cái)?shù)據(jù)的頁(yè)面是否顯示正常院峡。這里還需考慮本地?cái)?shù)據(jù)存儲(chǔ)的情況照激,有些需要聯(lián)網(wǎng)后上報(bào)服務(wù)器的數(shù)據(jù)本地是否正確存儲(chǔ)俩垃,聯(lián)網(wǎng)后這些數(shù)據(jù)能否正常上報(bào)口柳。
無(wú)網(wǎng)狀態(tài)測(cè)試建議按照頁(yè)面劃分進(jìn)行,針對(duì)每個(gè)頁(yè)面單獨(dú)測(cè)試無(wú)網(wǎng)狀態(tài)的顯示嵌削,頁(yè)面間跳轉(zhuǎn)的顯示苛秕,頁(yè)面內(nèi)功能的點(diǎn)擊和顯示艇劫,同時(shí)關(guān)注無(wú)網(wǎng)到有網(wǎng)時(shí)的頁(yè)面恢復(fù)顯示狀態(tài)港准、數(shù)據(jù)上報(bào)情況是否正常。
3.網(wǎng)絡(luò)切換測(cè)試
這部分主要是進(jìn)行幾個(gè)不同網(wǎng)絡(luò)場(chǎng)景的切換魄咕,包括wifi-2G/3G/4G蚌父、wifi-無(wú)網(wǎng)苟弛、2G/3G/4G-wifi膏秫、2G/3G/4G-無(wú)網(wǎng)、無(wú)網(wǎng)-2G/3G/4G吹榴、無(wú)網(wǎng)-wifi等滚婉。主要關(guān)注頁(yè)面的顯示與交互,尤其是弱網(wǎng)到wifi远剩,wifi到弱網(wǎng)的情況瓜晤,是否會(huì)有頁(yè)面的crash以及顯示的錯(cuò)亂活鹰、session是否一致志群、請(qǐng)求堆積處理等锌云。
4.用戶體驗(yàn)關(guān)注
弱網(wǎng)測(cè)試的目的就是盡可能保證用戶體驗(yàn)桑涎,關(guān)注的關(guān)鍵點(diǎn)包括:
(1)頁(yè)面響應(yīng)時(shí)間是否可接受攻冷,關(guān)注包括熱啟動(dòng)遍希、冷啟動(dòng)時(shí)間凿蒜,頁(yè)面切換废封,前后臺(tái)切換漂洋,首字時(shí)間,首屏?xí)r間等渴肉。
(2)頁(yè)面呈現(xiàn)是否完整一致
(3)超時(shí)文案是否符合定義仇祭,異常信息是否顯示正常乌奇。
(4)是否會(huì)有超時(shí)重連
(5)安全角度:是否會(huì)發(fā)生dns劫持礁苗、登錄ip更換頻繁试伙、單點(diǎn)登錄異常等。
(6)大流量事件風(fēng)險(xiǎn):是否會(huì)在弱網(wǎng)下進(jìn)行更新apk包潘靖、下載文件等大流量動(dòng)作卦溢。
二单寂、弱網(wǎng)測(cè)試的工具篇
在安卓產(chǎn)品測(cè)試的過(guò)程中宣决,使用到的弱網(wǎng)測(cè)試工具主要是fiddler模擬網(wǎng)絡(luò)延遲疲扎,以及network emulation for windows toolkit模擬網(wǎng)絡(luò)丟包場(chǎng)景。MAC環(huán)境下的charles等抓包工具的實(shí)現(xiàn)原理是相同的救巷。這里主要介紹下安卓弱網(wǎng)測(cè)試場(chǎng)景下使用到的工具浦译。
1.fiddler
fiddler主要是使用Rules->Performance->Simulate Modem Speeds功能進(jìn)行的網(wǎng)絡(luò)延遲模擬精盅,點(diǎn)擊Rules->Customize Rules進(jìn)行設(shè)置,打開(kāi)自定義腳本編輯器妻枕,如下圖所示:
紅框內(nèi)標(biāo)出的就是設(shè)置延遲時(shí)可以操作的上行和下行網(wǎng)絡(luò)延遲時(shí)間,意為每上傳/下載1KB的數(shù)據(jù)要延遲多少毫秒愕掏。這里我把請(qǐng)求(上行)時(shí)間延遲設(shè)置為3000ms顶伞,響應(yīng)(下行)時(shí)間延遲設(shè)置為1000ms(模擬了2G網(wǎng)絡(luò)的速度)唆貌。
這里通過(guò)計(jì)算上行和下行的網(wǎng)絡(luò)延遲時(shí)間挠锥,可以模擬出想要的網(wǎng)絡(luò)效果蓖租。利用 (1KB/下載速度)x1000 = 要delay的毫秒數(shù) 來(lái)計(jì)算蓖宦。比如我們要模擬2G的網(wǎng)絡(luò)稠茂。2G網(wǎng)絡(luò)上行和下行的網(wǎng)絡(luò)速度如下圖所示:
![](https://testerhome.com/uploads/photo/2017/e4099bdb5b354a0eaacf569cba006039.png!large)
我們看到在各種制式下上行速度都是2.7kb/s诱担,下行速度是9.6kb/s蔫仙,根據(jù)1KB=8kb摇邦,可以計(jì)算出上行延遲為(1/(2.7/8))x1000=2962ms ,同理下行延遲未(1/(2.7/8))x1000=833ms。這里我取了近似整值3000ms和1000ms居扒,模擬了2G網(wǎng)絡(luò)喜喂。同理也可以通過(guò)計(jì)算模擬3G網(wǎng)絡(luò)夜惭,附3G網(wǎng)絡(luò)制式及速度圖如下:
![](https://testerhome.com/uploads/photo/2017/a73e4ab9d51093b0d4ab9dd025f1c75b.png)
設(shè)置完成后,在fiddler里將Rules->Performance->Simulate Modem Speeds選中即可使設(shè)置生效敢会。
2.Network Emulation for Windows Toolkit
fiddler只能設(shè)置延遲鸥昏,無(wú)法進(jìn)行丟包的設(shè)置吏垮。在windows上有個(gè)簡(jiǎn)單易用的工具Network Emulation for Windows Toolkit可以用來(lái)設(shè)置網(wǎng)絡(luò)丟包情況膳汪。設(shè)置丟包有兩個(gè)關(guān)鍵步驟遗嗽,一是設(shè)置電腦網(wǎng)絡(luò)固棚,二是將移動(dòng)設(shè)備接入電腦共享的網(wǎng)絡(luò)。詳細(xì)看下每個(gè)步驟:
(1)設(shè)置電腦網(wǎng)絡(luò)
工具簡(jiǎn)單界面如下所示:
最上方是本地應(yīng)用锤躁,最下方的本地網(wǎng)絡(luò)。中間的兩塊區(qū)域上部分需要建立鏈路椒振,下部分可以對(duì)特定IP進(jìn)行過(guò)濾澎迎。因?yàn)槲覀冃枰M(jìn)行的是網(wǎng)絡(luò)丟包設(shè)置夹供,所以過(guò)濾器這邊就可以不做設(shè)定哮洽。我們點(diǎn)擊頂部菜單欄Configuration->New Filter鸟辅,在彈出的設(shè)置框里點(diǎn)擊Add匪凉,新增一個(gè)過(guò)濾器再层,如下圖所示:
接著點(diǎn)擊Configuration->New Link新增一條鏈路聂受,此時(shí)界面顯示如下:
我們沒(méi)有對(duì)網(wǎng)絡(luò)做任何限制饺饭,此時(shí)網(wǎng)絡(luò)是暢通的瘫俊,ping一下看:
果然沒(méi)有任何丟失,且無(wú)超時(shí)發(fā)生积瞒。
此時(shí)我們?cè)O(shè)置網(wǎng)絡(luò)丟包茫孔,在新建鏈路點(diǎn)擊右鍵,選擇Upstream設(shè)置上行網(wǎng)絡(luò)畔濒。這里我們?cè)O(shè)置了隨機(jī)丟包率為40%:
同理也可以設(shè)置下行網(wǎng)絡(luò)侵状。設(shè)置完成后要點(diǎn)擊Action->Start開(kāi)始使設(shè)置生效趣兄。生效后我們?cè)賮?lái)ping一下網(wǎng)絡(luò)看看:
可以看到此時(shí)有丟包和超時(shí)發(fā)生了。
除了設(shè)置隨機(jī)丟包率承粤,我們也可以設(shè)置周期丟包率辛臊、引入錯(cuò)誤等網(wǎng)絡(luò)異常情況彻舰。甚至也可以設(shè)置延時(shí)刃唤∩邪總之該工具在弱網(wǎng)測(cè)試中可用性還是很強(qiáng)笼裳。
(2)移動(dòng)端設(shè)備接入電腦網(wǎng)絡(luò)
設(shè)置完P(guān)C端網(wǎng)絡(luò)環(huán)境躬柬,由于我們是移動(dòng)端設(shè)備允青,需要移動(dòng)端設(shè)備接入PC的網(wǎng)絡(luò),因而需要做網(wǎng)絡(luò)共享史汗。當(dāng)PC有無(wú)線網(wǎng)卡的情況下淹办,可以首先利用無(wú)線網(wǎng)卡共享有線網(wǎng)絡(luò)的數(shù)據(jù),然后利用Connectify或者360wifi等共享wifi工具谤牡,讓移動(dòng)端設(shè)備共享PC的網(wǎng)絡(luò)翅萤。當(dāng)PC沒(méi)有無(wú)線網(wǎng)卡的情況下(我們的辦公PC就沒(méi)有網(wǎng)卡--)套么,安卓端手機(jī)可以使用usb連接電腦使用PC的網(wǎng)絡(luò)胚泌。這里有個(gè)簡(jiǎn)單易行的辦法玷室,就是使用小米手機(jī)助手的一鍵開(kāi)啟共享上網(wǎng)功能(當(dāng)然了目前只能支持共享給小米手機(jī)穷缤,且系統(tǒng)安卓版本低于6.0)津肛。在電腦上安裝小米手機(jī)助手身坐,小米手機(jī)通過(guò)usb開(kāi)啟usb調(diào)試連接電腦掀亥,就可以共享電腦的網(wǎng)絡(luò)了搪花。如下圖所示:
點(diǎn)擊一鍵開(kāi)啟后吮便,可以看到小米手機(jī)的網(wǎng)絡(luò)全部關(guān)閉幢踏,此時(shí)設(shè)備使用的就是電腦共享出來(lái)的網(wǎng)絡(luò)。
至于非小米手機(jī)的其他設(shè)備僚匆,也可以使用usb線連接電腦共享其網(wǎng)絡(luò)咧擂∷缮辏可參考網(wǎng)上的設(shè)置教程贸桶。
總之皇筛,弱網(wǎng)測(cè)試作為健壯性測(cè)試的一種设联,是測(cè)試過(guò)程中必不可少的重要環(huán)節(jié)离例」考慮到弱網(wǎng)測(cè)試的各項(xiàng)要點(diǎn)以及合理使用各項(xiàng)工具模擬出復(fù)雜耀盗、嚴(yán)苛的網(wǎng)絡(luò)環(huán)境叛拷,能極大提高產(chǎn)品的可用性忿薇,保證產(chǎn)品上線后應(yīng)對(duì)各種應(yīng)用場(chǎng)景的使用質(zhì)量署浩。以上是我在安卓產(chǎn)品弱網(wǎng)測(cè)試過(guò)程中總結(jié)出的一點(diǎn)經(jīng)驗(yàn)筋栋,還有許多未考慮周全的測(cè)試點(diǎn)抢腐,還需要在后續(xù)的測(cè)試中繼續(xù)加強(qiáng)經(jīng)驗(yàn)和總結(jié)氓栈,與大家共同探討。