一種報文生成方法及裝置的制造方法
【專利摘要】本申請公開了一種報文生成方法,用以解決現(xiàn)有技術中無法對非常規(guī)協(xié)議類型的服務器進行壓力測試的問題。該方法包括:確定待測試服務器的網(wǎng)絡協(xié)議類型;所述服務器的網(wǎng)絡協(xié)議類型為服務器與客戶端進行交互時使用的通信協(xié)議的類型;當所述待測試服務器的網(wǎng)絡協(xié)議類型,為所述壓力測試工具中預先設置的非常規(guī)算法所支持的非常規(guī)協(xié)議類型時,調用預先設置在所述壓力測試工具中的、與所述網(wǎng)絡協(xié)議類型對應的非常規(guī)算法,對配置文件中的數(shù)據(jù)進行處理,得到待發(fā)送報文。本申請還公開了一種報文生成裝置。
【專利說明】
一種報文生成方法及裝置
技術領域
[0001]本申請涉及計算機技術領域,尤其涉及一種報文生成方法及裝置。
【背景技術】
[0002]隨著互聯(lián)網(wǎng)技術的飛速發(fā)展,網(wǎng)民的數(shù)量越來越多,對互聯(lián)網(wǎng)中服務器的負載能力的要求也越來越高。比如,當服務器的并發(fā)用戶數(shù)量較大時,服務器需要有較強的負載能力,當服務器中的并發(fā)用戶數(shù)量超過服務器的負載能力時,可能會出現(xiàn)服務器宕機等情況,從而導致用戶的體驗較差。
[0003]開發(fā)人員可以通過對服務器進行壓力測試來測試服務器的最大負載能力,所述壓力測試指給服務器施加大負載(大數(shù)據(jù)量、并發(fā)用戶數(shù)量較大等),并觀察服務器在大負載時的操作行為,從而有效地判斷服務器是否具有良好的容錯能力和可恢復能力,以便獲得服務器所能承受的最大負載。
[0004]對服務器進行壓力測試是通過壓力測試工具來進行的。所述壓力測試工具可以模擬用戶通過客戶端對服務器的訪問行為,向服務器發(fā)起大量的并發(fā)請求,同時檢測服務器的資源使用情況,以及服務器的運行情況。由于服務器和客戶端之間一般是通過服務器和客戶端預先約定好的應用層協(xié)議進行數(shù)據(jù)交互的,即客戶端在向服務器發(fā)起請求時,是通過向服務器發(fā)送報文的方式進行的。所述報文,為根據(jù)服務器與客戶端預先約定的網(wǎng)絡協(xié)議生成的、數(shù)據(jù)格式與所述約定的網(wǎng)絡協(xié)議的數(shù)據(jù)格式相符的數(shù)據(jù)。
[0005]同樣,壓力測試工具在進行壓力測試時,也是以向服務器發(fā)送報文的方式向服務器發(fā)起請求的。由于提供不同服務的服務器與客戶端之間進行交互時使用的應用層協(xié)議的類型往往不同,那么,在對服務器進行壓力測試時,壓力測試工具向被測試服務器發(fā)送的報文的數(shù)據(jù)格式,需要與被測試服務器的應用層協(xié)議要求的數(shù)據(jù)格式相同。
[0006]現(xiàn)有技術中,壓力測試工具在對服務器進行壓力測試時,會通過自帶的數(shù)據(jù)處理算法,對配置文件中的數(shù)據(jù)進行解析,然后對的解析得到的數(shù)據(jù)進行數(shù)據(jù)封裝,得到待發(fā)送報文,然后利用所述待發(fā)送報文對服務器進行壓力測試。所述配置文件為預先準備的、用于向壓力測試工具提供壓力測試時所使用的測試參數(shù)的文件。
[0007]在對服務器進行壓力測試時,需要預先準備與待測試服務器的協(xié)議類型相匹配的配置文件。配置文件和能夠成功對配置文件進行解析的算法之間存在一一映射關系,即若與不同的配置文件分別匹配的協(xié)議類型不同,則能夠成功對所述不同的配置文件進行解析的算法也不同。
[0008]現(xiàn)有技術中,壓力測試工具只能通過自帶的算法對配置文件中的數(shù)據(jù)進行處理,因此最終所生成的報文的協(xié)議類型只能是壓力測試工具自帶的算法所支持的協(xié)議類型。所述自帶的算法,是指壓力測試工具在被發(fā)布時,由壓力測試工具的開發(fā)商設置在壓力測試工具中的算法。利用該些算法,能夠實現(xiàn)對與HTTP協(xié)議、WebDAV協(xié)議、SOAP協(xié)議、LDAP協(xié)議和XMPP協(xié)議相匹配的配置文件的成功解析。為便于描述,一般將自帶的算法所支持的協(xié)議類型稱為常規(guī)協(xié)議類型,將自帶的算法不支持的協(xié)議類型稱為非常規(guī)協(xié)議類型。當服務器的應用層協(xié)議不屬于所述常規(guī)協(xié)議類型時,壓力測試工具便無法對其進行壓力測試。即,現(xiàn)有技術中,無法對非常規(guī)協(xié)議類型的服務器進行壓力測試,所述非常規(guī)協(xié)議類型的服務器為與客戶端進行交互時使用的應用層通信協(xié)議的類型為非常規(guī)協(xié)議類型的服務器。
【發(fā)明內容】
[0009]本申請實施例提供一種報文生成方法,用以解決現(xiàn)有技術中無法對非常規(guī)協(xié)議類型的服務器進行壓力測試的問題。
[0010]本申請實施例還提供一種報文生成裝置,用以解決現(xiàn)有技術中無法對非常規(guī)協(xié)議類型的服務器進行壓力測試的問題。
[0011]本申請實施例采用下述技術方案:
[0012]一種報文生成方法,包括:
[0013]確定待測試服務器的網(wǎng)絡協(xié)議類型;所述服務器的網(wǎng)絡協(xié)議類型為服務器與客戶端進行交互時使用的通信協(xié)議的類型;
[0014]當所述待測試服務器的網(wǎng)絡協(xié)議類型,為所述壓力測試工具中預先設置的非常規(guī)算法所支持的非常規(guī)協(xié)議類型時,調用預先設置在所述壓力測試工具中的、與所述網(wǎng)絡協(xié)議類型對應的非常規(guī)算法,對配置文件中的數(shù)據(jù)進行處理,得到待發(fā)送報文;所述配置文件,為用于對所述待測試服務器進行壓力測試所使用的配置文件;
[0015]所述非常規(guī)算法,包括:用于對與所述非常規(guī)算法匹配的配置文件中的數(shù)據(jù)進行解析的解析算法,以及利用對配置文件進行解析得到的數(shù)據(jù)合成相應的待發(fā)送報文的合成算法。
[0016]一種報文生成裝置,其特征在于,包括:
[0017]網(wǎng)絡協(xié)議類型確定單元,用于確定待測試服務器的網(wǎng)絡協(xié)議類型;所述服務器的網(wǎng)絡協(xié)議類型為服務器與客戶端進行交互時使用的通信協(xié)議的類型;
[0018]報文確定單元,用于當所述待測試服務器的網(wǎng)絡協(xié)議類型,為所述壓力測試工具中預先設置的非常規(guī)算法所支持的非常規(guī)協(xié)議類型時,調用預先設置在所述壓力測試工具中的、與所述網(wǎng)絡協(xié)議類型對應的非常規(guī)算法,對配置文件中的數(shù)據(jù)進行處理,得到待發(fā)送報文;所述配置文件,為用于對所述待測試服務器進行壓力測試所使用的配置文件;
[0019]所述非常規(guī)算法,包括:用于對與所述非常規(guī)算法匹配的配置文件中的數(shù)據(jù)進行解析的解析算法,以及利用對配置文件進行解析得到的數(shù)據(jù)合成相應的待發(fā)送報文的合成算法。
[0020]本申請實施例采用的上述至少一個技術方案能夠達到以下有益效果:
[0021]通過調用預先設置在所述壓力測試工具中的、與所述網(wǎng)絡協(xié)議類型對應的非常規(guī)算法,對非常規(guī)網(wǎng)絡協(xié)議類型的配置文件進行解析,并利用解析得到的數(shù)據(jù)合成待發(fā)送報文,進而可以利用合成的待發(fā)送報文進行壓力測試,解決了現(xiàn)有技術中無法對非常規(guī)協(xié)議類型的服務器進行壓力測試的問題。
【附圖說明】
[0022]此處所說明的附圖用來提供對本申請的進一步理解,構成本申請的一部分,本申請的示意性實施例及其說明用于解釋本申請,并不構成對本申請的不當限定。在附圖中:
[0023]圖1為本申請實施例1提供的一種報文生成方法的實現(xiàn)流程示意圖;
[0024]圖2a為本申請實施例2提供的用于定義協(xié)議類型的代碼的示意圖;
[0025]圖2b為本申請實施例2提供的用于定義被測服務器地址的代碼的示意圖;
[0026]圖2c為本申請實施例2提供的用于定義測試時wesync協(xié)議報文中用戶信息的代碼的不意圖;
[0027]圖2d為本申請實施例2提供的用于定義測試時wesync協(xié)議報文中代理信息數(shù)據(jù)的代碼的示意圖;
[0028]圖2e為本申請實施例2提供的用于定義wesync協(xié)議報文中請求數(shù)據(jù)的代碼的示意圖;
[0029]圖3為本申請實施例2提供的一種報文生成方法的實現(xiàn)流程示意圖;
[0030]圖4為本申請實施例3提供的一種報文生成裝置的具體結構示意圖。
【具體實施方式】
[0031]為使本申請的目的、技術方案和優(yōu)點更加清楚,下面將結合本申請具體實施例及相應的附圖對本申請技術方案進行清楚、完整地描述。顯然,所描述的實施例僅是本申請一部分實施例,而不是全部的實施例。基于本申請中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
[0032]以下結合附圖,詳細說明本申請各實施例提供的技術方案。
[0033]實施例1
[0034]為解決現(xiàn)有技術中無法對非常規(guī)協(xié)議類型的服務器進行壓力測試的問題,本申請實施例1提供一種報文生成方法。本申請實施例提供的報文生成方法的執(zhí)行主體可以是壓力測試工具,例如,對服務器進行壓力測試的壓力測試工具,等等。
[0035]為便于描述,下文以該方法的執(zhí)行主體為壓力測試工具為例,對該方法的實施方式進行介紹。可以理解,該方法的執(zhí)行主體為壓力測試工具只是一種示例性的說明,并不應理解為對該方法的限定。
[0036]該方法的實現(xiàn)流程示意圖如圖1所示,包括下述步驟:
[0037]步驟11:確定待測試服務器的網(wǎng)絡協(xié)議類型;
[0038]所述服務器的網(wǎng)絡協(xié)議類型為服務器與客戶端進行交互時使用的通信協(xié)議的類型。
[0039]本申請實施例中,所述網(wǎng)絡協(xié)議可以是應用層協(xié)議,應用層協(xié)議(Applicat 1nLayer Protocol)定義了運行在不同端系統(tǒng)上的應用程序間進行信息交互的規(guī)則。
[0040]本申請實施例中,根據(jù)應用層協(xié)議實現(xiàn)的功能的不同,可以對所述應用層協(xié)議進行分類,得到不同的網(wǎng)絡協(xié)議類型,所述應用層協(xié)議的類型比如可以是文件傳輸協(xié)議(FileTransfer Protocol ,FTP)、超文本傳輸協(xié)議(Hyper Text Transfer Protocol ,HTTP)和簡單郵件傳送協(xié)議(Simple Mail Transfer Protocol,SMTP),等等。所述網(wǎng)絡協(xié)議類型還可以是開發(fā)人員自定義的、用于對運行于不同端系統(tǒng)上的應用程序間進行信息交互的網(wǎng)絡協(xié)議類型。
[0041]本申請實施例中,在進行壓力測試前,會預先確定待測試服務器的網(wǎng)絡協(xié)議類型,以便后續(xù)根據(jù)確定的待測試服務器的網(wǎng)絡協(xié)議類型,選擇與確定的網(wǎng)絡協(xié)議類型相匹配的算法,對配置文件中的參數(shù)進行解析。所述配置文件為預先準備的、用于向壓力測試工具提供壓力測試時所使用的測試參數(shù)的文件。
[0042]在實際應用中,待測試服務器的網(wǎng)絡協(xié)議類型可以根據(jù)配置文件中的參數(shù)確定。所述配置文件比如可以是利用可擴展標記語言(Extensible Markup Language,xml)編寫的配置文件,則測試人員可以將待測試服務器的網(wǎng)絡協(xié)議類型通過xml語言的sess1n標簽進行定義,那么壓力測試工具便可以根據(jù)所述配置文件的sess1n標簽中對網(wǎng)絡協(xié)議類型的定義,確定待測試服務器的網(wǎng)絡協(xié)議類型。例如,當待測試服務器的網(wǎng)絡協(xié)議類型為wesync類型時,則xml代碼〈sess1n name = 〃wesync〃type = 〃ts_wesync〃>S|3可將網(wǎng)絡協(xié)議類型定義為Wesync0
[0043]本申請實施例中,測試人員會根據(jù)測試需求,預先將測試參數(shù)寫入到所述配置文件中,所述配置文件中的測試參數(shù)包括但不限于:待測試服務器地址數(shù)據(jù)、請求數(shù)據(jù)、用戶信息數(shù)據(jù)和代理信息數(shù)據(jù)。
[0044]其中,所述待測試服務器地址數(shù)據(jù)為用于確定待測試服務器的地址的數(shù)據(jù),一般為IP地址和網(wǎng)絡端口等數(shù)據(jù)。所述請求數(shù)據(jù)為用于定義壓力測試工具與服務器之間的交互行為的數(shù)據(jù),比如可以是用于定義測試工具如何模擬用戶操作行為的數(shù)據(jù),例如當所述交互行為是請求打開服務器中的某個網(wǎng)頁時,則所述請求數(shù)據(jù)為包含用于定義請求打開服務器中的某個網(wǎng)頁這一操作行為的數(shù)據(jù)。
[0045]本申請實施例中,可以模擬用戶的賬戶在登錄狀態(tài)時,用戶通過客戶端與服務器的交互行為,則所述用戶信息數(shù)據(jù)為與服務器進行交互時的用戶賬戶相關信息,所述用戶賬戶相關信息比如可以是賬戶身份標識信息。
[0046]本申請實施例中,如果待生成的報文中還需要包含一些其它信息,則可以將所述其它信息寫入配置文件中的代理信息數(shù)據(jù)中,所述其它信息比如可以是當前客戶端版本信息、客戶端與服務器進行通信的通信密鑰信息,等等。
[0047]比如,可以通過下述代碼,定義報文發(fā)送端的瀏覽器信息和操作系統(tǒng)信息。
[0048]〈opt1n type = //ts_wesync//name = ^use^agent^)
[0049]<user_agent probability = "100">Mozilla/5.0(Windows;U;Windows NT 5.2;fr-FR;rv:1.7.8)Gecko/20050511Firefox/l.0.4</user_agent>
[0050]〈/opt1n〉
[0051]其中,Mozi I la/5.0 (Windows ; U; Windows NT 5.2; f r-FR ;rv: 1.7.8)Gecko/2005051 IFiref ox/1.0.4為瀏覽器版本信息。
[0052]步驟12:當所述待測試服務器的網(wǎng)絡協(xié)議類型,為所述壓力測試工具中預先設置的非常規(guī)算法所支持的非常規(guī)協(xié)議類型時,調用預先設置在所述壓力測試工具中的、與所述網(wǎng)絡協(xié)議類型對應的非常規(guī)算法,對配置文件中的數(shù)據(jù)進行處理,得到待發(fā)送報文;
[0053]所述配置文件,為用于對所述待測試服務器進行壓力測試所使用的配置文件;
[0054]所述非常規(guī)協(xié)議類型,為壓力測試工具自帶的算法不支持的協(xié)議類型。
[0055]所述非常規(guī)算法,包括:用于對與所述非常規(guī)算法匹配的配置文件中的數(shù)據(jù)進行解析的解析算法,以及利用對配置文件進行解析得到的數(shù)據(jù)合成相應的待發(fā)送報文的合成算法。
[0056]本申請實施例中,所述待發(fā)送報文為根據(jù)服務器與客戶端預先約定的網(wǎng)絡協(xié)議生成的、數(shù)據(jù)格式與所述約定的網(wǎng)絡協(xié)議的報文的數(shù)據(jù)格式相符的數(shù)據(jù)。比如,如果服務器與客戶端預先約定的網(wǎng)絡協(xié)議為HTTP協(xié)議,則HTTP請求報文由請求行(request line)、請求頭部(header)、空行和請求數(shù)據(jù)4個部分按照特定格式組合而成,那么待發(fā)送報文的數(shù)據(jù)格式也應當與所述HTTP請求報文的數(shù)據(jù)格式相同。
[0057]本申請實施例中,當所述待測試服務器的網(wǎng)絡協(xié)議類型,為所述壓力測試工具中預先設置的非常規(guī)算法所支持的常規(guī)協(xié)議類型時,壓力測試工具便可以通過自帶的算法,對配置文件進行解析。當所述待測試服務器的網(wǎng)絡協(xié)議類型為非常規(guī)協(xié)議類型時,可以調用預先設置在所述壓力測試工具中的、與所述網(wǎng)絡協(xié)議類型對應的非常規(guī)算法,對配置文件中的數(shù)據(jù)進行處理,得到待發(fā)送報文。
[0058]本申請實施例中,由于不同網(wǎng)絡協(xié)議類型的報文的數(shù)據(jù)格式不同,則對不同網(wǎng)絡協(xié)議類型的報文進行配置的配置文件的編寫規(guī)則也不同,那么開發(fā)人員會根據(jù)待測試服務器的網(wǎng)絡協(xié)議類型來編寫所述配置文件。同樣,對配置不同網(wǎng)絡協(xié)議類型的配置文件進行解析的算法也不同。
[0059]例如,在利用xml語言定義服務器地址時,可以編寫如下xml代碼來定義:
[0060]〈servers〉
[0061 ] 〈server host = "192.168.1.S^port = ^SO^type = ^tcp^X/server)
[0062]</servers)
[0063]其中,測試人員可以通過修改上述代碼中server host的值和port的值來修改服務器地址和服務器網(wǎng)絡端口,服務器地址為192.168.1.3,網(wǎng)絡端口為80,只是一種示例性說明。
[0064]本申請實施例中,用于對與所述非常規(guī)算法匹配的配置文件中的數(shù)據(jù)進行解析的解析算法,為可以根據(jù)配置文件的編寫規(guī)則,獲取配置文件中各個標簽所定義的測試參數(shù)的算法。由于配置文件的編寫規(guī)則是已知的,那么,開發(fā)人員可以根據(jù)配置文件的編寫規(guī)貝1J,來編寫對該配置文件進行解析的解析算法,以使得所述解析算法可以獲取該配置文件中各個標簽所定義的測試參數(shù)。
[0065]本申請實施例中,利用對配置文件進行解析得到的數(shù)據(jù)合成相應的待發(fā)送報文的合成算法,為可以根據(jù)服務器與客戶端之間約定的網(wǎng)絡協(xié)議的報文的數(shù)據(jù)格式,將對配置文件進行解析得到的數(shù)據(jù),合成與配置文件配置的報文的數(shù)據(jù)格式相符的待發(fā)送報文的算法。由于服務器與客戶端之間約定的網(wǎng)絡協(xié)議的報文的數(shù)據(jù)格式是已知的,那么,開發(fā)人員可以根據(jù)服務器與客戶端之間約定的網(wǎng)絡協(xié)議的報文的數(shù)據(jù)格式,來編寫所述合成算法,以使得所述合成算法可以合成與配置文件配置的報文的數(shù)據(jù)格式相符的待發(fā)送報文。
[0066]本申請實施例中,在開發(fā)人員預先將所述非常規(guī)算法設置于所述壓力測試工具中后,當所述待測試服務器的網(wǎng)絡協(xié)議類型,為所述壓力測試工具中預先設置的非常規(guī)算法所支持的非常規(guī)協(xié)議類型時,便可以調用所述非常規(guī)算法對配置文件中的數(shù)據(jù)進行處理,得到待發(fā)送報文。
[0067]具體地,首先,調用所述非常規(guī)算法的解析算法,對用于配置所述非常規(guī)網(wǎng)絡協(xié)議類型的配置文件進行解析,對配置文件進行解析得到的數(shù)據(jù),包括但不限于:待測試服務器地址數(shù)據(jù)、代理信息數(shù)據(jù)、用戶信息數(shù)據(jù)和請求數(shù)據(jù);其中,所述用戶信息數(shù)據(jù)為由不同真實用戶的用戶數(shù)據(jù)組成的數(shù)據(jù)。
[0068]然后,調用所述非常規(guī)算法的合成算法,將對用于配置所述非常規(guī)網(wǎng)絡協(xié)議類型的配置文件進行解析得到的服務器地址數(shù)據(jù)、代理信息數(shù)據(jù)、用戶信息數(shù)據(jù)和請求數(shù)據(jù),按照所述非常規(guī)協(xié)議類型的報文的格式進行組合,即可得到與所述非常規(guī)網(wǎng)絡協(xié)議類型的報文的數(shù)據(jù)格式相符的待發(fā)送報文。
[0069]本申請實施例中,所述非常規(guī)算法的合成算法,對解析得到的數(shù)據(jù)進行合成得到待發(fā)送報文的過程,也可稱為數(shù)據(jù)封裝過程。
[0070]需要說明的是,本申請實施例中,所述用戶信息數(shù)據(jù)為由不同真實用戶的用戶數(shù)據(jù)組成的數(shù)據(jù)。所述真實用戶的用戶數(shù)據(jù)為服務器在日常運營過程中所積累的真實用戶的用戶數(shù)據(jù),真實用戶的用戶數(shù)據(jù)中可以記錄有用戶的各項屬性信息,比如用戶地域分布、用戶性別比例、用戶行為偏好比例等數(shù)據(jù)。
[0071]在實際應用中,調用真實用戶的用戶數(shù)據(jù)進行測試時,可以直接調用用于存儲用戶數(shù)據(jù)的數(shù)據(jù)庫中的相應字段的數(shù)據(jù),來獲取真實用戶的用戶數(shù)據(jù)。具體地,可以在配置文件中通過〈setdynvars〉標簽來定義用戶數(shù)據(jù),比如,當用于存儲用戶數(shù)據(jù)的數(shù)據(jù)庫文件名為userdb時,可以通過下述代碼調用真實用戶的用戶數(shù)據(jù):
[0072]<setdynvars sourcetype = 〃file〃fiIeid = 〃userdb〃delimiter = 〃 ; 〃order =iter>
[0073]<var name = //userid7>
[0074]<var name = "otherblankl"/>
[0075]</setdynvars>
[0076]在實際應用中,真實用戶的用戶數(shù)據(jù)可以使壓力測試更接近真實情況,比如當待測試服務器為分布于不同地區(qū)的服務器構成的服務器集群時,根據(jù)真實用戶的用戶數(shù)據(jù)中的地域分布數(shù)據(jù),可以真實地模擬運營時,服務器集群中不同地區(qū)的服務器的使用情況;當待測試服務器可以提供多種不同服務時,根據(jù)真實用戶的用戶數(shù)據(jù)中的用戶行為偏好比例,可以真實地模擬運營時,對服務器中提供不同服務的各模塊的使用情況。
[0077]基于根據(jù)真實的用戶數(shù)據(jù),可以真實地模擬運營時服務器的使用情況,本申請實施例中,可以使用真實用戶的用戶數(shù)據(jù),對服務器進行壓力測試,以使得壓力測試的過程更接近用戶真實使用的過程,相對于傳統(tǒng)壓力測試中使用單一的虛擬用戶數(shù)據(jù)進行壓力測試,本申請實施例得到的壓力測試的結果更真實,對完善服務器更具參考意義。
[0078]本申請實施例中,在使用真實的用戶數(shù)據(jù)進行壓力測試時,可以使用不同真實用戶的用戶數(shù)據(jù)同時進行測試,以使得壓力測試中,可以更真實地模擬不同用戶之間的交互行為,相對于傳統(tǒng)壓力測試中使用單一的虛擬用戶數(shù)據(jù)進行壓力測試,本申請實施例得到的壓力測試的結果更真實,對完善服務器更具參考意義。
[0079]本申請實施例中,在通過調用所述非常規(guī)算法的合成算法得到待發(fā)送報文后,便可以將得到的待發(fā)送報文發(fā)送至待測試服務器,進行壓力測試。具體地,可以在壓力測試工具和待測試服務器之間創(chuàng)建一個傳輸控制協(xié)議(Transmiss1n Control Protocol ,TCP)連接,然后將所述待發(fā)送報文發(fā)送給創(chuàng)建的TCP連接。
[0080]本申請實施例中,單個待發(fā)送報文相當于用戶的單個請求,本申請實施例提供的方法可以模擬多個不同用戶,向服務器并行發(fā)起請求的行為,即并行發(fā)送多個待發(fā)送報文,以便檢測服務器的最大負載能力。
[0081]本申請實施例中,在將所述待發(fā)送報文發(fā)送給創(chuàng)建的TCP連接后,便可以監(jiān)測服務器的運行狀況,所述服務器的運行狀況,比如可以是服務器的網(wǎng)絡帶寬利用率、物理內存使用情況、中央處理器(Central Processing Unit,CPU)使用率,等等。本申請實施例中,可以對服務器的任何運行狀況進行監(jiān)控,本申請實施例對此不做限定。
[0082]本申請實施例中,可以自動檢測壓力測試是否完成,在檢測到壓力測試完成后,便可以自動生成壓力測試結果分析文件。具體地,可以通過檢測用于執(zhí)行壓力測試的進程是否已經(jīng)結束,來判斷壓力測試是否完成,當檢測到用于執(zhí)行壓力測試的進行已經(jīng)結束后,便可以自動生成壓力測試結果分析文件。無需人工手動查看測試是否完成,無需人工生成壓力測試結果分析文件,提高了壓力測試結果分析文件的生成效率,節(jié)省了人力資源。
[0083]本申請實施例1提供的報文生成方法,通過調用預先設置在所述壓力測試工具中的、與所述網(wǎng)絡協(xié)議類型對應的非常規(guī)算法,對非常規(guī)網(wǎng)絡協(xié)議類型的配置文件進行解析,并利用解析得到的數(shù)據(jù)合成待發(fā)送報文,進而可以利用合成的待發(fā)送報文進行壓力測試,解決了現(xiàn)有技術中無法對非常規(guī)協(xié)議類型的服務器進行壓力測試的問題。
[0084]需要說明的是,實施例1所提供方法的各步驟的執(zhí)行主體均可以是同一設備,或者,該方法也由不同設備作為執(zhí)行主體。比如,步驟11的執(zhí)行主體可以為設備I,步驟12的執(zhí)行主體可以為設備2;又比如,步驟11和步驟12的執(zhí)行主體均為設備I;等等。
[0085]實施例2
[0086]基于前述實施例1詳細敘述了本申請的發(fā)明構思,為了便于更好的理解本申請的技術特征、手段和效果,下面對本申請的報文生成方法做進一步說明,從而形成了本申請的又一個實施例。
[0087]本申請實施例2中的報文生成過程與實施例1中所述報文生成過程相似,實施例2中沒有介紹到的其它一些步驟可以參見實施例1中的相關描述,此處不再贅述。
[0088]在對該方案的實現(xiàn)方式進行詳細介紹前,先對該方案的實施場景進行簡單介紹。
[0089]該實施場景中,需要對服務器進行壓力測試,服務器與客戶端之間的通信協(xié)議類型為wesync協(xié)議,壓力測試工具中沒有對wesync協(xié)議的配置文件進行解析的解析算法,也沒有合成wesync協(xié)議格式的報文的合成算法。
[°09°]首先,開發(fā)人員根據(jù)wesync協(xié)議的報文格式,確定用于配置所述wesync協(xié)議的配置文件的編寫規(guī)則,然后編寫用于解析該配置文件的wesync解析算法,以及用于根據(jù)解析得到的數(shù)據(jù),合成wesync協(xié)議的報文的wesync合成算法。
[0091]然后,測試人員根據(jù)用于配置所述wesync協(xié)議的配置文件的編寫規(guī)則,編寫配置文件,編寫的配置文件中用于定義wesync協(xié)議類型的代碼如圖2a所示,用于定義被測服務器地址的代碼如圖2b所示,用于定義測試時wesync協(xié)議報文中用戶信息的代碼如圖2c所示,用于定義測試時wesync協(xié)議報文中代理信息數(shù)據(jù)的代碼如圖2d所示,用于定義wesync協(xié)議報文中請求數(shù)據(jù)的代碼如圖2e所示。
[0092]下面將利用測試人員根據(jù)用于配置所述wesync協(xié)議的配置文件的編寫規(guī)則編寫的配置文件,對wesync協(xié)議的服務器進行壓力測試,壓力測試的過程中包括報文生成的過程。
[0093]基于上述場景,實施例2中實現(xiàn)壓力測試的過程如圖3所示,包括下述步驟:
[0094]步驟21:解析用于配置所述wesync協(xié)議的配置文件中用于定義服務器網(wǎng)絡協(xié)議類型的代碼,確定待測試服務器的網(wǎng)絡協(xié)議類型為wesync協(xié)議;
[0095]步驟22:調用wesync解析算法,對用于配置所述wesync協(xié)議的配置文件中的數(shù)據(jù)進行解析,得到待測試服務器的地址數(shù)據(jù)、代理信息數(shù)據(jù)、用戶信息數(shù)據(jù)和請求數(shù)據(jù);
[0096]步驟23:調用wesync合成算法,將解析得到的待測試服務器的地址數(shù)據(jù)、代理信息數(shù)據(jù)、用戶信息數(shù)據(jù)和請求數(shù)據(jù),按照wesync報文的數(shù)據(jù)格式,合成待發(fā)送的wesync報文;
[0097]步驟24:與被測試服務器建立TCP連接,并將所述待發(fā)送的wesync報文發(fā)送給建立的該TCP連接;
[0098]步驟25:監(jiān)測服務器的運行狀況;
[0099]步驟26:自動檢測用于執(zhí)行壓力測試的進程是否已經(jīng)結束;
[0100]步驟27:檢測到用于執(zhí)行壓力測試的進程已經(jīng)結束,自動生成壓力測試結果分析文件。
[0101]本申請實施例2提供的報文生成方法,通過調用預先設置在所述壓力測試工具中的、與wesync協(xié)議對應的wesync解析算法,對用于配置所述wesync協(xié)議的配置文件進行解析,并通過wesync合成算法將解析得到的數(shù)據(jù)合成待發(fā)送報文,進而可以利用合成的待發(fā)送報文進行壓力測試,解決了現(xiàn)有技術中無法對非常規(guī)協(xié)議類型的服務器進行壓力測試的問題。
[0102]實施例3
[0103]為解決現(xiàn)有技術中無法對非常規(guī)協(xié)議類型的服務器進行壓力測試的問題,本申請實施例3提供一種報文生成裝置。該報文生成裝置的結構示意圖如圖4所示,主要包括下述功能單元:
[0104]網(wǎng)絡協(xié)議類型確定單元31,用于確定待測試服務器的網(wǎng)絡協(xié)議類型;所述服務器的網(wǎng)絡協(xié)議類型為服務器與客戶端進行交互時使用的通信協(xié)議的類型;
[0105]報文確定單元32,用于當所述待測試服務器的網(wǎng)絡協(xié)議類型,為所述壓力測試工具中預先設置的非常規(guī)算法所支持的非常規(guī)協(xié)議類型時,調用預先設置在所述壓力測試工具中的、與所述網(wǎng)絡協(xié)議類型對應的非常規(guī)算法,對配置文件中的數(shù)據(jù)進行處理,得到待發(fā)送報文;所述配置文件,為用于對所述待測試服務器進行壓力測試所使用的配置文件;
[0106]所述非常規(guī)算法,包括:用于對與所述非常規(guī)算法匹配的配置文件中的數(shù)據(jù)進行解析的解析算法,以及利用對配置文件進行解析得到的數(shù)據(jù)合成相應的待發(fā)送報文的合成算法。
[0107]所述報文確定單元對配置文件進行解析得到的數(shù)據(jù),包括:待測試服務器地址數(shù)據(jù)、代理信息數(shù)據(jù)、用戶信息數(shù)據(jù)和請求數(shù)據(jù);其中,所述用戶信息數(shù)據(jù)為由不同真實用戶的用戶數(shù)據(jù)組成的數(shù)據(jù)。
[0108]壓力測試單元33,用于將得到的待發(fā)送報文發(fā)送至待測試服務器后,對所述待測試服務器進行壓力測試;
[0109]結果分析文件生成單元34,用于檢測壓力測試是否完成,在檢測到壓力測試完成后,自動生成壓力測試結果分析文件。
[0110]所述網(wǎng)絡協(xié)議為應用層協(xié)議。
[0111]在一種實施方式中,所述報文確定單元,具體用于調用預先設置在所述壓力測試工具中的、與所述網(wǎng)絡協(xié)議類型匹配的解析算法,解析配置文件中的待測試服務器地址數(shù)據(jù)、代理信息數(shù)據(jù)、用戶信息數(shù)據(jù)和請求數(shù)據(jù);
[0112]調用預先設置在所述壓力測試工具中的、與所述網(wǎng)絡協(xié)議類型對應的合成算法,將對配置文件進行解析得到的服務器地址數(shù)據(jù)、代理信息數(shù)據(jù)、用戶信息數(shù)據(jù)和請求數(shù)據(jù)按照所述非常規(guī)協(xié)議類型的報文的格式進行組合。
[0113]本申請實施例3提供的報文生成裝置,通過調用預先設置在所述壓力測試工具中的、與所述網(wǎng)絡協(xié)議類型對應的非常規(guī)算法,對非常規(guī)網(wǎng)絡協(xié)議類型的配置文件進行解析,并利用解析得到的數(shù)據(jù)合成待發(fā)送報文,進而可以利用合成的待發(fā)送報文進行壓力測試,解決了現(xiàn)有技術中無法對非常規(guī)協(xié)議類型的服務器進行壓力測試的問題。
[0114]本領域內的技術人員應明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。
[0115]本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
[0116]這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0117]這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設備上,使得在計算機或其他可編程設備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
[0118]在一個典型的配置中,計算設備包括一個或多個處理器(CPU)、輸入/輸出接口、網(wǎng)絡接口和內存。
[0119]內存可能包括計算機可讀介質中的非永久性存儲器,隨機存取存儲器(RAM)和/或非易失性內存等形式,如只讀存儲器(ROM)或閃存(flash RAM)。內存是計算機可讀介質的示例。
[0120]計算機可讀介質包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結構、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質的例子包括,但不限于相變內存(PRAM)、靜態(tài)隨機存取存儲器(SRAM)、動態(tài)隨機存取存儲器(DRAM)、其他類型的隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、快閃記憶體或其他內存技術、只讀光盤只讀存儲器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設備或任何其他非傳輸介質,可用于存儲可以被計算設備訪問的信息。按照本文中的界定,計算機可讀介質不包括暫存電腦可讀媒體(transitory media),如調制的數(shù)據(jù)信號和載波。
[0121 ]還需要說明的是,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設備中還存在另外的相同要素。
[0122]本領域技術人員應明白,本申請的實施例可提供為方法、系統(tǒng)或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例或結合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。
[0123]以上所述僅為本申請的實施例而已,并不用于限制本申請。對于本領域技術人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原理之內所作的任何修改、等同替換、改進等,均應包含在本申請的權利要求范圍之內。
【主權項】
1.一種報文生成方法,應用于壓力測試工具,其特征在于,包括: 確定待測試服務器的網(wǎng)絡協(xié)議類型;所述服務器的網(wǎng)絡協(xié)議類型為服務器與客戶端進行交互時使用的通信協(xié)議的類型; 當所述待測試服務器的網(wǎng)絡協(xié)議類型,為所述壓力測試工具中預先設置的非常規(guī)算法所支持的非常規(guī)協(xié)議類型時,調用預先設置在所述壓力測試工具中的、與所述網(wǎng)絡協(xié)議類型對應的非常規(guī)算法,對配置文件中的數(shù)據(jù)進行處理,得到待發(fā)送報文;所述配置文件,為用于對所述待測試服務器進行壓力測試所使用的配置文件; 所述非常規(guī)算法,包括:用于對與所述非常規(guī)算法匹配的配置文件中的數(shù)據(jù)進行解析的解析算法,以及利用對配置文件進行解析得到的數(shù)據(jù)合成相應的待發(fā)送報文的合成算法。2.如權利要求1所述方法,其特征在于,對配置文件進行解析得到的數(shù)據(jù),包括:待測試服務器地址數(shù)據(jù)、代理信息數(shù)據(jù)、用戶信息數(shù)據(jù)和請求數(shù)據(jù);其中,所述用戶信息數(shù)據(jù)為由不同真實用戶的用戶數(shù)據(jù)組成的數(shù)據(jù)。3.如權利要求1所述方法,其特征在于,所述方法還包括: 將得到的待發(fā)送報文發(fā)送至待測試服務器后,對所述待測試服務器進行壓力測試; 檢測對所述待測試服務器進行的壓力測試是否完成,在檢測到壓力測試完成后,自動生成壓力測試結果分析文件。4.如權利要求1所述方法,其特征在于,所述網(wǎng)絡協(xié)議為應用層協(xié)議。5.如權利要求1?4任一權項所述方法,其特征在于,調用預先設置在所述壓力測試工具中的、與所述網(wǎng)絡協(xié)議類型對應的非常規(guī)算法,對配置文件中的數(shù)據(jù)進行處理,包括: 調用預先設置在所述壓力測試工具中的、與所述網(wǎng)絡協(xié)議類型匹配的解析算法,解析配置文件中的待測試服務器地址數(shù)據(jù)、代理信息數(shù)據(jù)、用戶信息數(shù)據(jù)和請求數(shù)據(jù); 調用預先設置在所述壓力測試工具中的、與所述網(wǎng)絡協(xié)議類型對應的合成算法,將對配置文件進行解析得到的服務器地址數(shù)據(jù)、代理信息數(shù)據(jù)、用戶信息數(shù)據(jù)和請求數(shù)據(jù)按照所述非常規(guī)協(xié)議類型的報文的格式進行組合。6.一種報文生成裝置,應用于壓力測試工具,其特征在于,包括: 網(wǎng)絡協(xié)議類型確定單元,用于確定待測試服務器的網(wǎng)絡協(xié)議類型;所述服務器的網(wǎng)絡協(xié)議類型為服務器與客戶端進行交互時使用的通信協(xié)議的類型; 報文確定單元,用于當所述待測試服務器的網(wǎng)絡協(xié)議類型,為所述壓力測試工具中預先設置的非常規(guī)算法所支持的非常規(guī)協(xié)議類型時,調用預先設置在所述壓力測試工具中的、與所述網(wǎng)絡協(xié)議類型對應的非常規(guī)算法,對配置文件中的數(shù)據(jù)進行處理,得到待發(fā)送報文;所述配置文件,為用于對所述待測試服務器進行壓力測試所使用的配置文件; 所述非常規(guī)算法,包括:用于對與所述非常規(guī)算法匹配的配置文件中的數(shù)據(jù)進行解析的解析算法,以及利用對配置文件進行解析得到的數(shù)據(jù)合成相應的待發(fā)送報文的合成算法。7.如權利要求6所述裝置,其特征在于,所述報文確定單元對配置文件進行解析得到的數(shù)據(jù),包括:待測試服務器地址數(shù)據(jù)、代理信息數(shù)據(jù)、用戶信息數(shù)據(jù)和請求數(shù)據(jù);其中,所述用戶信息數(shù)據(jù)為由不同真實用戶的用戶數(shù)據(jù)組成的數(shù)據(jù)。8.如權利要求6所述裝置,其特征在于,所述裝置還包括: 壓力測試單元,用于將得到的待發(fā)送報文發(fā)送至待測試服務器后,對所述待測試服務器進行壓力測試; 結果分析文件生成單元,用于檢測對所述待測試服務器進行的壓力測試是否完成,在檢測到壓力測試完成后,自動生成壓力測試結果分析文件。9.如權利要求6所述裝置,其特征在于,所述網(wǎng)絡協(xié)議為應用層協(xié)議。10.如權利要求6?9任一權項所述裝置,其特征在于, 所述報文確定單元,具體用于調用預先設置在所述壓力測試工具中的、與所述網(wǎng)絡協(xié)議類型匹配的解析算法,解析配置文件中的待測試服務器地址數(shù)據(jù)、代理信息數(shù)據(jù)、用戶信息數(shù)據(jù)和請求數(shù)據(jù);調用預先設置在所述壓力測試工具中的、與所述網(wǎng)絡協(xié)議類型對應的合成算法,將對配置文件進行解析得到的服務器地址數(shù)據(jù)、代理信息數(shù)據(jù)、用戶信息數(shù)據(jù)和請求數(shù)據(jù)按照所述非常規(guī)協(xié)議類型的報文的格式進行組合。
【文檔編號】H04L29/06GK105915529SQ201610334503
【公開日】2016年8月31日
【申請日】2016年5月19日
【發(fā)明人】姚文迪, 丁玲, 宋琪, 羅詩堯
【申請人】微夢創(chuàng)科網(wǎng)絡科技(中國)有限公司