Gatling 官网:https://gatling.io
官方文档:https://gatling.io/docs/current/
快速开始:https://gatling.io/docs/current/quickstart
IDE:IntelliJ IDEA
java:1.8
导航栏选择 Intellij Idea -> Preference... -> Plugins,选择 Install JetBrains plugin...,搜索 Scala,然后 install,最后 Restart IntelliJ IDEA。
步骤:File -> New -> Project... -> Maven -> 勾选 Create from archetype -> Add Archetype... 添加以下内容:
GroupId:io.gatling.highcharts
ArtifactId: gatling-highcharts-maven-archetype
Version: 3.3.1
点击这里可以查看当前最新的版本:查看 io.gatling.highcharts 版本
1.如果是接着前面安装 io.gatling.highcharts,直接 next 后,输入你项目的 GroupId(包名) 和 ArtifactId(项目名) 来完成项目创建。
2.如果是再次打开 Intellij IDEA 创建 Maven 项目的话,勾选 Create from archetype 后,选择 io.gatling.highcharts:gatling-highcharts-maven-archetype,如图:
next 后,输入你项目的 GroupId(包名) 和 ArtifactId(项目名) 来完成项目创建。
3.项目创建完成后,右下角会提示 Import Changes,点击它
最后 Maven 会自动配置项目结构,对应的 pom.xml 如下:
项目目录如下:
1、在 scala 目录下面,New -> Scala Class,新建命名 BaiduSimulation,然后添加以下代码:
package test.scala
import io.gatling.core.Predef._
import io.gatling.http.Predef._
class BaiduSimulation extends Simulation {
// 设置请求的根路径
val httpConf = http.baseUrl("https://www.baidu.com")
/*
运行10秒 during 默认单位秒,如果要用微秒 during(100 millisecond)
*/
val scn = scenario("BaiduSimulation").during(10){
exec(http("baidu_home").get("/"))
}
// 设置线程数
setUp(scn.inject(atOnceUsers(10)).protocols(httpConf))
}
2、如何运行
方法一:选中 src/test/scala 下面的 Engine,右键,Run 'Engine',控制台显示如下:
这时候需要在控制台按一下 Enter 键才会继续执行,执行结束结果如下:
我们可以看到,最后一行提示我们在 target/gatling/目录下面可以找到对应结果报告打开它
双击打开 index.html,然后选择对应的浏览器打开报告
在图中我们可以看到,请求响应基本都在 800ms 以内,而 Total 的请求为 12491 个,OK 成功的 12489 个,KO 失败的 2 个,说明接口压测 10 个用户的结果是正常的。
1、IDEA 无法 New Scala Class
解决办法:https://www.cnblogs.com/lingluo2017/p/8673243.html
2、scala sdk 安装失败,或安装不成功
解决办法:版本不对,可以换个版本再安装:https://blog.csdn.net/iamlihongwei/article/details/72783459
3、选中 Engine.scala 右键时,没有 run 选项
解决办法:选中 src 目录,右键,Mark Directory As → Source Root
4、选中 Engine.scala 右键 run 后,出现报错:Gatling 错误: 找不到或无法加载主类 Engine
解决办法:把 scala-sdk 删掉,重新添加,选择 File → Project Structure... → Global Libraries,选中 - 号,把 scala-sdk-x.x.x 删掉,然后选择 + 号,添加任意版本,建议使用低版本,高版本不够稳定可能会有新的问题,这里楼主选择 2.12.8 版本,最后 Apply 后,点 OK 保存。
5、选中 Engine.scala 右键 run 后,出现报错:
Exception in thread "main" java.lang.ExceptionInInitializerError
at Engine$.delayedEndpoint$Engine$1(Engine.scala:7)
at Engine$delayedInit$body.apply(Engine.scala:4)
at scala.Function0.apply$mcV$sp(Function0.scala:34)
at scala.Function0.apply$mcV$sp$(Function0.scala:34)
at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
at scala.App.$anonfun$main$1$adapted(App.scala:76)
at scala.collection.immutable.List.foreach(List.scala:389)
at scala.App.main(App.scala:76)
at scala.App.main$(App.scala:74)
at Engine$.main(Engine.scala:4)
at Engine.main(Engine.scala)
Caused by: java.lang.NullPointerException
at io.gatling.commons.util.PathHelper$.url2path(PathHelper.scala:34)
at IDEPathHelper$.<init>(IDEPathHelper.scala:7)
at IDEPathHelper$.<clinit>(IDEPathHelper.scala)
... 11 more
解决办法:选中 src 目录右键,选择 Mark Directory as... → Unmark as Sources Root,然后再选中 scala 目录右键,选择 Mark Directory as... → Test Sources Root。再次 run 一下 Engine.scala 即可。