Jmeter在软件测试中的常用功能,看完你应该就会了

1、Jmeter的下载安装

1.1  Jmeter的官方网址是:http://jmeter.apache.org/;下载最新的包到本地进行解压,路径按照自己的喜好自己设置;根据下图官网的提示,Jmeter是要依赖Java8的哦,不同的版本不同,根据实际情况按照好对应的Java版本。

 

 

 

 1.2 解压到本地之后,一般常用的有2种方式启动:

 

 1.2.1

 

         直接启动:打开apache-jmeter-5.3\bin\jmeter.bat 批处理文件,就可打开Jmeter.

 

 1.2.2 命令行启动:需要设置环境变量

 

        先设置 JMETER_HOME=E:\AutoTest\apache-jmeter-5.3

 

        再在系统变量Path中添加: %JMETER_HOME%\bin

 

        最后还要在CLASSPATH中添加:

 

        %JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar.

         环境变量设置完毕之后,在命名行输入jmeter即可打开Jmeter.

  

 

 

 1.3 Jmeter中文显示:初学者直接使用中文有助于很快理解很多功能;在bin目录下打开jmeter.properties文件,将#language=en #注释去掉,en修改为zh_CN,保存之后重启Jmeter

 

 

 2Jmeter的简单认识

2.1 测试计划:用来描述一个性能/接口测试脚本和场景设计,包含与本次测试所有相关的功能。也就是说,使用JMeter进行测试的所有内容都是基于一个测试计划的。

 

 

 2.2 线程组:每个测试需求的必备组件,用来模拟用户并发的组件。Jmeter的每个任务都是用线程来处理的;

 

2.3 线程数:请求并非的数量。

 

Ramp-Up Period(in seconds)在多少秒内创建线程数中定义的所有线程;每秒并发数 = 线程数/RUP

循环次数:当前线程组中的测试脚本循环运行次数;

2.4  HTTP Request Defaults:设置http请求默认值;

 

 

 

 

 

 2.5  HTTP Cookie Manager像浏览器一样存储和发送cookie;如果发送一个http请求的响应中包含Cookie,那么 Cookes Manager就会自动地保存这些Cookie并在所有后来发送到该站点的请求中使用这些Cookie值。

 

 

 2.6 HTTP Header Manager

 

 

 2.7 HTTP Request

 

 

 2.8 Response Assertion(响应断言):

 

 

 2.9 Flow Control Action(请求延迟):

 

 

 2.10 Uniform Random Timer(均匀随机定时器):

 

 

 2.11 View Results Tree(查看结果树):

 

 

 3Jmeter实现简单的接口测试,添加响应断言,使用百度举例。

 

 

 

 

 

 如下就是响应断言,百度二下的断言是失败的;百度一下的断言结果是成功的,所有未打印出来。

 

 

 3.1 添加HTTP信息头管理器:

 

 

 再此请求,执行完查看结果树,Request Headers中添加了Content-Type:application/json类型。

 

 

 3.2、通过httpbin.org (是一个开源的,支持HTTP请求和响应的测试网站)这个项目进一步做简单的练习。

 

3.2.1  post请求:

         接口请求说明:

 

 

 查看结果树:

 

 

 

 

 

 3.2.3  put请求

 

 

 

 

 

 

   

 

4、线程用户之setUptearDown

 

4.1 平时测试当个接口时,我们使用线程组;而setUptearDown线程组作用等同于unittest测试框架中的setUptearDownsetUp线程组一般用于登录等,而tearDown一般用于释放资源等。

4.2  setUptearDown及接口测试的练习,根据结果树的结果看,执行顺序就是按照setUp->测试线程组->tearDown的顺序执行。

 

 

 5、配置元件之CSV数据文件配置

 

5.1 单线程读取CSV数据文件实现参数化

         建一个如下的CSV数据:

 

 

 JmeterCSV元件的配置:

 

 

 请求界面配置:

 

 

 运行结果:

 

 

 5.2 逻辑控制器

 

5.2.1逻辑控制器之循环控制器

根据上个章节的结果,一个线程运行一次只能读取一行,如果一次要将所有行的数据都执行,就需要使用逻辑控制器的循环控制器。

 

 

 执行结果:

 

 

 5.2.2 逻辑控制器之if控制器

第一种写法:去掉Interpret
Condition as Variable Expression?
的勾选,直接写判断条件

 

 

 第二种写法:默认写法(勾选Interpret
Condition as Variable Expression?),
使用带有变量的表达式。

 

 

 6、监听器之查看结果树+断言结果 +聚合报告+图形结果+用表格查看结果。

 

6.1.1 查看结果树

 

         查看结果树上面的很多例子都有查看结果树,这里就不做过多阐述了。

 

6.1.2 断言结果

         之前的章节说过断言,这里要讲的是断言结果保存到本地文件中;可以选择需要保存的文件格式,有三种文件格式,Jmeter自身的文件格式jtl,还有xmlCSV,在工作中根据需要选择。

 

 

 打开本地文件,保存的结果如下:

 

 

 6.1.3聚合报告

 

 

 6.1.4图形结果

 

 

 6.1.5
用表格查看结果

 

 

 7. 配置元件之用户定义的变量+抽离公共数据

 

7.1 用户自定义变量的2种方式

7.1.1第一种是手动添加组件,配置元件–>用户自定义变量

 

 

 7.1.2第二种是测试计划内部的用户自定义变量

 

 

 7.2
引用变量,JMeter产生变量的方式有10多种,前置/后置/函数助手/CSV组件/用户定义的变量/用户参数/JDBC请求等等,但是,引用变量的方式只有一种。

 

 

 

 8. 参数传递


        
在工作中接口测试的时候需要传递token,,此时就需要进行参数传递,Jmeter很方便的实现参数的传递,需要用到beanshell解释器。

 

8.1 传参方式

8.1.1 内置变量

 

 8.1.2 函数助手

 

 8.2 传参形式

8.2.1 同线程组

 

 8.2.2 跨线程组

 

 8.3 以跨线程组举例

       第一步,使用json提取器获取token:

 

 第二步:使用BeanShell后置处理器将获取的token存储到Jmeter变量。

 

 第三步:引用上一步的变量即可。

 

 最后,查看结果树:传递token值成功。

 

 9. 后置处理器

 

9.1 json提取器

         jSON
后处理器使您能够使用
JSON-PATH
语法从
JSON
响应中提取数据。此后处理器与正则表达式提取器非常相似。它必须作为
HTTP
采样器或任何其他具有响应的采样器的子级放置.

 

 可以在查看结果树里面进行调试。

 

 9.2 正则表达式提取器

         使用
Perl
类型的正则表达式(不过多赘述正则表达式的类型)从服务器响应中提取值。作为后处理器,此元素将在其作用域中的
请求之后执行,应用正则表达式、提取请求的值、生成模板字符串并将结果存储到给定的变量名称中。

 

 

 

 在查看结果树种进行调试:

 

 9.3 边界提取器

         允许用户使用左和右边界从服务器响应中提取值。作为后处理器,此元素将在其作用域中的每个取样器请求之后执行,测试边界、提取请求的值、生成模板字符串并将结果存储到给定的变量名称中。

 

 在查看结果树种调试:

 

 9.4 其他提取器:

 

  //CSS提取器

 

https://jmeter.apache.org/usermanual/component_reference.html#CSS_Selector_Extractor

 

  //XPath提取器

 

https://jmeter.apache.org/usermanual/component_reference.html#XPath2_Extractor

 

  //结果状态操作处理程序

https://jmeter.apache.org/usermanual/component_reference.html#Result_Status_Action_Handler

9.5 Json提取器+正则表达式提取器+边界提取器的应用

 

 退出接口使用添加接口的响应数据,使用关联参数:

 

 查看结果树:

 

 10. 前置处理器

 

       前置处理器主要用来处理请求前的一些准备工作,比如参数设置、环境变变量设置、加密等操作。本章介绍最常用的2种前置处理器。

 

10.1 JDBC预处理程序

 

       平时在我们做测试的过程的常用场景有:第一,准备了大量的测试数据,CSV文件使用不方便,就放到数据库里,那么,测试之前需要把测试数据读取出来;第二,接口参数比较多,一个一个入参比较麻烦,从库里导出准确数据,然后进行修改调整;

 

10.1.1 JDBC连接说明

       由于Jmeter默认没有提供MySQL的驱动,所以要自行下载,将下载好的驱动放到:lib–>ext目录下。

 

 10.1.2 连接示例

 

       地址写法:

 

       //  jdbc:数据库类型://地址

       jdbc:mysql://127.0.0.1:3306

 

 连接数据库,这个步骤要注意:SQL语句和类型是否对应。

 

 示例:

 

 10.2 BeanShell预处理程序

       BeanShell 这个在调整乱码的时候用到过,大家已经知道这个组件就是编写Java代码的了,这个组件的使用场景有哪些?最直接的,接口数据加密(执行测试用例之前进行加密),常见的加密方式如下:

 

 加密前:

 

 加密后:

 

 11. 常用断言

 

11.1 json断言

 

         JSON断言组件适用于返回数据是JSON格式的,JSON
文档执行验证。首先,它将解析 JSON,如果数据不是 JSON,它将失败。JSON断言有两种匹配规则:

 

a. 使用JsonPath的语法搜索指定的路径。如果未找到路径,它将失败。

b.如果在文档中找到 JSON 路径,并且请求对预期值进行验证,它将执行验证。对于null值,GUI 中有一个特殊的复选框。

 

 11.2 大小断言

         大小断言测试每个响应中包含正确的字节数。可以指定大小等于、大于、小于或不等于给定的字节数。

 

 12.生成HTML报告

 

         Jmeter生成测试报告有2种方式,GUL生成和CLI生成。

 

12.1 GUL生成

         jmeter3.0 版本之后开始支持动态生成测试报表(3.0版本的Dashboard Report模块会中文乱码)GUI 模式下,性能测试的结果往往误差很大,因为 GUI 本身就会消耗一部分资源,所以不会使用GUI生成测试报告;功能测试下,通常只看察看结果树,运行是否正确,然后就把脚本抛到集成工具上了,也不会使用GUI生成测试报告。

 

                                                打开位置

 

 12.2 CLI生成

 

 PS D:\apachejmeter5.3\test> jmeter n t test.jmx l result.jtl e o html//命令

Creating summariser <summary>
Created the tree successfully using test.jmx
Starting standalone test @ Fri Jun 2611:02:51 CST 2020(1593140571507)
Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
summary +     11in00:00:08=    1.3/s Avg:   729 Min:     1 Max:  1107 Err:     4(36.36%) Active:1 Started:3 Finished:2
summary +      7in00:00:05=    1.6/s Avg:   637 Min:     1 Max:   913 Err:     2(28.57%) Active:0 Started:1 Finished:1
summary =     18in00:00:13=    1.4/s Avg:   693 Min:     1 Max:  1107 Err:     6(33.33%)
Tidying up ...    @ Fri Jun 2611:03:04 CST 2020(1593140584695)

 

 

 由于测试报告是一个文件,建议和配套的HTTP服务器使用,把报告放到服务上。

 

 生成的报告:

 

 生成的测试报告(自带的是性能测试报告,附带很多信息),官网详解:

https://jmeter.apache.org/usermanual/generating-dashboard.html

 

 

 

 

 

 

 

1.2 解压到本地之后,一般常用的有2种方式启动:

 1.2.1

         直接启动:打开apache-jmeter-5.3\bin\jmeter.bat 批处理文件,就可打开Jmeter.

 1.2.2 命令行启动:需要设置环境变量

        先设置 JMETER_HOME=E:\AutoTest\apache-jmeter-5.3

        再在系统变量Path中添加: %JMETER_HOME%\bin

        最后还要在CLASSPATH中添加:

        %JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar.

         环境变量设置完毕之后,在命名行输入jmeter即可打开Jmeter.

        

1.3 Jmeter中文显示:初学者直接使用中文有助于很快理解很多功能;在bin目录下打开jmeter.properties文件,将#language=en #注释去掉,en修改为zh_CN,保存之后重启Jmeter

 

版权声明:本文为xiaoline原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/xiaoline/p/13795775.html