压测工具 Gatling

这段时间,公司做活动,要检测下项目代码在多并发下的情况,然后就让我们自己找工具进行压测。

最开始用的是Apache的jmeter,照着网上的教程来,发现拿不到cookie。然后又去下载了badbody,在上面录制流程,然后导出jmeter可运行的文件。发现还是不行,然后感到无解,没办法,就跑去用Gatling了。

脚本如下:

val httpConf = http
    .baseURL("http://
www.xxx.com")
.inferHtmlResources(WhiteList(), BlackList())
.disableFollowRedirect
    
object tests {
val operateChain = 
exec(
addCookie(Cookie("mall_cookie", "\"${userId}\""))
                
)


.exec(http("confirmOrder")
.get("http://
www.xxx.com/confirmOrder.do?itemIds=${itemIds}"))
val repeatOperateChain =
                        repeat(1){
                                operateChain
                        }
}


val duringOperateChainFeeder=csv("yzg.csv").random
val duringOperateChainTest = scenario("confirmOrder")
.feed(duringOperateChainFeeder)
.exec(tests.repeatOperateChain);
                        
    setUp(
duringOperateChainTest.inject(
atOnceUsers(500)
)
).protocols(httpConf)


简单说明下Gatling 的目录与脚本对应的信息。

bin目录:gatling.bat  与 gatling.sh ,很显然,一个Windows启动,一个Linux启动。

recorder 这个不知道具体干啥的,没用上,以后了解了再来补充。


conf和lib  工具自带的一些jar和配置文件,个人没有关注多,有兴趣的可以去看看。


results:脚本执行完之后生成的报告文件,通过浏览器打开,可以看到对应的成功、失败数量、比例,运行时间的最大值、最小值、不同阶段的运行时长,还有一些图表信息 之类的。


target:脚本生成的class文件。


usef-files:脚本、配置文件存放目录。

-- data :配置文件存放目录(上面脚本中yzg.cvs存放位置)

-- simulations :脚本存放目录


下面分断介绍下脚本中需要留意的位置:

val httpConf = http.baseURL("http://www.xxx.com")
.inferHtmlResources(WhiteList(), BlackList())
.disableFollowRedirect
    

这一块也就那个地址需要根据自己的需求变动


addCookie(Cookie("mall_cookie", "\"${userId}\""))     

添加脚本需要用到的cookie值 ${userid}  配置文件可读属性,也可以写死,根据自身需求来。


.exec(http("confirmOrder")
.get("http://
www.xxx.com/confirmOrder.do?itemIds=${itemIds}"))
val repeatOperateChain =
                        repeat(1){
                                operateChain
                        }

对应方法名称,地址信息,${itemids}与上面的userId相同


val duringOperateChainFeeder=csv("yzg.csv").random

读取配置文件,配置文件存放目录上面说过。格式跟Excel里面一样,第一行是脚本中写的userId、itemids,后面的行就是这些字段对应的变化值


val duringOperateChainTest = scenario("confirmOrder")
.feed(duringOperateChainFeeder)
.exec(tests.repeatOperateChain);

关联执行脚本与配置文件


setUp(
duringOperateChainTest.inject(
atOnceUsers(500)
)
).protocols(httpConf)

虚拟500用户进行测试。


程序执行的时候,会有一个列表出现,不同的数字对应你添加进去不同的脚本。


猜你喜欢

转载自blog.csdn.net/qq_24842293/article/details/78016707