性能工具之 Gatling 开发环境搭建

简介: 编写 Gatling 脚本需要搭建脚本开发环境,下面演示使用 IDEA 开发环境搭建脚本开发环境。

一、前言

编写 Gatling 脚本需要搭建脚本开发环境,下面演示使用 IDEA 开发环境搭建脚本开发环境。

二、安装插件

打开 IDEA,安装 scala 插件,首次使用,随便创建一个工程,进入idea页面,按:Flie >Settings> Plugins,搜索 Scala,点击“install”即可,install 为灰色即为已安装,install 为绿色即为安装可用(未安装)状态,安装之后,restart 一下 IDEA 即可。

三、新建工程

  • 创建新工程 Create New Project

  • 选择 mavenCreate form archetypeAdd Archetype

  • 输入内容

image.png

输入内容:

GroupId : io.gatling.highcharts
ArtifactId : gatling-highcharts-maven-archetype
Version : 填入你想使用的版本号

查找版本号如:

image.png

之后的步骤就下一步下一步就行了。

工程目录如下:
image.png

注意:中间 dunsanTest02 是自己写的

目录结构说明:

data:存放需要输入的数据
scala:存放你编写的测试脚本
Engine:右键运行跟运行
Recorder:右键运行会弹出录制程序(不建议使用,建议手动开发脚本)
target:运行测试之后,测试报告存放在此

参考 Demo 代码:

import io.gatling.core.scenario.Simulation
import io.gatling.core.Predef._
import io.gatling.http.Predef._

/**
 * @author 7d
 * @Date: 2021-04-27 20:08
 * @Description: 简单例子
 * @version 1.0
 */

class dunsanTest02 extends Simulation {
   
   

  object HomeIndex {
   
   
    val home = exec(http("home_index") //设置请求名称,可随意定义
      .get("http://localhost:8080/")    //请求资源路径
      .check(status.is(200)) //判断http status
    )
  }

 // scenario里的参数:scenario name
 //exec()里的参数就是我们的执行动作,http("本次请求的名称").get("本次http get请求的地址")   
  val page = scenario("性能测试。").exec(HomeIndex.home)
  setUp(
    //设置线程数 运行10秒 during 默认单位秒,如果要用微秒 during(10 millisecond)
    page.inject(constantUsersPerSec(2) during (10))
    // constantUsersPerSec 立马启动的用户数,可以理解为并发数
  )
}

//repeat(times,counterName)
// times:循环次数
// counterName:计数器名称,可选参数,可以用来当当前循环下标值使用,从0开始
val scn = scenario("BaiduSimulation").repeat(100){
   
   
    exec(http("baidu_home").get("/"))
  }


//during(duration, counterName, exitASAP)
// duration:时长,默认单位秒,可以加单位milliseconds,表示毫秒
// counterName:计数器名称,可选。很少使用
// exitASAP:默认为true,简单的可以认为当这个为false的时候循环直接跳出,可在循环中进行控制是否继续
/*
  运行100秒 during 默认单位秒,如果要用微秒 during(100 millisecond)
*/
  val scn = scenario("BaiduSimulation").during(100){
   
   
    exec(http("baidu_home").get("/"))
  }

四、运行结果

run 起来看看:
image.png

控制台显示:
image.png

运行结果如下:
image.png

打开 html 报告:
image.png

验证写的脚本是否可以放入 gatling 项目运行,效果如下:

liwen@ bin % ./gatling.sh
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
     [6] dunsanTest02
6
Select run description (optional)
tiaoshibiadu
Simulation dunsanTest02 started...

================================================================================
2021-04-27 18:58:28                                           0s elapsed
---- Requests ------------------------------------------------------------------
> Global                                                   (OK=2      KO=0     )
> home_index                                               (OK=2      KO=0     )

---- 性能测试。---------------------------------------------------------------------
[##########################################################################]100%
          waiting: 0      / active: 0      / done: 2
================================================================================

Simulation dunsanTest02 completed in 0 seconds
Parsing log file(s)...
Parsing log file(s) done
Generating reports...

================================================================================
---- Global Information --------------------------------------------------------
> request count                                          2 (OK=2      KO=0     )
> min response time                                    379 (OK=379    KO=-     )
> max response time                                    506 (OK=506    KO=-     )
> mean response time                                   443 (OK=443    KO=-     )
> std deviation                                         64 (OK=64     KO=-     )
> response time 50th percentile                        443 (OK=443    KO=-     )
> response time 75th percentile                        474 (OK=474    KO=-     )
> response time 95th percentile                        500 (OK=500    KO=-     )
> response time 99th percentile                        505 (OK=505    KO=-     )
> mean requests/sec                                      2 (OK=2      KO=-     )
---- Response Time Distribution ------------------------------------------------
> t < 800 ms                                             2 (100%)
> 800 ms < t < 1200 ms                                   0 (  0%)
> t > 1200 ms                                            0 (  0%)
> failed                                                 0 (  0%)
================================================================================

Reports generated in 0s.
Please open the following file: /Users/liwen/Downloads/gatling-charts-highcharts-bundle-3.5.1/results/dunsantest02-20210427105826635/index.html

五、总结

大家观察出来,Gatling 在运行的时候不像 JMeter 一样,在运行的时候输入时间与加载方式,Gatling 控制都在脚本中编写。

更多操作请参考官方文档:https://gatling.io/docs/current/

目录
相关文章
|
7月前
|
数据挖掘 测试技术 BI
性能工具之 Gatling 快速入门
Gatling 是一款基于 Scala 开发的高性能服务器性能测试工具,它主要用于对服务器进行负载等测试,并分析和测量服务器的各种性能指标。
272 1
性能工具之 Gatling 快速入门
|
1月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
54 1
|
3月前
|
消息中间件 监控 测试技术
惊呆了!Python性能测试高手都用这些神器:JMeter+Locust,效率翻倍📈
【9月更文挑战第8天】在软件开发中,性能测试对确保应用稳定性和高效运行至关重要。对于Python开发者而言,选择合适的性能测试工具能显著提升测试效率并精准定位性能瓶颈。本文深入探讨了JMeter和Locust这两款工具的独特优势。JMeter作为跨平台的性能测试工具,支持多种协议,具备高度可定制性和扩展性;而Locust则专为Python应用设计,利用协程实现高并发,提供实时监控和分布式测试功能。两者结合使用,可在实际项目中实现1+1&gt;2的效果,帮助开发者构建全面高效的测试方案,保障应用稳定运行。
211 1
|
3月前
|
API 开发工具 Android开发
从安装到打包,手把手教你如何在Uno Platform上部署跨平台应用——一篇详尽的开发者指南
【9月更文挑战第7天】Uno Platform 是一个跨平台应用开发框架,利用UWP API构建Web、iOS、Android等多平台应用。本文详述了安装Uno Platform SDK、配置项目支持跨平台、添加主方法以及使用命令行工具进行应用打包的过程,助您快速上手 Uno Platform 并部署应用。通过简单的代码示例,让开发者轻松掌握从安装到发布的核心步骤。
232 2
|
3月前
|
测试技术 持续交付 Apache
性能测试不再愁!Python+JMeter+Locust,三步打造高性能应用
【9月更文挑战第4天】随着互联网的发展,软件性能成为衡量应用成功的关键。性能测试确保应用稳定高效运行,但复杂环境和多样需求带来了挑战。Python、JMeter和Locust三款工具可构建高效全面的性能测试方案。Python语法简洁,库丰富;JMeter提供图形界面,支持多种协议;Locust基于Python,简单易用且高度可扩展。结合三者,能满足复杂需求,保证灵活性与高效性。无论初学者还是资深工程师,都能确保应用高性能运行。
45 1
|
7月前
|
监控 Java 测试技术
性能工具之 nGrinder 入门安装及使用
【5月更文挑战第1天】性能工具之 nGrinder 入门安装及使用
97 5
性能工具之 nGrinder 入门安装及使用
|
7月前
|
Ubuntu 物联网 Linux
性能工具之emqtt_bench快速上手
【4月更文挑战第8天】MQTT 协议是目前最适合物联网场景数据平台搭建的通信协议。基于此,BenchMark 联网场景中的 MQTT 消息采集与传递,以及如何构建一个百万级,甚至千万级 MQTT 消息平台,可以为物联网业务的企业用户提供平台架构设计参考。
167 2
性能工具之emqtt_bench快速上手
|
7月前
|
监控 测试技术 Python
性能工具之 Locust 简单入门
【4月更文挑战第1天】Locust是一个易于使用,分布式,用户负载测试工具。它用于负载测试web站点(或其他系统)并计算一个系统可以处理多少并发用户。
115 1
性能工具之 Locust 简单入门
|
Rust 开发工具 git
性能的极致,Rust的加持,Zed-Dev编辑器快速搭建Python3.10开发环境
快就一个字,甚至比以快著称于世的Sublime 4编辑器都快,这就是Zed.dev编辑器。其底层由 Rust 编写,比基于Electron技术微软开源的编辑器VSCode快一倍有余,性能上无出其右,同时支持多人编辑代码。
性能的极致,Rust的加持,Zed-Dev编辑器快速搭建Python3.10开发环境
|
监控 测试技术 Apache
测试工具介绍
ApacheBench、JMeter 和 Gatling 都是常用的性能测试工具,这里为您详细介绍这三个工具的操作流程。
158 0