最近在搞一個智能穿戴項目续捂。
手環(huán)手表等智能穿戴項目中最核心的功能是運動計步功能。
計步功能的業(yè)務(wù)邏輯是主要流程是通過手環(huán)設(shè)備采集運動數(shù)據(jù)怒炸,通過app提交采集的數(shù)據(jù)并發(fā)送到服務(wù)端带饱,在服務(wù)端的算法庫解析以后,回傳給app顯示出來横媚。
由此可見纠炮,在整個業(yè)務(wù)邏輯過程中月趟,數(shù)據(jù)的傳輸是很重要的一環(huán)灯蝴。
因此有必要針對app開展網(wǎng)絡(luò)測試恢口。
[TOC]
? 當(dāng)前app的網(wǎng)絡(luò)環(huán)境比較復(fù)雜,在網(wǎng)絡(luò)制式上就存在2G
穷躁、3G
耕肩、4G
網(wǎng)絡(luò),以及越來越多的公共wifi
问潭。不同的網(wǎng)絡(luò)環(huán)境以及網(wǎng)絡(luò)制式的差異猿诸,都會對用戶使用app造成一定的影響。如果app沒有針對各種異常的網(wǎng)絡(luò)狀況進行兼容處理狡忙,那么用戶就很有可能在日常使用中碰到app閃退梳虽、ANR
、數(shù)據(jù)丟失等嚴(yán)重的問題灾茁。
測試維度
1窜觉、功能測試
對于功能測試,要考慮在各種網(wǎng)絡(luò)制式下app的功能體驗北专。雖然現(xiàn)在4G網(wǎng)絡(luò)越來越普及了禀挫,但是作為測試,依然要考慮到所有可能發(fā)生的場景拓颓。雖然不可能把所有網(wǎng)絡(luò)制式都覆蓋到语婴,但是我認(rèn)為還是有必要在弱網(wǎng)環(huán)境下,針對app開展基本的功能測試驶睦,保證app在弱網(wǎng)環(huán)境下能夠把整個業(yè)務(wù)流程跑一遍砰左。弱網(wǎng)環(huán)境下,有時候會對app的功能造成嚴(yán)重的影響场航,例如:在弱網(wǎng)環(huán)境下缠导,同步跑步數(shù)據(jù),如果app沒有針對這個方面做處理旗闽,那么很可能導(dǎo)致app把設(shè)備的數(shù)據(jù)同步過來酬核,但是卻無法上傳,如果開發(fā)人員沒有針對這種情況做處理适室,那么這段數(shù)據(jù)就可能丟失嫡意。
2、響應(yīng)時間
? 響應(yīng)時間這個指標(biāo)在性能測試中出現(xiàn)比較多捣辆,對于用戶體驗以及app的市場占用率都有很重要的影響蔬螟。安卓手機一般超過5秒鐘無響應(yīng)就會報ANR的錯誤,ios手機響應(yīng)時間過長也會報錯汽畴。
據(jù)調(diào)查顯示旧巾,用戶能夠忍受的最佳響應(yīng)時間是2秒以內(nèi)耸序,超過5秒無響應(yīng)的話,一般性子比較急躁的用戶很可能就會直接退出頁面了鲁猩,如果超過10秒無響應(yīng)坎怪,很多人都會選擇殺掉app。app經(jīng)常處于無響應(yīng)或者響應(yīng)時間過長的狀態(tài)廓握,會導(dǎo)致大批的用戶轉(zhuǎn)移到競爭對手的產(chǎn)品上搅窿。
3、異常測試
? 異常測試是指驗證app針對各種網(wǎng)絡(luò)異常情況是否做出了容錯處理隙券,這里面包括異常提示信息男应、出錯容錯機制、超時判斷處理機制娱仔、出錯以后自動重連等沐飘。
從一個app的異常測試結(jié)果,就可以看出開發(fā)人員對這款app投入的精力以及負(fù)責(zé)程度牲迫。
4耐朴、無網(wǎng)測試
? 無網(wǎng)測試測試主要針對斷網(wǎng)的情況下,app各個功能是否受到影響恩溅。例如:公司的手環(huán)app在開始某個版本出現(xiàn)斷網(wǎng)以后隔箍,進入周數(shù)據(jù)統(tǒng)計頁面,從服務(wù)器請求數(shù)據(jù)時出現(xiàn)閃退問題脚乡。
5蜒滩、弱網(wǎng)UI測試
? 弱網(wǎng)的情況下,app很可能出現(xiàn)UI刷新不及時或者不刷新的情況奶稠,這時候就可能會導(dǎo)致呈現(xiàn)在用戶面前的是一個殘缺的頁面俯艰。偶會也會導(dǎo)致出現(xiàn)頁面UI元素錯亂的情況。
6锌订、網(wǎng)絡(luò)切換測試
? 現(xiàn)在的公共wifi越來越多竹握,用戶使用app中很可能發(fā)生這種情況:用著4G網(wǎng)絡(luò)時, 走上十幾米突然連上一個咖啡廳的公共wifi辆飘,再走一段距離又?jǐn)嚅_了連接重新切換到4G模式啦辐。針對這種情況,我們在測試過程中也要考慮到不同的網(wǎng)絡(luò)切換是否會引發(fā)一些問題蜈项。
? 手環(huán)app和其他常規(guī)的app存在很大的不同芹关。像淘寶微信等app,其中嵌入了大量的H5頁面紧卒,和服務(wù)端交互很頻繁侥衬,而手表的app在網(wǎng)絡(luò)交互這一塊,并不是那么頻繁,只有在幾個模塊上需要和服務(wù)端進行交互轴总。因此直颅,結(jié)合以上在網(wǎng)絡(luò)測試中的測試方向,針對公司app的情況怀樟,可以設(shè)計出app的網(wǎng)絡(luò)測試方案的測試點功偿。
1、網(wǎng)絡(luò)測試中漂佩,首先要考慮無網(wǎng)絡(luò)的情況脖含。
- app各個功能在無網(wǎng)絡(luò)情況下是否可用
- app各個頁面之間切換是否正常
- 發(fā)送網(wǎng)絡(luò)請求時是否會導(dǎo)致閃退罪塔、卡死等異常情況
- app各個頁面是否顯示完整美觀投蝉,未刷新的頁面是否做了相應(yīng)的提示和處理
- 在無網(wǎng)絡(luò)情況下數(shù)據(jù)是否會丟失
- 無網(wǎng)絡(luò)提示信息是否友好
2、然后應(yīng)該考慮弱網(wǎng)情景
- 弱網(wǎng)情況下app是否針對請求做了超時處理
- 網(wǎng)絡(luò)延遲的情況下征堪,操作app進行數(shù)據(jù)同步瘩缆、OTA升級是否會發(fā)生Crash、ANR等嚴(yán)重錯誤
- 弱網(wǎng)情況下佃蚜,app請求回調(diào)未完成時庸娱,執(zhí)行其他動作以及交互時,是否會出現(xiàn)app閃退等異常谐算。
- 弱網(wǎng)情況下熟尉,原始數(shù)據(jù)是否出現(xiàn)丟失的情況
- 弱網(wǎng)環(huán)境下,是否會出現(xiàn)請求堆積的情況
- 弱網(wǎng)環(huán)境下洲脂,app各個頁面是否顯示完整
- 系統(tǒng)超時斤儿,提示信息是否清晰明確
- 弱網(wǎng)情況下app的響應(yīng)時間是否在一個合理的時間范圍內(nèi)
3、最后考慮網(wǎng)絡(luò)狀態(tài)之間的轉(zhuǎn)變
- 斷開網(wǎng)絡(luò)連接以后恐锦,操作app各個功能是否正常
- 同步數(shù)據(jù)過程中往果,斷開網(wǎng)絡(luò)連接,app是否出現(xiàn)異常情況
- 傳輸數(shù)據(jù)過程中一铅,網(wǎng)絡(luò)由wifi切換到gprs陕贮,app是否出現(xiàn)異常情況
- 弱網(wǎng)環(huán)境下發(fā)送的請求是否在恢復(fù)網(wǎng)絡(luò)以后出現(xiàn)重復(fù)提交的情況
? 以上的測試類型里面,弱網(wǎng)測試是值得關(guān)注的重點潘飘。
很多時候肮之,app在正常網(wǎng)絡(luò)環(huán)境中運行良好,但是在弱網(wǎng)情景下則頻繁出問題卜录。
弱網(wǎng)又稱為網(wǎng)絡(luò)環(huán)境不良戈擒、網(wǎng)絡(luò)傳輸延遲,我們俗稱網(wǎng)絡(luò)卡的現(xiàn)象暴凑。
? 通常我們在咖啡廳或者車站的時候峦甩,連接公共wifi都有一種體會:網(wǎng)頁打不開、微信無法發(fā)送、qq消息延遲等凯傲,這些現(xiàn)象大多是網(wǎng)絡(luò)環(huán)境不良造成的犬辰。
? 當(dāng)我們使用公司手環(huán)app時,下拉同步一次數(shù)據(jù)冰单,app有時會在同步界面停頓超過10秒以上幌缝,如果app在同步數(shù)據(jù)時,未做超時處理機制的話诫欠,很可能會一直卡在數(shù)據(jù)同步界面涵卵,給用戶造成不良的使用體驗。
弱網(wǎng)測試就是通過各種工具和手段來模擬網(wǎng)絡(luò)延遲,來驗證軟件產(chǎn)品在弱網(wǎng)環(huán)境下的工作情況是否符合產(chǎn)品預(yù)期定義荒叼。
搭建測試環(huán)境
如果要做弱網(wǎng)測試轿偎,那么首先必須先搭建一個弱網(wǎng)的環(huán)境。
搭建弱網(wǎng)環(huán)境有幾種方法:
- 采用天然的弱網(wǎng)場所被廓。
- 購買網(wǎng)絡(luò)損傷儀等硬件設(shè)備坏晦。
- 使用軟件模擬產(chǎn)生弱網(wǎng)環(huán)境。
? 天然的弱網(wǎng)環(huán)境有電梯
嫁乘、GPRS盲點
昆婿、可控隔離箱
等,這些環(huán)境不太適合我們?nèi)粘5臏y試工作蜓斧,購買網(wǎng)絡(luò)損傷儀價格又比較貴仓蛆,還有另一種方式就是通過各種工具模擬來模擬弱網(wǎng)環(huán)境。其中比較簡單的方法是使用筆記本電腦創(chuàng)建一個假熱點挎春,但是不是每個人都隨身帶著一個筆記本電腦看疙,所以我們可以采用軟件模擬的方式來搭建弱網(wǎng)環(huán)境。
可以模擬弱網(wǎng)環(huán)境的軟件比較多搂蜓,在window環(huán)境下使用比較多是使用抓包工具Charles和Fiddle或者微軟的工具Network Emulator for Windows Toolkit以及Facebook的開源工具ATC狼荞。
由于ATC配置較為麻煩且需要linux環(huán)境,因此本文只介紹如何用Fiddler和NEWT來搭建弱網(wǎng)環(huán)境帮碰。
Fiddle模擬
? 首先我們可以采用Fiddle這個工具簡單模擬弱網(wǎng)環(huán)境相味。Fiddler模擬弱網(wǎng)環(huán)境的原理是通過設(shè)置代理來延遲發(fā)送或接收數(shù)據(jù)的時間來模擬限速。
? 首先需要注意的是殉挽,模擬弱網(wǎng)環(huán)境手機連接的wifi的ip地址必須和我們PC機的ip地址或者網(wǎng)關(guān)處于同一個網(wǎng)段丰涉。
手機wifi的ip地址是:
192.168.2.1
,那么我們的PC的ip地址也必須在192.168.2.xxx
斯碌,否者Fiddle無法通過代理的方式來監(jiān)聽到通過這個網(wǎng)關(guān)的請求一死。
如何才能保證我們的手機IP地址和PC的IP地址在同一個網(wǎng)段?
- 方法一傻唾、手機和電腦同時連接同一臺wifi投慈,在代理設(shè)置里面使用DHCP的方式自動獲取ip地址承耿,這樣二者都是處于同一個網(wǎng)段內(nèi)。
- 方法二伪煤、使用擁有無限網(wǎng)卡的PC機或者筆記本加袋,創(chuàng)建一個wifi熱點,通過手機連接熱點抱既,也可以在同一個網(wǎng)段內(nèi)职烧。創(chuàng)建Wifi熱點的步驟這里就不再詳述了。
因此我們最好在測試之前準(zhǔn)備好一塊無線網(wǎng)卡或者隨身Wifi防泵。
操作步驟
以上準(zhǔn)備工作完成以后蚀之,打開Fiddle工具。
點擊菜單欄內(nèi)的Rules
—Custom Rules
捷泞,或者開發(fā)Fiddle后直接按Ctrl + R
可以直接打開一份JS文本文件足删。在文本文件內(nèi)查找類似下面的內(nèi)容。
if (m_SimulateModem) {
// Delay sends by 300ms per KB uploaded.
oSession["request-trickle-delay"] = "300";
// Delay receives by 150ms per KB downloaded.
oSession["response-trickle-delay"] = "150";
}
oSession["request-trickle-delay"] = "300" #代表上行速率肚邢,發(fā)送1KB需要300ms
oSession["response-trickle-delay"] = "150" #代表下行速率壹堰,接受1KB需要150ms
Fiddle默認(rèn)的上傳/下載1KB的數(shù)據(jù)需要300ms和150ms,要達到模擬弱網(wǎng)的情況骡湖,只需要把后面的數(shù)值改大即可。
Fiddler的算法: 1000/下載速度 = 需要等待的時間(毫秒)
? 我們設(shè)置1000ms峻厚,那么可以大致計算出網(wǎng)速為1Kbps响蕴。這里我們分別設(shè)置上行和下行參數(shù)為1000和800。
? 設(shè)置好參數(shù)以后保存退出custom.js
文件惠桃,這時不要忘記查看菜單內(nèi)Rules
—Performance
內(nèi)Simulate Modem Speeds
選項有沒有被勾選浦夷,一般設(shè)置完custom.js
文件以后,此選項被默認(rèn)為未勾選狀態(tài)辜王。
? 勾選Simulate Modem Speeds
選項劈狐,你會發(fā)現(xiàn),打開一個網(wǎng)頁需要的時間已經(jīng)慢了許多呐馆。
以上設(shè)置完畢以后肥缔,打開Fiddle菜單欄Tools
—Telerik Fiddle Options
默認(rèn)設(shè)置監(jiān)聽端口為8888
,勾選Allow remote computers to connect
汹来。
在手機wifi內(nèi)修改網(wǎng)絡(luò)(ios手機和andriod手機修改方式類似)续膳,選擇高級選項,在代理服務(wù)器一欄填寫你的電腦主機的ip地址收班,下方端口內(nèi)填寫Fiddle里設(shè)置的8888
.
? 這時候坟岔,你在手機上執(zhí)行的網(wǎng)絡(luò)請求操作在Fiddle界面已經(jīng)顯示出來了,手機發(fā)出的網(wǎng)絡(luò)請求和接收的返回數(shù)據(jù)都已經(jīng)處于延遲狀態(tài)摔桦。
NEWT模擬弱網(wǎng)
雖然Fiddle可以通過模擬延遲的方式達到弱網(wǎng)環(huán)境社付,但是真實的網(wǎng)絡(luò)環(huán)境是很復(fù)雜的,F(xiàn)iddle無法模擬網(wǎng)絡(luò)錯誤、丟包鸥咖、數(shù)據(jù)包亂序纪隙、網(wǎng)絡(luò)斷斷續(xù)續(xù)的情況。
這時候就需要使用另一個更強的工具Network Emulator for Windows Toolkit
準(zhǔn)備
? 使用這個工具之前扛或,我們需要提前準(zhǔn)備有AP功能的無線網(wǎng)卡绵咱,可以使用360wifi或者小米wifi等產(chǎn)品均可。連接無線網(wǎng)卡以后在電腦上創(chuàng)建一個熱點Testwifi熙兔,并啟動熱點悲伶。手機連接Testwifi這個熱點以后,我們開始配置NEWT
住涉。
安裝好NEWT
以后麸锉,打開界面是這樣的:
首先我們創(chuàng)建一個過濾器:點擊菜單欄configuration
選擇new filter
,或者點擊上圖工具欄內(nèi)的沙漏圖標(biāo)舆声。
選擇為所有網(wǎng)絡(luò)設(shè)置過濾All Network
花沉,也可以選擇下方的IPv4
為某個特定ip設(shè)置過濾器。這里勾選ALL Network
媳握,其他選擇默認(rèn)碱屁。
點擊Add按鈕后,下方表格內(nèi)會出現(xiàn)一個新建的過濾器蛾找,點擊close
完成設(shè)置娩脾。
下一步設(shè)置一個新的連接,點擊configuration——New Link打毛,新建一個連接柿赊。
上圖中新建的連接未配置時顯示為灰色,在連接上右鍵點擊幻枉,選擇Set Upstream碰声,彈出如下窗口。
上圖菜單欄依次為Loss
熬甫、Error
胰挑、Latency
、BW&Queue
罗珍、bg Traffic
洽腺、Reorder
、Disconnected
覆旱,依次代表可以設(shè)置丟包蘸朋、網(wǎng)絡(luò)錯誤邑茄、延遲胰丁、帶寬和隊列蛉签、背景傳輸、亂序數(shù)據(jù)亡脑、模擬斷續(xù)網(wǎng)絡(luò)次哈。
這里最常用的就是前三個莹规。依次可以設(shè)置丟包请梢、錯誤、延遲的網(wǎng)絡(luò)狀態(tài)辐马。由于選項比較多拷橘,下面只介紹最常用的功能。
丟包設(shè)置
No Loss 不丟包
Periodic Loss 設(shè)置每多少個包丟失一個packets
Random Loss 設(shè)置隨機丟包比率
當(dāng)數(shù)據(jù)包經(jīng)過網(wǎng)絡(luò)傳輸時喜爷,包中的數(shù)據(jù)可能發(fā)生錯誤冗疮。
Error設(shè)置
No Error:不模擬傳輸錯誤。
Random error:根據(jù)比率模擬隨機發(fā)生傳輸錯誤檩帐。
延遲發(fā)送和接受數(shù)據(jù)的時間
No Latency 不模擬延遲狀態(tài)
Fixed 延遲固定時間(單位:毫秒)
Uniform 按統(tǒng)一分布术幔,延遲一定量的時間(時間控制在最大最小值之間)
Normal 按正態(tài)分布.延遲一定量的時間(average:平均值,Devation:偏差)
Bandwith 設(shè)置網(wǎng)絡(luò)帶寬
Queue 設(shè)置隊列湃密,下方為丟包規(guī)則诅挑,分為丟包頭、丟包尾泛源、隨機丟包等
? 其他選項使用的不多拔妥,不在這里詳述。以上四個選項設(shè)置完成以后俩由,點擊確定按鈕完成上傳的設(shè)置毒嫡。以同樣的步驟,在Local Application
下方的連接上右鍵點擊幻梯,選擇Set Downstream
,設(shè)置下行連接的狀態(tài)努释。
設(shè)置完成以后如下圖
? 點擊菜單欄Action-Start
碘梢,或者點擊三角符號![](file:///C:\Users\XUEDON~1\AppData\Local\Temp\ksohtml\wps97AC.tmp.jpg),這時我們設(shè)置好的過濾器和連接已經(jīng)啟動伐蒂,可以在cmd
命令行ping
一下百度的地址查看一下效果煞躬。
? 如圖顯示出現(xiàn)請求超時、延遲發(fā)送逸邦、丟包等現(xiàn)象恩沛,說明我們配置已經(jīng)生效了。
? 最后缕减,按照上文提到的方法雷客,連接wifi熱點以后,就可以按照之前規(guī)劃好的網(wǎng)絡(luò)測試方案和測試點進行測試了桥狡。