1、性能測試工具的使用原理

軟件系統中客户端向服務端發送請求,服務端將結果返回,這個過程通過協議進行交流。

性能測試工具就像一個代理服務器(proxy server),把客户端的行為通過腳本複製下來,通過腳本運行,模擬客户端向服務器發送請求。

壓力服務器(負載機)。性能測試工具是通過向服務器產生壓力,達到監測性能的目的。要模擬多個客户端併發請求時,性能測試工具就通過配置,複製出多個代理服務器,相當於有多個線程或者進程發送請求,線程或進程運行是需要佔用資源。所以當一台測試機器的資源有限時,就需要多個測試機合作完成。

在多個進程或線程請求服務器時,性能測試工具監聽服務器的各項性能指標。比如服務器的吞吐量、響應時間、每秒點擊數等。有一些性能測試工具還可以監聽中間件的指標,比如cpu,內存,顯卡、磁盤空間。

最後對監聽的數據繪製出圖表,以供測試工程師分析參考。

 2、關於loadrunner中的使用問題

2.1 loadrunner的參數化

    在腳本中,有一些變量需要進行參數化。比如在登錄的時候,需要使用不同的用户名和密碼登錄,這個時候就可以對username和password進行參數化。參數化的時候當有兩個參數有對應關係時,應該只建立一個參數文件。參數文件中有兩張表,並且在第一張表中新增列,把第二張表的數據添加進去。

 

另外對於參數設置有9種形式。需要根據不同的場景選擇不同的模式。比如註冊用户時,用户名應該是唯一的,此時,數據的分配方法應該是unique。而登錄的話,可以順序取值,分配方法為sequential。

數據的分配方法有unique(唯一的)、sequential(順序的)、random(隨機的); 數據更新方法有種:each iteration(每一個迭代);each occurence(每一次出現);once(第一次迭代中分配的將在之後每一輪迭代中重複使用);

舉例説明:當分配方式是sequential,更新方法是each iteration:説明第一輪迭代時,每一個vuser都取第一個值。第二輪迭代時,每一個vuser都取第二個值。

                 當分配方式是sequential,更新方法是each iteration:説明第一輪迭代時,第一個vuser取第一個值,第2個vuser取第2個值,第n個vuser取第n個值。第二輪迭代時,第一個vuser取第n+1個值。

                 當分配方式是sequential,更新方法是once:説明第一輪迭代時,第一個vuser取第一個值,第2個vuser取第2個值,第n個vuser取第n個值。第二輪迭代時,第一個vuser取第1個值,第2個vuser取第2個值,第n個vuser取第n個值。

2.2  腳本錄製的模式有兩種,一種是錄製url-based script,一種是html-based script。html的方式錄製的腳本比較直觀,但是由於他的腳本與上下文操作有關,如果上文出現問題,會影響下文的執行。(web_submit_form、web_link都是html—based script錄製的腳本形式 ),而url模式錄製的腳本與上下文無關(例如web_submit_data、web_url)。

2.3 場景設置

在性能測試腳本就緒後,就可以進行場景設置了,場景有兩種模式,一種是基於目標的場景,一種是手動場景。一般較多的都是手動場景。loadrunner默認狀態下都是基於結果場景。如果需要基於目標進行場景設置,需要在添加腳本的界面,勾選第二個。

Emmagee 性能測試工具_服務器

基於目標的場景一般用來測試,具體的性能指標項,比如20個虛擬用户在執行業務時,在5min內是否能夠達到點擊率100tps.目標場景有5中,包括虛擬用户數vuser、每秒點擊數hit per second。