如何按顺序而不是同时运行gatling场景?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何按顺序而不是同时运行gatling场景?相关的知识,希望对你有一定的参考价值。
我创建了一个简单的gatling maven应用程序来测试性能,验证API的速率限制(所以如果发送的请求超过其速率限制就会失败)。为了将每个API作为一个独立的操作而不是并发运行,我为每个API调用创建了单独的模拟类来测试。为了按顺序运行它们,我已经启用了runMultipleSimulations . 按照eg配置从:Galting doc.Https:/gatling: https:/gatling.iodocs3.0extensionsmaven_plugin。
但我不认为它们是按顺序运行的,而且我从日志中看到的一个场景,主要是显示用户请求失败和500个内部服务器错误,我也没有在日志中看到所有的测试场景。除了这个依赖关系之外,我还需要其他什么吗?这是我的pom.xml。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>gatling-test</groupId>
<artifactId>gatling-test</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<gatling-plugin.version>3.0.1</gatling-plugin.version>
</properties>
<dependencies>
<dependency>
<groupId>io.gatling.highcharts</groupId>
<artifactId>gatling-charts-highcharts</artifactId>
<version>3.1.2</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<testSourceDirectory>src/test/scala</testSourceDirectory>
<plugins>
<plugin>
<groupId>io.gatling</groupId>
<artifactId>gatling-maven-plugin</artifactId>
<version>$gatling-plugin.version</version>
<configuration>
<runMultipleSimulations>true</runMultipleSimulations>
</configuration>
<executions>
<execution>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
例如:一个场景文件。
class DeleteAPISimulation extends Simulation
var test = ""
val preScenario = scenario(" DELETE API PRE-SCENARIO")
.exec(CreateResource())
.exec(session =>
test = session("resourceId").as[String].trim
println("%%%%%%%%%%% resource ID =====>>>>>>>>>> " + test)
session
)
val deleteResourceScenario = scenario("DELETE API TEST SCENARIO")
// Set it here
.exec(_.set("resourceId", test))
.exec(DeleteResource())
setUp(
preScenario.inject(atOnceUsers(1)),
deleteResourceScenario.inject(rampUsers(520) during(60))
)
Actions类有DSL http请求实现的API。Eg.xml:一个场景文件:Actions类有DSL http请求实现API。
object Actions
def DeleteResource():HttpRequestBuilder =
http("DELETE_RESOURCE_OPERATION")
.delete(Host+ "/items/$resourceId")
.header("Authorization", "Bearer "+ Token)
.check(status.is(200))
.
.
//so on
// similar api method requests
.
下面是我的项目结构,动作类和场景模拟类都在srctestscala下。
gatlingtest
- src
- test
- resources
- scala
- Actions
- CreateAPISimulation
- GetAPISimulation
- DeleteAPISimulation
答案
从Gatling 3.3开始,就没有真正的方法来依次运行场景。唯一的解决方法是在一些延迟之后启动其他场景,参见 什么都没有.
顺序场景将在Gatling 3.4中引入。 (尚未确定时间表)。
以上是关于如何按顺序而不是同时运行gatling场景?的主要内容,如果未能解决你的问题,请参考以下文章