性能测试工具 开源小红书压测框架 ultron_gradle---第一期

尤尤粉嘟嘟 · 2017年11月16日 · 最后由 得来全不费工夫 回复于 2017年12月18日 · 3423 次阅读

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 及反射机制的平台化的框架。
如果对该工具有任何的建议和意见,都可以在评论中留言,我都会一一回复的。

共收到 4 条回复 时间 点赞

这个介绍太简单了,最好能有一个使用实例,报告数据,如果能对比其他性能工具优缺点会更好推广吧

bauul 回复

感谢回复。实例和报告数据会在二期里面补充完毕,并进行一些 jenkins 相关集成的分享。这次主要是时间太赶,马上是下一次的压测,时间上来不及。

哈哈,期待 ING

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册