test perf-03-性能测试之 Gatling 使用入门官方教程

quick start

快速入门

学习 Gatling 的概念,使用录制器创建可运行的 Gatling 仿真。

介绍

在这一部分,我们将使用 Gatling 进行负载测试一个简单的云托管的 Web 服务器,并向您介绍 DSL(领域特定语言)的基本要素。

选择合适的语言

Gatling 提供了两种主要的 DSL:

  1. 自Gatling 3.7版本引入的Java DSL,也可在Kotlin中使用。
  2. 最初的Scala DSL。

在选择使用 Gatling 时,我们建议遵循以下规则:

  • 如果目标 Gatling 用户是 Scala 开发者,则使用 Scala。
  • 如果他们是 Kotlin 开发者,则使用 Kotlin。
  • 否则,使用 Java。

Java 在计算机科学课程中被广泛教授,编译时需要较少的 CPU,并且在 Maven 或 Gradle 中更容易配置。

安装

请查看安装部分,选择符合您需求的设置。建议非开发人员从捆绑设置开始。在本教程中,我们将展示与捆绑设置一起使用的命令。

编码

Gatling 的默认编码是 UTF-8。如果您想使用其他编码,您需要:

  • 在使用录制器时选择适当的编码。
  • 在 gatling.conf 文件中配置适当的编码。它将用于编译您的仿真、构建您的请求和响应。
  • 确保您的文本编辑器编码已正确配置以匹配。

测试用例

此页面将引导您了解大多数 Gatling HTTP 功能。您将了解有关仿真、场景、数据源、录制器、循环等的内容。

示例应用程序

在本教程中,我们将使用一个名为 “Computer-Database” 的应用程序,部署在以下 URL:http://computer-database.gatling.io。

场景

为了测试该应用程序的性能,我们将创建代表用户在导航应用程序时真正发生的场景。

这是我们认为真实用户在应用程序中可能会执行的操作:

  1. 用户进入应用程序。
  2. 用户搜索 ‘macbook’。
  3. 用户打开其中一个相关型号。
  4. 用户返回首页。
  5. 用户浏览页面。
  6. 用户创建一个新型号。

基础知识

使用录制器

为了简化场景的创建,我们将使用 Recorder,这是 Gatling 提供的一种工具,允许您记录对 Web 应用程序的操作并将其导出为 Gatling 场景。

可以使用位于 bin 目录中的脚本启动此工具:

在 Linux/Unix 上:

$GATLING_HOME/bin/recorder.sh

在 Windows 上:

%GATLING_HOME%\bin\recorder.bat

一旦启动,以下 GUI 允许您配置如何记录请求和响应。

使用以下选项进行设置:

  • Recorder Mode 设置为 HTTP Proxy
  • computerdatabase 包
  • BasicSimulation 名称
  • Follow Redirects? 勾选
  • Infer HTML resources? 勾选
  • Automatic Referers? 勾选
  • Remove cache headers? 勾选
  • No static resources 点击
  • 选择所需的格式。教程将假定为 “Java 8”

gatling

录制场景

现在,简单地浏览该应用程序:

  1. 输入 ‘Search’ 标签。
  2. 转到网站:http://computer-database.gatling.io。
  3. 搜索名字中带有 ‘macbook’ 的型号。
  4. 选择 ‘Macbook pro’。
  5. 输入 ‘Browse’ 标签。
  6. 返回到首页。
  7. 通过单击“下一页”按钮,多次遍历模型页面。
  8. 输入 ‘Edit’ 标签。
  9. 单击“添加新计算机”。
  10. 填写表单。
  11. 单击“创建此计算机”。

尽量像真实用户一样行动,不要立即从一个页面跳转到另一个页面而不花时间阅读。这将使您的场景更接近真实用户的行为。

当完成场景演练时,在录制器界面上单击“Stop”。

生成的仿真将保存在 Gatling 安装的 user-files/simulations/computerdatabase 文件夹下,文件名为 BasicSimulation.java。

Gatling 场景解释

以下是生成的输出:

//package computerdatabase; // 1// 2
import io.gatling.javaapi.core.*;
import io.gatling.javaapi.http.*;import static io.gatling.javaapi.core.CoreDsl.*;
import static io.gatling.javaapi.http.HttpDsl.*;public class BasicSimulationJava extends Simulation { // 3HttpProtocolBuilder httpProtocol = http // 4.baseUrl("http://computer-database.gatling.io") // 5.acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") // 6.doNotTrackHeader("1").acceptLanguageHeader("en-US,en;q=0.5").acceptEncodingHeader("gzip, deflate").userAgentHeader("Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0");ScenarioBuilder scn = scenario("BasicSimulation") // 7.exec(http("request_1") // 8.get("/")) // 9.pause(5); // 10{setUp( // 11scn.injectOpen(atOnceUsers(1)) // 12).protocols(httpProtocol); // 13}
}

这段代码是 Gatling 生成的仿真场景的源代码,下面是它的主要部分的解释:

  1. 可选包:

    • 这是用于组织代码的可选包声明。
  2. 所需导入:

    • 这是一些必需的导入语句,引入了 Gatling 的相关类和方法。
  3. 类声明:

    • 这里声明了一个类,注意它扩展了 Simulation 类。Simulation 是 Gatling 中用于定义性能测试场景的基类。
  4. HTTP请求的通用配置:

    • 这一部分包含了所有 HTTP 请求共用的配置,如基本 URL、HTTP 头等。
  5. baseUrl:

    • 定义了一个将被添加到所有相对 URL 前面的基础 URL。
  6. 通用的 HTTP 头:

    • 这里定义了将随所有请求一起发送的通用 HTTP 头。
  7. 场景定义:

    • 这里开始了测试场景的定义。
  8. HTTP 请求:

    • 定义了一个名为 “request_1” 的 HTTP 请求,使用 GET 方法,指定了请求的 URL。
  9. 暂停/思考时间:

    • 使用 pause 方法添加了一些暂停/思考时间。在 Gatling 中,时间的单位默认为秒。
  10. 场景设置:

    • 这部分设置了将在此仿真中启动的场景。
  11. 注入用户:

    • 使用 inject 方法声明将注入一个名为 “scn” 的场景中的单个用户。
  12. 附加 HTTP 配置:

    • 使用 protocols 方法将上面声明的 HTTP 配置附加到场景中。

这个代码片段定义了一个简单的 Gatling 场景,包括一个基本的 HTTP 请求和一些暂停时间。

整个场景将模拟用户在应用程序中的一些典型操作。详细了解 Gatling Simulation 结构的更多信息,请查阅 Simulation 参考页面。

运行 Gatling

启动位于 bin 目录中的第二个脚本:

在 Linux/Unix 上:

$GATLING_HOME/bin/gatling.sh

在 Windows 上:

%GATLING_HOME%\bin\gatling.bat

您应该看到一个带有以下选择的菜单:

Do you want to run the simulation locally, on Gatling Enterprise, or just package it?
Type the number corresponding to your choice and press enter
[0] <Quit>
[1] Run the Simulation locally
[2] Run the Simulation on Gatling Enterprise Cloud
[3] Package the Simulation for Gatling Enterprise

输入 1 然后按 Enter。

接下来,您将看到一个仿真示例的菜单:

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

输入 0 然后按 Enter。在 Gatling 要求输入运行描述时,按 Enter。

当仿真完成时,控制台将显示指向 HTML 报告的链接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/305115.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink1.17实战教程(第五篇:状态管理)

系列文章目录 Flink1.17实战教程&#xff08;第一篇&#xff1a;概念、部署、架构&#xff09; Flink1.17实战教程&#xff08;第二篇&#xff1a;DataStream API&#xff09; Flink1.17实战教程&#xff08;第三篇&#xff1a;时间和窗口&#xff09; Flink1.17实战教程&…

[Redis实战]优惠券秒杀

三、优惠券秒杀 3.1 全局唯一ID 每个店铺都可以发布优惠券&#xff1a; 当用户抢购时&#xff0c;就会生成订单并保存到tb_voucher_order这种表中&#xff0c;而订单表如果使用数据库自增ID就存在一些问题&#xff1a; id的规律性太明显受单表数据量的限制 场景分析一&…

【网络安全 | 扫描器】御剑安装及使用教程详析

御剑是一款传统的Web网络安全综合检测程序&#xff0c;支持对PHP、JSP、ASPX等文件进行扫描&#xff0c;具备全扫描、网络安全扫描和主机安全扫描能力&#xff0c;方便发现网站漏洞。 文章目录 下载使用教程 本文对御剑的安装及使用教程进行详析 下载 下载地址读者可自行上网…

无人职守自动安装linux操作系统

无人职守自动安装linux操作系统 1. 大规模部署案例2. PXE 技术3. Kickstart 技术4. 配置安装服务器4.1 DHCP服务4.2 TFTP 服务4.3 NFS服务 5. 示例5.1 搭建server1. 启动dhcp并设为开机自启2. 设置并启动tftp3. 将客户端所需启动文件复制到TFTP服务器4. 创建Kickstart自动应答文…

美国化妆品FDA认证被强制要求,出口企业该这么办!!!

化妆品FDA认证是进入美国市场的重要准入条件&#xff0c;具备该认证有助于提升产品的市场竞争力和信誉&#xff1b; 目前FDA注册系统已全面开放&#xff0c;从原来的自愿性认证变更为现在的强制性认证&#xff0c;化妆品企业合规日期为2023年12月29日&#xff0c;但是强制处罚…

C++day2作业

把课上strcut的练习&#xff0c;尝试着改成class #include <iostream>using namespace std; class Stu { private:int age;string sex;int hign; public:int soce;void get_information();void set_information(); }; void Stu::set_information() {static Stu s1;cout …

JAVA——JDBC学习

视频连接&#xff1a;https://www.bilibili.com/video/BV1sK411B71e/?spm_id_from333.337.search-card.all.click&vd_source619f8ed6df662d99db4b3673d1d3ddcb 《视频讲解很详细&#xff01;&#xff01;推荐》 JDBC&#xff08;Java DataBase Connectivity Java数据库连…

Flink1.17实战教程(第四篇:处理函数)

系列文章目录 Flink1.17实战教程&#xff08;第一篇&#xff1a;概念、部署、架构&#xff09; Flink1.17实战教程&#xff08;第二篇&#xff1a;DataStream API&#xff09; Flink1.17实战教程&#xff08;第三篇&#xff1a;时间和窗口&#xff09; Flink1.17实战教程&…

C语言之字符串处理

目录 字符串长度 显示字符串 数字字符的出现次数 大小写字符转换 字符串数组的参数传递 非字符串的字符数组 目前我们所学习到的是围绕字符串的处理&#xff0c;仅仅是生成字符串、读取并显示字符串&#xff0c;下面我学习更加灵活处理字符串的方式。 字符串长度 我们来看…

kubeSphere集群部署ElasticSearch

kubeSphere集群部署ElasticSearch 根据docker启动文件来配置修改max_map_count添加配置文件创建工作负载测试 根据docker启动文件来配置 docker run -d \--name es \-e "ES_JAVA_OPTS-Xms512m -Xmx512m" \-e "discovery.typesingle-node" \-v es-data:/us…

设计模式--访问者模式

实验 25&#xff1a;访问者模式 本次实验属于模仿型实验&#xff0c;通过本次实验学生将掌握以下内容&#xff1a; 1、理解访问者模式的动机&#xff0c;掌握该模式的结构&#xff1b; 2、能够利用访问者模式法解决实际问题。 [实验任务]&#xff1a;打包员 在我们课堂上…

【新版Hi3536AV100性能果真强悍】

Hi3536AV100是针对多路高清/超高清&#xff08;1080p/4M/5M/4K&#xff09;智能NVR产品应用开发的新一代专业高端SoC芯片。 Hi3536AV100集成了ARM Cortex-A55八核处理器和性能强大的神经网络处理器&#xff0c;支持多种智能算法应用。 Hi3536AV100支持32路1080p多协议解码及4路…