通过加特林(Gatling)自动化您的负载测试

作者 : IT 大叔 本文共3378个字,预计阅读时间需要9分钟 发布时间: 2020-09-21

加特林(Gatling)教程系列:

通过加特林(Gatling)自动化您的负载测试-第一章

使用加特林(Gatling)自动进行负载测试-顺序!-第二章

大约10年前,我第一次参与了自动负载测试。当时,我是一个团队的开发人员,负责构建可供数百个并发用户使用的企业应用程序

为了准备进行负载测试,我们首先建立了一个类似于生产的测试环境。然后,我们很高兴地导航到主页以进行一些基本的冒烟测试,然后再开始真正的测试。不幸的是,主页根本无法加载。

经过调查,我们意识到只有一个用户遇到了SQL性能问题,并且我们的应用程序需要支持数百个并发用户。

这是我对自动负载测试和调整的介绍,并帮助我理解了为什么自动负载测试对于交付高质量企业软件如此重要。

什么是负载测试

负载测试可验证与性能相关的非功能性需求。样本性能要求可能包括:

  • 该应用程序必须支持多达300个并发用户
  • 响应时间必须少于3秒的95%的时间
  • 响应时间必须少于5秒(在99%的时间内)

负载测试的其他输入可能是业务交易分配。例如:

  • 搜索库存占所有交易的45%
  • 下新订单占所有交易的35%
  • 检查订单状态为所有交易的10%
  • 管理任务占所有交易的10%

基于这些类型的需求,负载测试工具使我们能够设计和开发自动化流程,以验证应用程序是否符合需求,并确定需要注意的领域。

通常,测试的目的是确保以允许应用程序满足性能要求的方式设计,开发和调整后端环境。

要执行300个并发用户负载测试,我们不需要打开300个版本的浏览器或移动应用。相反,我们的负载测试工具将通过发送客户端将发送的相同API请求来模拟客户端。
通过加特林(Gatling)自动化您的负载测试插图

什么是加特林

Gatling是一种流行的负载测试工具,具有两个版本,一个是免费的开源版本,另一个是企业版Gatling FrontLine。对于这篇文章,我将重点介绍免费版本。

Gatling用Scala编写,因此它可以在Linux和Windows计算机上运行。Gatling是基于代码的工具,这意味着您正在编写Scala代码以构建脚本。加特林(Gatling)没有IDE;而是一个可以与流行的IDE(例如Visual Studio Code或IntelliJ IDEA)集成的插件。

Gatling是使用Akka工具包构建的,这意味着Gatling不需要为每个用户使用单独的线程,与JMeter之类的工具相比,它可以在一台测试机上生成更大的工作量。

Gatling提供了可靠的报告,可让您分析应用程序在负载下的性能。

OK,足够多的谈话,让我们开始使用Gatling!

运行示例加特林脚本

下载加特林

  1. 访问“ 开放源代码”页面,然后单击立即下载按钮。截至目前,当前的Gatling版本为3.3.1,因此将下载示例项目:gatling-charts-highcharts-bundle-3.3.1-bundle.zip。
  2. 解压缩下载的zip文件。

运行示例脚本

  1. 加特林包含一些示例脚本,可供您执行。在命令行中,导航到解压缩后的工作文件夹的/ bin文件夹并执行./gatling.shgatling.bat在Windows上)
  2. 然后,加特林将在运行脚本之前询问您几个问题。现在,选择模拟“ 0”,如果需要,输入运行说明,然后按Enter。该脚本将启动并运行约25秒钟。如果一切按计划进行,您应该会看到以下内容:通过加特林(Gatling)自动化您的负载测试插图(2)

除了命令窗口中的统计信息外,您还将看到可在浏览器中打开的HTML结果报告的位置。它看起来应该像这样:
通过加特林(Gatling)自动化您的负载测试插图(4)

就是这样了!您下载了一个示例加特林脚本,然后运行它并查看结果。如果要查看运行的脚本,可以在用户文件/模拟/计算机数据库/BasicSimulation.scala中找到它。使用文本编辑器或您喜欢的IDE打开它。

现在是时候创建自己的脚本了!

您的第一个脚本

对于我们的第一个脚本,将测试示例加特林网站。该站点提供清单中的计算机列表,并允许您添加和更改计算机。我们需要一个脚本,该脚本将查看所有计算机的列表,然后添加一台新计算机。

创建加特林脚本有两个选项。一种是使用Gatling随附的Gatling Recorder,另一种是从头开始编写脚本。由于我们才刚刚开始,所以让我们从记录器开始。

使用加特林记录仪

要启动Gatling Recorder,请从命令行导航至解压缩后的工作文件夹的/ bin文件夹,然后执行./recorder.shrecorder.bat在Windows上)。记录器实用程序将启动:
通过加特林(Gatling)自动化您的负载测试插图(6)

我们将使用此实用程序来生成测试脚本。

在右上角有一个Recorder Mode的下拉菜单,其中有2个选项,HTTP Proxy和HAR Converter。在本文中,我们将选择HAR Converter,它使用HTTP存档文件作为脚本生成过程的输入。

生成HAR文件

HAR文件包含有关浏览器与网络资源交互的详细信息。该文件通常用于帮助解决性能问题,因为它从浏览器角度包含详细的性能数据。HAR文件为JSON格式,可以使用Chrome,Firefox,IE或Edge生成。我们将使用Google Chrome生成HAR文件。

打开Chrome,打开“开发人员工具”,点击“网络”标签,然后浏览至https://computer-database.gatling.io/computers。我们将为此站点生成一个负载测试脚本。

在开发人员工具中,单击“清除”按钮,然后单击“保留日志”复选框,这将使您的网络活动被捕获为HAR文件。

现在,我们将逐步浏览我们的站点,并允许浏览器将活动记录到HAR文件中。

  1. 刷新页面
  2. 单击绿色的“添加新计算机”按钮
  3. 填写新计算机的详细信息,然后单击“创建此计算机”
  4. 现在我们只需要保存HAR文件。右键单击网络活动窗口中的任意位置,然后选择“将所有HAR与内容一起保存”。

现在您已经有了HAR文件,可以在记录器中使用它了。

使用HAR文件生成脚本

回到记录器,让我们从HAR文件生成脚本:

  1. 对于记录模式,选择“ HAR转换器”
  2. 对于“ Har File”,选择之前保存的HAR File
  3. 对于“类名”,输入 MyFirstGatlingScript
  4. 保留所有其他选项不变,然后单击右下角的开始按钮。

希望你看到这样的事情:
通过加特林(Gatling)自动化您的负载测试插图(8)

查看脚本

从Gatling安装文件夹中,导航到user-files / simulations文件夹。您应该看到一个名为“ MyFirstGatlingScript.scala”的文件。这是一个文本文件,因此请在您喜欢的文本编辑器中将其打开。

我不会覆盖脚本中的所有内容,但我想强调以下几点:

  1. 大约到脚本的一半,您应该会看到类似以下的代码:
    通过加特林(Gatling)自动化您的负载测试插图(10)即使您不熟悉Scala,这似乎也相当熟悉。在这里,您可以看到在逐步浏览站点以生成HAR文件时进行的服务器调用:

    • request_0是.get("/computers"),它是计算机列表的显示。
    • request_1是.get("/computers/new")“添加新计算机”按钮的单击。
    • request_2是.post("/computers")要添加新计算机的计算机。
  2. 在request_0和request_1之后,您应该看到一条pause语句,该语句将在脚本中引入一个暂停以模拟用户的思考时间。暂停的秒数取决于您最初创建HAR文件时在步骤之间暂停的时间。Chrome创建HAR文件时,该数据会自动保存。实际的思考时间对于构建实际的负载测试方案至关重要。
  3. 最后的兴趣点是最后一行:
    通过加特林(Gatling)自动化您的负载测试插图(12)这段代码设置了要运行的并发用户数量以及如何将其添加到测试中。对于此示例,我们只有一个用户将立即添加。

运行脚本

最后,让我们运行这个新脚本。我们将遵循用于运行初始示例脚本的相同模式:

  1. 从Gatling安装文件夹中,导航到bin文件夹
  2. 执行./gatling.shgatling.bat在Windows上)
  3. 现在,您应该在可用脚本列表中看到一个新脚本,这就是您刚刚创建的新脚本:通过加特林(Gatling)自动化您的负载测试插图(14)
  4. 选择您的脚本并观看它运行!脚本结束后,您应该会看到以下内容:
    通过加特林(Gatling)自动化您的负载测试插图(16)

那里有。您创建第一个加特林脚本并执行它!

这是对加特林的基本介绍。在现实世界中,您将无法依靠记录器来完成所有工作。

您将需要一种策略来引入测试数据,断言API调用是否按预期工作,包括多个业务场景,日志记录等。

您将对测试有一些要求,这些要求将要求您编辑生成的脚本,并且可能需要从头开始构建新脚本。在我的下一篇文章中,我将介绍诸如此类的更多信息,请继续关注!

免责声明:
1. 本站资源转自互联网,源码资源分享仅供交流学习,下载后切勿用于商业用途,否则开发者追究责任与本站无关!
2. 本站使用「署名 4.0 国际」创作协议,可自由转载、引用,但需署名原版权作者且注明文章出处
3. 未登录无法下载,登录使用金币下载所有资源。
IT小站 » 通过加特林(Gatling)自动化您的负载测试

常见问题FAQ

没有金币/金币不足 怎么办?
本站已开通每日签到送金币,每日签到赠送五枚金币,金币可累积。
所有资源普通会员都能下载吗?
本站所有资源普通会员都可以下载,需要消耗金币下载的白金会员资源,通过每日签到,即可获取免费金币,金币可累积使用。

发表评论