以前公司压力测试都不使用Jmeter和Gatling工具测试,最近需要寻找更加好用压力测试工具。所以有了半天的体验结果
通过自己学习和实践来跟大家分享Jmeter和Gatling的使用体验
一天使用过程,可能很多地方没有涉及到。
但是Gatling花了好几个小时才成功发起压力测试,Jmeter只花不到1个小时就搞定。
所以最后还是主推Jmeter。
操作上差异
Jmeter
所有操作和配置都在UI界面上操作即可,不需要学习其他内容。而且支持中文。
image.png
Gatling
基本是通过gatling.sh/bat执行Scala脚本来完成压力测试。
压力测试所有设置都需要通过scala脚本设置
scala脚本如下
import io.gatling.core.Predef._
import io.gatling.http.Predef._
import scala.concurrent.duration._
class BaiduSimulation extends Simulation {
//设置请求的根路径
val httpConf = http.baseUrl("http://localhost:7002")
//注意这里,设置提交内容type
val headers_json = Map("Content-Type" -> "application/json;charset=utf-8")
val scn = scenario("json scenario")
.exec(http("test_json") //http 请求name
.post("/b10010") //post url
.headers(headers_json) //设置body数据格式
//将json参数用StringBody包起,并作为参数传递给function body()
.body(StringBody(""" {"SYSTEM_BUTTON_DESCRIPT":"产品信息查} """ )).asJson)
//设置线程数
setUp(scn.inject(rampUsers(300) during (60 seconds)).protocols(httpConf))
}
注意:百度很多教程的语法都就旧版本,执行会报错。主要是以下几个点
1、baseURL 重新命名为 baseUrl
2、silentURI 重新命名为 silentUri
3、asJSON 重新命名为 asJson
3、over 重新命名为 during
结果分析差异
Jmeter
通过插件Jmeter可以支持以下最主要功能
结果分析
TPS
image.png
响应时间
image.png
硬件资源监控
image.png
报文响应结果
image.png
Gatling
Gatling跟Jmeter对比缺少TPS和硬件资源监控,提供如下数据
交易响应时间、平均每秒吞吐量、最大/最小/平均响应时间
image.png
响应时间分布图
image.png
百分比响应时间分布
image.png
每秒请求次数
image.png
每秒响应次数
image.png
总体来说
1、Jmeter分析结果会更加符合目前测试需求(查阅资料,TPS目前好像没有),而且不需要单独学习另外一份脚本语言
2、目前gatling中文资料还是比较少,主要去看官网的。