idea怎么导入一个项目,项目中引入新想法的方法?

一、创建项目

使用mvn创建项目模板

请进入您计划创建项目的文件夹。

2、输入:mvn archetype:generate # 加载完毕后

您可以使用以下 Maven 命令来筛选出 gatling 的 Maven 原型模板:
“`shell
mvn archetype:generate -Dfilter=gatling
“`
这样可以根据输入的 gatling 来筛选出相应的 Maven 原型模板。

输入一个即可,因为只筛选出一个。

输入: 在选择安装的版本时输入 20,对应的版本是 gatling2.3.1。

输入: com.klicen # groupid The group name, usually in the format of XX.XX, where the first XX represents the domain (e.g. com, cn, org) and the second XX represents the company name.

输入: `mkdir klicen` # 创建坐标ID对应的文件夹,并且命名为与坐标ID相同

输入:v1.0 # version 版本名称

package klicen 是什么类型的包?

10、输入:Y # 确认

可以按照以下步骤在IntelliJ IDEA中导入项目:

1. 打开IntelliJ IDEA开发工具。
2. 点击菜单栏中的“File”(文件)选项。
3. 选择“Open”(打开)或者“Open Project”(打开项目)。
4. 在弹出的对话框中,浏览并选择项目所在的文件夹。
5. 点击“OK”以打开项目。

通过这些步骤,你就可以在IntelliJ IDEA中成功导入你的项目。

请点击“文件”-“打开”-选择刚才新建的项目模板来导入项目。

要安装Scala插件,你可以通过将插件的zip文件直接安装到本地来完成。

请在项目的src/test/scala目录下创建一个Scala类。

如下示例:

package cnblogsCase

import io.gatling.core.Predef._

import io.gatling.http.Predef._

import scala.concurrent.duration._

class postdemo extends Simulation{
    val url="https://XXXXXXX.com"

    val path="/path/confirm"

    val content="{\"date\":\"20190123\"}"

    val headers_json=Map{"Content-Type"->"application/json"}

    val dates=csv("test.csv").random

    val httpConf=http.baseUrl(url)

    val scn=scenario("post json of api")

        .feed(dates)

            .exec(

             http("post api")

             .post(path)

             .headers(headers_json)

             .check(status.is(200))

             .body(StringBody("{\"date\":\"${times}\"}"))

)

}

上面的代码示例里实现了一个 post 方法来请求一个 API,并且设置了请求的格式以及返回的状态。

请将这个文件夹拷贝到E:\All\gatling\gatling-exe\user-files\simulations下。

5、在E:\All\gatling\gatling-exe\bin 下执行 gatling.bat 文件

E:\All\gatling\gatling-exe\bin>gatling.bat

GATLING_HOME is set to "E:\All\gatling\gatling-exe"

JAVA=""D:\Program Files\Java\jdk1.8.0_131\\bin\java.exe""

Choose a simulation number:

[0] cnblogsCase.baidu

[1] computerdatabase.BasicSimulation

[2] computerdatabase.advanced.AdvancedSimulationStep01

[3] computerdatabase.advanced.AdvancedSimulationStep02

[4] computerdatabase.advanced.AdvancedSimulationStep03

[5] computerdatabase.advanced.AdvancedSimulationStep04

[6] computerdatabase.advanced.AdvancedSimulationStep05

我选择列表中的第 0 项,即 `[0] cnblogsCase.baidu,我们写好的脚本`。

7、可以查看报告:如下:

Simulation cnblogsCase.baidu completed in 104 seconds

Parsing log file(s)...

Parsing log file(s) done

Generating reports...

Global Information

> request count 36 (OK=36 KO=0 )

> min response time 18 (OK=18 KO=- )

> max response time 1106 (OK=1106 KO=- )

> mean response time 518 (OK=518 KO=- )

> std deviation 288 (OK=288 KO=- )

> response time 50th percentile 573 (OK=573 KO=- )

> response time 75th percentile 671 (OK=671 KO=- )

> response time 95th percentile 991 (OK=991 KO=- )

> response time 99th percentile 1100 (OK=1100 KO=- )

> mean requests/sec 0.346 (OK=0.346 KO=- )

Response Time Distribution

> t < 800 ms 31 ( 86%)

> 800 ms < t < 1200 ms 5 ( 14%)

> t > 1200 ms 0 ( 0%)

> failed 0 ( 0%)

idea怎么导入一个项目,项目中引入新想法的方法?

Gatling的变量的值可以从以下几种来源获取:

使用数据源——文件和数据库

从响应中提取数据并保存,比如可以使用 HTTP Check 中的 saveAs 功能。

使用Session API来进行手动操作,虽然可以利用Java提供的各种函数来生成,但缺点是可能会稍微影响性能。

三、虚拟用户场景

例如: 使用`setUp`方法设置模拟场景,并在其中注入`nothingFor(4 seconds)`的行为,使用`protocols`方法指定使用`httpConf`协议。

nothingFor(duration):指定一个持续时间期间内停止处理任何内容。

2、atOnceUsers(nbUsers):立即注入一定数量的虚拟用户;

使用以下代码来设置50个并发用户,并将协议设置为“httpConf”:
“`scala
setUp(scn.inject(atOnceUsers(50)).protocols(httpConf))
“`

在指定时间内,通过rampUsers(nbUsers) over(duration)方法,可以逐步增加虚拟用户数量,实现逐步注入的效果。

使用以下代码来设置并发用户数为50,在30秒内启动:
“`scala
setUp(
scn.inject(rampUsers(50) during(30 seconds))
).protocols(httpConf)
“`

在指定的时间段内,定义一个恒定的每秒并发用户数。

使用以下代码来设置每秒常量用户数为30,持续时间为15秒,并使用httpConf作为协议:

“`scala
setUp(
scn.inject(constantUsersPerSec(30) during(15 seconds))
.protocols(httpConf)
)
“`

在指定的持续时间内,创建一个随机增减并发的过程,其并发数围绕着给定的每秒固定并发数在波动。

配置每秒30个常量用户注入,并在15秒内随机化注入,使用HTTP协议。

在一定时间内,逐渐增加并发用户数,增长速度符合规律性的变化。

“`
val userNum=50
val rampTime=15
val protocol=httpConf

setUp(scn.inject(rampUsers(userNum) during(rampTime seconds)).protocols(protocol))
“`

定义一个并发用户数,每秒逐渐增加至指定值,持续一段时间,增长速率呈随机变化。

setUp(scn.inject(rampUsersPerSec(30)to(50)during(15seconds) randomized).protocols(httpConf))

定义一个持续的并发量,其增长受到海维赛德函数平滑逼近的影响,在指定的时间内不断增加。在此过程中,海维赛德函数是一种特殊的曲线函数,当 x 大于 0 时返回 1,小于 0 时返回 0,等于 0 时返回 0.5。因此,在实际操作中,并发数会按照平滑抛物线形状逐渐增加。

使用Scala语言编写性能测试时,可以使用以上代码来设置每秒钟模拟50个用户访问系统,持续15秒。同时使用HTTP协议。

9、splitUsers(nbUsers) into(injectionStep) separatedBy(duration):定义一个周期,执行injectionStep里面的注入,将nbUsers的请求平均分配;

setUp(scn.inject(splitUsers(50) into(rampUsers(10) over(10 seconds)) separatedBy(10 seconds)).protocols(httpConf))

将用户数量(nbUsers)进行拆分,使用injectionStep2的注入作为周期,分隔injectionStep1的注入,直到用户数达到nbUsers。

rampUsers(10) over(10 seconds).inject(splitUsers(100)).separatedBy(atOnceUsers(30)).protocols(httpConf)

请求限制是一种控制和限制网络请求频率的技术手段,它可以防止网络流量过载,并保护服务器免受滥用。

如果您希望限制每秒钟的请求数量而不是并发数,可以考虑使用constantUsersPerSec(…)方法来设置用户到达的速率。在大多数情况下,不需要使用请求限制,或者至少是多余的。

在特定情况下,我们会需要利用Gatling自带的throttle方法,来限制请求的数量。

注意:

我们仍然需要在场景中引入虚拟用户。请求限制被用来在特定场景中设置确定的吞吐量、用户数量和持续时间。这相当于设定了一个瓶颈,即一个上限。如果没有设置足够的用户数,那么便无法达到这个限制。如果注入持续的时间未达到请求限制的设定,那么在所有虚拟用户执行完毕后,模拟将被终止。相反,如果注入的时间超过了请求限制的设定,那么请求限制将会生效,阻止模拟的执行。

可以在每个场景中配置请求限制,详细信息请参考:http://gatling.io/docs/2.1.7/general/scenario.html#scenario-throttling

setUp(scn.inject(constantUsersPerSec(100) during(30 minutes))).throttle(

  reachRps(100) in (10 seconds),

  holdFor(1 minute),

  jumpToRps(50),

  holdFor(2 hours)

)

解释下上述代码:

我们在模拟中对每秒的请求进行了限制。在10秒内,我们限制每秒钟只有100个请求,并在接下来的1分钟内保持这个吞吐量。然后我们将限制每秒钟50个请求,并在接下来的2个小时内保持这个吞吐量。

这段代码块中所设置的请求限制如下:

在一段时间内达到目标吞吐量。

切换到指定的另一个吞吐量。

保持持续一段时间的吞吐量:holdFor(duration)。

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 313694832@qq.com 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.zhangfen6.com/42802.html