從測試的角度,應(yīng)該建立實(shí)時(shí)監(jiān)控的web portal条摸。其實(shí)測試的目的除了保證產(chǎn)品發(fā)布的質(zhì)量悦污。更重要的是為優(yōu)化提供依據(jù)铸屉,所以report最后一部分都是issue list 和optmize advice钉蒲,當(dāng)然測試最難的部分也是優(yōu)化
移動網(wǎng)絡(luò)和傳統(tǒng)網(wǎng)絡(luò)另一個很大的區(qū)別是Connection Migration問題。定義一個Socket連接是四元組(客戶端IP彻坛,客戶端Port顷啼,服務(wù)端IP踏枣,服務(wù)端Port),當(dāng)用戶的網(wǎng)絡(luò)在WIFI/4G/3G/2G類型中切換時(shí)钙蒙,其客戶端IP會發(fā)生變化茵瀑,如果此時(shí)正在進(jìn)行網(wǎng)絡(luò)服務(wù)通訊,那么Socket連接自身已經(jīng)失效躬厌,最終也會導(dǎo)致網(wǎng)絡(luò)服務(wù)失敗马昨。
常見的網(wǎng)絡(luò)性能問題有如下幾種:
問題一:DNS問題
DNS出問題的概率其實(shí)比大家感覺的要大,首先是DNS被劫持或者失效扛施,2015年初業(yè)內(nèi)比較知名的就有Apple內(nèi)部DNS問題導(dǎo)致App Store鸿捧、iTunes Connect賬戶無法登錄;京東因?yàn)镃DN域名付費(fèi)問題導(dǎo)致服務(wù)停擺疙渣。攜程在去年11月也遇到過DNS問題匙奴,主域名被國外服務(wù)商誤列入黑名單,導(dǎo)致主站和H5等所有站點(diǎn)無法訪問妄荔,但是App客戶端的Native服務(wù)都正常泼菌,原因后面介紹。
另一個常見問題就是DNS解析慢或者失敗啦租,例如國內(nèi)中國運(yùn)營商網(wǎng)絡(luò)的DNS就很慢哗伯,一次DNS查詢的耗時(shí)甚至都能趕上一次連接的耗時(shí),尤其2G網(wǎng)絡(luò)情況下刷钢,DNS解析失敗是很常見的笋颤。因此如果直接使用DNS,對于首次網(wǎng)絡(luò)服務(wù)請求耗時(shí)和整體服務(wù)成功率都有非常大的影響内地。
問題二:TCP連接問題
DNS成功后拿到IP伴澄,便可以發(fā)起TCP連接。HTTP協(xié)議的網(wǎng)絡(luò)層也是TCP連接阱缓,因此TCP連接的成功和耗時(shí)也成為網(wǎng)絡(luò)性能的一個因素非凌。我們發(fā)現(xiàn)常見的問題有TCP端口被封(例如上海長寬對非HTTP常見端口80、8080荆针、443的封鎖)敞嗡,以及TCP連接超時(shí)時(shí)長問題。端口被封航背,直接導(dǎo)致無法連接喉悴;連接超時(shí)時(shí)長過短,在低速網(wǎng)絡(luò)上可能總是無法連接成果玖媚;連接超時(shí)過長箕肃,又有可能導(dǎo)致用戶長時(shí)間等待,用戶體驗(yàn)差今魔。很多時(shí)候盡快失敗重新發(fā)起一次連接會很快勺像,這也是移動網(wǎng)絡(luò)帶寬不穩(wěn)定情況下的一個常見情況障贸。
問題三:Write/Read問題
DNS Lookup和TCP連接成功后,就會開始發(fā)送Request吟宦,服務(wù)端處理后返回Response篮洁,如果是HTTP連接,業(yè)內(nèi)大部分App是使用第三方SDK或者系統(tǒng)提供的API來實(shí)現(xiàn)殃姓,那么只能設(shè)置些緩存策略和超時(shí)時(shí)間袁波。iOS上的NSURLConnection超時(shí)時(shí)間在不同版本上還有不同的定義,很多時(shí)候需要自己設(shè)置Timer來實(shí)現(xiàn)蜗侈;如果是直接使用TCP連接實(shí)現(xiàn)網(wǎng)絡(luò)服務(wù)锋叨,就要自己對讀寫超時(shí)時(shí)間負(fù)責(zé),與網(wǎng)絡(luò)連接超時(shí)時(shí)長參數(shù)類似宛篇,太小了在低速網(wǎng)絡(luò)很容易讀寫失敗娃磺,太大了又可能影響用戶體驗(yàn),因此需要非常小心地處理叫倍。
我們還遇到另一類問題偷卧,某些酒店Wi-Fi對使用非80、8080和443等常見HTTP端口的服務(wù)進(jìn)行了限制吆倦,即使發(fā)送Request是正常的听诸,服務(wù)端能夠正常收到,但是Response卻被酒店網(wǎng)絡(luò)proxy或防火墻攔截蚕泽,客戶端最終會等待讀取超時(shí)晌梨。
問題四:傳輸Payload過大
傳的多就傳的慢,如果沒做過特別優(yōu)化须妻,傳輸Payload可能會比實(shí)際所需要的大很多仔蝌,那么對于整體網(wǎng)絡(luò)服務(wù)耗時(shí)影響非常大。
問題五:復(fù)雜的國內(nèi)外網(wǎng)絡(luò)情況
國內(nèi)運(yùn)營商互聯(lián)和海外訪問國內(nèi)帶寬低傳輸慢的問題也令人難非常頭疼荒吏。
TestBird