Gatling教程系列一第一个GET请求测试(二)

Gatling基于Scala开发的压测工具,它没有jmeter的UI配置界面,我们要想制定测试计划必须通过编写脚本,但是大家不用担心,首先脚本很简单常用的没几个,另外gatling封装的也很好我们不需要去专门学习Scala语法,当然如果会的话会更好。

脚本的编写

Gatling脚本的编写主要包含下面三个步骤

  1. http head配置

  2. Scenario 执行细节

  3. setUp 组装

我们先拿百度进行第一个GET请求测试脚本的编写,类必须继承 Simulation

1.配置下head,只是简单的请求下百度首页,所以只定义下请求的base url,采用默认的http配置即可

//设置请求的根路径
val httpConf = http.baseURL("https://www.baidu.com")
2.声明Scenario,指定我们的请求动作

val scn = scenario("BaiduSimulation").
exec(http("baidu_home").get("/"))
scenario里的参数:scenario name[br]exec()里的参数就是我们的执行动作,http("本次请求的名称").get("本次http get请求的地址")

上面的代码测试运行时只能跑一次,为了测试效果,我们让它持续运行一段时间或者循环一定的次数,可以使用下面两个loop方式

repeat(times,counterName)[br]times:循环次数[br]counterName:计数器名称,可选参数,可以用来当当前循环下标值使用,从0开始

val scn = scenario("BaiduSimulation").repeat(100){
exec(http("baidu_home").get("/"))
}
during(duration, counterName, exitASAP)[br]duration:时长,默认单位秒,可以加单位milliseconds,表示毫秒[br]counterName:计数器名称,可选。很少使用[br]exitASAP:默认为true,简单的可以认为当这个为false的时候循环直接跳出,可在[br]循环中进行控制是否继续

/
运行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下

UI设计 [br]2.进入到 %Gatling_HOME%/bin并执行gatling.sh

UI设计 [br]3.依次输入0,baidu_test, baidu test

UI设计 [br]4.打开测试报告,包括位于%Gatling_Home%/results/baidu_test-*/index.html

解读测试报告

UI设计 [br]概览800ms下响应的请求次数10,右边的饼状图显示成功请求10个,失败0个。注意在Global页面里的图都是整体的统计(一个测试计划可包含多个http请求),如果需要看某个请求的情况可点击到Details页面,并选取对应的请求。

UI设计 [br]上面表格baidu_home及是我们定义的http的name。

Executions
Response Time

total:总请求次数[br]OK:成功数[br]KO:失败数[br]Req/s:每秒请求次数即吞吐量

Min:最短请求响应时间[br]Max:最长请求响应时间[br]Mean:平均请求响应时间[br]Std.Dev:方差偏移,暂不清楚有什么用

截图太占地方了,下面几个图就直接翻译了

Response Time Distribution:响应时间分布

Response Time Percentiles over Time: 百分比响应时间分布

Number of responses per second: 每秒的响应数

Number of requests per second: 每秒的请求数

关键字:gatling, 压测工具

版权声明

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部