测试实例—记一次Jmeter的使用

发表于:2020-9-30 09:39

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:你都如何回忆我    来源:掘金

  前言
  准备上架一款聊天app,上架之前准备做一些测试工作,模拟用户进入房间,维持心跳,房间送礼,发言等行为(因为用的第三方im以及声网,这些都是基于http的),也不是很懂测试,听老大说过一嘴,可以用jmeter,就尝试了下。
  安装
  直接去官网下载下载地址下载完成之后直接解压。
  点击这个文件就可以打开了。
  使用
  默认会有一个测试计划testplan,可以改名也可以不改,我是懒得改。
  创建一个ThreadGroup
  一个线程组其实就可以用来测一个接口了。
  numberofthreads可以定义开多少个线程(模拟的用户数量),Ramp-upPeriod(inseconds):达到指定线程数所需要的时间。举例:线程数设置为50,此处设置为5,那么
  每秒启动的线程数 =线程数50/5=10。loopcount循环次数。
  创建一个HTTPRequest
  线程组定义了策略,而httprequest就是具体执行的方法了。
  protocol定义协议,ip定义域名,port指定端口,post这个下拉框指定请求方法,path指定访问路径,encoding指定编码,bodydata因为指定post的body。
  遇到的问题
  不同的用户有不同的token,怎么给不同的用户分配不同的token
  设置请求头
  接口有签名校验,怎么通过java代码传递签名
  加密的jar包怎么引入
  通过csv文件把需要模拟的用户的token放进去
  基本上看下配置就知道怎么回事了,filename指定文件位置,encoding指定编码,variablenames变量名(用分隔符区分--基本上csv文件有多少个字段,定义多少个变量)Delimiter分隔符csv文件一般用,,sharemode就是共享模式了allthread可以分配给所有的线程。
  我定义了两个字段,下面我的csv文件。
  定义好了变量,我们直接使用${token}的方式就可以获取token了。
  设置请求头
  最重要的info:G={sign}&s={token},这里的${token}就是上面csv文件里分配的token了,sign一会再解释。
  加密签名
  使用java代码来执行加密操作。
  下面的script提供了一些全局变量,分别ctx估计是context,var就是变量了,log就是日志。
import com.x.x.x.x.x.EncryptUtils;

String body="roomId=123456";
String token=vars.get("token");
String apiKey="abcdef";
String info="s="+token+"&t="+client;
String key=info+body+apiKey;
log.info("key="+key);
String sign=EncryptUtils.md5(key);
String header="G="+sign+"&"+info;
log.info("sign="+header);
vars.put("sign",header);
  这里就把上面header需要的sign给回填进去了,这样就可以完成验签的工作了,当然我这里写的比较简单。
  引入jar包
  上面的脚本里面有我们自己写的jar包,需要import进jmeter才能被import。流程如下:
  请求结果归档
  定时发送
  比如我们的心跳接口是需要client每隔5s访问一次,需要定时发送。
  我这里写的是30s。
  结束语
  jmeter有很多功能,我这里只是用来测试接口。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号