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下
2.進入到 %Gatling_HOME%/bin並執行gatling.sh
3.依次輸入0,baidu_test, baidu test
4.打開測試報告,包括位於%Gatling_Home%/results/baidu_test-*/index.html
概覽800ms下響應的請求次數10,右邊的餅狀圖顯示成功請求10個,失敗0個。注意在Global頁面裏的圖都是總體的統計(一個測試計劃可包含多個http請求),若是須要看某個請求的狀況可點擊到Details頁面,並選取對應的請求。
上面表格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
: 每秒的請求數