生產引流測試

“生產引流測試”的方法,這種方法的本質就是 把生產系統(tǒng)發(fā)生的一切復制到測試系統(tǒng)上來。這種測試方法適合有大量用戶的系統(tǒng),如電商網(wǎng)站、電信計費系統(tǒng)、大型控制系統(tǒng)(如機場調度系統(tǒng))等。這么做有兩個好處:

創(chuàng)新互聯(lián)公司2013年至今,先為秦安等服務建站,秦安等地企業(yè),進行企業(yè)商務咨詢服務。為秦安企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。

1.能夠讓系統(tǒng)在真正上線以前就能夠真正經(jīng)受實踐檢驗。多年來的測試實踐告訴我們,測試永遠是抽樣活動,即使經(jīng)過很大強度的 充分測試,很多大型系統(tǒng)上線后仍然馬上會產生這樣那樣的問題,有時候這些問題往往是致命的。

2.不會象灰度發(fā)布那樣拿部分用戶當小白鼠,引發(fā)部分客戶不滿;其實要實現(xiàn)灰度發(fā)布在一定程度上會增加系統(tǒng)架構復雜性,不是哪個公司都能玩得轉。

當然生產引流測試必須滿足一個前提: 那就是已經(jīng)有了生產系統(tǒng),在特性升級或者技術重構的時候使用這招。 ^_^|||

生產引流測試的用法一般有如下幾種:

1.非功能測試(主要是性能測試),看看將生產系統(tǒng)的壓力引到測試系統(tǒng)后,測試系統(tǒng)會不會產生性能問題。這種測試往往非常有效,因為,我們做性能測試也是非常有局限性的:場景選取不可能跟真實用戶帶來的壓力完全一致;網(wǎng)絡、硬件環(huán)境也可能不一樣;某些超大型網(wǎng)站根本沒辦法模擬那么大的壓力,只能依靠縮量模型做測試并估算真實的性能。

非功能測試不太關注業(yè)務邏輯的正確性,因此我們可以從網(wǎng)絡層進行生產引流,這樣效率更高,模型更加簡單。目前有一個非常不錯的工具tcpcopy,非常適合web類產品。它的工作原理可見下圖:

生產引流測試

部署一個agent在onlineserver上。從tcp層截取數(shù)據(jù)包,然后生成向Testserver的請求數(shù)據(jù)包(通過換網(wǎng)絡傳輸?shù)臄?shù)據(jù)包的包頭), 這樣壓力就傳導到了Testserver上。Testserver的響應數(shù)據(jù)包被 Assistant server截獲,截獲后拆包,刪除包中內容(減小部署在Online Server端agent的壓力),封包,回復給Online Server上的agent(TCP協(xié)議要求必須有來有回)。Tcpcopy在網(wǎng)易,淘寶,去哪兒等很多公司都得到了非常好的應用,目前國外也有很多用戶開始使用這個工具了,如果大家有興趣可以查看作者在Github上的頁面 https://github.com/wangbin579/tcpcopy 或者作者的博客: http://my.csdn.net/wangbin579 很贊作者王斌!

2.功能測試

對于功能測試,單純的使用tcpcopy就有些不足了。 因為功能測試關注業(yè)務邏輯,我們一般要對結果內容進行比對,而不是簡單的拋棄。而在網(wǎng)絡層進行內容比對代價是非常大的,有時候是不可完成的任務,如非web類產品;另外,不同的技術架構造成了某些內容是無法簡單在網(wǎng)絡層復制的,如某些加密信道傳輸?shù)膬热?、包含了認證信息的內容、對目標機器信息有依賴的內容。這樣, 我們就需要在應用層想辦法,而不是在網(wǎng)絡層。一般我們會在應用層加一個代理將請求和響應進行復制,這個代理根據(jù)被測系統(tǒng)的技術架構不同而不同,比如web服務器,可以搞一個反向代理來做這件事兒;銀行、電信用的多的Message Queue 可以采取pubsub的模式;可以在交易中間件、企業(yè)總線上做一些改造,只要系統(tǒng)設計的不是太難搞,辦法總是有的。

下面給出一個最簡單的模型:它描述了 技術重構的系統(tǒng)(功能上無變化)進行生產引流測試的思路。

實時對比:

生產引流測試

在上圖中:
紅色箭頭為生產請求數(shù)據(jù)。
藍色箭頭為生產響應數(shù)據(jù)。
綠色箭頭為測試響應數(shù)據(jù)。
代理有2個作用:復制用戶到生產系統(tǒng)的請求,引流到測試系統(tǒng);復制生產系統(tǒng)的響應發(fā)送給對比器。
對比器的作用:比對同一請求生產系統(tǒng)和測試系統(tǒng)的結果是否一致,將結果生成報表。
比對是實時的。
請求和響應必須附加流水號:這樣做比對的時候才會不那么費勁(應對異步的情況),否則
生產系統(tǒng)同測試系統(tǒng)的初始狀態(tài)必須一致,不然做比對也會很困難:舉例來說,電商網(wǎng)站中某種書的庫存數(shù)。
 
實時比對的好處是:能夠在出現(xiàn)bug的第一秒就發(fā)現(xiàn)它。但它也存在問題和局限性:生產系統(tǒng)與測試系統(tǒng)直接相連可能給生產系統(tǒng)帶來風險, 實際上在很多生產安全要求較高的公司,這么做是不被允許的。
 
延時對比:
生產引流測試
與實時比對相比,延時比對模型的變化如下:
代理的作用變成了紀錄生產日志,有時候能夠直接利用系統(tǒng)的日志模塊數(shù)據(jù),不用分流,性能壓力減少了很多。
多了一個存儲模塊存儲日志(有可能復用系統(tǒng)現(xiàn)有日志模塊)
多了一個對比引擎,它的作用是:從存儲取出成對的請求-響應的數(shù)據(jù),將請求數(shù)據(jù)發(fā)送到測試系統(tǒng),接收測試系統(tǒng)的響應,與存儲中的響應結果比對,然后生成報表。
引擎可能要做比較復雜的日志分析工作:請求-響應配對,清洗無效數(shù)據(jù),做數(shù)據(jù)篩選等。
由于做了隔離,基本上杜絕了測試系統(tǒng)污染生產系統(tǒng)的風險。
延時比對也有很多缺點:有很多技術架構,實時復制比記log再還原要付出的成本小很多;發(fā)現(xiàn)缺陷的時間點出現(xiàn)延遲。
 
對于 業(yè)務升級類型的 系統(tǒng),業(yè)務流程或者計算邏輯發(fā)生了變化, 使用生產系統(tǒng)數(shù)據(jù)進行比對的難度就大大增強了,但還是可以做,模型如下:
生產引流測試
這張圖跟上張基本一樣,唯一的不同就是比對引擎變成了“加強型”比對引擎。
加強的地方表現(xiàn)在:對業(yè)務不同點進行處理,使得比對工作能夠順利進行。
有一些技術架構下,對不同點進行處理非常困難。例如,web應用,一個表單多了一項。你有可能要重寫http請求的內容。
 
小結:是否要利用生產引流測試說到底還是一個工程型問題。 一定要看它的投入產出比。

網(wǎng)站名稱:生產引流測試
網(wǎng)頁鏈接:http://muchs.cn/article34/ijcope.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化靜態(tài)網(wǎng)站、響應式網(wǎng)站、電子商務、域名注冊企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站