Gatling教程系列一簡單GET請求測試(二)

Gatling基於Scala開發的壓測工具,它沒有jmeter的UI配置界面,咱們要想制定測試計劃必須經過編寫腳本,可是你們不用擔憂,首先腳本很簡單經常使用的沒幾個,另外gatling封裝的也很好咱們不須要去專門學習Scala語法,固然若是會的話會更好。html

腳本的編寫

Gatling腳本的編寫主要包含下面三個步驟併發

  • http head配置工具

  • Scenario 執行細節oop

  • setUp 組裝學習

咱們先拿百度進行第一個GET請求測試腳本的編寫,類必須繼承 Simulation測試

1.配置下head,只是簡單的請求下百度首頁,因此只定義下請求的base url,採用默認的http配置便可url

//設置請求的根路徑
val httpConf = http.baseURL("https://www.baidu.com")

2.聲明Scenario,指定咱們的請求動做spa

val scn = scenario("BaiduSimulation").
    exec(http("baidu_home").get("/"))

scenario裏的參數:scenario name
exec()裏的參數就是咱們的執行動做,http("本次請求的名稱").get("本次http get請求的地址")線程

上面的代碼測試運行時只能跑一次,爲了測試效果,咱們讓它持續運行一段時間或者循環必定的次數,可使用下面兩個loop方式scala

repeat(times,counterName)
times:循環次數
counterName:計數器名稱,可選參數,能夠用來噹噹前循環下標值使用,從0開始

val scn = scenario("BaiduSimulation").repeat(100){
    exec(http("baidu_home").get("/"))
  }

during(duration, counterName, exitASAP)
duration:時長,默認單位秒,能夠加單位milliseconds,表示毫秒
counterName:計數器名稱,可選。不多使用
exitASAP:默認爲true,簡單的能夠認爲當這個爲false的時候循環直接跳出,可在
循環中進行控制是否繼續

/*
    運行100秒 during 默認單位秒,若是要用微秒 during(100 millisecond)
   */
  val scn = scenario("BaiduSimulation").during(100){
    exec(http("baidu_home").get("/"))
  }

更多循環方案可參考http://gatling.io/docs/2.1.7/general/scenario.html#scenario-loops

3.設置併發數並組裝

//設置線程數
  setUp(scn.inject(atOnceUsers(10)).protocols(httpConf))

atOnceUsers:立馬啓動的用戶數,能夠理解爲併發數

通常實際運用中遠遠不止於10個併發,當併發數很高時咱們能夠選擇平滑啓動可以使用

rampUsers(5000) over (10 seconds) //用10秒時間,啓動5000個線程

setUp(scn.inject(rampUsers(500) over(10 seconds)).protocols(httpConf)

腳本的運行

import io.gatling.core.Predef._
import io.gatling.http.Predef._
import scala.concurrent.duration._
class BaiduSimulation extends Simulation {
  //設置請求的根路徑
  val httpConf = http.baseURL("https://www.baidu.com")
  /*
    運行100秒 during 默認單位秒,若是要用微秒 during(100 millisecond)
   */
  val scn = scenario("BaiduSimulation").during(100){
    exec(http("baidu_home").get("/"))
  }
  //設置線程數
//  setUp(scn.inject(rampUsers(500) over(10 seconds)).protocols(httpConf))
  setUp(scn.inject(atOnceUsers(10)).protocols(httpConf))
}

1.將編輯好的腳本拷貝至%Gatling_HOME%/user-files/simulations下

clipboard.png
2.進入到 %Gatling_HOME%/bin並執行gatling.sh

clipboard.png
3.依次輸入0,baidu_test, baidu test

clipboard.png
4.打開測試報告,包括位於%Gatling_Home%/results/baidu_test-*/index.html

解讀測試報告

clipboard.png
概覽800ms下響應的請求次數10,右邊的餅狀圖顯示成功請求10個,失敗0個。注意在Global頁面裏的圖都是總體的統計(一個測試計劃可包含多個http請求),若是須要看某個請求的狀況可點擊到Details頁面,並選取對應的請求。

clipboard.png
上面表格baidu_home及是咱們定義的http的name。

Executions Response Time
total:總請求次數
OK:成功數
KO:失敗數
Req/s:每秒請求次數即吞吐量
Min:最短請求響應時間
Max:最長請求響應時間
Mean:平均請求響應時間
Std.Dev:方差偏移,暫不清楚有什麼用

截圖太佔地方了,下面幾個圖就直接翻譯了

Response Time Distribution:響應時間分佈

Response Time Percentiles over Time: 百分比響應時間分佈

Number of responses per second: 每秒的響應數

Number of requests per second: 每秒的請求數

相關文章
相關標籤/搜索