利用神州灵云AppTrace抓取APP数据反向做Jmeter接口测试(二)

神州灵云

18-10-0817:12

版权声明:本文为神州灵云作者的原创文章,未经神州灵云允许不得转载。本文作者:陈正林(志云),高级测试工程师,神州灵云首席测试。

用jmeter模拟登录月光茶人APP选购支付流程(或者大量并发,实现压测效果)

现实中APP对登录都有限制,同一账号只能同时登录一次,且手里没有多余的账号如何进行并发测试呢,这个时候只需单独对登录http请求进行控制即可;其他请求操作可以放在一块进行并发测试;

1,新建一个setUpThreadGroup,使用这个进程组的好处时,他可以和tearDownThreadGroup一起使用,构成一个登录+中间各种操作/请求+退出的流程,登录请求放在setUpThreadGroup,退出请求放在tearDownThreadGroup里面,剩下的各种操作http请求放在线程组里面,我们此处没有用到退出操作就不需要新建tearDownThreadGroup线程组了;

可以把setUpThreadGroup理解为初始化,tearDownThreadGroup为复位;如下图,在setUpThreadGroup里面添加登录http请求后,我们需要获取appCartCookieId和appLoginToken参数并且要全局化,下面其他进程中的http请求能继续使用;首先用正则表达式提取器提取相关参数,具体操作步骤前面有说过,不再赘述

2,使用全局变量

添加后置处理器BeanShellPostProcessor,把上一步正则表达式提取器提取参数全局化;如下图

parameters参数填写正则表达式提取器提取的参数,然后在script模块进行全局化申明:

StringappCartCookieId=bsh.args[0];

print (appCartCookieId); ${__setProperty(newappCartCookieId,${appCartCookieId},)}

123

3,引用全局化参数

在其他进程组里面,进行引用全局化参数,引用格式:${__P(newappCartCookieId,)}

上图除了全局变量外,还引用了其他参数:_terminal-type=ios&appCartCookieId=

KaTeX parse error: Expected group after '_' at position 2: {__P(newappCartCo…

{__P(newappLoginToken,)}&userId=e19fd14f3ebf48bcbc79d09d6775ff04;也可以写成parameters的形式,详细讲解可以参考:

http://www.cnblogs.com/allen-zml/p/6552535.html

可以在登录线程组里面添加http信息头管理,填写设备信息tid、uid等这样模拟出来的请求更接近iOS移动设备发出的请求;

4、控制吞吐量

确定要添加控制吞吐量的位置后,添加-定时器-ConstantThroughputTimer,然后填写如图相关信息

如果想控制每秒2个并发,红色区域1填写120即可,如果ConstantThroughputTimer添加到所有线程组的前面,都要用到此控制器,下拉选择allactivethreads选项;如果放到某一进程组,只供此进程组使用,可以选择thisthreadonly;

可以把被压测那台机器,利用grafana+Prometheus等工具监控起来,查看机器实时性能;也可以查看在我们神州灵云apptrace平台查看,压测的数据是否有丢失,业务响应情况、fgc等指标;

Jmeter中也可以设定压测时间,并发线程数;这个可以作为压测的辅助手段。

返回顶部