一種腳本轉(zhuǎn)換方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種腳本轉(zhuǎn)換方法和裝置。
【背景技術(shù)】
[0002]隨著云計(jì)算與虛擬化的發(fā)展,互聯(lián)網(wǎng)用戶規(guī)模越來越大,大量的互聯(lián)網(wǎng)應(yīng)用在上線前都需要進(jìn)行大量的性能測試,如鐵路春節(jié)售票、春節(jié)搶紅包和互聯(lián)網(wǎng)各種“秒殺”活動(dòng)。性能測試是通過自動(dòng)化的測試工具模擬正常、峰值以及異常負(fù)載條件,以便對(duì)系統(tǒng)的各項(xiàng)性能指標(biāo)進(jìn)行測試。
[0003]LoadRunner是一種預(yù)測系統(tǒng)行為和性能的工業(yè)級(jí)負(fù)載測試工具。LoadRunner具有腳本編寫簡單、商業(yè)化程度高等特點(diǎn),其可以應(yīng)用于各種體系架構(gòu)的自動(dòng)負(fù)載測試。LoadRunner通過模擬海量并發(fā)負(fù)載,并且對(duì)海量并發(fā)負(fù)載進(jìn)行實(shí)時(shí)性能監(jiān)測,來查找和確認(rèn)系統(tǒng)性能問題。但是,LoadRunner存在著商業(yè)許可費(fèi)用高、測試軟件體積龐大和測試占用系統(tǒng)資源多等問題。
[0004]Jmeter是Apache組織開發(fā)的開源壓力測試工具。Jmeter用于對(duì)軟件做壓力測試,其可以測試靜態(tài)和動(dòng)態(tài)資源,例如:測試靜態(tài)文件、Java小服務(wù)程序、CGI腳本、Java對(duì)象、數(shù)據(jù)庫,F(xiàn)TP服務(wù)器等。Jmeter可以在不同壓力類別下,測試并分析模擬海量負(fù)載的強(qiáng)度和整體性能。
[0005]Jmeter具有免費(fèi)使用、與平臺(tái)無關(guān)、支持大規(guī)模分布式部署等特點(diǎn)。為充分利用Jmeter的優(yōu)勢(shì),可以將LoadRunner的測試腳本和測試場景轉(zhuǎn)換為Jmeter的測試計(jì)劃,然后對(duì)系統(tǒng)進(jìn)行性能測試。然而,目前Jmeter測試計(jì)劃只能通過人工方式配置,通過Badboy軟件進(jìn)行錄制或者代理錄制的方式進(jìn)行配置。上述Jmeter測試計(jì)劃的配置方式需要消耗大量的測試時(shí)間和調(diào)試驗(yàn)證時(shí)間,成本較高。
【發(fā)明內(nèi)容】
[0006]本發(fā)明提供一種腳本轉(zhuǎn)換方法和裝置,用以解決現(xiàn)有技術(shù)中配置Jmeter測試計(jì)劃測試時(shí)間成本高的問題。
[0007]基于上述技術(shù)問題,本發(fā)明是通過以下技術(shù)方案來解決的。
[0008]本發(fā)明提供了一種腳本轉(zhuǎn)換方法,包括:根據(jù)LoadRunner的腳本路徑,獲取符合預(yù)設(shè)條件的LoadRunner測試腳本;利用LoadRunner控制器,獲取LoadRunner測試場景配置信息;分別將所述LoadRunner測試腳本和所述LoadRunner測試場景配置信息轉(zhuǎn)換為Jmeter格式的xml段落;將所述LoadRunner測試腳本和所述LoadRunner測試場景配置信息分別轉(zhuǎn)換成的xml段落進(jìn)行合并,形成Jmeter測試計(jì)劃。
[0009]其中,符合預(yù)設(shè)條件的LoadRunner測試腳本,包括:LoadRunner測試腳本的協(xié)議為Web協(xié)議、且LoadRunner測試腳本的語言為C語言。
[0010]其中,將所述LoadRunner測試腳本轉(zhuǎn)換為Jmeter格式的xml段落,包括:對(duì)所述LoadRunner測試腳本進(jìn)行函數(shù)調(diào)用信息分析,形成函數(shù)信息列表,并基于函數(shù)信息列表映射出Jmeter格式的超文本傳輸協(xié)議HTTP采樣器、后置處理器和斷言xml段落;根據(jù)所述LoadRunner測試腳本的參數(shù)化文件,獲得Jmeter格式的配置元件xml段落。
[0011]其中,將所述LoadRunner測試場景配置信息轉(zhuǎn)換為Jmeter格式的xml段落,包括:所述LoadRunner測試場景配置信息包括:運(yùn)行邏輯控制配置、腳本運(yùn)行時(shí)配置和虛擬用戶數(shù)據(jù)配置;從運(yùn)行邏輯控制配置中獲取RunLogic參數(shù);從腳本運(yùn)行時(shí)配置中獲取CustomUserAgent參數(shù)和ThinkTime參數(shù);從虛擬用戶數(shù)據(jù)配置中獲取GroupVuser參數(shù);通過FreeMark定義的映射模板,將RunLogic參數(shù)映射為Jmeter格式的邏輯控制器xml段落、將CustomUserAgent參數(shù)映射為Jmeter格式的HTTP信息頭處理器xml段落、將ThinkTime參數(shù)映射為Jmeter格式的定時(shí)器xml段落、將Group Vuser參數(shù)映射為Jmeter格式的線程組xml段落。
[0012]本發(fā)明還提供了一種腳本轉(zhuǎn)換裝置,包括:第一獲取模塊,用于根據(jù)LoadRunner的腳本路徑,獲取符合預(yù)設(shè)條件的LoadRunner測試腳本;第二獲取模塊,用于利用LoadRunner控制器,獲取LoadRunner測試場景配置信息;轉(zhuǎn)換模塊,用于分別將所述LoadRunner測試腳本和所述LoadRunner測試場景配置信息轉(zhuǎn)換為Jmeter格式的xml段落;合并模塊,用于將所述LoadRunner測試腳本和所述LoadRunner測試場景配置信息分別轉(zhuǎn)換成的xml段落進(jìn)行合并,形成Jmeter測試計(jì)劃。
[0013]其中,符合預(yù)設(shè)條件的LoadRunner測試腳本,包括:LoadRunner測試腳本的協(xié)議為Web協(xié)議、且LoadRunner測試腳本的語言為C語言。
[0014]其中,在將所述LoadRunner測試腳本轉(zhuǎn)換為Jmeter格式的xml段落時(shí),所述轉(zhuǎn)換模塊,具體用于:對(duì)所述LoadRunner測試腳本進(jìn)行函數(shù)調(diào)用信息分析,形成函數(shù)信息列表,并基于函數(shù)信息列表映射出Jmeter格式的HTTP采樣器、后置處理器和斷言xml段落;根據(jù)所述LoadRunner測試腳本的參數(shù)化文件,獲得Jmeter格式的配置元件xml段落。
[0015]其中,在將所述LoadRunner測試場景配置信息轉(zhuǎn)換為Jmeter格式的xml段落時(shí),所述轉(zhuǎn)換模塊,具體用于:所述LoadRunner測試場景配置信息包括:運(yùn)行邏輯控制配置、腳本運(yùn)行時(shí)配置和虛擬用戶數(shù)據(jù)配置;從運(yùn)行邏輯控制配置中獲取RunLogic參數(shù);從腳本運(yùn)行時(shí)配置中獲取CustomUserAgent參數(shù)和ThinkTime參數(shù);從虛擬用戶數(shù)據(jù)配置中獲取GroupVuser參數(shù);通過FreeMark定義的映射模板,將RunLogic參數(shù)映射為Jmeter格式的邏輯控制器xml段落、將CustomUserAgent參數(shù)映射為Jmeter格式的HTTP信息頭處理器xml段落、將ThinkTime參數(shù)映射為Jmeter格式的定時(shí)器xml段落、將Group Vuser參數(shù)映射為Jmeter格式的線程組xml段落。
[0016]本發(fā)明有益效果如下:
[0017]通過本發(fā)明實(shí)施例實(shí)現(xiàn)了 LoadRunner的HTTP腳本和場景到Jmeter測試計(jì)劃的自動(dòng)轉(zhuǎn)換,可以大量節(jié)約軟件使用成本、利用現(xiàn)有的測試腳本和測試人員、節(jié)約大量的人員腳本執(zhí)彳丁時(shí)間、提尚測試效率等優(yōu)點(diǎn)。
【附圖說明】
[0018]圖1是根據(jù)本發(fā)明一實(shí)施例的腳本轉(zhuǎn)換方法的流程圖;
[0019]圖2是根據(jù)本發(fā)明一實(shí)施例的測試腳本的轉(zhuǎn)換步驟流程圖;
[0020]圖3是根據(jù)本發(fā)明一實(shí)施例的測試場景配置信息的轉(zhuǎn)換步驟流程圖;
[0021]圖4是根據(jù)本發(fā)明一實(shí)施例的腳本轉(zhuǎn)換裝置的結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0022]以下結(jié)合附圖以及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不限定本發(fā)明。
[0023]本發(fā)明實(shí)施例提供了一種腳本轉(zhuǎn)換方法,如圖1所示,為根據(jù)本發(fā)明一實(shí)施例的腳本轉(zhuǎn)換方法的流程圖。
[0024]LoadRunner包括測試腳本和測試場景。本發(fā)明實(shí)施例將測試腳本和測試場景,轉(zhuǎn)換為Jmeter測試計(jì)劃。
[0025]步驟SI 10,根據(jù)LoadRunner的腳本路徑,獲取符合預(yù)設(shè)條件的LoadRunner測試腳本(簡稱測試腳本)。
[0026]預(yù)設(shè)條件包括:判斷測試腳本協(xié)議是否為Web協(xié)議,判斷測試腳本語言是否為C語言。測試腳本協(xié)議為互聯(lián)網(wǎng)Web協(xié)議、且測試腳本語言為C語言的腳本符合條件。
[0027]LoadRunner測試腳本包括:代碼文件、參數(shù)配置文件、屬性描述文件、參數(shù)化文件等多個(gè)文件。其中,代碼文件為.c文件;參數(shù)配置文件為.prm文件;屬性描述文件為.usr文件;參數(shù)化文件為.dat文件。
[0028]可以針對(duì)測試腳本中的指定的文件判斷測試腳本是否符合條件。
[0029]用戶輸入LoadRunner測試腳本的腳本路徑;針對(duì)該腳本路徑指向的測試腳本,采用properties文件方式分析該測試腳本的屬性描述文件,如:.usr配置文件;判斷屬性描述文件的General段的ActiveTypes屬性是否為QTWeb,如果是,則表示測試腳本協(xié)議為Web協(xié)議,獲取該測試腳本,如果否,則舍棄該腳本,并結(jié)束流程。其中,properties文件是一種配置文件,主要用于表達(dá)配置信息,文件類型為*.properties,格式為文本文件,文件的內(nèi)容的格式是“鍵=值”。
[0030]獲得LoadRunner腳本路徑下,除pre_cc1.c文件以外的所有.c文件;使用預(yù)先設(shè)置的C語法分析器,獲得所有.c文件中的函數(shù)組成的待檢函數(shù)列表;將待檢函數(shù)列表中的每個(gè)函數(shù)與預(yù)先配置的支持函數(shù)列表中的函數(shù)進(jìn)行對(duì)比,判斷支持函數(shù)列表中是否存在與待檢函數(shù)列表中的函數(shù)相匹配的函數(shù),若不存在,則說明函數(shù)列表中的函數(shù)存在系統(tǒng)不支持的函數(shù),輸出錯(cuò)誤提示信息且結(jié)束本流程;若存在,則說明函數(shù)列表中的函數(shù)都是系統(tǒng)支持的函數(shù),即測試腳本語言為C語言。
[0031]支持函數(shù)列表中的函數(shù)包括但不限于:web_link、web_url、web_submit_form、web_