Jmeter常用功能的介绍

发表于:2021-2-18 09:35

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

 作者:天天眠眠    来源:博客园

  Jmeter跟Postman都是接口测试的最常用工具,但Jmeter还可以进行压力测试,这点就挺好。下面就介绍一下使用方法和功能:
  一、Jmeter 的下载跟安装
  http://jmeter.apache.org/download_jmeter.cgi   这是下载安装包的地址,下载后解压,D:\apache-jmeter-3.1\bin\jmeter.bat  不需要安装,直接双击jmeter.bat就可以进入界面了。
  * 因为jmeter是java开发的,因此需要提前安装java jdk1.8+
  二、线程组,一个项目用一个线程组,测试计划 -> 添加 -> Threads -> 线程组
  我们添加了线程组之后,就开始添加请求了,右键线程组, 添加 -> sampler -> http请求
  一个http请求就是一个接口,开始配置各个参数:
  端口号我们设置为80,这样一个get请求就设置好了。
  下面在来一个post 方式的请求:
  post方式的提交跟 get不同的是,有 request body,在Body Data里设置json格式的数据,作为提交到服务器的参数。
  三、那么我们提交了请求,现在就应该看看结果了,这时候在所在请求上,右键 -> 添加 -> 监听器 -> 观察结果树
  在实际工作中,我们都是一个请求对应一个结果树。
     
  下面有三个选项卡,通过查看请求跟响应数据可以看到我们想要的数据。返回的请求结果。
  四、经常遇到入参变动,这时候可以考虑,将其设置为变量,jmeter提供了三种方式设置变量
  1、用户自定义变量 :
  在所在的请求上右键,添加、配置元件、用户自定义变量。
  定义好了,如何引用呢? ${domain} 通过这个就可以了。
  2、用CVS文件读取:
  在所在的请求上右键,添加、配置元件、CVS Data Set Config。
   
  五、有一种情况就是,服务器域名、端口、协议、编码都是相同的,那么我们没有必要每一个请求都添加一遍,这个时候可以使用,http请求默认值:
  右键测试计划、添加、http默认请求。
  六、我们在接口请求的时候经常是处于登录状态下的,没有cookie或者token,无法请求一些私密性的接口:
  所在请求上右键、添加、配置元件、cookie管理器,在里面设置三个参数,key value domain。
  七、Jmeter断言提供了几种方法,我喜欢bean shell函数,比较灵活:
  所在请求上右键、添加、断言、bean shell断言,
   
  String response = "";
  // Str  就是接口的一个字段,  response就是接口内容
  String Str = "\"externalSignInProviders\":[{\"provider\":\"WeChat\",\"providerDisplayName\":\"微信\"},{\"provider\":\"QQ\",\"providerDisplayName\":\"QQ\"},{\"provider\":\"GitHub\",\"providerDisplayName\":\"GitHub\"}]"; 
  response = prev.getResponseDataAsString();
  if(response == ""){
  // 设置断言失败为真
  Failure = true;
  FailureMessage = "系统无响应,获取不到响应数据!";
  log.info(FailureMessage);
  }
  else if(response.contains(Str) == false){
  // 设置断言失败为真
  Failure = true;
  String Msg = "\n系统返回响应结果与期望结果不一致!请排查是性能问题,还是程序代码问题"; 
  FailureMessage = Msg + "\n" + "期望结果:\n" + Str + "\n" + "响应内容: \n" + response +"\n";
  log.info(FailureMessage);
  }else{
  // 设置断言失败为假
  Failure = false;
  log.info("期望结果:\n" + Str + "\n" + "响应内容: \n" + response +"\n"+"一致通过");
  }
  八、有的时候,上一个请求返回的接口中提取指定的值,用来做下一次请求的参数,就叫做接口关联,我喜欢使用json提取。还可以使用正则表达式提取。
  所在请求上右键、添加、后置处理器、json extractor,
  先看看接口结果:
{"publicKey":"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCp0wHYbg/NOPO3nzMD3dndwS0MccuMeXCHgVlGOoYyFwLdS24Im2e7YyhB0wrUsyYf0/nhzCzBK8ZC9eCWqd0aHbdgOQT6CuFQBMjbyGYvlVYU2ZP7kG9Ft6YV6oc9ambuO7nPZh+bvXH0zDKfi02prknrScAKC0XhadTHT3Al0QIDAQAB","externalSignInProviders":[{"provider":"WeChat","providerDisplayName":"微信"},{"provider":"QQ","providerDisplayName":"QQ"},{"provider":"GitHub","providerDisplayName":"GitHub"}],"externalSignedIn":null} 
  根据接口的结构,这样添加就可以了。
  *注意请求的顺序,必须是提供参数的请求在先,接收参数的请求靠后。

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

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号