性能測試基礎---LR場景設置


·場景設置。
性能測試場景依托於性能測試腳本,但是又獨立於腳本。
所謂場景(scenario),就是用來模擬多用戶運行性能測試腳本的情形,是來源於我們對於業務場景的分析的。

性能測試對於業務場景的分析,一般來說我們采取的策略是悲觀的策略,多考慮一些相對極端的情況。
然后對於業務場景的模擬,一般我們都會采用等價、冪等的思想。

一般來說,性能測試場景分為兩類:單一場景和混合場景。
·單一場景:在一個場景中,只跑一個腳本(一類業務)。
多用於負載測試、壓力測試、容量測試、並發測試、基准測試等。


·混合場景:在一個場景中,運行多個腳本(多類業務)。
多用於負載測試、壓力測試(主要)、容量測試、配置測試、並發測試(主要)等。


·在LR中,是通過Controller組件來實現場景的設計、運行等功能的。
LR的Controller組件提供了兩種類型的場景創建方式:
·目標場景:goal scenario:以特定的性能測試目標為驅動來實現的場景,該類場景中,我們只能設置性能目標,不能控制每一個虛擬用戶的具體的行為(啟動、持續和結束)。
該類場景中,只提供了以下五種性能測試目標的驅動:
·Vusers:虛擬用戶數。
·Transactions per second:簡稱TPS,每秒事務數。
·Hits per second:簡稱HPS,每秒點擊數,在很多互聯網公司,有一個指標叫QPS,其實本質上就是HPS。所謂的query和hit一般都是指協議級別的請求(包含資源請求)。
·Transaction response time:事務響應時間。
·Pages per Minute:每分鍾的頁面數。僅在HTML模式下才會生效。

PS:一般來說,目標場景在實際工作中多用於驗收測試。

·手工場景:mannual scenario、是以虛擬用戶為驅動來實現的一種場景。也就意味着,我們可以控制每一個虛擬用戶的數量、啟動、持續和結束等行為。
一般來說,因為性能測試需求本身的多樣化,我們在實際工作中會更多的使用手工場景。
手工場景,又分為用戶組模式(Group mode)和百分比模式(PercentAge mode)。對於場景的實現的影響並不大。


·場景相關設置:
·Details:詳情中主要有一個功能要關注,就是刷新功能。
兩種情況下,要通過刷新來實現腳本的刷新。
·script:即腳本本身的內容發生變更,在Vugen中保存之后,要在當前場景中起效,則要刷新腳本。
·運行時設置:如果Vugen中的運行時設置發生變更,希望在當前場景中保持一致,則需要刷新運行時設置。

·Service Level Agreement:簡稱SLA,服務級別評價。該功能最重要的是其所用到的分析思想。
SLA選項可以在場景執行之前添加(Controller),也可以在場景運行之后添加(Analysis)。
SLA是采取的分析思想是:因素+目標。

·Start Time:調度器。調度器一定是在點擊啟動場景之后才會生效。


·Schedule by:場景計划的模式,有兩種:
·Scenario:場景計划,即全局計划,即場景中只有一個計划,所有虛擬用戶都遵從一個計划。
·Group:組計划,即場景中的每一個用戶組都有獨立的計划,相互之間不影響。通過該模式可以實現更復雜的一些場景。

PS:在Jmeter中,只有組計划模式。


·Run Mode:運行模式,有兩種:
·real world:真實世界計划、允許我們模擬用戶數的多個峰值變化情況。
·basic:基礎計划、只允許我們模擬用戶數的一個峰值變化情況。

實際工作中,就算使用真實世界計划模式,我們也只會模擬用戶數的一個峰值變化情況。
通常采取的是悲觀策略:即選擇用戶數的最大值,選擇用戶增長速度的最大值去設計一個場景。


·Schedule的構成:
場景計划通常是由四個基本action構成:
·Initialize:初始化模塊。
·Start Vusers:啟動虛擬用戶。
·Duration:持續時間。
·Stop Vusers:停止虛擬用戶。

LR是通過控制、調整虛擬用戶的狀態來實現控制虛擬用戶。

虛擬用戶的狀態有:
·Down:未啟動
·Pending:准備中,是指LR開始向負載生成器發送腳本。
·Init:初始化,是指LR開始初始化虛擬用戶、初始化腳本、並且運行腳本的運行時設置-Run
Logic中的Init部分的腳本。
·Ready:就緒,即虛擬用戶的初始化完成,即Init部分的腳本執行完畢。
·Run:運行,又叫迭代狀態,表示虛擬用戶在迭代執行Run Logic中的Run部分的腳本。
·Rendez:Rendezous,集合狀態,表示虛擬用戶正在集合點等待其它虛擬用戶。
PS:該狀態和Run狀態會自動切換,也屬於運行狀態。
·Passed:表示虛擬用戶運行腳本完畢,並且最終的狀態是成功的。
·Failed:表示虛擬用戶運行腳本完畢,並且最終的狀態是失敗的。
·Error:表示虛擬用戶的生命周期中,發生了錯誤。
PS:絕大多數情況下都是成功或者錯誤。

·Gradual Exiting:准備退出,是指虛擬用戶接收到停止信號之后,還沒有開始執行End部分的腳本。
這是因為在LR中,提供了三種退出機制:
·A:立即退出:虛擬用戶接收到停止信號之后,馬上停止當前工作,直接跳轉執行end部分的腳本。

·B:當前action:虛擬用戶接收到停止信號,會將當前正在運行的action(腳本中)執行完畢,再跳轉執行End部分。

·C:當前迭代:是默認方式。虛擬用戶接收到停止信號,會將當前正在運行的迭代執行完畢,再跳轉執行End部分。

·Exiting:退出中,是指虛擬用戶正在執行End部分的腳本。

·Stopped:停止,表示虛擬用戶運行腳本完畢,並且最終的狀態是成功的。
和Passed狀態是等價的。


·Schedule和Vuser status的對應關系如下:
·Initialize:初始化模塊。
Down-Pending-Init-Ready

·Start Vusers:啟動虛擬用戶。
Ready-Run(Rendezvous)

·Duration:持續時間。
根據選項的不同,走向不一樣。
·Run until completion:表示虛擬用戶按照運行時設置中的迭代次數進行迭代,迭代完畢之后自動結束。
Run-exiting-Passed

·Run for:該選項是用來設置持續時間的。表示虛擬用戶按照持續時間執行迭代,時間到達之后,退出。
Run-Gradual Exiting-Exiting-Stopped

PS:持續時間or迭代次數的設置,最終的目的都是為了得到一個穩定的測試數據(無關好壞)。

·Stop Vusers:停止虛擬用戶。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM