轉(zhuǎn)帖|對比評測|編輯:龔雪|2015-09-30 16:08:43.000|閱讀 6935 次
概述:本文將以當(dāng)前最新的LoadRunner v12為測試案例,向大家展示LoadRunner在高度模仿真實(shí)用戶行為中的優(yōu)勢。相比于其他測試工具,LoadRunner能支持更廣泛的協(xié)議和技術(shù),能測試各種IT基礎(chǔ)架構(gòu),為用戶的特殊環(huán)境提供特殊的解決方案。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
軟件測試已逐漸成為軟件開發(fā)過程中的必不可少的環(huán)節(jié),隨著功能測試的必要性被普遍認(rèn)同,自動化測試以及性能測試也逐漸嶄露頭角。性能測試是指在一定的負(fù)載情況下,系統(tǒng)的響應(yīng)時間等特性是否滿足特定的性能需求。
相比于其他測試工具,LoadRunner能支持更廣泛的協(xié)議和技術(shù),能測試各種IT基礎(chǔ)架構(gòu),為用戶的特殊環(huán)境提供特殊的解決方案。本文將以當(dāng)前最新的LoadRunner12社區(qū)版來進(jìn)行闡述。相比于之前版本,LoadRunner12社區(qū)版主要有以下新特性:
性能測試工具Loadrunner
LoadRunner主要由以下4個部分組成:
首先通過VuGen來錄制模擬用戶行為的腳本;然后根據(jù)性能測試目標(biāo),在Controller中設(shè)計(jì)場景,指定負(fù)載生成的方式(如LG使用數(shù),并發(fā)用戶數(shù),執(zhí)行時長等);接著執(zhí)行場景并監(jiān)控被負(fù)載服務(wù)器的性能指標(biāo);待場景執(zhí)行完畢,調(diào)用Analysis來對生成的數(shù)據(jù)進(jìn)行分析,最后得出性能測試報(bào)告。
使用LoadRunner進(jìn)行性能測試,大體可分為3個步驟:
性能測試的第一步也是最重要的一步,就是生成虛擬用戶腳本(Vuser Script)。VuGen是基于錄制-回放的工具,提供了整個腳本的開發(fā)環(huán)境。當(dāng)你在應(yīng)用程序中執(zhí)行業(yè)務(wù)流程時,VuGen會將你的操作錄制下來,自動轉(zhuǎn)換成腳本,作為用戶行為的模擬。
多數(shù)情況下,我們會在錄制生成的腳本上根據(jù)需求進(jìn)行修改。錄制流程主要包括以下協(xié)議選擇、錄制選項(xiàng)設(shè)置、開始錄制、插入命令、停止錄制。對一般B/S架構(gòu)的Web應(yīng)用,選擇Web - HTTP/HTML協(xié)議就可以了。
如果不能確定目標(biāo)系統(tǒng)使用了哪些協(xié)議,可以使用Protocol Advisor 來進(jìn)行協(xié)議分析。
選擇協(xié)議之后,進(jìn)行錄制選項(xiàng)設(shè)置,再點(diǎn)擊紅色按鈕開始錄制腳本。
可以看到,Vuser Script腳本由以下三部分組成:
vuser_init: 虛擬用戶的初始化函數(shù),一般將用戶初始化的操作放在這里,如登錄操作,只會運(yùn)行一次。
Action: 虛擬用戶要做的業(yè)務(wù)操作,也就是測試內(nèi)容的主體。可以迭代多次。
vuser_end: 與vuser_init相對應(yīng)的收尾工作,如退出登錄操作,只會運(yùn)行一次。
開始錄制腳本后,可以在recording界面進(jìn)行執(zhí)行插入事務(wù)、插入集合點(diǎn)、插入注釋以及結(jié)束錄制等命令。
完成錄制后,腳本通常會包含web_url()等函數(shù)。Vuser Script腳本中常用函數(shù)有:
web_add_cookie():負(fù)責(zé)為Vuser腳本添加一個cookie信息。
web_url():可以模擬用戶的HTTP Get請求。
web_submit_form():基于頁面表單模擬用戶的HTTP Post請求。該函數(shù)會自動檢測在當(dāng)前頁面上是否存在form表單,然后將表單中數(shù)據(jù)進(jìn)行傳送。
web_submit_data():無需頁面form支持就可以模擬用戶的HTTP Post請求。
web_custom_request():可以模擬用戶的HTTP Get以及Post請求。
緊接著,點(diǎn)擊replay按鈕進(jìn)行回放驗(yàn)證。我們可以把服務(wù)器返回的響應(yīng)內(nèi)容保存為參數(shù),在請求時使用該參數(shù),可實(shí)現(xiàn)動態(tài)數(shù)據(jù)。
如常見的系統(tǒng)登錄功能,在登錄后服務(wù)器會返回SeesionID,登錄后的操作都需要提交該SessionID以確認(rèn)身份。使用Vugen錄制腳本時,將會記錄服務(wù)器返回的SessionID并在下一個請求中發(fā)給服務(wù)器。
事務(wù)函數(shù)可以標(biāo)記完成該業(yè)務(wù)所需要的操作內(nèi)容。通過在業(yè)務(wù)操作開始前添加一個事務(wù)開始的計(jì)數(shù)器,在業(yè)務(wù)操作結(jié)束后添加一個事務(wù)結(jié)束的計(jì)數(shù)器,VuGen可以自動計(jì)算出函數(shù)間的時間差,即事務(wù)響應(yīng)時間。
添加事務(wù)主要涉及以下2個函數(shù):
事務(wù)開始函數(shù):lr_start_transaction(“事務(wù)名”)
事務(wù)結(jié)束函數(shù):lr_end_transaction(“事務(wù)名”,LR_AUTO)
另外事務(wù)還支持事務(wù)嵌套:
lr_start_sub_transaction(“子事務(wù)名”,“父事務(wù)名”)
lr_end_sub_transaction(“子事務(wù)名”,“父事務(wù)名”)
一般地,錄制得到的腳本都會包含思考時間。思考時間是LoadRunner提供的用于模擬用戶等待的方式。在性能測試時只有啟用思考時間,才能真正地按照用戶的操作速度來完成請求,得到真實(shí)情況下的負(fù)載數(shù)據(jù);否則則是全負(fù)載下的理論峰值數(shù)據(jù)。
思考時間函數(shù):lr_think_time()
集合點(diǎn)函數(shù)能讓虛擬用戶集合在同一時間點(diǎn)上來進(jìn)行操作,幫助生成有效可控的事務(wù)并發(fā)。
集合點(diǎn)有以下三種集合策略,一般可以使用c策略來明確指定并發(fā)數(shù)。
a.當(dāng)百分之多少的用戶到達(dá)集合點(diǎn)時繼續(xù)執(zhí)行腳本
b.當(dāng)百分之多少的運(yùn)行用戶到達(dá)集合點(diǎn)時繼續(xù)執(zhí)行腳本
c.當(dāng)多少個用戶到達(dá)集合點(diǎn)時繼續(xù)執(zhí)行繼續(xù)
集合點(diǎn)函數(shù):lr_rendezvous()
當(dāng)我們錄制完腳本后,需要對腳本進(jìn)一步改進(jìn),通過參數(shù)化來確保腳本能夠動態(tài)運(yùn)行,從而更加真實(shí)地模擬真實(shí)用戶操作。
參數(shù)化的步驟主要包括:選擇要參數(shù)化的內(nèi)容;設(shè)置參數(shù)取值以及參數(shù)更新方式;回放腳本驗(yàn)證參數(shù)值等。參數(shù)更新方式有順序取值、隨機(jī)取值、唯一取值三種類型,這里就不一一介紹了。
選擇要參數(shù)化的內(nèi)容,右鍵菜單選擇“Replace with a Parameter”,點(diǎn)擊“Create New Parameter”。
設(shè)置參數(shù)取值,參數(shù)類型可以是File類型、Table類型、Random Number類型、Date/Time類型等。這里使用Table類型,同一行中列名為username及password的記錄將作為表單中用戶名和密碼的動態(tài)參數(shù)值。除了手動添加參數(shù)值外,也可以通過ODBC方式從DB中獲取參數(shù)值。
參數(shù)化后,腳本中的username及password字段取值已經(jīng)不是靜態(tài)值了,而是由“{}”包圍起來的動態(tài)參數(shù)值。
當(dāng)Vuser Script開發(fā)完成后,使用Controller將這個執(zhí)行腳本的用戶從單人轉(zhuǎn)化為多人,從而模擬大量用戶操作以形成系統(tǒng)負(fù)載。場景是一種模擬大量用戶操作的技術(shù)手段,通過配置和執(zhí)行場景向服務(wù)器產(chǎn)生負(fù)載,監(jiān)控系統(tǒng)的各項(xiàng)性能指標(biāo)。
通過對場景的設(shè)計(jì),可以生成和用戶需求相同的真實(shí)負(fù)載。場景分為目標(biāo)場景和手動場景。一般地,我們使用使用自動場景來進(jìn)行驗(yàn)收測試,使用手動場景來定位性能瓶頸。
通過設(shè)置一個運(yùn)行目標(biāo),Controller會自動逐漸增加負(fù)載,測試系統(tǒng)能否穩(wěn)定達(dá)到預(yù)期目標(biāo)。如果達(dá)標(biāo)則說明系統(tǒng)的性能符合測試目標(biāo),否則提示無法達(dá)標(biāo)。自動場景是定性型性能測試,我們只關(guān)心最后性能測試的結(jié)論是否符合性能需求。
自動場景中提供了5種目標(biāo)。手動場景中,可以通過增減Vuser來模擬真實(shí)的用戶請求,完成負(fù)載的生成。手動場景是定量型性能測試,通過觀察在負(fù)載增加過程中系統(tǒng)各個組件的變化情況,來定位性能瓶頸。
完成場景設(shè)計(jì)后,點(diǎn)擊Run標(biāo)簽頁切換到場景監(jiān)控主界面。在左側(cè)Scenario Groups中列舉了所有Vuser的運(yùn)行狀態(tài);在右側(cè)Scenario Status中列舉了當(dāng)前場景的運(yùn)行情況;在下方Available Graphs中列舉了所有可監(jiān)控的計(jì)數(shù)器類型,通過添加計(jì)數(shù)器實(shí)例可以讓LR監(jiān)控其性能數(shù)據(jù)(如CPU、內(nèi)存使用率等)。
我們可以監(jiān)控本地服務(wù)器或遠(yuǎn)程Windows/Linux/AIX服務(wù)器(監(jiān)控Linux/AIX需要先安裝rstatd組件)以及Weblogic/WebSphere等應(yīng)用服務(wù)器的性能數(shù)據(jù)。
點(diǎn)擊Start Scenario按鈕執(zhí)行場景,可以看到交互計(jì)劃圖開始變化,監(jiān)控主界面的Vuser狀態(tài)開始變化,Running Vuser開始增加,Transaction Graphs等計(jì)數(shù)器開始顯示數(shù)據(jù)。
點(diǎn)擊Vusers 按鈕可以查看當(dāng)前所有Vuser的狀態(tài),并可以在執(zhí)行過程中通過Add Vuser及Stop Vuser來動態(tài)調(diào)整負(fù)載情況。選中Vuser,右鍵選擇Show Vuser可以查看該Vuser真實(shí)的運(yùn)行情況。
待場景執(zhí)行完畢后,點(diǎn)擊Results->Analyze Results來啟動數(shù)據(jù)收集分析器,如圖31。它會導(dǎo)入場景數(shù)據(jù)并生成性能測試報(bào)告。
Summary Report包括了場景統(tǒng)計(jì)信息、事務(wù)摘要、HTTP響應(yīng)摘要等信息;Graphs默認(rèn)只包含最基本的一些計(jì)數(shù)器數(shù)據(jù)圖,可以通過右鍵Add New Item->Add New Graph來添加你需要的計(jì)數(shù)器。
在Analysis中經(jīng)常需要和各種Graphs打交道,這就涉及到圖的設(shè)置,常用設(shè)置包括:
Set Filter/Group By:對圖形設(shè)置過濾規(guī)則;
Set Granularity:設(shè)置數(shù)據(jù)采樣點(diǎn)的間距,以秒為單位;
View Raw Data:打開圖形對應(yīng)的原始數(shù)據(jù);
Comments:在圖中添加注釋;
Display Options:設(shè)置圖形顯示樣式;
Merge Graphs:對圖形進(jìn)行合并,來直觀的獲取相關(guān)計(jì)數(shù)器之間的關(guān)聯(lián)關(guān)系;
Auto Correlate: 自動分析該圖形與其他計(jì)數(shù)器的關(guān)聯(lián)性,通過它可以發(fā)現(xiàn)數(shù)據(jù)之間的相互依賴性,從而定位性能瓶頸。Collrelation Match代表關(guān)聯(lián)性的強(qiáng)弱程度,數(shù)值越大說明關(guān)聯(lián)性越強(qiáng)。
通過本文的案例,我們可以看到LoadRunner在高度模仿真實(shí)用戶行為(集合點(diǎn)、參數(shù)化、虛擬IP、分布式LG等技術(shù))中展示出的優(yōu)勢。
本文轉(zhuǎn)載自
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn