Gatling-基于Scala,Akka&Netty的性能测试框架
2015-11-25 18:51
696 查看
Intro
Gatling是新一代的开源测试框架,基于Scala,Akka和Netty。具有三大特色:高性能。
生成HTML测试报告。
可以使用脚本录制和对开发者友好的DSL编写测试脚本。
最新版本为:2.1.7, 需要at least JDK7u6。
使用方式:
直接执行:下载官方bundle包,进入
bin目录中执行脚本
gatling.sh(Unix like) or
gatling.bat(windows)。
使用Extensions(Maven, SBT, Jenkins等)。
文件目录:
http://gatling.io/docs/2.1.7/general/bundle_structure.html
├── bin
│ gatling.bat
│ gatling.sh
│ recorder.bat
│ recorder.sh
├── conf
├── lib
│ └── zinc
├── results
├── target
│ └── test-classes
│ └── computerdatabase
└── user-files
├── bodies
├── data
└── simulations
└── computerdatabase
bin/:目录中的
gatling.shor
gatling.bat为执行测试脚本;
recorder.shor
recorder.bat是一个图形化的脚本录制工具。
user-files/simulations:用户的测试脚本文件存储在该目录中;该目录中已经存在一个Gatling测试脚本样例,我们可以根据该样例开始Gatling测试脚本的编写。
user-files/data:测试需要的数据(i.e. 用户名,密码等)。
results/:生成的HTML测试报告会存放在该目录下。
Reports:
对于生成的报告的详细说明,见 http://gatling.io/docs/2.1.7/general/reports.html
直接执行测试脚本
官方Quickstart:http://gatling.io/docs/2.1.7/quickstart.html#quickstartstep-by-step,比较简单,这里不做详细介绍了。
SBT plugin
在实际工作中,一般都是在工程中编写测试。这里主要介绍在sbt工程中使用Gatling的方法。http://gatling.io/docs/2.1.7/extensions/sbt_plugin.html
Setup
在project/plugins.sbt中添加plugin:
addSbtPlugin("io.gatling" % "gatling-sbt" % "2.1.7")
在build.sbt中添加依赖:
libraryDependencies ++= Seq( "io.gatling.highcharts" % "gatling-charts-highcharts" % "2.1.7" % "test", "io.gatling" % "gatling-test-framework" % "2.1.7" % "test")
在
build.sbt添加
enablePlugins(GatlingPlugin)
Usage
进入sbt$ cd gatling-template $ sbt
Run all simulations:
> test
Run a single simulation:
> testOnly computerdatabase.BasicSimulation
List all tasks:
> tasks
Start recorder:
> startRecorder
生成报告目录:
target/gatling
‘Test’ vs ‘Integration Tests’(it)
Gatling提供了两套SBT自定义配置:Gatling&
GatlingIt,分别在不同的目录中。这种方式的意图是可以针对不同情况的测试,选择不同的测试配置。
Gatling(单元测试):当我们的测试是低注入,只是测试方法的时候,就可以在
src/test-
Gatling配置的默认目录下写测试脚本-它们一般是可以很快完成的单元测试。
simulations默认目录:
src/test/scala, 使用
scalaSource in Gatling设置。
reports默认目录:
target/gatling,使用
target in Gatling设置。
GatlingIt(集成测试):然而,很多测试都是高注入,复杂的集成测试。我们要在
src/it-
GatlingIt配置的默认目录下写测试脚本-它们一般都是耗费资源和时间的集成测试。
simulations默认目录:
src/it/scala, 使用
scalaSource in Gatling设置。
reports默认目录:
target/gatling-it,使用
target in Gatling设置。
Note:
当使用
GatlingIt时,sbt命令前要加前缀
it:,e.g.
> test变成
> it:test
重载JVM options
可以使用overrideDefaultJavaOptions重载默认JVM options:
javaOptions in Gatling := overrideDefaultJavaOptions("-Xms1024m", "-Xmx2048m")
编写测试脚本
Gatling提供了几个测试脚本的样本,我们介绍下一个简单的脚本。package computerdatabase import io.gatling.core.Predef._ import io.gatling.http.Predef._ import scala.concurrent.duration._ class BasicSimulation extends Simulation { val httpConf = http .baseURL("http://computer-database.gatling.io") // 1 .acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") .doNotTrackHeader("1") .acceptLanguageHeader("en-US,en;q=0.5") .acceptEncodingHeader("gzip, deflate") .userAgentHeader("Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0") val scn = scenario("BasicSimulation") // 2 .exec(http("request_1") .get("/")) .pause(5) setUp( // 3 scn.inject(atOnceUsers(1)) ).protocols(httpConf) }
一般gatling脚本主要由三部分组成:
Define http protocol:
定义http的各项内容,设置测试的网址-baseURL;设置HTTP Header。
new scenario对象:
创建scenario对象。
exec执行一个
request,
get方法,
pause暂停5s。
设置scenario:
使用
setUp装载多个scenario,并设置同时多少个用户并发访问,以及访问方式(在一个时间点内同时并发还是在一段时间内渐进并发)等。
相关文章推荐
- 矩阵键盘总结
- 雷军的哽咽:致小米终将逝去的青春
- 实现部分库函数
- 设计模式(四)单例模式
- android之interpolator的用法详解
- hdu5569 matrix(简单dp)
- nfs服务器的建立
- iOS开发编辑自定义代码块Code Snippet
- Request.Item和Request.Params
- JSR规范整理(整理中......)
- 朴素贝叶斯算法
- git初学指南(Github)
- Chromium Android版本
- Struts2生成验证码小例子
- Redis解决强制关闭Redis快照导致不能持久化错误
- mysql多实例运行
- C++右值引用
- sh_shell的基础语法2
- AIDL 写法
- PHP代码实现强制换行