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经验的同志使用起来也不会有任何问题。
- 大小: 39.6 KB
- 大小: 66.6 KB
- 大小: 347.8 KB
- 大小: 212.6 KB
分享到:
相关推荐
Gatling是一款基于Scala 开发的高性能服务器性能测试工具,它主要用于对服务器进行负载等测试,并分析和测量服务器的各种性能指标。Gatling主要用于测量基于HTTP的服务器,比如Web应用程序,RESTful服务等,除此之外...
gatling 新兴的性能测试工具 使用scala语言编写脚本
性能测试工具JMeter书籍(6本)目录知识点(思维导图加图)整理.rar 根据如下6本性能测试、JMeter书籍收集整理重点知识点: 2012年《零成本实现Web性能测试:基于Apache JMeter》 2016年《大型IT系统性能测试入门...
零成本实现Web性能测试:基于Apache JMeter和Gatling, 性能测试书籍,包含jmeter和Gatling
Gatling是一款功能强大的负载测试工具,它为易于使用,高可维护性和高性能而设计
性能测试工具gatling3.0.0, 官网下载太慢,上传到csdn,方便下载,供大家使用
Gatling是一款功能强大的负载测试工具。它的设计易于使用,可维护性和高性能。开箱即用,Gatling提供了对HTTP协议的出色支持,使其成为负载测试HTTP服务器的首选工具。
性能测试工具gatling2.1.7, 官网下载太慢,上传到csdn,方便下载,供大家使用
Gatling的Scala基础封装是基于Akka编程的,它是非阻塞异步编程模型,可以高效执行并有极高的容错率。 专用web测试。 像LR那样录制脚本,不用从零开始。 脚本使用scala语言,易懂,易修改,控制灵活。 ...
gatling 新兴的性能测试工具 使用scala语言编写脚本
选择合适的测试工具 性能测试工具有很多种,如JMeter、LoadRunner、Gatling等。需要根据测试需求和预算选择合适的测试工具。 模拟真实场景 在进行性能测试时,需要模拟真实场景,包括用户数量、访问频率、数据量等...
性能测试工具。该工具仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!
性能测试工具gatling2.1.7, 官网下载太慢,上传到csdn,方便下载,供大家使用
参数化 用于性能测试脚本编写 提供参数化新方案 通过调用自己的java工具类 实现参数化 同时也可以实现参座数据库 链接外部操作等
Gatling 快速入门,功能强大的负载测试工具 李耀龙 - 这是为需要快速入门 Gatling 的人提供的简要指南。 有关更多详细信息,请访问。 1.什么是加特林 **** **** 是一个基于 Scala、Akka 和 Netty 的开源负载测试...
应用程序的性能测试工具箱 安装 git clone https://github.com/epfl-idevelop/performance-test-gatling.git cd performance-test-gatling ./bin/install.sh 跑步 默认模拟: ./gatling/bin/gatling.sh IDevelop模拟...
通过自动化友好的便捷包装器隐藏了性能和功能测试的复杂性。 Taurus依靠JMeter,Gatling,Locust.io,Grinder和Selenium WebDriver作为其基础工具。 在Apache 2.0许可下免费和开源。 安装或升级 只需使用PyPi安装它...
在这7年里面,我在软件测试领域摸爬滚打,从自动测试起步,逐步接触到软件测试的各个领域:各种测试方法(等价类,全配对等)、测试技术(单元测试,功能测试,性能测试,探索性测试等)、自动化测试工具(JUnit,...
Java测试生态系统的完整概述 该存储库包含每个Java开发人员都必须知道的《 30个测试工具和库》一书的源代码。 您的副本。 书的目标 丰富您现有的测试工具箱 使用正确的工具完成工作 通知有关Java测试生态...性能测试
托多斯我可以在操场上尝试各种库,工具和技术。开发方法 最低的开发人员先决条件; 验证源格式是否与Google样式匹配; 编译时无警告; 测试驱动开发; 具有覆盖支持的单元测试; ; ; ; ; 变异测试; 确保高质量的...