Guide

ultron_gradle 是一个基于 Gatling 和 Gradle 的压测工具,能够帮助性能测试的同学们,快速进行压力测试。该工具执行压力测试,只需要一条简单的 java 命令即可。

QuickStart

./gradlew fatCapsule
java -Dtw=100 -Dcw=1 -Ddu=10 -Dexcl=excl -jar build/libs/ultron_gradle-1.0-SNAPSHOT-capsule.jar -s com.xhs.qa.test.sim.BaiduSim

参数含义

参数名 含义
-Dtw 用户总数
-Dcw 用户占比,设置为 1 的时候表示用户数为 tw 的百分之 1
-Ddu 执行时间,秒级
-Dexcl 需要排除的场景,填写 scenario 的名字,多个以英文逗号分隔
-Dfolder 测试套件的概念,填写数据文件路径下的目录名
-s 需要执行的脚本
-df 数据文件路径 (conf 和 csv 文件)

脚本编写

脚本编写需要新增两个文件,一个是 object 文件,用于添加接口信息和 http 调用请求。另一个是 Simulation 文件,用于添加 scenario(场景)和 qps 配比。
以 baidu 的 html 搜索接口为例,脚本编写方式如下:

object 文件
object BaiduOb {
  //百度搜索的api。
  val urlSearchHtml = "/s?wd=${s_wd}"

  //生成http get请求的HttpRequestBuilder对象
  val httpBaiduSearchHtml = httpComGetHtml(urlSearchHtml, urlSearchHtml)
}
Simulation 文件
class BaiduSim extends Simulation{
  //获取scenario对应的qps配比。最终scenario的qps为tw*cw*qps。
  val baidu_s_ratio: Double = DefaultSetup.getRatio("application.ratio.baidu.s", 1)

  //构建ScenarioBuilder。其中feed是用于读取测试数据文件,exec是用于执行http请求或者数据处理
  val scnBaiduS = scenario("baiduSearchTest")
    .feed(Feeders.feeder_baidu_word_random)
    .exec(httpBaiduSearchHtml).pause(1 seconds)

  val proportionMap: Map[ScenarioBuilder, Double] = Map(
    scnBaiduS -> baidu_s_ratio)

  //构建PopulationBuilder。需要注意的是httpProtWithAuthHeader带上的baseUrl是"https://www.baidu.com"
  DefaultSetup.defaultSetup(this, DefaultSetup.httpProtWithAuthHeader, proportionMap)
}

Github

Q&A

后面将逐步开源关于 ultron_gradle 和 jenkins 结合、DockerFile 及反射机制的平台化的框架。
如果对该工具有任何的建议和意见,都可以在评论中留言,我都会一一回复的。


↙↙↙阅读原文可查看相关链接,并与作者交流