使用加特林(Gatling)自动进行负载测试-顺序!
加特林(Gatling)教程系列:
这篇文章是我第一篇加特林(Gatling)文章的续篇。我知道您在想什么,续集难道不是总是la脚吗?是的,通常是这样。希望我能扭转这种趋势!通过这篇文章,我们将更深入地了解盖特林的精髓。
我的前一篇文章从性能测试的总体概述开始,然后深入研究了使用Gatling Recorder来构建Gatling脚本。在这些示例中,我们使用了加特林捆绑包,但是还有另一种方法。
Gatling捆绑包是一个独立的工具,并不是在企业环境中利用Gatling时真正要使用的工具。Gatling也可以与Maven,sbt或Gradle之类的构建工具一起使用。让我们通过使用Maven原型来引导一个新的Maven项目。
引导新的加特林项目
您可以使用IDE使用原型创建一个新项目,但让我们从命令行开始即可:
mvn archetype:generate -DarchetypeGroupId=io.gatling.highcharts -DarchetypeArtifactId=gatling-highcharts-maven-archetype
系统将提示您输入groupId,artifactId,版本和软件包。确认选择后,将创建一个新项目。之后,您可能还需要设置Scala SDK。
而且,您可能还需要将src/test
文件夹标记为“测试源根”。
查看您的pom.xml
文件。在那里,您将看到Gatling的依赖项。
运行录音机
在我的第一篇文章中,我从bin
加特林捆绑包的文件夹中打开了录音机。使用Maven项目,您可以通过运行打开它src/test/resources/Recorder.scala
。几秒钟后,您应该会看到记录器实用程序,该实用程序可用于记录脚本。一旦打开,记录器的功能与我之前描述的相同。记录器实用程序应如下所示:
我刚刚向您展示了如何从Maven项目运行Recorder。因此,现在该使用记录仪了吗?对不起,情节扭曲!
记录器可用于生成将运行的脚本,但是当然,了解所生成的代码在做什么很重要。恕我直言,仅记录仪不足以使您与Gatling相距甚远。让我们从头开始创建一个脚本,而不是使用Recorder! (有关录音机的演示,请参阅上一篇文章。)
从头开始编写第一个脚本
- 为了创建脚本,我将使用IntelliJ IDEA社区版。如果尚未安装,则可以下载并安装。安装后,打开之前创建的项目。
- 在
src/test/scala
名为的文件夹中创建一个新包scripts
。 - 在名为的包中创建一个新的Scala类,
HelloGatling
并将其打开以进行编辑。这将是我们的脚本。 - 所有Gatling脚本都需要2种导入,因此我们首先将它们添加到类中:
import io.gatling.core.Predef._ import io.gatling.http.Predef._
- 您的课程将需要扩展Gatling Simulation类,以使其成为Gatling脚本:
class HelloGatling extends Simulation { }
- 现在我们准备开始上课。让我们从http配置开始,该配置定义了基本URL,并将设置标题以发送json格式的数据。
val httpConfig = http .baseUrl("http://computer-database.gatling.io") .header("Accept", "application/json")
- 现在,我们准备构建场景,该场景将描述脚本与应用程序进行的所有交互。对于此演示,我们的脚本将访问Gatling示例网站。让我们首先访问主页:
val myScenario = scenario("Add a new computer scenario") .exec( http("load the Home Page") .get("/") )
通过此代码,我们只需一步即可创建一个方案。我们为场景和步骤提供文本描述。这些描述将显示在“加特林”报告中。
该get
语句访问主页。 - 现在,我们可以添加剩余的步骤,[1]访问“添加新计算机”页面,然后[2]发布新计算机。完整的方案如下所示:
val myScenario = scenario("Add a new computer scenario") .exec( http("load the Home Page") .get("/") ) .pause(5) .exec( http("get the Add New Computer page") .get("/computers/new") ) .pause(5,10) .exec( http("Post the new computer") .post("/computers") .formParam("name", "Ionic Defibulizer") .formParam("introduced", "2020-01-01") .formParam("discontinued", "2020-06-30") .formParam("company", "37") )
除了这两个新步骤之外,我们还在它们之间添加了一个暂停。
pause(5)
将暂停5秒钟,pause(5,10)
并将在5到10秒之间随机暂停一段时间。暂停时间可以模拟用户如何与页面进行交互。现实的暂停时间对于构建现实的场景至关重要。 - 好的,我们已经建立了方案。现在,我们需要定义如何添加用户。对于此脚本,我们将运行10个并发用户30秒:
setUp(myScenario.inject(constantUsersPerSec(10) during (30 seconds)).protocols(httpConfig))
我们还需要从Scala导入DurationInt,以便seconds
解决:import scala.concurrent.duration.DurationInt
加特林提供了多种添加用户的方法。查阅他们的文档以获取更多详细信息。
运行脚本
我们有两种方法来运行脚本。最简单的方法可能是使用Maven在命令行中进行的:
mvn gatling:test -Dgatling.simulationClass=scala.scripts.HelloGatling
另一个选择是运行src/test/resources/Engine.scala
。这是从文件夹运行Gatling时在第一篇文章中使用的实用程序bin
。
无论选择哪种方法,新创建的脚本都应运行,并且结果应如下所示:
因此,从头开始有您的第一个脚本。它与录制的脚本没有太大不同,但是希望您对如何使用Maven创建新的Gatling项目有更好的了解,并且对脚本的内部工作有一些了解。
1. 本站资源转自互联网,源码资源分享仅供交流学习,下载后切勿用于商业用途,否则开发者追究责任与本站无关!
2. 本站使用「署名 4.0 国际」创作协议,可自由转载、引用,但需署名原版权作者且注明文章出处
3. 未登录无法下载,登录使用金币下载所有资源。
IT小站 » 使用加特林(Gatling)自动进行负载测试-顺序!
常见问题FAQ
- 没有金币/金币不足 怎么办?
- 本站已开通每日签到送金币,每日签到赠送五枚金币,金币可累积。
- 所有资源普通会员都能下载吗?
- 本站所有资源普通会员都可以下载,需要消耗金币下载的白金会员资源,通过每日签到,即可获取免费金币,金币可累积使用。