性能测试工具之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测试脚本

下面是我自己写的一个测试脚本:

Scala代码  

  1. import com.excilys.ebi.gatling.core.Predef._
  2. import com.excilys.ebi.gatling.http.Predef._
  3. import com.excilys.ebi.gatling.jdbc.Predef._
  4. import com.excilys.ebi.gatling.http.Headers.Names._
  5. import akka.util.duration._
  6. import bootstrap._
  7. class MySimulation extends Simulation {
  8. val httpConf = httpConfig
  9. .baseURL("http://www.bfsstudios.com.au")
  10. .acceptCharsetHeader("ISO-8859-1,utf-8;q=0.7,*;q=0.7")
  11. .acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
  12. .acceptEncodingHeader("gzip, deflate")
  13. .acceptLanguageHeader("fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3")
  14. .disableFollowRedirect
  15. val headers_1 = Map(
  16. "Keep-Alive" -> "115")
  17. val scn = scenario("Scenario name")
  18. .exec(
  19. http("main page")
  20. .get("/")
  21. .headers(headers_1)
  22. .check(status.is(200)))
  23. .pause(0 milliseconds, 100 milliseconds)
  24. .feed(csv("worker_id.csv").circular)
  25. .exec(
  26. http("Worker page")
  27. .get("/worker/${worker_id}")
  28. .check(status.is(200)))
  29. setUp(scn.users(10).ramp(10).protocolConfig(httpConf))
  30. }
  • 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经验的同志使用起来也不会有任何问题。

时间: 2024-10-13 20:58:46

性能测试工具之Gatling的相关文章

性能测试工具Gatling介绍

1 介绍 Gatling是一款基于Scala 开发的高性能服务器性能测试工具,它主要用于对服务器进行负载等测试,并分析和测量服务器的各种性能指标.Gatling主要用于测量基于HTTP的服务器,比如Web应用程序,RESTful服务等,除此之外它拥有以下特点: 支持Akka Actors 和 Async IO,从而能达到很高的性能 支持实时生成Html动态轻量报表,从而使报表更易阅读和进行数据分析 支持DSL脚本,从而使测试脚本更易开发与维护 支持录制并生成测试脚本,从而可以方便的生成测试脚本

负载,性能测试工具-Gatling

前言 Gatling Gatling是一款功能强大的负载测试工具,它为易于使用,高可维护性和高性能而设计. 开箱即用,Gatling由于对HTTP协议的出色支持,使其成为负载测试任何HTTP服务器的首选工具.由于核心引擎实际上是协议不可知的,因此完全可以实现对其他协议的支持.例如,Gatling目前还提供JMS支持. 代码自定义并且场景资源有效是Gatling的两个基础.并且拥有富有表现力的DSL,自我解释的场景,易于维护,可以保存在版本控制系统中的优点. 只要底层协议(如HTTP)可以以非阻塞

Web Service 性能测试工具比较

背景 希望选择一款Web Service性能测试工具,能真实模拟大量用户访问网站时的请求,从而获取服务器当前的请求处理能力(请求数/秒).以微信服务器为例,每个用户用独立的登录token,做各种操作,比如刷消息.发消息.看朋友圈等. 希望该性能测试工具符合如下要求: 1. 测试脚本能力,最好是Python/Ruby等最常用的2. 每个并发实例能使用不同参数3. CLI启动测试,这对自动化测试很重要4. Session支持,也就是第一个请求的响应,能用于后续请求的参数.6. 单个结点的并发数量高.

性能测试工具集锦(上)

性能测试工具集锦(上) 本文介绍了业界广泛使用的20种性能测试工具. 1.Apache JMeter http://jmeter.apache.org/ JMeter是100%纯Java的开源项目,主要用于测量性能和对功能行为做负载测试,既可以测试静态资源,又可以测试动态资源.目前最新版本为2.13. 2.Grinder http://grinder.sourceforge.net/ Grinder是一个运行于Java平台的开源负载测试框架.此框架易于运行分布式的测试--可以通过各种负载注入机实

性能测试入门(三):性能测试工具

这篇文章介绍下性能测试工具: 简单模拟工具 有很多场景下,我们只是想做一个简单的压测,对于监测结果要求并不高,压测的场景也比较简单,不想安装复杂的工具,这种情况下,推荐使用简单的模拟工具进行就可以了. ab ab即ApacheBench,是apache自带的一款功能强大的测试工具,安装了apache一般就自带了,即httpd(在bin目录下). ab主要是设计用来测试apache的性能,但是使用ab可以同时模拟多个并发请求,专门用于HTTP Server的压测, 优点是: 小巧.性能好 post

性能测试工具 Web Service 性能测试工具比较

[转自]https://testerhome.com/topics/3003 背景 希望选择一款Web Service性能测试工具,能真实模拟大量用户访问网站时的请求,从而获取服务器当前的请求处理能力(请求数/秒).以微信服务器为例,每个用户用独立的登录token,做各种操作,比如刷消息.发消息.看朋友圈等. 希望该性能测试工具符合如下要求: 测试脚本能力,最好是Python/Ruby等最常用的 每个并发实例能使用不同参数 CLI启动测试,这对自动化测试很重要 Session支持,也就是第一个请

Jmeter服务性能测试工具

Jmeter性能测试工具 下载地址:http://jmeter.apache.org/download_jmeter.cgi Windows下使用 这里我们选择Binaries包,jmeter不需要安装直接解压使用,但是需要配置Java环境 安装jdk,这里就不说了 配置Java环境变量: win7系统 计算机--属性--高级系统设置--高级--环境变量--系统变量--新建 变量名:JAVA_HOME 变量值:C:\ProgramFiles (x86)\Java\jre1.8.0_101    

iOS 性能测试工具 SDK

一.概括 1. 做一个类似GT的性能测试工具: 2. 第一期主要是CPU.内存功能,要求可以绘制曲线,可以选择曲线区间,自动计算最小值.最大值.均值等,支持曲线全屏显示 目标的视觉效果是类似股票走势图(GT的UI太丑): 3. 后续增加耗电量.网络流量.crash信息收集等功能: 4. 前期准备:SDK的制作,CPU.内存信息获取算法: 5. 这个工具起名Mobile Tortoise,缩写MT,与GT相呼应,寓意一步一个脚印,日臻完美,图标一只小乌龟,类似下图: 二.排期 11.21-11.2

安卓性能测试工具-GT,安测试

GT: 是腾讯出品的一款APP的随身调测平台,它是直接运行在手机上的“集成调测环境”(IDTE,  Integrated  Debug&Test  Environment).利用GT,仅凭一部手机,无需连接电脑,您即可对APP进行快速的性能测试(CPU.内存.流量.电量.帧率/流畅度等等).开发日志的查看.Crash日志查看.网络数据包的抓取.APP内部参数的调试.真机代码耗时统计等等:更重要的是,您可以在任意真实场所.任何时候做如上的系列事情,这就是“APP的场测”.如果您觉得GT提供的功能还