生產引流測試

2022-03-30 12:04:21 字數 2927 閱讀 9572

在上篇文章《讓使用者幫你做測試》中我提到了「生產引流測試」的方法,這種方法的本質就是把生產系統發生的一切複製到測試系統上來1.能夠讓系統在真正上線以前就能夠真正經受實踐檢驗。多年來的測試實踐告訴我們,測試永遠是抽樣活動,即使經過很大強度的充分測試,

很多大型系統上線後仍然馬上會產生這樣那樣的問題,有時候這些問題往往是致命的。

2.不會象灰度發布那樣拿部分使用者當小白鼠,引發部分客戶不滿;其實要實現灰度發布在一定程度上會增加系統架構複雜性,不是哪個公司都能玩得轉。

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

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

1.非功能測試(主要是效能測試),看看將生產系統的壓力引到測試系統後,測試系統會不會產生效能問題。這種測試往往非常有效,因為,我們做效能測試也是非常有侷限性的:場景選取不可能跟真實使用者帶來的壓力完全一致;網路、硬體環境也可能不一樣;某些超大型**根本沒辦法模擬那麼大的壓力,只能依靠縮量模型做測試並估算真實的效能。

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

部署乙個agent在onlineserver上。從tcp層擷取資料報,然後生成向testserver的請求資料報(通過換網路傳輸的資料報的包頭),這樣壓力就傳導到了testserver上。testserver的響應資料報被 assistant server截獲,截獲後拆包,刪除包中內容(減小部署在online server端agent的壓力),封包,回覆給online server上的agent(tcp協議要求必須有來有回)。tcpcopy在網易,**,去哪兒等很多公司都得到了非常好的應用,目前國外也有很多使用者開始使用這個工具了,如果大家有興趣可以檢視作者在github上的頁面 或者作者的部落格: 很讚作者王斌!

2.功能測試

對於功能測試,單純的使用tcpcopy就有些不足了。因為功能測試關注業務邏輯,我們一般要對結果內容進行比對,而不是簡單的拋棄。而在網路層進行內容比對代價是非常大的,有時候是不可完成的任務,如非web類產品;另外,不同的技術架構造成了某些內容是無法簡單在網路層複製的,如某些加密通道傳輸的內容、包含了認證資訊的內容、對目標機器資訊有依賴的內容。這樣,我們就需要在應用層想辦法,而不是在網路層。一般我們會在應用層加乙個**將請求和響應進行複製,這個**根據被測系統的技術架構不同而不同,比如web伺服器,可以搞乙個反向**來做這件事兒;銀行、電信用的多的message queue 可以採取pubsub的模式;可以在交易中介軟體、企業匯流排上做一些改造,只要系統設計的不是太難搞,辦法總是有的。

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

實時對比:

在上圖中:

紅色箭頭為生產請求資料。

藍色箭頭為生產響應資料。

綠色箭頭為測試響應資料。

**有2個作用:複製使用者到生產系統的請求,引流到測試系統;複製生產系統的響應傳送給對比器。

對比器的作用:比對同一請求生產系統和測試系統的結果是否一致,將結果生成報表。

比對是實時的。

請求和響應必須附加流水號:這樣做比對的時候才會不那麼費勁(應對非同步的情況),否則

生產系統同測試系統的初始狀態必須一致,不然做比對也會很困難:舉例來說,電商**中某種書的庫存數。

實時比對的好處是:能夠在出現bug的第一秒就發現它。但它也存在問題和侷限性:生產系統與測試系統直接相連可能給生產系統帶來風險,實際上在很多生產安全要求較高的公司,這麼做是不被允許的

延時對比:

與實時比對相比,延時比對模型的變化如下:

**的作用變成了紀錄生產日誌,有時候能夠直接利用系統的日誌模組資料,不用分流,效能壓力減少了很多。

多了乙個儲存模組儲存日誌(有可能復用系統現有日誌模組)

多了乙個對比引擎,它的作用是:從儲存取出成對的請求-響應的資料,將請求資料傳送到測試系統,接收測試系統的響應,與儲存中的響應結果比對,然後生成報表。

引擎可能要做比較複雜的日誌分析工作:請求-響應配對,清洗無效資料,做資料篩選等。

由於做了隔離,基本上杜絕了測試系統汙染生產系統的風險。

延時比對也有很多缺點:有很多技術架構,實時複製比記log再還原要付出的成本小很多;發現缺陷的時間點出現延遲。

對於業務公升級型別的系統,業務流程或者計算邏輯發生了變化,使用生產系統資料進行比對的難度就大大增強了,但還是可以做,模型如下:

這張圖跟上張基本一樣,唯一的不同就是比對引擎變成了「加強型」比對引擎。

加強的地方表現在:對業務不同點進行處理,使得比對工作能夠順利進行。

有一些技術架構下,對不同點進行處理非常困難。例如,web應用,乙個表單多了一項。你有可能要重寫http請求的內容。

小結:是否要利用生產引流測試說到底還是乙個工程型問題。一定要看它的投入產出比

引流教程

問題 答案,獲得的流量也是非常jing準的。jing準流量的重要性這裡不再詳訴。這是一篇非常詳細的教程,按步驟來 一 養號 如今的網際網路已經不是野蠻生長的時代了,引流之前一般都需要養號,不養號就亂引流,是絕大多數小白放棄引流的較大原因。如何養號?完善暱稱 頭像 擅長領域等資料。取名不要敏感,網路營...

如何選擇引流指令碼,引流指令碼哪家強?

在引流指令碼 軟體層出不窮的 時代,很多人都覺得眼花繚亂,不知道 指令碼引流軟體哪 家的好,其實無論是選哪家 的,首先要對比的就是技術跟售後的服務,這是尤為重要的,以前的 加人軟體無論怎麼吹的天花亂墜,其實都沒有關鍵的售後服務,這樣是 最扯蛋的 引流不了多少客源不說,還經常被封號,讓得很多人對現在的...

如何線上推廣引流?實現精準引流

四 引流需要注意的事項 最後的總結 無論哪乙個平台,實操的時候有很多細節肯定是需要自己去摸索,有可能我在這裡說今天的可以這樣發,明天就不能這樣發,畢竟我的經驗始終是我的,你只有通過實操過後,才是你自己的經驗,這個道理應該都懂!新的一年裡,都一起狠狠引流吧,畢竟流量是一切生意的本質。如果你現在缺少客戶...