我想编写一个加载测试模拟类。我有三个请求req1,req2和req3。我希望能够在超过5秒的时间内对300名用户进行负载测试。我还需要测试完全运行20分钟。
现在我需要同时运行三个请求,但req1 90%吞吐量,5%req2和5%req3。 例如:如果有100个请求,则90个必须是req1和5个req2和5个req3。
到目前为止,这是我的模拟课程:
package simulations;
import io.gatling.core.Predef._
import io.gatling.http.Predef._
import scala.concurrent.duration._
class LoadSimulation extends Simulation{
val httpConfig = http
.baseURL("http://url.com")
.acceptHeader("text/html,application/xhtml+xml,application/xml")
val update = scenario("Update").exec(Api.update)
val read= scenario("Read").exec(Api.read)
val age= scenario("Age").exec(Api.age)
setUp(
postToChannel.inject(rampUsers(300) over (5 seconds))
).protocols(httpConf)
.maxDuration(20 minutes)
}
object Api{
val channelFeeder = csv(test.csv).random
val update = feed(channelFeeder)
.exec(http("Update")
.get("/update?key=${key}&${url}")
val read= feed(channelFeeder)
.exec(http("Read")
.get("/app/${id}/data/1/1.json?key=${key}")
val age= feed(channelFeeder)
.exec(http("Age")
.get(/app/${id}/data/1/age?key=${key})
}
我不确定如何将这三个api放在一个场景中并分别使用update(90),read(5)和age(5)吞吐量运行它们。
这方面的任何线索都会有所帮助。
由于
答案 0 :(得分:2)
使用Maven进行负载测试需要您创建名为“pom” (项目对象模型)文件的内容。在pom.xml文件的初始段中,您必须定义将要使用的依赖项:
<dependencies>
<dependency>
...
<scope>test</scope>
</dependency>
</dependencies>
除了声明将用于协助执行文件的其他插件外:
<plugin>
<groupId>io.gatling</groupId>
<artifactId>gatling-maven-plugin</artifactId>
<version>X.Y.Z</version>
</plugin>
您可以像上面一样定义多个插件片段,以确定测试所需的用量。
现在有了这个假设,(我假设)你将使用Jenkins来使用Maven和Gatling插件。以下是用于创建pom.xml文件的Gatling文档:Link
用户666提到的其他方式,您可以通过在pom文件中将其拆分为“Maven-ize”来分别包括或排除:
<configuration>
<!-- ... -->
<runMultipleSimulations>true</runMultipleSimulations>
<includes>
<param>my.package.MySimu1</param>
<param>my.package.MySimu2</param>
</includes>
<excludes>
<param>my.package.MySimuNotToRun</param>
</excludes>
</configuration>
编辑:我想我确实误解了! 我相信你所寻找的是如下所述的各种场景:
setUp(scenario1.inject(rampUsers(300)over (5)). protocols(...),
scenario2.inject(rampUsers(95) over (ramp seconds))
.protocols(...)
您可以在此处查看更多内容:https://gatling.io/docs/current/general/simulation_setup/
答案 1 :(得分:0)
认为你只有一个线程..如何将三个连续的步骤分开..一个不好的方法是维护一个全局变量并在所有线程之间共享..现在你可以有短路逻辑90请求转到第1步等等。但是从性能测试的角度来看,您应该运行三种不同的模拟,并为它们提供您想要的负载,而不是一起完成..