性能测试工具——gatling
【距离上次的文章,已经过去快3个月了。懒癌犯了,也没啥动力写。】
前言
乌鸦半路出家,对于某一工具的测试结果无法信任,无论结果如何,总感觉是自己做的不对。之前尝试过:
- lr,太臃肿,99%的功能用不上。
- ab,安装apache的附属品,windows安装失败。
- locust,基于python,号称能发起百万级并发。但是,对比测试结果的时候,跟jmeter和gatling差一个数量级。
有至少两个产品的测试结果,能给自己一些自信。
gatling的初次尝试还比较顺利,录制、运行,修改脚本都比较顺畅,重点和难点就是对于脚本的维护,基于scala语言的脚本的相关的API还得重新学习。懒癌又犯了。。。
本来想写一个初体验教程,然后发现了testerhome上有一波质量上乘的教程,还是做搬运工吧。。。
Gatling 文档翻译 (二)-Advanced Tutorial
Gatling 官网教程翻译之 Simulation Setup
干货
乌鸦懒癌犯了,想必其他小伙伴也有懒癌重度患者。原计划是使用freemaker和模板,通过输入几个参数直接生成可以使用gatling脚本,看了下freemaker,算了,还是先做模板,然后手工替换指定的几个参数吧。
这个脚本的作用是从csv读取数据,以post+body的方式发送。
https://github.com/wang153723482/HelloWorld_gatling/
/*
* 按照setp1-3修改相关参数,将文件放在 $GATLING_HOME/user-files/simulations/{package} 下
* 例如 package 是 com.wangc ,那文件应该存放在 $GATLING_HOME/user-files/simulations/com/wangc 下
*/
//step1.修改包名
package com.wangc
import scala.concurrent.duration._
import io.gatling.core.Predef._
import io.gatling.http.Predef._
import io.gatling.jdbc.Predef._
//setp2.修改类名
class s7_post_json_csv_duration extends Simulation {
//setp3.修改参数
// start 参数修改部分 start
//csv的列头
val csvHeader = "json_date"
//准备充足的数据,如果csv数据不够会报错,无法生成报告
//可以使用绝对路径,或者放在 $GATLING_HOME/user-files/data 下使用相对路径
val csvFilePath = "/home/gatling/foo.csv"
//服务器的ip和端口
val baseURL = "http://127.0.0.1:8080"
//请求的路径
val requestPath = "/index_do_json.jsp"
//虚拟用户数
val vu = 3
//启动上述用户的时间(秒)
val rampup = 1
//持续时间(秒)
val duration = 2
// end 参数修改部分 end
val csvFeeder = csv(csvFilePath).queue
val httpConf = http
.baseURL(baseURL)
.contentTypeHeader("application/json")
val requestA = feed(csvFeeder).
exec(
http("requestA")
.post(requestPath)
.body(StringBody("${"+csvHeader+"}"))
)
val scn = scenario("scn_0").during(duration){
requestA
}
setUp(scn.inject(rampUsers(vu) over(rampup))).protocols(httpConf)
}
本文链接:http://bigerhead.com/2016/11/330.html 转载请注明出处。