ultron_gradle 是一个基于 Gatling 和 Gradle 的压测工具,能够帮助性能测试的同学们,快速进行压力测试。该工具执行压力测试,只需要一条简单的 java 命令即可。
./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 BaiduOb {
//百度搜索的api。
val urlSearchHtml = "/s?wd=${s_wd}"
//生成http get请求的HttpRequestBuilder对象
val httpBaiduSearchHtml = httpComGetHtml(urlSearchHtml, urlSearchHtml)
}
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)
}
后面将逐步开源关于 ultron_gradle 和 jenkins 结合、DockerFile 及反射机制的平台化的框架。
如果对该工具有任何的建议和意见,都可以在评论中留言,我都会一一回复的。