在LoadRunner的腳步編寫中,有三個重要的概念:事務、集合點、思考時間
在LoadRunner的腳步編寫中,有三個重要的概念:事務、集合點、思考時間
事務:
事務又稱為Transaction,在LoadRunner中的定義如下:An end-to-end(browser-to-browser) measurement of one or more user actions within action file。中文理解如下:事務(Transaction)是這樣一個點,我們為了衡量某個action的效能,需要在action的開始和結束位置插入這樣一個範圍,這就定義了一個transaction。
事務的作用:LoadRunner執行到該事務的開始點時,LoadRunner就會開始計時,直到執行到該事務的結束點,計時結束。這個事務的執行時間在LoadRunner的執行結果中會有反映。通俗的講LoadRunner中的事務就是一個計時標識,LoadRunner在執行過程中一旦發現事務的開始標識,就開始計時,一旦發現事務的結束表示,則計時結束,這個過程中得到的時間即為一個事務時間。通常事務時間所反映的是一個操作過程的響應時間。
下面我們說說為什麼在LoadRunner中使用事務。為什麼使用事務的原因是多種多樣的,總結下來如下五點所示:
1、事務是LoadRunner度量系統效能指標的唯一手段;(沒有事務則沒有辦法衡量系統的響應時間,也許有人說LoadRunner可以通過程式設計來計時得到,不錯如果你程式設計能力夠強是能夠實現的,但肯定不如LoadRunner中的事務用的簡單而且方便)
2、事務能夠用於度量高風險業務流程的效能指標;
3、事務能夠度量在一組操作中每一步的效能指標;
4、通過事務計時實現了不同壓力負載下的效能指標對比;
5、通過事務計時可以幫助定位效能瓶頸;
從效能測試的 角度出發,我們需要知道不同的操作所花費的時間,這樣我們就可以衡量不同的操作對被測系統所造成的影響,那麼我們如何知道不同的操作所花費的時間,這就用 到了事務,我們在操作之前插入一個事務開始標識,在操作完成後插入一個事務結束表示,這樣我們就知道了這個操作所花費的時間。
集合點:
執行負載測試時,需要模擬系統上有較重的使用者負載。要實現此操作,可以同步 Vuser 以便恰好在同一時刻執行任務。通過建立集合點,可以配置多個 Vuser 同時執行操作。當某個 Vuser 到達該集合點時,將進行等待,直到參與該集合的全部 Vuser 都到達。指定數量的 Vuser 均到達後,釋放所有這些 Vuser。
可通過將集合點插入到 Vuser 指令碼來指定會合位置。在 Vuser 執行指令碼並遇到集合點時,指令碼將暫停執行,Vuser 將等待 Controller 或控制檯的允許以繼續執行。Vuser 從集合釋放後,將執行指令碼中的下一個任務。
注意:只能向 Action 部分(而不是 init 或 end 部分)新增集合。
插入集合點是為了衡量在加重負載的情況下的效能情況。在計劃中,可能會要求系統能夠承受1000 人同時提交資料,在LoadRunner 中可以通過在提交資料操作前面加入集合點,這樣當虛擬使用者執行到提交資料的集合點時,LoadRunner 就會檢查同時有多少使用者執行到集合點,如果不到1000 人,LoadRunner 就會命令已經到集合點的使用者在此等待,當在集合點等待的使用者達到1000 人時,LoadRunner 命令1000 人同時去提交資料,從而達到計劃中的需求
思考時間:
loadrunner 思考時間(think-time)的理解
經常碰到很多網友在問效能測試思考時間的設定,有的設定是預設錄製的值,有的是覺得在壓力測試時要去掉思考時間這樣伺服器壓力才大,各人的理解不一樣其實在測試時是要適當加入思考時間但是時間不能太長一般都是1--5秒內。下面是對思考時間的一些說法。
在錄製指令碼時 我們一般會選擇記錄思考時間 record think time,Loadrunner做為效能測試工具,錄製時記錄的是客戶端和服務端的互動,如果要精確模擬 使用者的行為,那麼客戶操作客戶端時花費了很多時間要怎麼模擬呢?錄入填寫提交的內容,從列表中下拉搜尋選擇特定的值等,這時LOADRUNNER 不會記錄使用者 的客戶端操作,而是記錄了使用者這段時間,成為思考時間(Think-time),因為使用者的這些客戶端操作不會影響服務端,只是讓伺服器端在這段時間內沒有請求而已。,所以加入思考時間就能模擬出熟練的或者生疏的使用者操作,接近實際對於服務端的壓力。
Vuser 思考時間模擬實際使用者在不同操作之間等待的時間。例如,當使用者收到來自伺服器的資料時,可能要等待幾秒鐘檢視資料,然後再做出響應。這種延遲就稱為“思考時間”。VuGen 使用 lr_think_time 函式將思考時間值錄製到 Vuser 指令碼中。以下錄製的函式指明使用者等待了 8 秒鐘才執行下一個操作:
lr_think_time(8);
當您執行了 Vuser 指令碼並且 Vuser 遇到了上述 lr_think_time 語句時,預設情況下,Vuser 將等待 8 秒鐘後再執行下一個操作。可以使用思考時間執行時設定來影響執行指令碼時 Vuser 使用錄製思考時間的方式。
相關文章
- LoadRunner中90%響應時間的理解
- 為何Binlog中同一個事務的event時間點會亂序?
- Spring宣告式事務控制原理之宣告式事務的重要元件在AOP中的應用Spring元件
- Spring事務專題(三)事務的基本概念,Mysql事務處理原理SpringMySql
- 如何實現一個TCC分散式事務框架的一點思考分散式框架
- 一週時間編寫你的第二個 Flutter APPFlutterAPP
- Android最全螢幕適配的幾個重要概念(三)Android
- 通過事務日誌恢復SqlServer資料庫到一個特定的時間點SQLServer資料庫
- 分散式事務(一)—分散式事務的概念分散式
- golang如何優雅的編寫事務程式碼Golang
- 獲取時間戳,幾個時間點的時間戳時間戳
- CSS 中重要的層疊概念CSS
- 手寫一個同步服務端時間的小工具服務端
- 在學習中,有一個比掌握知識更重要的能力
- JavaScript計算兩個時間點之間的時間差JavaScript
- 各個時間點的心態
- JS 實現在指定的時間點播放列表中的影片JS
- 有關顧問為誰服務的一點思考
- 【盤點】Python中6個最重要的庫!Python
- 彈出層layer 完整步驟以及在編寫彈出層時遇到的錯誤
- 寫 Shader 轉場的幾點思考
- Spring事務需要注意的幾個點Spring
- 分析資料庫的事務隔離級別在資料庫選型分析的時候很重要資料庫
- shell編寫時間四個季度,上週末等引數
- 寫一個格式化時間的方法
- Map集合的按時間排序方法排序
- 在 VSCode 中編寫 Markdown 的進階指南VSCode
- 編寫socket套接字的步驟
- Java編寫定時任務Java
- 一個延時任務問題引發的思考
- 編寫Spark程式的幾個最佳化點Spark
- apscheduler 在伺服器上沒有按照指定的時間執行定時任務伺服器
- JS判定一個給定的時間在某個時間範圍內JS
- CECTC/dbpack: 用Golang編寫的分散式事務中介軟體Golang分散式
- 選擇困難的三點思考
- 在 Laravel 中編寫簡潔的程式碼的策略Laravel
- context裡的超時時間是怎麼在微服務之間傳遞的Context微服務
- MySQL事務提交的三個階段介紹MySql
- php redis 集合sadd同時寫入多個鍵值的方法PHPRedis