性能测试工具之Gatling
转载:http://ningandjiao.iteye.com/blog/2004579
Gatling一直是久闻其名但是未得机会运用,正好最近有需求做性能测试,于是趁此机会熟悉了一下,可以说,这是目前最合我胃口的性能测试工具。其主要有以下特点:
- 1. 绿色软件,即下即用。
- 2. DSL脚本描述测试场景,高端大气,易读易维护
- 3. 测试结果报表很漂亮,可读性高。
- 4. 使用Scala的actors和异步IO,资源消耗小,且运行稳定。
最后提一下,其还提供了一个Recorder可以录制测试场景自动生成代码,个人不推荐是用这个功能,所有的测试场景最好自己用脚本写,这样的脚本更清楚,更易维护,而且,程序员应该喜欢脚本多过UI。
安装和运行
前面说了即下即用,下载地址:https://github.com/excilys/gatling/wiki/Downloads; 解压后整个软件的目录如下:
- bin目录下有2个脚本,gatling和recorder, gatling用来运行测试, recorder用来启动录制脚本的UI的(不推荐使用),
- conf目录是关于Gatling自身的一些配置。
- lib目录是Gatling自身依赖的库文件。
- results目录用来存放测试报告的。
- user-files目录是用来存放测试脚本的。
当运行gating脚本的时候,其会扫描user-files目录下的所有文件,列出其中所有的Simulation(一个测试类,里面可以包含任意多个测试场景)。选择其中一个Simulation,然后填写Simulation ID和运行描述,这个都是为报告描述服务的。 
测试运行完成后,Gatling会自动把报告生成到results目录下, 一个测试报告内容非常详细,界面也非常美观。 
编写Gatling测试脚本
下面是我自己写的一个测试脚本:
- import com.excilys.ebi.gatling.core.Predef._
- import com.excilys.ebi.gatling.http.Predef._
- import com.excilys.ebi.gatling.jdbc.Predef._
- import com.excilys.ebi.gatling.http.Headers.Names._
- import akka.util.duration._
- import bootstrap._
- class MySimulation extends Simulation {
- val httpConf = httpConfig
- .baseURL("http://www.bfsstudios.com.au")
- .acceptCharsetHeader("ISO-8859-1,utf-8;q=0.7,*;q=0.7")
- .acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
- .acceptEncodingHeader("gzip, deflate")
- .acceptLanguageHeader("fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3")
- .disableFollowRedirect
- val headers_1 = Map(
- "Keep-Alive" -> "115")
- val scn = scenario("Scenario name")
- .exec(
- http("main page")
- .get("/")
- .headers(headers_1)
- .check(status.is(200)))
- .pause(0 milliseconds, 100 milliseconds)
- .feed(csv("worker_id.csv").circular)
- .exec(
- http("Worker page")
- .get("/worker/${worker_id}")
- .check(status.is(200)))
- setUp(scn.users(10).ramp(10).protocolConfig(httpConf))
- }
- 1. 一个Gatling测试脚本就是一个scala的类,该类必须继承Simulation类,这样gatling才能识别其实一个测试集。该代码的后缀名必须为.scala
- 2. 测试中可以通过httpConf为http请求做基本的配置。
- 3. 一个scenario定义了一个测试用例。
- 4. 一个测试用例可以包含多个http请求,每个http请求可以设置自己的http method ,http header等.
- 5. 运行完之后,可以同个check检测每个请求的返回值
- 6. 可以通过feeder为同一个用例注入不同的参数数据,feeder中的文件默认从user-files目录下的data文件中查找。
- 7. 定义完scenario,通过setUp方法指定scenario的运行方式,我例子中的表示用10个用户并发跑测试,而ramp(10)的意思是10秒钟逐渐增加到10个用户,即每秒新起一个用户运行测试。
我的脚本的运行过程如下: 
DSL
Gatling提供了为运行性能测试非常完善的DSL,这儿有其支持的所有的命令:http://gatling-tool.org/cheat-sheet/使用Gatling之前,扫一眼所有的命令,对写脚本非常有帮助,因此虽然Gatling是scala的脚本,没有scala经验的同志使用起来也不会有任何问题。
性能测试工具之Gatling的更多相关文章
- 新一代服务器性能测试工具Gatling
新一代服务器性能测试工具Gatlinghttp://automationqa.com/forum.php?mod=viewthread&tid=2898&fromuid=2
- 负载,性能测试工具-Gatling
前言 Gatling Gatling是一款功能强大的负载测试工具,它为易于使用,高可维护性和高性能而设计. 开箱即用,Gatling由于对HTTP协议的出色支持,使其成为负载测试任何HTTP服务器的首 ...
- Gatling新一代压力测试工具,新一代服务器性能测试工具Gatling
Gatling新一代压力测试工具新一代服务器性能测试工具Gatlinghttp://www.infoq.com/cn/articles/new-generation-server-testing-to ...
- Web Service 性能测试工具比较
背景 希望选择一款Web Service性能测试工具,能真实模拟大量用户访问网站时的请求,从而获取服务器当前的请求处理能力(请求数/秒).以微信服务器为例,每个用户用独立的登录token,做各种操作, ...
- 两个不同于LR和jmeter的性能测试工具
LR图形界面,更利于使用 jmeter采用java,也能够扩展 相对于上两款工具,下面两款性能测试工具都采用了异步IO模型,扩展性都更强速度也更快 gatling:基于scala,速度相比更快性能压力 ...
- 性能测试工具 Web Service 性能测试工具比较
[转自]https://testerhome.com/topics/3003 背景 希望选择一款Web Service性能测试工具,能真实模拟大量用户访问网站时的请求,从而获取服务器当前的请求处理能力 ...
- 性能测试工具 nGrinder 项目剖析及二次开发
转:https://testerhome.com/topics/4225 0.背景 组内需要一款轻量级的性能测试工具,之前考虑过LR(太笨重,单实例,当然它的地位是不容置疑的),阿里云的PTS(htt ...
- 性能测试工具 wrk 安装与使用
介绍 今天给大家介绍一款开源的性能测试工具 wrk,简单易用,没有Load Runner那么复杂,他和 apache benchmark(ab)同属于性能测试工具,但是比 ab 功能更加强大,并且可以 ...
- 性能测试工具Locust
An open source load testing tool. 一个开源性能测试工具. define user behaviour with python code, and swarm your ...
随机推荐
- premiere视频输出参数设置
- System.Diagnostics命名空间里的Debug类和Trace类的用途
在 .NET 类库中有一个 System.Diagnostics 命名空间,该命名空间提供了一些与系统进程.事件日志.和性能计数器进行交互的类库.当中包括了两个对开发人员而言十分有用的类--Debug ...
- Python_进程、线程及协程
一.Python进程 IO密集型----多线程 计算密集型----多进程 1.单进程 from multiprocessing import Process def foo(i): print('你好 ...
- unity htc vive, ugui for vr
http://wacki.me/blog/2016/06/vr-gui-input-module-for-unity-htc-vive/
- Win10 64位安装SQL2000(个人版)
默认Win10上是不允许安装SQL2000的,毕竟SQL2000已经是10多年前的老软件了,但是因为它成熟稳定,相比SQL2005,SQL2008R2,SQL2012,SQL2014,体积要小的多,所 ...
- mac安装IE浏览器
1.首先得下载一个WineBottler for mac. 2.下载完毕之后,打开dmg文件后将WineBottler Combo里面的Wine和WineBottler这两个程序拖拉进应用程序. 3. ...
- Js RegExp对象
1 语法 1.1 直接量语法 /pattern/attributes 1.2 创建RegExp对象 new RegExp(pattern, attributes) 1.3 说明 pattern是正则表 ...
- [oracle] 解决X64操作系统PL/SQL连接报错问题 make sure you have the 32 bits oracle client installed
Windows 64位下装Oracle 11g 64位,PLSQL Developer使用出现以下问题: 1.Database下拉框为空: 2.强制输入用户名.密码及Database,登录弹出: In ...
- iText导出pdf、word、图片
一.前言 在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超级连接显示或 ...
- Hibernate3回顾-4-事务和并发管理
4.事务和并发 Hibernate是对JDBC的轻量级对象封装,Hibernate本身是不具备Transaction处理功能的,Hibernate的Transaction实际上是底层的JDBC Tra ...