利用神州灵云AppTrace抓取到的APP数据反向给做Jmeter接口测试(二)
版权声明:本文为神州灵云作者的原创文章,未经神州灵云允许不得转载。
本文作者:陈正林(志云),高级测试工程师,神州灵云首席测试。
用jmeter模拟登录月光茶人APP选购支付流程(或者大量并发,实现压测效果)
现实中APP对登录都有限制,同一账号只能同时登录一次,且手里没有多余的账号如何进行并发测试呢,这个时候只需单独对登录http请求进行控制即可;其他请求操作可以放在一块进行并发测试;
1,新建一个setUp Thread Group,使用这个进程组的好处时,他可以和tearDown Thread Group一起使用,构成一个 登录+中间各种操作/请求+退出的流程,登录请求放在setUp Thread Group,退出请求放在tearDown Thread Group里面,剩下的各种操作http请求放在线程组里面,我们此处没有用到退出操作就不需要新建tearDown Thread Group线程组了;
可以把setUp Thread Group理解为初始化,tearDown Thread Group为复位;如下图,在setUp Thread Group里面添加登录http请求后,我们需要获取appCartCookieId和 appLoginToken参数并且要全局化,下面其他进程中的http请求能继续使用;首先用正则表达式提取器提取相关参数,具体操作步骤前面有说过,不再赘述
2,使用全局变量
添加后置处理器BeanShell PostProcessor,把上一步正则表达式提取器提取参数全局化;如下图
parameters参数填写正则表达式提取器提取的参数,然后在script模块进行全局化申明:
String appCartCookieId = bsh.args[0];
print (appCartCookieId);
${__setProperty(newappCartCookieId,${appCartCookieId},)}
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、控制吞吐量
确定要添加控制吞吐量的位置后,添加-定时器-Constant Throughput Timer,然后填写如图相关信息
如果想控制每秒2个并发,红色区域1填写120即可,如果Constant Throughput Timer添加到所有线程组的前面,都要用到此控制器,下拉选择all active threads选项;如果放到某一进程组,只供此进程组使用,可以选择this thread only;
可以把被压测那台机器,利用grafana+Prometheus等工具监控起来,查看机器实时性能;也可以查看在我们神州灵云apptrace平台查看,压测的数据是否有丢失,业务响应情况、fgc等指标;
Jmeter中也可以设定压测时间,并发线程数;这个可以作为压测的辅助手段。
关于神州灵云
神州灵云(北京)科技有限公司(http://www.dclingcloud.com)是一家数字性能管理完整解决方案服务商,由神州信息(股票代码:SZ:000555)投资成立,在北京、上海设有软件研发中心。公司80%员工来自于IT业内顶尖的美国领导企业。
神州灵云始终秉承以“提升业务价值,让IT更轻松”为企业使命,专注NPM/APM/BPM的产品研发和专业技术服务,致力于为客户提供360°全方位的网络应用及业务性能管理解决方案集。