Gatling 的介绍和JMeter的性能对比请参看 新一代服务器性能测试工具Gatling
这里记录自己简单使用心得.
1.下载安装
直接下载zip文件到本地目录,解压目录即可。下载地址 Gatling最新版2.17下载
文件目录如下
result:保存生成结果
user-files:测试的scala 脚本文件
2.本次测试采用的是一个Play rest 工程。 Play rest 工程----helloplay 其中有多个接口需要同步测试(删除,更新操作类同)
POST /user controllers.Application.insert //插入数据接口 GET /user/all controllers.Application.findAll // 查询接口所有 GET /user/:id controllers.Application.findasync(id:Long) //查询接单条
编写测试代码,测试代码放在$GATLING_HOME/user-files/simulations/computerdatabase 目录下
本例简单测试简单代码如下
package jiang import io.gatling.core.Predef._ import io.gatling.http.Predef._ import scala.concurrent.duration._ class jiang_9_17 extends Simulation { // 测试接口部分 // 1. 查询 object Search { val search = exec(http("Home").get("/")).pause(1) .exec(http("GetAll").get("/user/all ")).pause(1) .exec(http("Query").get("/user/10")).pause(1) } // 2. 插入 object Edit { val insert = exec(http("Insert").post("/user").body(StringBody("""{"name":"han"}""")).asJSON).pause(1) } // 设置浏览器信息 val httpConf = http .baseURL(" .acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") .doNotTrackHeader("1") .acceptLanguageHeader("zh-CN,zh;q=0.8,en;q=0.6") .acceptEncodingHeader("gzip, deflate") .userAgentHeader("Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:16.0) Gecko/20100101 Firefox/16.0") // 设置权限 user只能查询,admin可以查询和插入数据 val users = scenario("Users").exec(Search.search) // regular users can't Insert val admins = scenario("Admins").exec(Search.search, Edit.insert) // 设置请求次数 如下为在10s内 user 查询执行1000次,admin 查询和插入执行100次 setUp( users.inject(rampUsers(1000) over (10 seconds)), admins.inject(rampUsers(100) over (10 seconds)) ).protocols(httpConf) }
执行gatling脚本 ./$GATLING_HOME/bin/gatling.sh
选择本次需要执行的脚本文件[6]jiang.jiang_9_17 // package 下的jiang_9_17 文件
下面两步选择默认就可以了
然后可以看到执行完成结果
$GATLING_HOME/result 目录下生成了本次测试的可视化结果
<如本例>用浏览器打开index.html 文件浏览详细信息(图一为总体,二为每个接口对应信息)
由于此次测试数据库为本地,查询比较快.因此接口请求时间都比较短。
更多资料请参考官网 Gatling.io