压力测试工具——Galting

为什么要写Gatling呢?网上已经有一些介绍Gatling的好文章了,比如两位TW同事的文章,可以看这里(我知道Gatling也是因为这位作者介绍的),还有这里。主要是因为最近在使用Gatling做压力测试,感觉这个工具非常好用,所以想结合自己的使用情况也推荐一下。Gatling是基于scala写的一个开源的压力测试工具,它的特点是简单易用,测试报告简洁漂亮,api通俗易懂。

 

JDK1.7

Gatling是基于jdk1.7开发的,所以还在用jdk1.6的同学需要先下载jdk1.7,才可以启动Gatling。顺便说一下,JDK1.7以后肯定是会替换JDK1.6的,但由于历史原因(主要是JDK1.6用的人实在太多了,我想也是由于JDK1.7升级的太晚了)大家都不想升级,我也这也是JAVA走下坡路的原因。

Scala

前面讲过Gatling是用scala写的,像scala、groovy和clojuer都是基于jvm开发的一种语言,不仅继承了java众多成熟的api和稳定的jvm,而且提供了更佳简洁易用的语法。基于某种语言的内核来重新设计一门新语言的这种做法,现在慢慢多了起来,这种做法的最大好处就是不用自己再重新设计编程语言底层相关的一些东西,而且可以使用原有语言大量的成熟api,让新语言就只专注地实现自己的功能,从而使新的语言性能稳定,易用性更高,甚至可以吸引一些原有语言的开发人员。

DSL

看过Galting的api的人就会发现,它的语法很像自然语言,比如测试一个get类型的http请求,它可能会这样写:

demo

1
2
exec(http("demo")
    .get("http://www.myweb.com/helloworld")

是不是很容易懂,这种就是基于DSL来写的代码,关于DSL可以看这本书,这本书我还没怎么看,等看完了以后再做分享,DSL不单单只是把代码写得像自然语言那样简单。

API

要想了解Gatling的各种api,这里推荐看Gatling源码里面的HttpCompileTest这个测试类,这里包含了http几乎所有的api使用示例。下面是截取的代码片段,全部代码可以看这里

demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
.group("C'est ici qu'on trouve des Poneys") {
          exec(http("Catégorie Poney").post("/")
              .param("baz", "${qix}")
              .multivaluedParam("foo", Seq("bar")))
              .exec(http("Catégorie Poney").post("/").multivaluedParam("foo", "${bar}"))
              .exec(http("Catégorie Poney").get("/").queryParam("omg", "foo"))
              .exec(http("Catégorie Poney").get("/").queryParam("omg", "${foo}"))
              .exec(http("Catégorie Poney").get("/").queryParam("omg", session => "foo"))
              .exec(http("Catégorie Poney").get("/").multivaluedQueryParam("omg", List("foo")))
              .exec(http("Catégorie Poney").get("/").multivaluedQueryParam("omg", "${foo}"))
              .exec(http("Catégorie Poney").get("/").multivaluedQueryParam("omg", List("foo")))
      }
      .uniformRandomSwitch(exec(http("Catégorie Poney").get("/")), exec(http("Catégorie Licorne").get("/")))
      .randomSwitch(
          40d -> exec(http("Catégorie Poney").get("/")),
          50d -> exec(http("Catégorie Licorne").get("/")))
      .randomSwitch(40d -> exec(http("Catégorie Poney").get("/")))
      .pause(pause2)

这里说下randomSwitch这个方法,这个方法可以模拟负载均衡,比如上面40d和50d的两行代码,会有40%的几率执行上面一行代码,50%的几率执行下面一行代码。

Question

如果看过上面的示例代码代码,还不知道具体的api怎么用,可以到google group上面的分组提问题,很快就有人回答你的问题。github上面的问题区是让开发提bug或者feature用的,所以尽量不要在上面提问题。

Report

下面是Gatling的报告截图,界面很漂亮,而且参数很齐全,包括全部的请求数,成功/失败的请求数,请求的最大/最小/平均响应时间等。

Http & JMS

目前Gatling支持的协议不多,毕竟是一个轻量级的测试工具,目前只支持Http和JMS(以前用的时候还只是支持HTTP),随着Gatling的发展,以后肯定会支持更多的协议。现在大部分的系统和应用都是提供http协议的api,所以基于http协议的测试也能满足大部分的测试场景了。

时间: 2016-06-07

压力测试工具——Galting的相关文章

压力测试工具ab.exe简介

一.介绍在安装apache时其bin目录下可以找到ab.exe文件,也可以单独下载该文件.这是一个小压力测试工具. 二.使用cmd面板中切换到该文件所在路径,输入ab -help查看帮助. 常用命令 ab -n 1000 -c 100  http://127.0.0.1:8080/testDemo 这行命令的含义是: -n 1000发出表示1000个请求, -c 100表示100个并发数去访问该个项目.若运行正常,会显示出运行的相关信息.若没有反应或者无返回,可能要考虑程序的内存处理相关问题了.

windows系统中安装Jmeter压力测试工具

  Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域. 它可以用于测试静态和动态资源例如静态文件.Java 小服务程序.CGI 脚本.Java 对象.数据库, FTP 服务器, 等等.JMeter 可以用于对服务器.网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能. JMeter的作用 1.能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样

web压力测试工具apache

现在很多web压力测试工具都是收费的,但是apache却自带了一个免费的压力测试工具,即ab工具(命令).具体可在Apache的根目录下的bin目录里面,找到一个ab.exe文件就是.用它可以粗略检测一下自己的程序性能如何. 具体用法如下,摘抄自网上.如有错误,还请指正. 格式 ab [options] [http://]hostname[:port]/path 参数 -n requests     Number of requests to perform //在测试会话中所执行的请求个数.默

QA Center Edition 5.0压力测试工具的功能与性能

QA Center Edition 5.0压力测试工具 工具的功能与性能: QACenter是完整的跨企业的自动测试产品,专为提高软件质量而设计. QACenter可以在整个开发生命周期.跨越多种平台.自动执行测试任务. 1)能够模拟成百的用户执行关键业务 2)能够直接向服务器发送请求 3)能够模仿用户的操作 4)能够测试系统的响应时间,包括: Script:测试执行时的脚本文件名字 PId:检测点号码 Checkpoint description:检测点描述 #Trans:检测点的总交易数 M

网站压力测试工具

在运维工作中,压力测试是一项很重要的工作.比如在一个网站上线之前,能承受多大访问量.在大访问量情况下性能怎样,这些数据指标好坏将会直接影响用户体验.但是,在压力测试中存在一个共性,那就是压力测试的结果与实际负载结果不会完全相同,就算压力测试工作做的再好,也不能保证100% 和线上性能指标相同.面对这些问题,我们只能尽量去想方设法去模拟.所以,压力测试非常有必要,有了这些数据,我们就能对自己做维护的平台做到心中有数   性能测试工具目前最常见的有以下几种:ab.http_load.webbench

Web服务器性能压力测试工具

Web服务器性能压力测试工具 http_load 程序非常小,解压后也不到100K http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载. 但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机搞死. 还可以测试HTTPS类的网站请求. 下载地址:http_load-12mar2006.tar.gz 安装很简单 tar zxvf http_load-12mar2006.tar.gz cd http_load-12mar2006 make && m

javaweb-java web应用压力测试工具

问题描述 java web应用压力测试工具 应用程序在chrome浏览器上运行,请问使用什么工具可以对该应用进行压力测试啊?

压力测试工具apache-ab讲解

最近在做webservices,得到的数据是从德国那边的服务器.要将这些数据整合到现在网站中去.不知道性能如何.就做个压力测试.现在有些压力测试工具都是收费的.在开源的apache中自带个ab工具.就在C:\Apache2. ... 最近在做webservices,得到的数据是从德国那边的服务器.要将这些数据整合到现在网站中去.不知道性能如何.就做个压力测试.现在有些压力测试工具都是收费的.在开源的apache中自带个ab工具.就在C:\Apache2.2\bin\ab.exe.用它可以检测自己

Web性能压力测试工具——Siege详解

Siege是一款开源的压力测试工具,设计用于评估WEB应用在压力下的承受能力.可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行. Siege可以从您选择的预置列表中请求随机的URL.所以siege可用于仿真用户请求负载,而ab则不能.但不要使用siege来执行最高性能基准调校测试,这方面ab就准确很多. 一.安装 编译安装 wget http://www.joedog.org/pub/siege/siege-latest.ta