性能工具之gatling快速入门(代码片段)

zuozewei zuozewei     2022-12-18     576

关键词:

一、介绍

Gatling 是一款基于 Scala 开发的高性能服务器性能测试工具,它主要用于对服务器进行负载等测试,并分析和测量服务器的各种性能指标。

它拥有以下特点:

  • 支持 Akka Actors 和 Async IO,从而能达到很高的性能;
  • 支持实时生成Html动态轻量报表,从而使报表更易阅读和进行数据分析;
  • 支持DSL脚本,从而使测试脚本更易开发与维护;
  • 支持录制并生成测试脚本,从而可以方便的生成测试脚本;
  • 支持导入HAR(Http Archive)并生成测试脚本;
  • 支持 Maven,Eclipse,IntelliJ 等,以便于开发;
  • 支持Jenkins,以便于进行持续集成;
  • 支持插件,从而可以扩展其功能,比如可以扩展对其他协议的支持;
  • 开源免费,开箱即用。

二、 下载

下载地址:https://Gatling.io/open-source/start-testing/

三、目录结构

安装结构如下:

  • bin :目录下有2个脚本,Gatling 和 recorder, Gatling 用来运行测试;

  • conf:Gatling自身的一些配置;

  • lib:Gatling自身依赖的库文件;

  • results:存放测试报告

  • target:你启动运行组件后,Gatling 会为你编译好所有的 .scala 脚本,而编译后的 class 文件就会在这里

  • user-files: 脚本存放位置 user-files/simulations ,默认下载好的包会有几个官方的示例测试 Demo

四、脚本

当运行 gating 脚本的时候,其会扫描 user-files 目录下的所有文件,列出其中所有的 Simulation(一个测试类,里面可以包含任意多个测试场景)。

选择其中一个 Simulation,然后填写 Simulation ID 和运行描述,脚本列表如下:

挑选 AdvancedSimulationStep01.scala 脚本查看如下:

RANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package computerdatabase.advanced

import scala.concurrent.duration._
import io.gatling.core.Predef._
import io.gatling.http.Predef._

class AdvancedSimulationStep01 extends Simulation 

  // Let's split this big scenario into composable business processes, like one would do with PageObject pattern with Selenium
  // object are native Scala singletons
  object Search 
    val search = exec(
      http("Home") // let's give proper names, they are displayed in the reports, and used as keys
        .get("/")
    ).pause(1) // let's set the pauses to 1 sec for demo purpose
      .exec(
        http("Search")
          .get("/computers?f=macbook")
      )
      .pause(1)
      .exec(
        http("Select")
          .get("/computers/6")
      )
      .pause(1)
  

  object Browse 

    val browse = exec(
      http("Home")
        .get("/")
    ).pause(2)
      .exec(
        http("Page 1")
          .get("/computers?p=1")
      )
      .pause(670.milliseconds)
      .exec(
        http("Page 2")
          .get("/computers?p=2")
      )
      .pause(629.milliseconds)
      .exec(
        http("Page 3")
          .get("/computers?p=3")
      )
      .pause(734.milliseconds)
      .exec(
        http("Page 4")
          .get("/computers?p=4")
      )
      .pause(5)
  

  object Edit 

    val edit = exec(
      http("Form")
        .get("/computers/new")
    ).pause(1)
      .exec(
        http("Post")
          .post("/computers")
          .formParam("name", "Beautiful Computer")
          .formParam("introduced", "2012-05-30")
          .formParam("discontinued", "")
          .formParam("company", "37")
      )
  

  val httpProtocol = http
    .baseUrl("http://computer-database.gatling.io")
    .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 (Macintosh; Intel Mac OS X 10.8; rv:16.0) Gecko/20100101 Firefox/16.0")

  // Now, we can write the scenario as a composition
  val scn = scenario("Scenario Name").exec(Search.search, Browse.browse, Edit.edit)

  setUp(scn.inject(atOnceUsers(1)).protocols(httpProtocol))

五、快速执行

进入 bin 目录执行:

./gatling.sh

结果如下:

$ bin % ./gatling.sh  #Gatling 会遍历user-files/simulations,列出所有的Simulation
GATLING_HOME is set to /Users/liwen/Downloads/gatling-charts-highcharts-bundle-3.5.1
Choose a simulation number:
     [0] computerdatabase.BasicSimulation
     [1] computerdatabase.advanced.AdvancedSimulationStep01
     [2] computerdatabase.advanced.AdvancedSimulationStep02
     [3] computerdatabase.advanced.AdvancedSimulationStep03
     [4] computerdatabase.advanced.AdvancedSimulationStep04
     [5] computerdatabase.advanced.AdvancedSimulationStep05
1 # 这个是我选择运行的测试用例ID - 代表选择AdvancedSimulationStep01执行,
Select run description (optional)
runtest # 填入测试用例的描述,可以直接回车跳过
Simulation computerdatabase.advanced.AdvancedSimulationStep01 started...

================================================================================
2021-04-23 21:48:31                                           5s elapsed
---- Requests ------------------------------------------------------------------
> Global                                                   (OK=6      KO=0     )
> Home                                                     (OK=2      KO=0     )
> Home Redirect 1                                          (OK=2      KO=0     )
> Search                                                   (OK=1      KO=0     )
> Select                                                   (OK=1      KO=0     )

---- Scenario Name -------------------------------------------------------------
[--------------------------------------------------------------------------]  0%
          waiting: 0      / active: 1      / done: 0
================================================================================


================================================================================
2021-04-23 21:48:36                                          10s elapsed
---- Requests ------------------------------------------------------------------
> Global                                                   (OK=9      KO=0     )
> Home                                                     (OK=2      KO=0     )
> Home Redirect 1                                          (OK=2      KO=0     )
> Search                                                   (OK=1      KO=0     )
> Select                                                   (OK=1      KO=0     )
> Page 1                                                   (OK=1      KO=0     )
> Page 2                                                   (OK=1      KO=0     )
> Page 3                                                   (OK=1      KO=0     )

---- Scenario Name -------------------------------------------------------------
[--------------------------------------------------------------------------]  0%
          waiting: 0      / active: 1      / done: 0
================================================================================


================================================================================
2021-04-23 21:48:41                                          15s elapsed
---- Requests ------------------------------------------------------------------
> Global                                                   (OK=10     KO=0     )
> Home                                                     (OK=2      KO=0     )
> Home Redirect 1                                          (OK=2      KO=0     )
> Search                                                   (OK=1      KO=0     )
> Select                                                   (OK=1      KO=0     )
> Page 1                                                   (OK=1      KO=0     )
> Page 2                                                   (OK=1      KO=0     )
> Page 3                                                   (OK=1      KO=0     )
> Page 4                                                   (OK=1      KO=0     )

---- Scenario Name -------------------------------------------------------------
[--------------------------------------------------------------------------]  0%
          waiting: 0      / active: 1      / done: 0
================================================================================


================================================================================
2021-04-23 21:48:43                                          16s elapsed
---- Requests ------------------------------------------------------------------
> Global                                                   (OK=13     KO=0     )
> Home                                                     (OK=2      KO=0     )
> Home Redirect 1                                          (OK=2      KO=0     )
> Search                                                   (OK=1      KO=0     )
> Select                                                   (OK=1      KO=0     )
> Page 1                                                   (OK=1      KO=0     )
> Page 2                                                   (OK=1      KO=0     )
> Page 3                                                   (OK=1      KO=0     )
> Page 4                                                   (OK=1      KO=0     )
> Form                                                     (OK=1      KO=0     )
> Post                                                     (OK=1      KO=0     )
> Post Redirect 1                                          (OK=1      KO=0     )

---- Scenario Name -------------------------------------------------------------
[##########################################################################]100%
          waiting: 0      / active: 0      / done: 1
================================================================================

Simulation computerdatabase.advanced.AdvancedSimulationStep01 completed in 16 seconds
Parsing log file(s)...
Parsing log file(s) done
Generating reports...

================================================================================
---- Global Information --------------------------------------------------------
> request count                                         13 (OK=13     KO=0     )
> min response time                                    265 (OK=265    KO=-     )
> max response time                                    547 (OK=547    KO=-     )
> mean response time                                   289 (OK=289    KO=-     )
> std deviation                                         75 (OK=75     KO=-     )
> response time 50th percentile                        267 (OK=267    KO=-     )
> response time 75th percentile                        268 (OK=268    KO=-     )
> response time 95th percentile                        380 (OK=380    KO=-     )
> response time 99th percentile                        514 (OK=514    KO=-     )
> mean requests/sec                                  0.765 (OK=0.765  KO=-     )
---- Response Time Distribution ------------------------------------------------
> t < 800 ms                                            13 (100%)
> 800 ms < t < 1200 ms                                   0 (  0%)
> t > 1200 ms                                            0 (  0%)
> failed                                                 0 (  0%)
================================================================================
# result目录找到报告的html文件
Reports generated in 0s.
Please open the following file: /Users/liwen/Downloads/gatling-charts-highcharts-bundle-3.5.1/results/advancedsimulationstep01/index.html

打开指定路径报告如下:

六、总结

Gatling 压测工具开箱就能使用,就是脚本编写,对测试人员要有开发基础,同时我们可以做二次封装,这样普通的使用人员只要填写常用请求即可。

性能工具之gatling开发环境搭建(代码片段)

文章目录一、前言二、安装插件三、新建工程四、运行结果五、总结一、前言编写Gatling脚本需要搭建脚本开发环境,下面演示使用IDEA开发环境搭建脚本开发环境。二、安装插件打开IDEA,安装scala插件,首次使用,... 查看详情

性能工具之locust简单入门(代码片段)

文章目录前言快速安装主要命令快速上手总结前言Locustisaneasy-to-use,distributed,userloadtestingtool.Itisintendedforload-testingwebsites(orothersystems)andfiguringouthowmanyconcurrentusersasystemcanhandle.Locust是一个易于使用, 查看详情

性能工具之网络benchmarkiperf3快速入门(代码片段)

文章目录一、前言二、安装1、Linux快速安装2、win快速安装三、快速使用1、Linux启动服务端2、win启动客户端四、总结一、前言今天介绍一款常用网络Benchmark工具。iperf3是用来测量网络带宽的工具。它支持调节各种参数比如发送持... 查看详情

性能工具之locust简单入门(代码片段)

文章目录前言快速安装主要命令快速上手总结前言Locustisaneasy-to-use,distributed,userloadtestingtool.Itisintendedforload-testingwebsites(orothersystems)andfiguringouthowmanyconcurrentusersasystemcanhandle.Locust是一个易于使用,分布式,用户负载测试工具... 查看详情

负载,性能测试工具-gatling(代码片段)

...能强大的负载测试工具,它为易于使用,高可维护性和高性能而设计。开箱即用,Gatling由于对HTTP协议的出色支持,使其成为负载测试任何HTTP服务器的首选工具。由于核心引擎实际上是协议不可知的,因此完全可以实现对其他协... 查看详情

gatling高性能测试工具(代码片段)

使用mvn命令直接测试。 (loadrunner-----)1.新建maven工程2.在pom中导入依赖<dependencies><dependency><groupId>io.gatling.highcharts</groupId><artifactId>gatling-charts-highcharts</artif 查看详情

cuda编程之快速入门(代码片段)

...图像视觉领域的同学多多少少都会接触到CUDA,毕竟要做性能速度优化,CUDA是个很重要的工具,CUDA是做视觉的同学难以绕过的一个坑,必须踩一踩才踏实。CUDA编程真的是入门容易精通难,具有计算机体系结构和C语言编程知识储... 查看详情

性能工具之jmeter关联入门(代码片段)

...代码路由参考代码Jmeter脚本编写结果总结背景关联是每个性能测试人员必须掌握的技能,是解决性能脚本中的"金钥匙"。主要原理简单的说:每次请求服务器,服务器会给客户端发送一个动态值,但服务器会... 查看详情

性能工具之jmeter关联入门(代码片段)

...代码路由参考代码Jmeter脚本编写结果总结背景关联是每个性能测试人员必须掌握的技能,是解决性能脚本中的"金钥匙"。主要原理简单的说:每次请求服务器,服务器会给客户端发送一个动态值,但服务器会... 查看详情

性能测试-gatling(代码片段)

背景说明转自:http://www.infoq.com/cn/articles/new-generation-server-testing-tool-gatling/以前Jmeter用的多,如文档中所说,实际使用后发现Jmeter多用户时很容易并发并发不均匀,导致一些数据统计不准确。Jmeter&Gatling的QPS统计 因此我们... 查看详情

性能工具之jmeter微信小程序websocket脚本入门(代码片段)

文章目录前言准备demoJMeter压测总结前言今天试着写了写小程序聊天页面中的信息底层是怎么实现的,而WebSocket协议,客户端和服务端都可以主动的推送消息,只要建立链接就能推送消息。准备demo前置条件,需要... 查看详情

性能工具之jmeter微信小程序websocket脚本入门(代码片段)

文章目录前言准备demoJMeter压测总结前言今天试着写了写小程序聊天页面中的信息底层是怎么实现的,而WebSocket协议,客户端和服务端都可以主动的推送消息,只要建立链接就能推送消息。准备demo前置条件,需要... 查看详情

性能工具之jmeterjdbcrequest基础(代码片段)

文章目录一、前言二、JavaJDBC入门1、主要操作步骤2、参考代码三、JMeterJDBC示例1、配置TestPlan2、增加JDBCConnectionConfiguration3、新建JDBCRequest4、增加结果查看树四、总结一、前言JDBC本质其实是官方(sun公司)定义的一套操作... 查看详情

pandas高级数据分析快速入门之二——基础篇(代码片段)

Pandas高级数据分析快速入门之一——Python开发环境篇Pandas高级数据分析快速入门之二——基础篇Pandas高级数据分析快速入门之三——统计分析篇Pandas高级数据分析快速入门之四——表内、表间数据处理篇Pandas高级数据分析快速入... 查看详情

pandas高级数据分析快速入门之四——数据可视化篇(代码片段)

Pandas高级数据分析快速入门之一——Python开发环境篇Pandas高级数据分析快速入门之二——基础篇Pandas高级数据分析快速入门之三——数据挖掘与统计分析篇Pandas高级数据分析快速入门之四——数据可视化篇Pandas高级数据分析快速... 查看详情

猿创征文|国产数据库实战之tidb数据库快速入门(代码片段)

...IP地址3.TiDB集群介绍二、快速部署本地测试集群1.安装TiUP工具2.声明全局环境变量3.快速部署TiDB集群三、连接TiDB数据库1.新开一个session以访问TiDB数据库2.通过Mysql客户端连接TiDB数据库四、清理TiDB集群环境五、TiDB数据库的用户管... 查看详情

pandas高级数据分析快速入门之五——机器学习特征工程篇(代码片段)

Pandas高级数据分析快速入门之一——Python开发环境篇Pandas高级数据分析快速入门之二——基础篇Pandas高级数据分析快速入门之三——数据挖掘与统计分析篇Pandas高级数据分析快速入门之四——数据可视化篇Pandas高级数据分析快速... 查看详情

pandas高级数据分析快速入门之五——机器学习特征工程篇(代码片段)

Pandas高级数据分析快速入门之一——Python开发环境篇Pandas高级数据分析快速入门之二——基础篇Pandas高级数据分析快速入门之三——数据挖掘与统计分析篇Pandas高级数据分析快速入门之四——数据可视化篇Pandas高级数据分析快速... 查看详情