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

脚本的编写

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

  • http head配置

  • Scenario 执行细节

  • 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
exec()里的参数就是我们的执行动作,http("本次请求的名称").get("本次http get请求的地址")

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

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: 每秒的请求数

Gatling教程系列一简单GET请求测试(二)相关推荐

  1. Catlike Coding Unity教程系列 中文翻译 Basics篇(二)Building a Graph

    建立一个函数图像 可视化的数学 原文地址:https://catlikecoding.com/unity/tutorials/basics/building-a-graph/ 本次教程的主要内容: 创 ...

  2. Java EE入门教程系列第三章JavaBean(二)——JavaBean在JSP中的应用

    3.2 JavaBean在JSP中的应用 3.2.1 JSP的标签 这里讨论的只是在动态页面中调用JavaBean的方法,静态的可以自己去了解哦~~ JSP技术提供了3个关于JavaBean组件的动作 ...

  3. 十五、Fiddler抓包工具详细教程 — Fiddler抓包HTTPS请求(二)

    ###文章内容有配套的学习视频和笔记都放在了文章末尾### 5.查看证书是否安装成功 方式一: 点击Tools菜单 -> Options... -> HTTPS -> Actions ...

  4. spring boot 跨域请求_SpringBoot 系列教程 web 篇之自定义请求匹配条件 RequestCondition...

    191222-SpringBoot 系列教程 web 篇之自定义请求匹配条件 RequestCondition 在 spring mvc 中,我们知道用户发起的请求可以通过 url 匹配到我们通过@R ...

  5. Jmeter教程 简单的压力测试

    Jmeter是一个非常好用的压力测试工具.  Jmeter用来做轻量级的压力测试,非常合适,只需要十几分钟,就能把压力测试需要的脚本写好. 阅读目录 什么是压力测试 做压力测试的常用工具 做压力测试的 ...

  6. Unity5.3官方VR教程重磅登场-系列6 VR真机测试和产品发布

    不知道怎么开发VR游戏?Unity5.3官方VR教程重磅登场-系列6 VR真机测试和产品发布 王寒 · 3 个月前 在本教程中我们将学习如何将产品在两个真机平台上进行测试-DK2和Gear VR.当然 ...

  7. 微信小程序的网络请求 —— 微信小程序教程系列(14)

    网络请求,基本上是必须的环节之一. 小程序提供了wx.request(object),与开发者的服务器实现数据交互的一个很重要的api. 最简单的用法如下(以GET请求为例) <view bin ...

  8. 【C# 教程系列第 12 篇】抽象类的简单实现

    这是[C# 教程系列第 12 篇],如果觉得有用的话,欢迎关注专栏. 上一篇博客讲到了 C# 中的抽象类与抽象方法,对这两个概念不清楚的可以 点击此处 通过上篇博客我们会发现,使用 abstract ...

  9. 【冰极峰教程系列之二】:牢不可破的九宫格布局

    原创:冰极峰 转载请注明出处 时间:2009年6月22日 8:40:16 冰极峰教程系列之一:九宫格基本布局 冰极峰教程系列之二:牢不可破的九宫格布局 冰极峰教程系列之三:三层分离的完美九宫格 冰极峰 ...

最新文章

  1. python 多线程及线程间通信
  2. shell脚本编写乘法口诀
  3. Android Studio系列(二)使用Android Studio开发/调试整个android系统源代码(不定时更新)
  4. 六个iPhone6不会火爆的理由
  5. 中国程序员 VS 印度程序员,太有味了...
  6. 前端基础_认识前端.md
  7. Sharepoin学习笔记—架构系列--03 Sharepoint的处理(Process)与执行模型(Trust Model) 2
  8. 直线的端点画垂线的lisp_【以课说法】线段、射线、直线
  9. weblogic jms消息 删除_利用 Kafka 设置可靠的高性能分布式消息传递基础架构
  10. oracle timestamp计算两分钟前_阿里数据库真的超过Oracle了么?
  11. c语言 静态链表插入排序,数据结构 - 表插入排序 具体解释 及 代码(C++)
  12. python os.path
  13. 《深入浅出MySQL:数据库开发、优化与管理维护(第2版)》一一1.2 MySQL的安装...
  14. 我们自身的认知可以改变吗?
  15. 碰上这种 Wi-Fi,iPhone 秒崩!
  16. MYSQL数据丢失讨论
  17. l360清零软件无响应_爱普生epson l360清零软件免费版
  18. java语言获取应用服务器的时间_java如何获得服务器时间
  19. 前端实现HTML转PDF
  20. 计算机专业小米笔记本推荐,小米笔记本电脑怎么样有哪些型号,哪款性价比高?...

热门文章

  1. jsp空间流量是怎么计算的?
  2. 新一代数据中心:多层级混合设计与标准化评估
  3. 《jQuery与JavaScript入门经典》——第 1 章 动态Web编程简介 1.1理解Web服务器浏览器范式...
  4. div+css背景渐变色代码示例
  5. 推荐一个.NET下转Json的利器,FastJson
  6. sudo提升执行权限
  7. 作为HTC在MWC2012移动世界大会上推出的全新系列产品。
  8. RHEL5系统X桌面中文乱码解决办法
  9. python 列表转为字典的两个小方法
  10. Windows Mobile使用Shared Memory(共享内存)进行IPC(进程间通信)的开发