亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種測試方法、裝置和計算設備的制造方法

文檔序號:10555467閱讀:569來源:國知局
一種測試方法、裝置和計算設備的制造方法
【專利摘要】本發(fā)明公開了一種測試方法,該方法包括:捕獲網(wǎng)絡訪問產(chǎn)生的流量數(shù)據(jù);解析捕獲的流量數(shù)據(jù);從解析后的流量數(shù)據(jù)中提取請求信息,該請求信息包括請求類型和請求地址;根據(jù)待測系統(tǒng)的測試目標,從提取的請求信息中篩選出符合測試目標的測試請求;設置每秒發(fā)送請求數(shù)目;根據(jù)該每秒發(fā)送請求數(shù)目異步發(fā)送測試請求至待測系統(tǒng),以獲取測試結果。本發(fā)明還公開了一種測試裝置和相應的計算設備。
【專利說明】
一種測試方法、裝置和計算設備
技術領域
[0001] 本發(fā)明涉及計算機技術領域,尤其涉及一種測試方法、裝置和計算設備。
【背景技術】
[0002] 壓力測試是通過確定一個系統(tǒng)的瓶頸或者不能接收的性能點,來獲得系統(tǒng)能提供 的最大的服務級別的測試。通常為了保證服務器能夠安全穩(wěn)定運行,服務器在上線之前,都 需要進行壓力測試?,F(xiàn)有地,測試人員通常通過Apache ab,JMeter,LoadRunner等壓力測試 工具來對服務器進行壓力測試時,通過人為構造不同類型的請求,來模擬線上客戶端向服 務器發(fā)送的請求,并使用這些構造的請求對服務器進行壓力測試。但是由于實際情況下,線 上客戶端向服務器發(fā)送的請求的類型復雜多樣,人為構造的請求無法完全覆蓋,無法與線 上的實際情況保持一致,從而導致測試的功能不夠全面。
[0003] 因此,需要一種新型的測試方案。

【發(fā)明內(nèi)容】

[0004] 鑒于此,本發(fā)明提供了一種新的測試方案,以力圖解決或至少緩解上面存在的問 題。
[0005] 根據(jù)本發(fā)明的一個方面,提供了一種測試方法,包括:捕獲網(wǎng)絡訪問產(chǎn)生的流量數(shù) 據(jù);解析捕獲的流量數(shù)據(jù);從解析后的流量數(shù)據(jù)中提取請求信息,請求信息包括請求類型和 請求地址;根據(jù)待測系統(tǒng)的測試目標,從提取的請求信息中篩選出符合測試目標的測試請 求;設置每秒發(fā)送請求數(shù)目;根據(jù)每秒發(fā)送請求數(shù)目異步發(fā)送所述測試請求至待測系統(tǒng),以 獲取測試結果。
[0006] 可選地,在根據(jù)本發(fā)明的測試方法中,從提取的請求信息中篩選出符合測試目標 的測試請求的步驟包括:從提取的請求信息中篩選出具有特定請求地址的請求信息;根據(jù) 篩選出的請求信息生成對特定請求地址的測試請求。
[0007] 可選地,在根據(jù)本發(fā)明的測試方法中,從提取的請求信息中篩選出符合測試目標 的測試請求的步驟包括:將提取的請求信息中請求地址替換成待測系統(tǒng)地址;根據(jù)替換后 的請求信息生成對待測系統(tǒng)的測試請求。
[0008] 可選地,在根據(jù)本發(fā)明的測試方法中,從提取的請求信息中篩選出符合測試目標 的測試請求的步驟包括:根據(jù)提取的請求信息生成預定數(shù)目的測試請求。
[0009] 可選地,在根據(jù)本發(fā)明的測試方法中,根據(jù)每秒發(fā)送請求數(shù)目異步發(fā)送測試請求 至待測系統(tǒng)的步驟包括:發(fā)送一個測試請求之后,等待預定時間;發(fā)送下一個測試請求;其 中預定時間根據(jù)設置的每秒發(fā)送請求數(shù)目和發(fā)送一個測試請求的機器時間計算而得。
[0010] 可選地,在根據(jù)本發(fā)明的測試方法中,預定時間為1秒除以每秒發(fā)送請求數(shù)目后減 去發(fā)送一個測試請求的機器時間。
[0011] 可選地,在根據(jù)本發(fā)明的測試方法中,還包括:基于機器時間的變化,調(diào)整預定時 間。
[0012] 可選地,在根據(jù)本發(fā)明的測試方法中,基于機器時間的變化調(diào)整預定時間的步驟 包括:獲取前一次發(fā)送每秒發(fā)送請求數(shù)目個測試請求的實際用時;根據(jù)獲取的實際用時和 當前設置的預定時間計算變化后發(fā)送一個測試請求的平均機器時間;根據(jù)計算的平均機器 時間和設置的每秒發(fā)送請求數(shù)目計算新的預定時間。
[0013] 可選地,在根據(jù)本發(fā)明的測試方法中,還包括:在基于機器時間的變化調(diào)整預定時 間之前,根據(jù)前一次發(fā)送每秒發(fā)送請求數(shù)目個測試請求的實際用時計算實際的每秒發(fā)送請 求數(shù)目;計算實際的每秒發(fā)送請求數(shù)目與設置的每秒發(fā)送請求數(shù)目的誤差;當實際的每秒 發(fā)送請求數(shù)目與設置的每秒發(fā)送請求數(shù)目的誤差大于誤差閾值時,調(diào)整預定時間。
[0014] 可選地,在根據(jù)本發(fā)明的測試方法中,其中誤差閾值為5%。
[00?5] 可選地,在根據(jù)本發(fā)明的測試方法中,其中請求為http請求,請求類型包括GET請 求和POST請求,請求地址為頁面入口統(tǒng)一資源定位符(URL)地址。
[0016] 可選地,在根據(jù)本發(fā)明的測試方法中,測試請求的異步發(fā)送通過基于twisted框架 下的treq網(wǎng)絡庫實現(xiàn)。
[0017]根據(jù)本發(fā)明的另一個方面,提供了一種測試裝置,包括:流量捕獲模塊,適于捕獲 網(wǎng)絡訪問產(chǎn)生的流量數(shù)據(jù);流量解析模塊,適于解析捕獲的流量數(shù)據(jù);請求篩選模塊,適于 從解析后的流量數(shù)據(jù)中提取請求信息,請求信息包括請求類型和請求地址,還適于根據(jù)待 測系統(tǒng)的測試目標,從提取的請求信息中篩選出符合測試目標的測試請求;以及請求發(fā)送 模塊,適于設置每秒發(fā)送請求數(shù)目,根據(jù)每秒發(fā)送請求數(shù)目異步發(fā)送測試請求至待測系統(tǒng), 以獲取測試結果。
[0018] 可選地,在根據(jù)本發(fā)明的測試裝置中,請求篩選模塊還適于從提取的請求信息中 篩選出具有特定請求地址的請求信息,根據(jù)篩選出的請求信息生成對特定請求地址的測試 請求。
[0019] 可選地,在根據(jù)本發(fā)明的測試裝置中,請求篩選模塊還適于將提取的請求信息中 請求地址替換成待測系統(tǒng)地址,根據(jù)替換后的請求信息生成對待測系統(tǒng)的測試請求。
[0020] 可選地,在根據(jù)本發(fā)明的測試裝置中,請求篩選模塊還適于根據(jù)提取的請求信息 生成預定數(shù)目的測試請求。
[0021 ]可選地,在根據(jù)本發(fā)明的測試裝置中,請求發(fā)送模塊還適于發(fā)送一個測試請求之 后,等待預定時間后發(fā)送下一個測試請求,其中預定時間根據(jù)設置的每秒發(fā)送請求數(shù)目和 發(fā)送一個測試請求的機器時間計算而得。
[0022] 可選地,在根據(jù)本發(fā)明的測試裝置中,預定時間為1秒除以每秒發(fā)送請求數(shù)目后減 去發(fā)送一個測試請求的機器時間。
[0023] 可選地,在根據(jù)本發(fā)明的測試裝置中,請求發(fā)送模塊還包括時間調(diào)整模塊,適于基 于機器時間的變化,調(diào)整預定時間。
[0024] 可選地,在根據(jù)本發(fā)明的測試裝置中,時間調(diào)整模塊還適于獲取前一次發(fā)送每秒 發(fā)送請求數(shù)目個測試請求的實際用時;根據(jù)獲取的實際用時和當前設置的預定時間計算變 化后發(fā)送一個測試請求的平均機器時間;根據(jù)計算的平均機器時間和設置的每秒發(fā)送請求 數(shù)目計算新的預定時間。
[0025] 可選地,在根據(jù)本發(fā)明的測試裝置中,時間調(diào)整模塊還適于在基于機器時間的變 化調(diào)整預定時間之前,根據(jù)前一次發(fā)送每秒發(fā)送請求數(shù)目個測試請求的實際用時計算實際 的每秒發(fā)送請求數(shù)目;計算實際的每秒發(fā)送請求數(shù)目與設置的每秒發(fā)送請求數(shù)目的誤差; 當實際的每秒發(fā)送請求數(shù)目與設置的每秒發(fā)送請求數(shù)目的誤差大于誤差閾值時,調(diào)整預定 時間。
[0026] 可選地,在根據(jù)本發(fā)明的測試裝置中,其中誤差閾值為5%。
[0027] 可選地,在根據(jù)本發(fā)明的測試裝置中,其中請求為http請求,請求類型包括GET請 求和POST請求,請求地址為頁面入口統(tǒng)一資源定位符(URL)地址。
[0028] 可選地,在根據(jù)本發(fā)明的測試裝置中,測試請求的異步發(fā)送通過基于twisted框架 下的treq網(wǎng)絡庫實現(xiàn)。
[0029] 根據(jù)本發(fā)明的還有一個方面,還提供了一種計算設備,包括根據(jù)本發(fā)明的測試裝 置。
[0030] 根據(jù)本發(fā)明的測試方案,通過對捕獲的網(wǎng)絡訪問產(chǎn)生的流量數(shù)據(jù)篩選而得到需要 的測試請求,可以將生產(chǎn)環(huán)境的真實流量應用于測試系統(tǒng)中,其中根據(jù)特定規(guī)則對流量數(shù) 據(jù)進行篩選,滿足了不同測試場景下的測試需求。此外,通過設置每秒發(fā)送請求數(shù)目,并按 照設置的每秒發(fā)送請求數(shù)目異步發(fā)送篩選出的測試請求,實現(xiàn)了對發(fā)送請求的定量控制。
【附圖說明】
[0031] 為了實現(xiàn)上述以及相關目的,本文結合下面的描述和附圖來描述某些說明性方 面,這些方面指示了可以實踐本文所公開的原理的各種方式,并且所有方面及其等效方面 旨在落入所要求保護的主題的范圍內(nèi)。通過結合附圖閱讀下面的詳細描述,本公開的上述 以及其它目的、特征和優(yōu)勢將變得更加明顯。遍及本公開,相同的附圖標記通常指代相同的 部件或元素。
[0032] 圖1示出了根據(jù)本發(fā)明一個示例性實施例的計算設備100的結構示意圖;
[0033]圖2示出了根據(jù)本發(fā)明一個示例性實施例的測試方法200的示意圖;
[0034]圖3示出了根據(jù)本發(fā)明一個示例性實施例的用于用戶設置每秒發(fā)送請求數(shù)目的圖 形用戶界面的截圖;以及
[0035]圖4示出了根據(jù)本發(fā)明一個示例性實施例的測試裝置300的結構框圖。
【具體實施方式】
[0036] 下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開 的示例性實施例,然而應當理解,可以以各種形式實現(xiàn)本公開而不應被這里闡述的實施例 所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍 完整的傳達給本領域的技術人員。
[0037] 圖1示出了根據(jù)本發(fā)明的一個示例性實施例的計算設備100的結構示意圖。參照圖 1,在基本的配置102中,計算設備100典型地包括系統(tǒng)存儲器106和一個或者多個處理器 104。存儲器總線108可以用于在處理器104和系統(tǒng)存儲器106之間的通信。
[0038] 取決于期望的配置,處理器104可以是任何類型的處理,包括但不限于:微處理器 ((此)、微控制器(yC)、數(shù)字信息處理器(DSP)或者它們的任何組合。處理器104可以包括諸 如一級高速緩存110和二級高速緩存112之類的一個或者多個級別的高速緩存、處理器核心 114和寄存器116。示例的處理器核心114可以包括運算邏輯單元(ALU)、浮點數(shù)單元(FPU)、 數(shù)字信號處理核心(DSP核心)或者它們的任何組合。示例的存儲器控制器118可以與處理器 104-起使用,或者在一些實現(xiàn)中,存儲器控制器118可以是處理器104的一個內(nèi)部部分。
[0039] 取決于期望的配置,系統(tǒng)存儲器106可以是任意類型的存儲器,包括但不限于:易 失性存儲器(諸如RAM)、非易失性存儲器(諸如R0M、閃存等)或者它們的任何組合。系統(tǒng)存儲 器106可以包括操作系統(tǒng)120、一個或者多個應用122以及程序數(shù)據(jù)124。在一些實施方式中, 應用122可以布置為在操作系統(tǒng)上利用程序數(shù)據(jù)124進行操作。
[0040] 計算設備100還可以包括有助于從各種接口設備(例如,輸出設備142、外設接口 144和通信設備146)到基本配置102經(jīng)由總線/接口控制器130的通信的接口總線140。示例 的輸出設備142包括圖形處理單元148和音頻處理單元150。它們可以被配置為有助于經(jīng)由 一個或者多個A/V端口 152與諸如顯示器或者揚聲器之類的各種外部設備進行通信。示例外 設接口 144可以包括串行接口控制器154和并行接口控制器156,它們可以被配置為有助于 經(jīng)由一個或者多個I/O端口 158和諸如輸入設備(例如,鍵盤、鼠標、筆、語音輸入設備、觸摸 輸入設備)或者其他外設(例如打印機、掃描儀等)之類的外部設備進行通信。示例的通信設 備146可以包括網(wǎng)絡控制器160,其可以被布置為便于經(jīng)由一個或者多個通信端口 164與一 個或者多個其他計算設備162通過網(wǎng)絡通信鏈路的通信。
[0041] 網(wǎng)絡通信鏈路可以是通信介質(zhì)的一個示例。通信介質(zhì)通??梢泽w現(xiàn)為在諸如載波 或者其他傳輸機制之類的調(diào)制數(shù)據(jù)信號中的計算機可讀指令、數(shù)據(jù)結構、程序模塊,并且可 以包括任何信息遞送介質(zhì)。"調(diào)制數(shù)據(jù)信號"可以這樣的信號,它的數(shù)據(jù)集中的一個或者多 個或者它的改變可以在信號中編碼信息的方式進行。作為非限制性的示例,通信介質(zhì)可以 包括諸如有線網(wǎng)絡或者專線網(wǎng)絡之類的有線介質(zhì),以及諸如聲音、射頻(RF)、微波、紅外 (IR)或者其它無線介質(zhì)在內(nèi)的各種無線介質(zhì)。這里使用的術語計算機可讀介質(zhì)可以包括存 儲介質(zhì)和通信介質(zhì)二者。
[0042] 計算設備100可以實現(xiàn)為小尺寸便攜(或者移動)電子設備的一部分,這些電子設 備可以是諸如蜂窩電話、個人數(shù)字助理(PDA)、個人媒體播放器設備、無線網(wǎng)絡瀏覽設備、個 人頭戴設備、應用專用設備、或者可以包括上面任何功能的混合設備。計算設備100還可以 實現(xiàn)為包括桌面計算機和筆記本計算機配置的個人計算機。在一些實施例中,計算設備100 被配置為執(zhí)行根據(jù)本發(fā)明的測試方法200,其中應用122包括根據(jù)本發(fā)明的測試裝置300。
[0043] 為了解決現(xiàn)有技術測試功能不夠全面這一問題,本發(fā)明采用現(xiàn)網(wǎng)引流工具,對線 上服務器接收到的線上客戶端發(fā)送的請求進行復制,并將復制的請求引流至待測系統(tǒng),由 待測系統(tǒng)根據(jù)該請求進行功能測試。由于引流至待測系統(tǒng)的請求是線上客戶端實際發(fā)送的 請求,請求類型多樣,所以測試的功能較為全面。然而將線上服務器接收到的所有請求引流 到測試服務器,只能實現(xiàn)對測試服務器整體性能的評估,無法實現(xiàn)對測試服務器中具體功 能的測試,也無法對回放的流量進行靈活的定量控制。因此本發(fā)明進一步設置了每秒發(fā)送 請求數(shù)目,以此來實現(xiàn)對回放流量的定量控制。
[0044] 圖2示出了根據(jù)本發(fā)明一個示例性實施例的測試方法200的流程圖。
[0045] 如圖2所示,方法200始于步驟S210,在步驟S210中,捕獲網(wǎng)絡訪問產(chǎn)生的流量數(shù) 據(jù)。具體地,可使用工具TcpDump捕獲生產(chǎn)環(huán)境的流量數(shù)據(jù),捕獲的流量數(shù)據(jù)通常為pcap格 式數(shù)據(jù)包。TcpDump是捕獲網(wǎng)絡層數(shù)據(jù)包的工具,它可以用來捕獲特定端口的數(shù)據(jù)包,這樣 就可以獲取通過本機80端口,即使用了http連接的數(shù)據(jù)包。一個或者多個數(shù)據(jù)包組成一個 http請求報文,數(shù)據(jù)包的內(nèi)容是二進制格式,不可讀,所以需要解析工具來將http請求解析 出來。
[0046]在步驟S220中,解析捕獲的流量數(shù)據(jù)。具體地,可以使用開源工具pcap-parser解 析捕獲的流量包,得到http請求的具體內(nèi)容。例如解析出來的一個完整的http請求的報文 可以如下:
[0047] "[10.168.39.32:59981]------>[123.125.115.164:80]
[0048] GET
[0049] /a.js?tu = 639889&jk = c7944b9bcb44albe&word = http%3A%2F% 2Fzhidao.baidu.com%2Flink%3Furl%3DbsIYeUNZ9wY0t3Pux7R9bUgBUX27T-5aYqqalzsL2ewq6wzeZPdABfvAB0zBqMffsljXRG5ffnQUJMj_F-k6gd9ReSYHdYCnvcpqtLEUmpkl0&if = l&aw = 0&ah = 0&pt = 18500&it = 18500&vt= 18124& csp = 1280,796&bcl = 250,250&pof = 250,252&top = 845&lef t = 875&total = l&rdm = 1456220115114HTTP/1.1
[0050] Host:eel ick.baidu.com
[0051] Connection: keep-alive
[0052] Cache-Control:max-age = 0
[0053] User-Agent:Mozilla/5.0(Macintosh;Intel Mac OS X 10_10_5)
[0054] AppleffebKit/537.36(KHTML,like Gecko)Chrome/48.0.2564.109Safari/537.36
[0055] Accept:*/*
[0056] Referer:
[0057] http ://zhidao.baidu.com/1ink?url = bsIYeUNZ9wY0t3Pux7R9bUgBUX27T-5aYqqalzsL2ewq6wzeZPdABfvAB0zBqMffsljXRG5ffnQUJMj_F-k6gd9ReSYHdYCnvcpqtLEUmpkl0
[0058] Accept-Encoding:gzip, deflate,sdch
[0059 ] Accept-Language: zh~CN ,zh;q = 0.8,en;q = 0.6
[0060] Cookie :BAIDUID = 8E4A0F24C6EF0E03480F5FA9E2B2288E: FG = 1;
[0061] PSTM= 1440148522 ;BIDUPSID = 28C8AD848DC7335030BACC09CD28AAB4;MCITY = -207 %3A;
[0062] BDUSS=E9xbjQ2U2xFZzdyemw4c29weTRFN2R3dffFlRDdjMGowSFdLUGhrVE5HV3ZnffffR XQVFBQUFBJCQAAAAAAAAAAAEAAACNgzI3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK~0Xlav9F9WV;BDSFRCVID= 140sJeC67GbPnNR419DV-_F8EeK5g_rTH6aP_AcC0Mz3Z70VhNdMEG0Pt01QpYD-VCGHogKK0g0TH65P;
[0063] H_BDCLCKID_SF = JJKtoKLhJIvbfP0kbJ0oh4-0-fuX5-RLfb7nKP0F510TJh0Rj-vq060BybAJBqLfLI5Bffp0S-q-bDnT0e5bke6cffjGDetTDsb5vfstbaaJThKR0vhjRJqj0yyxomtjD85CDeopF2tl7S0PbS-PRTDRIAjx8tLUkqKC0LffnTIWP5AVnbMhnbvMU-nQttjQUT9aN6jhl-E5njHfR7TyU42hf47yboqQTIqJb-qoDKbfb0SjJ0cq4QSMJF0hmT22-usffJuJQhcH0h0ffsI8mQ5jKj5_lQtjeKn3a-Jndslce2qbzE10RDUC0DjjBDHOetjnfb5kXQbjob4oHj4tk-PnVq4tHeNLJJnJZ5mAq_ h3tLnrFVC-lef04qq4ze-〇-B5QMX5rnaIQqLU7NHp8xXJC5W6bQ3x7wKUr43bRTLp7sL4JZs56KLUJlhP-UyN3Mffh37JJTTVJ0-KKCKMC-⑶x5;
[0064] BDRCVFR[feffjIVr5u3D]=I67x6TjHwwYfO;
[0065] H_PS_PSSID = 19140_1434_18241_17942_18205_18134_17001_17073_15724_ 12174_18087
[0066] HTTP/1.1 200 OK
[0067] Server:nginx
[0068] Date:Tue,23 Feb 2016 09:35:15 GMT
[0069] Content-Type: application/x-javascript
[0070] Content-Length :0
[0071] Last-Modified:Mon,22Feb 2016 12:58:06GMT
[0072] Connection: keep-alive
[0073] ETag:"56cb05de_0〃
[0074] Expires:Tue,23Feb 2016 10:35:15GMT
[0075] Cache-Control:max-age = 3600
[0076] Accept-Ranges: bytes"。
[0077] 而后在步驟S230中,從解析后的流量數(shù)據(jù)中提取請求信息,所述請求信息包括請 求類型和請求地址。其中請求類型包括GET請求和POST請求,請求地址為URL地址。具體地, 上述解析后的報文包括請求的起始行、請求首部和請求主體。根據(jù)測試目標,對于GET請求, 提取請求起始行和HOST信息,對于POST請求,提取請求起始行、HOST信息和請求主題,這樣 可以重新組合得到URL地址。例如根據(jù)上述解析后的報文提取的請求信息可以如下:
[0078] "{'GET',
[0079] (http://eclick.baidu. com/a. js?tu = 639889&jk = c7944b9bcb44albe&word = http % 3A% 2F% 2Fzhidao · baidu · com% 2F1 ink% 3Furl % 3DbsIYeUNZ9wY0t3Pux7R9bUgBUX27T-5aYqqalzsL2ewq6wzeZPdABfvAB0zBqMffsljXRG5ffnQUJMj_F-k6gd9ReSYHdYCnvcpqtLEUmpkl0&if = l&aw = 0&ah = 0&pt = 18500&it = 18500&vt= 18124& csp = 1280,796&bcl = 250,250&pof = 250,252&top = 845&lef t = 875&total = l&rdm = 1456220115114'}"。
[0080] 提取請求信息后,在步驟S240中,根據(jù)待測系統(tǒng)的測試目標,從提取的請求信息中 篩選出符合測試目標的測試請求。根據(jù)本發(fā)明的一個實施方式,可以從提取的請求信息中 篩選出具有特定請求地址的請求信息,根據(jù)篩選出的請求信息生成對特定請求地址的測試 請求。例如,網(wǎng)站的不同URL地址分別對應了不同的模塊。以汽車之家為例,http:// car ·autohome · com. cn/pic表不圖片庫模塊,而http: //car · autohome · com. cn/video表不 視頻模塊,因此,通過對url的正則匹配,可以篩選出對特定功能模塊的請求,從而實現(xiàn)對特 定模塊的性能測試。
[0081] 根據(jù)本發(fā)明的另一個實施方式,可以將提取的請求信息中請求地址替換成待測系 統(tǒng)地址,根據(jù)替換后的請求信息生成對待測服務器的測試請求。例如,在研發(fā)過程中,會有 將系統(tǒng)部署到測試環(huán)境的情況,并且可能會部署多個版本,此時可以將從線上生產(chǎn)環(huán)境導 下的實際流量進行域名替換,例如
[0082] http: //car · autohome · com · cn/是線上生產(chǎn)環(huán)境,測試環(huán)境為
[0083] http://carl. autohome. com.cn/,http://car2. autohome. com.cn/,
[0084] http: //car 3 · autohome · com · cn/等等,因此可以將car替換為carN,就可以實現(xiàn)線 上到線下的引流。
[0085] 根據(jù)本發(fā)明的另一個實施方式,可以根據(jù)提取的請求信息生成預定數(shù)目的測試請 求。
[0086] 篩選出符合測試目標的測試請求之后,在步驟S250中,可以設置每秒發(fā)送請求數(shù) 目,該數(shù)目指示了每一秒發(fā)送至待測系統(tǒng)的請求數(shù)目。該每秒發(fā)送請求數(shù)目(QPS)可以在向 用戶呈現(xiàn)的如圖3所示的圖形用戶界面進行輸入,例如設置為500。
[0087] 而后在步驟S260中,根據(jù)每秒發(fā)送請求數(shù)目異步發(fā)送測試請求至待測系統(tǒng),以獲 取測試結果。具體地,測試請求的發(fā)送可以通過基于twisted框架下的treq網(wǎng)絡庫實現(xiàn),具 有異步高并發(fā)的特點。下面是使用treq發(fā)送GET請求的一個例子: 4idef main(reactor, *args): d = treq.getChttpi/'/www.baiciu.eom')
[0088] d.addCallback(prim_response) return d "。
[0089] 其中reactor是twisted客戶端的一個單例,treq · get或者treq · post分別是發(fā)送 GET請求與POST請求的異步方法,調(diào)用該方法返回的變量d是一個def erred對象。twi sted框 架使用deferred對象來管理回調(diào)函數(shù)鏈,調(diào)用deferred的addCal Iback方法可以將回調(diào)函 數(shù)print_response注冊到回調(diào)函數(shù)鏈中。
[0090] 因為發(fā)送請求的方法是異步執(zhí)行,不必等待上一個請求的響應回來就可以發(fā)送下 一個請求,因此本發(fā)明的測試方案通過在兩個發(fā)送動作之間設置一個預定時間,用來使發(fā) 送請求的線程睡眠,因而實現(xiàn)了對發(fā)送測試請求的定量控制。具體地,發(fā)送一個測試請求之 后,等待預定時間后再發(fā)送下一個測試請求,其中該預定時間根據(jù)設置的每秒發(fā)送請求數(shù) 目和發(fā)送一個測試請求的機器時間計算而得,即:
[0091 ] machine_time + sleep_time = l/QPS,其中 sleep_time為等待的預定時間, machinejime為發(fā)送一個測試請求消耗的機器時間,QPS為用戶設置的每秒發(fā)送請求數(shù)目。 [0092]此外,由于機器執(zhí)行發(fā)送請求的代碼會消耗一部分時間,并且當設置的每秒發(fā)送 數(shù)目較大時,注冊回調(diào)函數(shù)花費的時間也隨之增大,發(fā)送一個請求所消耗的機器時間相應 地增大,因此,根據(jù)本發(fā)明的一個實施方式,方法200還包括步驟:基于機器時間的變化,調(diào) 整預定時間。
[0093]具體地,可以先獲取前一次發(fā)送每秒發(fā)送請求數(shù)目個測試請求的實際用時,而后 根據(jù)獲取的實際用時和當前設置的預定時間計算變化后發(fā)送一個測試請求的平均機器時 間,再根據(jù)計算的平均機器時間和設置的每秒發(fā)送請求數(shù)目計算新的預定時間。例如,當前 的預定時間設置為0.1 s,每秒發(fā)送請求數(shù)目QPS設置為10,而發(fā)送之前的10個請 求共用了 I · ls,那么當前的發(fā)送一個測試請求的平均機器時間machine_time = l · 1/10-0.1 =0 .Ols,所以新的預定時間sleep_time應調(diào)整為1/10-0.01 = 0.09s。這樣動態(tài)的調(diào)整預定 時間,可以防止實際的每秒發(fā)送請求數(shù)目偏離用戶設置的每秒發(fā)送請求數(shù)目。
[0094]根據(jù)本發(fā)明的還有一個實施方式,在基于機器時間的變化調(diào)整預定時間之前,根 據(jù)前一次發(fā)送每秒發(fā)送請求數(shù)目個測試請求的實際用時計算實際的每秒發(fā)送請求數(shù)目,而 后計算實際的每秒發(fā)送請求數(shù)目與設置的每秒發(fā)送請求數(shù)目的誤差,當實際的每秒發(fā)送請 求數(shù)目與設置的每秒發(fā)送請求數(shù)目的誤差大于誤差閾值時,則調(diào)整預定時間,其中誤差閾 值可以為5%。
[0095] 根據(jù)本發(fā)明的還有一個實施方式,方法200還可以包括步驟:同時測試請求的響應 時間、響應內(nèi)容和狀態(tài)碼。
[0096] 圖4示出了根據(jù)本發(fā)明一個示例性實施例的測試裝置300的結構圖。如圖4所示,裝 置300可以包括流量捕獲模塊310、流量解析模塊320、請求篩選模塊330和請求發(fā)送模塊 340 〇
[0097] 流量捕獲模塊310適于捕獲網(wǎng)絡訪問產(chǎn)生的流量數(shù)據(jù)。流量解析模塊320與流量捕 獲模塊310連接,適于解析捕獲的流量數(shù)據(jù)。
[0098] 請求篩選模塊330與流量解析模塊320連接,適于從解析后的流量數(shù)據(jù)中提取請求 信息,所述請求信息包括請求類型和請求地址,還適于根據(jù)待測系統(tǒng)的測試目標,從提取的 請求信息中篩選出符合測試目標的測試請求。該請求一般為http請求,請求類型包括GET請 求和POST請求,請求地址為頁面入口統(tǒng)一資源定位符(URL)地址。
[0099]具體地,根據(jù)本發(fā)明的一個實施方式,請求篩選模塊330適于從提取的請求信息中 篩選出具有特定請求地址的請求信息,根據(jù)篩選出的請求信息生成對特定請求地址的測試 請求。
[0100]根據(jù)本發(fā)明的另一個實施方式,請求篩選模塊330還適于將提取的請求信息中請 求地址替換成待測系統(tǒng)地址,根據(jù)替換后的請求信息生成對待測系統(tǒng)的測試請求。
[0101] 根據(jù)本發(fā)明的另一個實施方式,請求篩選模塊330還適于根據(jù)提取的請求信息生 成預定數(shù)目的測試請求。
[0102] 請求發(fā)送模塊340與請求篩選模塊330連接,適于設置每秒發(fā)送請求數(shù)目,根據(jù)該 每秒發(fā)送請求數(shù)目異步發(fā)送測試請求至待測系統(tǒng),以獲取測試結果。這里測試請求的異步 發(fā)送可以通過基于twisted框架下的treq網(wǎng)絡庫實現(xiàn)。
[0103] 具體地,請求發(fā)送模塊340適于發(fā)送一個測試請求之后,等待預定時間后發(fā)送下一 個測試請求,其中預定時間根據(jù)設置的每秒發(fā)送請求數(shù)目和發(fā)送一個測試請求的機器時間 計算而得。
[0104] 根據(jù)本發(fā)明的一個實施方式,預定時間為1秒除以每秒發(fā)送請求數(shù)目后減去發(fā)送 一個測試請求的機器時間。
[0105] 根據(jù)本發(fā)明的另一個實施方式,請求發(fā)送模塊340還包括時間調(diào)整模塊341,適于 基于發(fā)送一個測試請求的機器時間的變化,調(diào)整上述預定時間。具體地,時間調(diào)整模塊341 適于獲取前一次發(fā)送每秒發(fā)送請求數(shù)目個測試請求的實際用時,根據(jù)獲取的實際用時和當 前設置的預定時間計算變化后發(fā)送一個測試請求的平均機器時間,根據(jù)計算的平均機器時 間和設置的每秒發(fā)送請求數(shù)目計算新的預定時間。
[0106] 其中,根據(jù)本發(fā)明的另一個實施方式,時間調(diào)整模塊341還適于在基于機器時間的 變化調(diào)整預定時間之前,根據(jù)前一次發(fā)送每秒發(fā)送請求數(shù)目個測試請求的實際用時計算實 際的每秒發(fā)送請求數(shù)目,計算實際的每秒發(fā)送請求數(shù)目與設置的每秒發(fā)送請求數(shù)目的誤 差,當實際的每秒發(fā)送請求數(shù)目與設置的每秒發(fā)送請求數(shù)目的誤差大于誤差閾值時,則調(diào) 整預定時間。通常誤差閾值為5%。
[0107] 以上在結合圖2和圖3說明測試方法200的具體描述中已經(jīng)對各模塊中的相應處理 進行了詳細解釋,這里不再對重復內(nèi)容進行贅述。
[0108] 在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施 例可以在沒有這些具體細節(jié)的情況下被實踐。在一些實例中,并未詳細示出公知的方法、結 構和技術,以便不模糊對本說明書的理解。
[0109] 類似地,應當理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在 上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施 例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖:即所要求保 護的本發(fā)明要求比在每個權利要求中所明確記載的特征更多特征。更確切地說,如下面的 權利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵 循【具體實施方式】的權利要求書由此明確地并入該【具體實施方式】,其中每個權利要求本身都 作為本發(fā)明的單獨實施例。
[0110] 本領域那些技術人員應當理解在本文所公開的示例中的設備的模塊或單元或組 件可以布置在如該實施例中所描述的設備中,或者可替換地可以定位在與該示例中的設備 不同的一個或多個設備中。前述示例中的模塊可以組合為一個模塊或者此外可以分成多個 子模塊。 Com]本領域那些技術人員可以理解,可以對實施例中的設備中的模塊進行自適應性地 改變并且把它們設置在與該實施例不同的一個或多個設備中??梢园褜嵤├械哪K或單 元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或 子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何 組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有特征以及如此公開的任 何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權 利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代 替。
[0112]本發(fā)明還包括:A6、如A5所述的方法,所述預定時間為1秒除以每秒發(fā)送請求數(shù)目 后減去所述發(fā)送一個測試請求的機器時間。A7、如A6所述的方法,還包括:基于所述機器時 間的變化,調(diào)整所述預定時間。A8、如A7所述的方法,基于機器時間的變化調(diào)整預定時間的 步驟包括:獲取前一次發(fā)送每秒發(fā)送請求數(shù)目個測試請求的實際用時;根據(jù)獲取的實際用 時和當前設置的預定時間計算變化后發(fā)送一個測試請求的平均機器時間;根據(jù)計算的平均 機器時間和設置的每秒發(fā)送請求數(shù)目計算新的預定時間。A9、如A8所述的方法,還包括:在 基于機器時間的變化調(diào)整預定時間之前,根據(jù)所述前一次發(fā)送每秒發(fā)送請求數(shù)目個測試請 求的實際用時計算實際的每秒發(fā)送請求數(shù)目;計算實際的每秒發(fā)送請求數(shù)目與設置的每秒 發(fā)送請求數(shù)目的誤差;當實際的每秒發(fā)送請求數(shù)目與設置的每秒發(fā)送請求數(shù)目的誤差大于 誤差閾值時,調(diào)整所述預定時間。A10、如A9所述的方法,其中所述誤差閾值為5% Jll、如 Al-IO中任一項所述的方法,其中所述請求為http請求,所述請求類型包括GET請求和POST 請求,請求地址為頁面入口統(tǒng)一資源定位符(URL)地址。A12、如All所述的方法,所述測試請 求的異步發(fā)送通過基于twisted框架下的treq網(wǎng)絡庫實現(xiàn)。
[0113] B17、如B13所述的裝置,所述請求發(fā)送模塊還適于發(fā)送一個測試請求之后,等待預 定時間后發(fā)送下一個測試請求,其中所述預定時間根據(jù)設置的每秒發(fā)送請求數(shù)目和發(fā)送一 個測試請求的機器時間計算而得。B18、如B17所述的裝置,所述預定時間為1秒除以每秒發(fā) 送請求數(shù)目后減去所述發(fā)送一個測試請求的機器時間。B19、如B18所述的裝置,所述請求發(fā) 送模塊還包括時間調(diào)整模塊,適于基于所述機器時間的變化,調(diào)整所述預定時間。B20、如 B19所述的裝置,所述時間調(diào)整模塊還適于獲取前一次發(fā)送每秒發(fā)送請求數(shù)目個測試請求 的實際用時;根據(jù)獲取的實際用時和當前設置的預定時間計算變化后發(fā)送一個測試請求的 平均機器時間;根據(jù)計算的平均機器時間和設置的每秒發(fā)送請求數(shù)目計算新的預定時間。 B21、如B19所述的裝置,所述時間調(diào)整模塊還適于在基于機器時間的變化調(diào)整預定時間之 前,根據(jù)所述前一次發(fā)送每秒發(fā)送請求數(shù)目個測試請求的實際用時計算實際的每秒發(fā)送請 求數(shù)目;計算實際的每秒發(fā)送請求數(shù)目與設置的每秒發(fā)送請求數(shù)目的誤差;當實際的每秒 發(fā)送請求數(shù)目與設置的每秒發(fā)送請求數(shù)目的誤差大于誤差閾值時,調(diào)整所述預定時間。 B22、如B21所述的裝置,其中所述誤差閾值為5%』23、如B13-22中任一項所述的裝置,其中 所述請求為http請求,所述請求類型包括GET請求和POST請求,請求地址為頁面入口統(tǒng)一資 源定位符(URL)地址。B24、如B23所述的裝置,所述測試請求的異步發(fā)送通過基于twisted框 架下的treq網(wǎng)絡庫實現(xiàn)。
[0114] 此外,本領域的技術人員能夠理解,盡管在此所述的一些實施例包括其它實施例 中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的 范圍之內(nèi)并且形成不同的實施例。例如,在下面的權利要求書中,所要求保護的實施例的任 意之一都可以以任意的組合方式來使用。
[0115] 此外,所述實施例中的一些在此被描述成可以由計算機系統(tǒng)的處理器或者由執(zhí)行 所述功能的其它裝置實施的方法或方法元素的組合。因此,具有用于實施所述方法或方法 元素的必要指令的處理器形成用于實施該方法或方法元素的裝置。此外,裝置實施例的在 此所述的元素是如下裝置的例子:該裝置用于實施由為了實施該發(fā)明的目的的元素所執(zhí)行 的功能。
[0116] 如在此所使用的那樣,除非另行規(guī)定,使用序數(shù)詞"第一"、"第二"、"第三"等等來 描述普通對象僅僅表示涉及類似對象的不同實例,并且并不意圖暗示這樣被描述的對象必 須具有時間上、空間上、排序方面或者以任意其它方式的給定順序。
[0117] 盡管根據(jù)有限數(shù)量的實施例描述了本發(fā)明,但是受益于上面的描述,本技術領域 內(nèi)的技術人員明白,在由此描述的本發(fā)明的范圍內(nèi),可以設想其它實施例。此外,應當注意, 本說明書中使用的語言主要是為了可讀性和教導的目的而選擇的,而不是為了解釋或者限 定本發(fā)明的主題而選擇的。因此,在不偏離所附權利要求書的范圍和精神的情況下,對于本 技術領域的普通技術人員來說許多修改和變更都是顯而易見的。對于本發(fā)明的范圍,對本 發(fā)明所做的公開是說明性的,而非限制性的,本發(fā)明的范圍由所附權利要求書限定。
【主權項】
1. 一種測試方法,包括: 捕獲網(wǎng)絡訪問產(chǎn)生的流量數(shù)據(jù); 解析捕獲的流量數(shù)據(jù); 從解析后的流量數(shù)據(jù)中提取請求信息,所述請求信息包括請求類型和請求地址; 根據(jù)待測系統(tǒng)的測試目標,從提取的請求信息中篩選出符合測試目標的測試請求; 設置每秒發(fā)送請求數(shù)目; 根據(jù)所述每秒發(fā)送請求數(shù)目異步發(fā)送所述測試請求至待測系統(tǒng),以獲取測試結果。2. 如權利要求1所述的方法,所述從提取的請求信息中篩選出符合測試目標的測試請 求的步驟包括: 從提取的請求信息中篩選出具有特定請求地址的請求信息; 根據(jù)篩選出的請求信息生成對特定請求地址的測試請求。3. 如權利要求1所述的方法,所述從提取的請求信息中篩選出符合測試目標的測試請 求的步驟包括: 將提取的請求信息中請求地址替換成待測系統(tǒng)地址; 根據(jù)替換后的請求信息生成對待測系統(tǒng)的測試請求。4. 如權利要求1所述的方法,所述從提取的請求信息中篩選出符合測試目標的測試請 求的步驟包括: 根據(jù)提取的請求信息生成預定數(shù)目的測試請求。5. 如權利要求1所述的方法,所述根據(jù)每秒發(fā)送請求數(shù)目異步發(fā)送測試請求至待測系 統(tǒng)的步驟包括: 發(fā)送一個測試請求之后,等待預定時間; 發(fā)送下一個測試請求; 其中所述預定時間根據(jù)設置的每秒發(fā)送請求數(shù)目和發(fā)送一個測試請求的機器時間計 算而得。6. -種測試裝置,包括: 流量捕獲模塊,適于捕獲網(wǎng)絡訪問產(chǎn)生的流量數(shù)據(jù); 流量解析模塊,適于解析捕獲的流量數(shù)據(jù); 請求篩選模塊,適于從解析后的流量數(shù)據(jù)中提取請求信息,所述請求信息包括請求類 型和請求地址,還適于根據(jù)待測系統(tǒng)的測試目標,從提取的請求信息中篩選出符合測試目 標的測試請求;以及 請求發(fā)送模塊,適于設置每秒發(fā)送請求數(shù)目,根據(jù)所述每秒發(fā)送請求數(shù)目異步發(fā)送所 述測試請求至待測系統(tǒng),以獲取測試結果。7. 如權利要求6所述的裝置,所述請求篩選模塊還適于從提取的請求信息中篩選出具 有特定請求地址的請求信息,根據(jù)篩選出的請求信息生成對特定請求地址的測試請求。8. 如權利要求13所述的裝置,所述請求篩選模塊還適于將提取的請求信息中請求地址 替換成待測系統(tǒng)地址,根據(jù)替換后的請求信息生成對待測系統(tǒng)的測試請求。9. 如權利要求13所述的裝置,所述請求篩選模塊還適于根據(jù)提取的請求信息生成預定 數(shù)目的測試請求。10. -種計算設備,包括如權利要求6-9中任一項所述的測試裝置。
【文檔編號】H04L12/26GK105915406SQ201610225289
【公開日】2016年8月31日
【申請日】2016年4月12日
【發(fā)明人】宋昊
【申請人】北京齊爾布萊特科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1