专项-弱网络测试
-
弱網(wǎng)絡(luò)
簡(jiǎn)單理解:網(wǎng)絡(luò)不好;網(wǎng)絡(luò)環(huán)境復(fù)雜、使用場(chǎng)景多變;異常邏輯檢查。
-
弱網(wǎng)絡(luò)測(cè)什么
測(cè)試標(biāo)準(zhǔn)
客戶端的核心場(chǎng)景必須有斷線重連機(jī)制,并在有網(wǎng)絡(luò)抖動(dòng)、延時(shí)、丟包的網(wǎng)絡(luò)場(chǎng)景下,客戶端需達(dá)到以下要求:
一. 不能出現(xiàn)以下現(xiàn)象:
1、游戲中不能出現(xiàn)收支不等、客戶端卡死/崩潰等異常情況;
2、游戲核心功能(如登錄、單局、支付等)不能有導(dǎo)致游戲無(wú)法正常進(jìn)行的UI、交互問(wèn)題;
3、不能有損害玩家利益或可被玩家額外獲利的問(wèn)題;
4、需要有合理的斷線重連機(jī)制,避免每次重連都返回到登錄界面。
二. 需要對(duì)延時(shí)的有合理的提示
參數(shù):
特征參數(shù)
2G、3G、4G、5G
異常參數(shù)
? 上行100%丟包
? 下行100%丟包
測(cè)試內(nèi)容:
體驗(yàn):合理提示、主流網(wǎng)絡(luò)場(chǎng)景下不會(huì)影響正常使用(持續(xù)表現(xiàn))
邏輯:健壯、安全(斷網(wǎng)過(guò)程、斷網(wǎng)重連后狀態(tài))
游戲交互的基本原理:
? 游戲基本都是基于TCP/UDP協(xié)議(傳輸層),
簡(jiǎn)單理解:
TCP 長(zhǎng)連接,游戲登錄后一直保持連接,
S 服務(wù)端:一直監(jiān)聽(tīng)請(qǐng)求/響應(yīng)請(qǐng)求
C 客戶端:向服務(wù)器發(fā)送請(qǐng)求/接收請(qǐng)求
游戲?qū)嵸|(zhì):客戶端只是軀殼,隱藏在各個(gè)界面元素身上的各種消息邏輯才是觸發(fā)界面表現(xiàn)的根本原因。C、S通過(guò)各種消息實(shí)現(xiàn)狀態(tài)轉(zhuǎn)換,觸發(fā)界面表現(xiàn)的變化。
舉例:
購(gòu)買(mǎi)道具:你點(diǎn)了購(gòu)買(mǎi)按鈕,客戶端向服務(wù)器發(fā)了購(gòu)買(mǎi)消息(金幣數(shù)、賬號(hào)信息等),服務(wù)端收到后判斷(錢(qián)夠不夠,合法性)后回復(fù)響應(yīng)消息,客戶端收到消息認(rèn)定購(gòu)買(mǎi)成功或者失敗(提示成功扣錢(qián),提示失敗,xxx)
異常情況:(比如:C發(fā)了購(gòu)買(mǎi)消息,上行丟包超時(shí),不會(huì)發(fā)出去購(gòu)買(mǎi)消息, 那么客戶端和服務(wù)端狀態(tài)都不會(huì)刷新, 但是如果下行丟包超時(shí),S狀態(tài)已經(jīng)變化,C的狀態(tài)如果不刷新,會(huì)出現(xiàn)按鈕操作無(wú)響應(yīng)或者其他異常)
弱網(wǎng)測(cè)試是指弱網(wǎng)絡(luò)場(chǎng)景下測(cè)試游戲表現(xiàn),實(shí)質(zhì)上是借助弱網(wǎng)絡(luò)的丟包、亂序等發(fā)現(xiàn)游戲設(shè)計(jì)的邏輯異常,其中核心是上、下行丟包及觸發(fā)重連機(jī)制后前后端邏輯一致性。
弱網(wǎng)絡(luò)常見(jiàn)問(wèn)題:
- 資源、數(shù)據(jù)未加載
- 操作無(wú)響應(yīng)
- 不同步
- 卡流程
測(cè)試重點(diǎn)
-
游戲流程(例如:啟動(dòng)、登錄、進(jìn)入游戲、準(zhǔn)備/選人、跳流程階段、游戲結(jié)算等)
-
支付(例如:充值,iOS特別要注意下拉起較慢的情況)
-
購(gòu)買(mǎi)、領(lǐng)獎(jiǎng)等貨幣相關(guān)(例如:購(gòu)買(mǎi)鉆石、購(gòu)買(mǎi)道具、游戲復(fù)活等;每日獎(jiǎng)勵(lì)、任務(wù)獎(jiǎng)勵(lì)、抽獎(jiǎng)等)
-
狀態(tài)相關(guān)(例如:跳轉(zhuǎn)、刷新界面、刷新按鈕、使用技能等)
-
斷線重連機(jī)制(例如:斷網(wǎng)提示、自動(dòng)重連、失敗提示等)
-
網(wǎng)絡(luò)敏感的交互功能(例如:實(shí)時(shí)對(duì)戰(zhàn),多人一定要考慮相互影響,注意同步方案-幀同步/狀態(tài)同步等)
-
單位時(shí)間內(nèi)重復(fù)操作(例如:快速重復(fù)操作,一般情況下會(huì)做點(diǎn)擊限制)
上下行丟包超時(shí)重連、切換網(wǎng)絡(luò)、無(wú)網(wǎng)絡(luò)等場(chǎng)景下關(guān)注以上內(nèi)容
誤區(qū)
-
弱網(wǎng)絡(luò) ≠ 異常中斷
異常中斷 會(huì)觸發(fā) 斷線重連(物理中斷、非物理中斷)
斷線重連分2種,第1種是從登陸(冷啟動(dòng))完成重連(殺進(jìn)程),第2種是過(guò)程中(熱啟動(dòng))重連(超時(shí)重連、斷wifi快速重連)
熱啟動(dòng)/冷啟動(dòng),進(jìn)程在/不在,是否需要重新加載。
弱網(wǎng)絡(luò)上、下行丟包超時(shí)重連屬于非物理中斷中的斷線重連,
常規(guī)測(cè)試中,物理性的異常中斷(殺進(jìn)程、斷wifi、電話短信)是需要測(cè)試的。
-
上、下行丟包 ≠ 斷網(wǎng)(上、下行100%丟包)
斷網(wǎng)好比把路堵了;上、下行丟包好比單向通行。
-
專業(yè)術(shù)語(yǔ)
-
丟包
TCP/IP協(xié)議通信傳輸中的數(shù)據(jù)單位,一般也稱“數(shù)據(jù)包”,它包含發(fā)送者和接收者的地址信息。這些包然后沿著不同的路徑在一個(gè)或多個(gè)網(wǎng)絡(luò)中傳輸,并且在目的地重新組合。
-
延時(shí)
-
帶寬
-
誤碼
編碼、解碼、轉(zhuǎn)碼
-
亂序
不同消息包發(fā)送先后不一,傳輸路徑不同,理論上是先發(fā)先至,但極低概率會(huì)后發(fā)先至
-
上、下行
上行: C—S(客戶端到服務(wù)器)
下行: S—C(服務(wù)器到客戶端)
-
-
工具及原理
工具
-
QNET
-
Fiddler 、Charles、WiFi管家等等
模擬弱網(wǎng)絡(luò)的原理
-
WIFI-設(shè)備之間(中間加代理)
-
WIFI(出口做限制)
QNET是在連接的網(wǎng)絡(luò)和設(shè)備內(nèi)的應(yīng)用之間建立了VPN(=代理),通過(guò)控制相應(yīng)參數(shù),以控制對(duì)應(yīng)用上、下行消息的網(wǎng)絡(luò)狀態(tài)。
C — S (消息直傳,只受所連接的網(wǎng)絡(luò)條件影響)
C — 代理 —S(消息均會(huì)經(jīng)過(guò)代理進(jìn)行轉(zhuǎn)發(fā),代理控制 丟包、延遲、帶寬)
-
怎么開(kāi)展弱網(wǎng)絡(luò)測(cè)試
工具(QNET)下載安裝
https://wetest.qq.com/product/qnet
工具使用演示(略)
略
測(cè)試過(guò)程
- 了解及理解游戲,從前、后端技術(shù)棧、架構(gòu)上,游戲類型同類參考上,特別是要搞清楚斷線重連機(jī)制,初步分析風(fēng)險(xiǎn)點(diǎn)。
- 寫(xiě)用例,參考測(cè)試重點(diǎn),參考弱網(wǎng)絡(luò)用例模板,
- 開(kāi)始測(cè)試,在各條用例上完成以下幾步操作
- 編寫(xiě)報(bào)告
- 總結(jié)經(jīng)驗(yàn)、歸檔
用例
2部分,1部分是測(cè)試異常網(wǎng)絡(luò)(上、下行丟包、切換網(wǎng)絡(luò)),1部分測(cè)試特征網(wǎng)絡(luò)(2、3、4、5G等),如:
異常網(wǎng)絡(luò)(分上行、下行2部分):
超時(shí)處理(一直觀察從弱網(wǎng)參數(shù)生效開(kāi)始的游戲表現(xiàn),主要是驗(yàn)證斷線重連邏輯)
再次請(qǐng)求(重連后再次進(jìn)行操作,比如:弱網(wǎng)參數(shù)下點(diǎn)擊領(lǐng)獎(jiǎng)后,重連完成,再次點(diǎn)擊領(lǐng)獎(jiǎng)的表現(xiàn))
多次請(qǐng)求(弱網(wǎng)參數(shù)下多次進(jìn)行操作,比如:弱網(wǎng)參數(shù)下多次點(diǎn)擊領(lǐng)獎(jiǎng),如做限制則無(wú)法點(diǎn)擊)
切換網(wǎng)絡(luò)(切換不同網(wǎng)絡(luò),一般情況下WIFI/4G)
分別在以上操作下驗(yàn)證是否符合測(cè)試標(biāo)準(zhǔn),如:
| 1.不會(huì)無(wú)限重試 |
| 2.有合理提示,引導(dǎo)玩家回到登錄前界面 |
| 3.網(wǎng)絡(luò)恢復(fù)后可以正常登錄/重回 |
| 4.登錄/重回轉(zhuǎn)菊花期間網(wǎng)絡(luò)恢復(fù),無(wú)異常 |
| 5.多次請(qǐng)求后網(wǎng)絡(luò)恢復(fù),可以正常登錄 |
特征網(wǎng)絡(luò)(2G/3G/4G等)
游戲體驗(yàn)(流暢、一般、難以忍受、無(wú)法游戲)
| 流暢:操作體驗(yàn)流暢,沒(méi)有響應(yīng)失敗,反復(fù)重連的現(xiàn)象 |
| 一般:操作體驗(yàn)一般,偶爾有響應(yīng)失敗和響應(yīng)時(shí)間長(zhǎng)的現(xiàn)象 |
| 難以忍受:操作體驗(yàn)極差,經(jīng)常性連接失敗,反復(fù)重連 |
| 無(wú)法游戲:無(wú)法正常游戲,經(jīng)常性掉線 |
測(cè)試
進(jìn)入測(cè)試場(chǎng)景后,開(kāi)啟當(dāng)前需測(cè)試網(wǎng)絡(luò)參數(shù),持續(xù)觀察游戲表現(xiàn)或進(jìn)行相關(guān)操作。
比如:購(gòu)買(mǎi)物品測(cè)試過(guò)程,
開(kāi)啟上行丟包超時(shí),開(kāi)啟后點(diǎn)擊購(gòu)買(mǎi),此時(shí)會(huì)出現(xiàn)菊花等待響應(yīng)狀態(tài),觀察界面表現(xiàn),正常情況下一定時(shí)間會(huì)有網(wǎng)絡(luò)斷開(kāi)提示,提示后會(huì)觸發(fā)自動(dòng)重連,重連n次失敗,會(huì)提示框回到登錄。
恢復(fù)正常網(wǎng)絡(luò),再次點(diǎn)擊購(gòu)買(mǎi)
開(kāi)啟上行丟包超時(shí),連續(xù)點(diǎn)擊購(gòu)買(mǎi)
選中4G,切換3G,馬上點(diǎn)擊購(gòu)買(mǎi),切換4G,再次點(diǎn)擊購(gòu)買(mǎi)
分別在2G/3G/4G網(wǎng)絡(luò)參數(shù)下,購(gòu)買(mǎi)物品,觀察體驗(yàn)
報(bào)告
報(bào)告包含內(nèi)容(根據(jù)情況加入解決建議):
測(cè)試結(jié)論(問(wèn)題列表)、項(xiàng)目概述(測(cè)試標(biāo)準(zhǔn)、測(cè)試參數(shù)、測(cè)試場(chǎng)景)
總結(jié)、歸檔
略
分享總結(jié)
分享后需要理解內(nèi)容:
- 什么是弱網(wǎng)絡(luò)
- 弱網(wǎng)絡(luò)與斷線重連的關(guān)系
- 弱網(wǎng)絡(luò)測(cè)試方法
- 弱網(wǎng)絡(luò)測(cè)試重點(diǎn)
- 如何編寫(xiě)弱網(wǎng)絡(luò)測(cè)試報(bào)告
擴(kuò)展學(xué)習(xí)了解內(nèi)容:
- OSI七層網(wǎng)絡(luò)模型
- TCP\UDP協(xié)議,Protocol Buffer, socket
- 冷啟動(dòng)、熱啟動(dòng)
- 計(jì)算機(jī)默認(rèn)初始時(shí)間1970-1-1
后續(xù)進(jìn)階
弱網(wǎng)絡(luò)測(cè)試?yán)斫庠砗?#xff0c;擴(kuò)展到 消息亂序和改包后的處理已經(jīng)涉及一定安全測(cè)試范疇,后續(xù)可結(jié)合服務(wù)器壓測(cè),實(shí)現(xiàn)脫離客戶端對(duì)服務(wù)端測(cè)試,結(jié)合起來(lái)可進(jìn)行性能及安全相關(guān)的進(jìn)一步測(cè)試。
弱網(wǎng)絡(luò)異常部分詳解
(上、下行100%丟包超時(shí) 分別進(jìn)行如下測(cè)試,即測(cè)試內(nèi)容*2)
測(cè)試過(guò)程
超時(shí)處理、恢復(fù)網(wǎng)絡(luò)再次請(qǐng)求、多次請(qǐng)求后恢復(fù)網(wǎng)絡(luò)
- 超時(shí)處理
超時(shí)處理是指驗(yàn)證游戲從斷網(wǎng)開(kāi)始到觸發(fā)斷線重連到恢復(fù)的整個(gè)過(guò)程,一般情況表現(xiàn)為:一定時(shí)間后提示斷網(wǎng)(圖標(biāo)或者tips),后進(jìn)入自動(dòng)重連狀態(tài)(后臺(tái)重連幾次,前臺(tái)無(wú)明顯表現(xiàn)),超出設(shè)定重連次數(shù)還失敗則彈出提示框(回到登錄頁(yè)面或檢查網(wǎng)絡(luò))
測(cè)試點(diǎn):檢查各功能是否表現(xiàn)一致
風(fēng)險(xiǎn)點(diǎn):不同的功能不同的人做,特別是非戰(zhàn)斗和戰(zhàn)斗功能,戰(zhàn)斗有可能有特殊重連處理,會(huì)互相影響,導(dǎo)致表現(xiàn)不一致或其他問(wèn)題。(籃球出現(xiàn)過(guò):戰(zhàn)斗中沒(méi)有斷網(wǎng)提示,重連邏輯互相影響)
- 恢復(fù)網(wǎng)絡(luò)再次請(qǐng)求
斷網(wǎng)過(guò)程理解:一般情況下從斷網(wǎng)開(kāi)始到重連有3個(gè)階段,1是還在等待中(還在判定是否超時(shí)觸發(fā)斷線重連的閾值時(shí)間內(nèi)),2是斷線重連中(超出判定閾值),3是已經(jīng)斷線重連后
測(cè)試點(diǎn):
恢復(fù)再次請(qǐng)求在不同的狀態(tài)下進(jìn)行表現(xiàn)不一樣,具體如下:
上行丟包:等待中恢復(fù),操作會(huì)生效(√)
上行丟包:斷線重連中恢復(fù),操作不生效(×,因?yàn)橄](méi)有發(fā)出去)
上行丟包:斷線重連后,操作生效(√)
下行丟包:等待中恢復(fù),操作會(huì)生效(√)
下行丟包:斷線重連中恢復(fù),操作會(huì)生效(√)
下行丟包:斷線重連后,操作會(huì)生效(√)
風(fēng)險(xiǎn)點(diǎn):上、下行丟包超時(shí)異常時(shí),如果狀態(tài)不一致,會(huì)導(dǎo)致前后端狀態(tài)不一致,再次進(jìn)行操作無(wú)法操作或數(shù)據(jù)異常。上行丟包出異常大概率是狀態(tài)存在客戶端,下行丟包出異常大概率是客戶端沒(méi)有刷新?tīng)顟B(tài)。
(如:新手引導(dǎo),下行丟包點(diǎn)擊下一階段,服務(wù)端狀態(tài)已經(jīng)進(jìn)入下一階段,客戶端無(wú)法刷新?tīng)顟B(tài),則會(huì)卡死在當(dāng)前界面;
領(lǐng)獎(jiǎng),下行丟包點(diǎn)擊領(lǐng)獎(jiǎng),服務(wù)端狀態(tài)已經(jīng)領(lǐng)取,客戶端如無(wú)法刷新?tīng)顟B(tài),則會(huì)顯示未領(lǐng)獎(jiǎng)但是無(wú)法領(lǐng)取;)
- 多次請(qǐng)求后恢復(fù)網(wǎng)絡(luò)
是指重復(fù)發(fā)送請(qǐng)求,主要是為了驗(yàn)證服務(wù)端邏輯。
原理:多次重復(fù)請(qǐng)求,發(fā)送同樣的請(qǐng)求,檢查客戶端、服務(wù)端是否有去重處理,服務(wù)端邏輯是否正確。
測(cè)試點(diǎn):
舉例:
斷網(wǎng)了點(diǎn)擊沒(méi)反應(yīng),可能點(diǎn)了10次購(gòu)買(mǎi)按鈕(意味著發(fā)了10次請(qǐng)求),恢復(fù)網(wǎng)絡(luò)后,查看結(jié)果。
測(cè)試點(diǎn):第1是否買(mǎi)了10次,第2是否扣錢(qián)正確。(玩家期望:只買(mǎi)了1次,扣了1次的錢(qián)正確)
異常情況:響應(yīng)了10次,買(mǎi)了10次(沒(méi)有丟棄重復(fù)請(qǐng)求),扣錢(qián)只扣了1次(為什么扣1次,服務(wù)端判定錯(cuò)誤)。
分析:當(dāng)服務(wù)器使用錯(cuò)誤緩存數(shù)據(jù)或者客戶端數(shù)據(jù)做驗(yàn)證時(shí),下行丟包超時(shí)情況下,客戶端請(qǐng)求消息一直是一樣的(如:10000塊錢(qián)買(mǎi)個(gè)1000的東西),服務(wù)端使用前端數(shù)據(jù)判定,則10次請(qǐng)求每次都是10000塊錢(qián)買(mǎi)1000的東西,最后買(mǎi)了10次剩余9000塊錢(qián)。
正常情況:
1符合邏輯的表現(xiàn):響應(yīng)10次,扣了10次錢(qián),買(mǎi)了10個(gè)東西(第1次買(mǎi)完剩9000,第2次買(mǎi)完剩8000,10次買(mǎi)完剩0元。。。)
2符合體驗(yàn)的表現(xiàn):正常處理應(yīng)該只響應(yīng)1次(沒(méi)反應(yīng)習(xí)慣性一直點(diǎn),避免玩家誤操作扣錢(qián)),服務(wù)端判定扣除貨幣且數(shù)據(jù)正確(買(mǎi)1個(gè)東西,剩余9000)。
流程圖:
總結(jié)
- 上一篇: foobar2000 用了那么久 才学会
- 下一篇: 无线传感器网络