事務就是一段腳本語句,在進行性能測試時事務很重要,定事務時,首先在腳本中找到事務的開始和結束位置,然后分別插入一個開始事務、結束事務,這樣當腳本運行的時候,loadrunner會自動在事務的起始點計時,腳本運行到事務的結束點時計時結束,系統會自動記錄這段操作的運行時間等性能數據
注意事項:事務必須成對出現,事務的名稱一定要有意義,如開始事務lr_start_transaction("登錄bbs"),結束事務lr_end_transaction("登錄bbs", LR_AUTO),事務的名字必須相同,事務中的代碼最好只有一個請求,可以把Mode=HTTP,這樣保證只有一個請求,或者使用URL錄制,一個action盡量放一個接口,如果這個接口要依賴於登錄,可以把登錄放到init里面,如果action中的請求依賴於別的請求,別的請求也要放在acton里
文本檢查點函數:
從response里面找出一個固定的字符串作為檢查點,步驟是在Tree視圖里HTTP View的Response里右鍵一個固定的字符串,點擊Add Text Check Step,彈出如下的對話框,BestTest是剛才右鍵選中的,Savecount的值隨便寫,這里寫成count了,把找到次數放在count里,其他兩個勾選不勾選都無所謂,點擊OK就在腳本前面生成了檢查點函數,因為是預注冊要放在請求前面,檢查點就是判斷腳本的請求是否正確
為了保證請求的成功率使用檢查點,查詢操作必須使用檢查點,寫操作不需要檢查點,直接去數據庫里比對,比如寫100條帶標識位的數據到數據庫,直接去數據庫查詢就行,和錢相關以及修改操作Passed Transactions必須是100%,其他業務成功率可以是99%或99.9%或99.99%,Passed Transactions在Controller Scenario里
集合點的目的是加大瞬時並發的概率,所有用戶觸發集合點后請求下面的代碼,秒殺,搶購適合集合點的使用,為了使某個請求並發的概率大一些就把集合點放在請求的前面,放在事務的外面,集合點函數lr_rendezvous("login");
思考時間的作用:控制單位時間段內向服務器發起請求的數量,以達到控制服務器壓力的目的,從而影響測試的響應時間以及tps,lr_think_time(2)
模擬並發 vu1/vu2/vu3/vu4/vu5,tps=1,處理時間是1s,五個用戶的等待時間是0/1/2/3/4s,五個用戶的響應時間是1/2/3/4/5s
Run-time Settings:
Run Logic Number of Iterations設置幾次只是對Action起作用
Think Time 默認是忽略思考時間,切換到Replay think time
As recorded:按照錄制時的思考時間回放
Multiply recorded think time by:按照錄制時的思考時間的倍數回放
Use random percentage of recorded think time:按照百分比范圍
Limit think time to:最大設置幾秒,超過這個時間就不等了
Pacing 步長的意思
As soon as the previous iteration ends:上次迭代完成立即開始第二次迭代
After the previous iteration ends:上次迭代完成開始第二次迭代要等待fixed的時間
At fixed intervals,every多長時間:這個時間包括腳本運行時間和等待時間(provided that the previous iteration ends by that time)
Log 前提要勾選Enable logging,默認是標准日志,切換到擴展日志
Parameter substitution:打印出關聯、參數化的值
Data returned by server:服務器返回的結果,相當於一次debug,打印出好多內容
Advanced trace:高級追蹤
Miscellaneous:
Error Handing的意思是出錯處理
Continue on error是發生錯誤繼續運行腳本
Fail open transactions on lr_error_message是打印錯誤信息
Generate snapshot on error是生成錯誤快照
Multithreading的意思是多線程
Run Vuser as a process是以進程模式運行虛擬用戶,進程快,默認一個進程包含50個線程,進程模擬ip,做ip欺騙用進程
Run Vuser as a thread默認是以線程模式運行虛擬用戶,線程解約資源
Automatic Transactions的意思是自動的事務,並發時不要勾選下面任何一個
Define each action as a transaction是定義每個action是一個事務
Define each step as a transaction是定義每一步是一個事務
Speed Simulation模擬網絡帶寬,2g時代,現在是5g時代,沒啥用
Browser Emulation模擬瀏覽器,只勾選下面那個,不走緩存
Proxy不走代理,No proxy
Preferences里Options只關注以下幾項,UTF-8可能會解決回放時的亂碼,錄制時options里的UTF-8解決腳本里的亂碼