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