Jmeter接口自动化测试

目录

 

一、目标

二、环境配置

三、实现成果

四、Jmeter介绍

五、Jmeter环境搭建

六、Jmeter目录介绍

七、Jmeter结构图

八、Jmeter基础操作

8.1 启动Jmeter,

8.2Jmeter页面如下:

8.3测试计划

8.4.添加线程组

8.5.添加http请求

8.6.添加察看结果树

8.7.Jmeter参数化

8.8、添加断言

8.9.添加断言结果

九、Jmeter进阶操作

9.1.如何实现Jmeter使用POST方法发送json数据

9.2.如何实现数据的关联

9.3.for-each控制器的使用

9.4.jmeter性能测试场景化操作

9.5.Jmeter聚合报告分析

9.6.Jmeter脚本封装以及执行的顺序

9.7.Jmeter命令行操作生成性能测试报告

十、Jmeter+ant+Jenkins实现自动化接口测试

10.1  Ant配置

10.2  Jenkins 搭建(By tomcat)


一、目标

1.Jmeter介绍

 

  • Jmeter环境搭建以及目录介绍
  • Jmeter功能页面
  • Jmeter元件使用
  • Jmeter参数化
  • Jmeter关联
  • Jmeter检查点
  • Jmeter聚合报告
  • Jmeter插件使用
  • Jmeter命令行介绍

 

2.Jmeter+ant+jenkins实现接口自动化测试集成

 

二、环境配置

 

  • JDK:1.8.0_131
  • Jmeter:4.0
  • Jenkins:Jenkins2.176.1
  • ant:1.9.6

 

备注:版本选择可以自行官网下载配置,以上为本人电脑配置

 

三、实现成果

1.生成html报告如下:

Jmeter接口自动化测试_第1张图片

 

2.邮件通知如下:

Jmeter接口自动化测试_第2张图片

 

四、Jmeter介绍

jmeter作为一个开源的接口性能测试工具,其本身的小巧和灵活性给了测试人员很大的帮助,但其本身作为一个开源工具,相比于一些商业工具(比如LoadRunner),在功能的全面性上就稍显不足。

五、Jmeter环境搭建

1.Jmeter环境建

Jmeter下载安装,官网地址:http://jmeter.apache.org/download_jmeter.cgi

 

  • 下载完成后解压到当前目录即可,如下图:
  • 环境变量配置_新增系统环境变量
  • 变量名称:JMETER_HOME:
  • 变量值:D:\Develop\apache-jmeter-4.0  //即Jmeter的目录
  • 环境变量配置_将Jmeter环境变量添加的Path变量下

 

备注:jdk下载以及环境变量配置自行操作

六、Jmeter目录介绍

Bin目录:存放可执行文件和配置文件
Jmeter.bat: windows系统中JMeter的启动文件
ApacheJMeter.jar Java环境下的JMeter启动文件
Jmeter.log:日志文件
Jmeter.sh: linux系统中JMeter的启动文件
Jmeter.properties:系统配置文件
Jmeter-server.bat: windows分布式测试要用到的服务器配置
Jmeter-serve: linux分布式测试要用到的服务器配置
lib/ext/目录 就扩展插件:在配置元件中可以看到到的组件
extras目录 主要是用来做ant自动化和报告模板

七、Jmeter结构图

Jmeter接口自动化测试_第3张图片

八、Jmeter基础操作

8.1 启动Jmeter,

点击Jmeter目录下的"jmeter.bat"文件,D:\Develop\apache-jmeter-4.0\bin\jmeter.bat

8.2Jmeter页面如下:

Jmeter接口自动化测试_第4张图片

备注:Jmter4.0版本左侧的树形导航仅包含“测试计划”,“无工作台”

8.3测试计划

Jmeter接口自动化测试_第5张图片

作用:

  • 本次测试所需要的【组件】都是基于测试计划添加;
  • 本次测试所有组件的设置与执行都基于测试计划;
  • 组件:完成指定功能代码段的封装;

8.4.添加线程组

 

右键点击“测试计划” -> “添加”-> “Threads(Users)” -> “线程组”

Jmeter接口自动化测试_第6张图片

Jmeter接口自动化测试_第7张图片

  • 线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
  • Ramp-Up Period(in seconds)准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为10,准备时长为2,那么需要2秒钟启动10个线程,也就是每秒钟启动5个线程。
  • 循环次数:每个线程发送请求的次数。如果线程数为10,循环次数为100,那么每个线程发送100次请求。总请求数为10*100=1000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。
  • Delay Thread creation until needed:直到需要时延迟线程的创建。
  • 调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)
  • 持续时间(秒):测试持续时间,会覆盖结束时间
  • 启动延迟(秒):测试延迟启动时间,会覆盖启动时间

8.5.添加http请求

右键点击“线程组” -> “添加” -> “Sampler” -> “HTTP请求”

接口地址:http://www.baidu.com/s?ie=utf-8&wd=jmeter接口测试

Jmeter接口自动化测试_第8张图片

Jmeter接口自动化测试_第9张图片

备注

1.自动重定向:仅对get方法有效,可以自动跳转到请求的新url,但不会显示转换url的详情

2.跟随重定向:针对get、post均有效,可以显示链接的请求过程

8.6.添加察看结果树

右键点击“线程组” -> “添加” -> “监听器” -> “察看结果树”

Jmeter接口自动化测试_第10张图片

这时,我们运行Http请求,修改响应数据格式为“HTML Source Formatted”,可以看到本次搜索返回结果页面标题为”jmeter接口测试_百度搜索

Jmeter接口自动化测试_第11张图片

8.7.Jmeter参数化

方式一:

添加用户自定义变量

我们可以添加用户自定义变量用以Http请求参数化,右键点击“线程组” -> “添加” -> “配置元件” -> “用户定义的变量”:

Jmeter接口自动化测试_第12张图片

新增一个参数wd,存放搜索词"自动化测试"

Jmeter接口自动化测试_第13张图片

并在Http请求中使用该参数,格式为:${wd}

Jmeter接口自动化测试_第14张图片

方式二:"CSV 数据文件设置"

1.新建一个csv文件,保存如下数据:注意使用notepad编辑,将其转换为utf-8编码方式,否则中文在jmeter中显示乱码

Jmeter接口自动化测试_第15张图片

2.右键点击“线程组” -> “添加” -> “配置元件” -> “CSV 数据文件设置”:

Jmeter接口自动化测试_第16张图片

Jmeter接口自动化测试_第17张图片

在Http请求中使用该参数,格式为:${keyword} ,并运行可以在结果树中查看到如下结果,则表示已从csv文件中读取对应的参数

Jmeter接口自动化测试_第18张图片

8.8、添加断言

右键点击“HTTP请求” -> “添加”-> “断言” -> “响应断言”

Jmeter接口自动化测试_第19张图片

校验返回的文本中是否包含搜索词,添加参数${keyword}到要测试的模式中:

Jmeter接口自动化测试_第20张图片

8.9.添加断言结果

右键点击“HTTP请求” -> “添加”-> “监听器” -> “断言结果”,然后运行测试,即可看到断言的结果

Jmeter接口自动化测试_第21张图片

 

九、Jmeter进阶操作

9.1.如何实现Jmeter使用POST方法发送json数据

添加"http信息头管理器”

右键点击“线程组”->"添加"->"配置元件"->"http信息头管理器",添加字段:Content-type:application/json

Jmeter接口自动化测试_第22张图片

在http请求中选择"BodyData",编写Json数据

Jmeter接口自动化测试_第23张图片

9.2.如何实现数据的关联

方式一:使用后置处理器,"正则表达式提取器"

右键点击“http请求”->"添加"->"后置处理器"->"正则表达式提取器"

Jmeter接口自动化测试_第24张图片

(1)引用名称:下一个请求要引用的参数名称,如填写authld,则可用${authld}引用它。

(2)正则表达式:左边界(.+?)右边界

():括起来的部分就是要提取的。

.:匹配任何字符串。

+:一次或多次。

?:不要太贪婪,在找到第一个匹配项后停止。

(3)模板:用$$引用起来,如果在正则表达式中有多个正则表达式,则可以是$1$$2$等等,表示解析到的第几个值给title。如:$1$表示解析到的第1个值

(4)匹配数字:0代表随机取值,-1代表全部取值,通常情况下填0

(5)缺省值:如果参数没有取得到值,那默认给一个值让它取,我填的Error。

 

* 0 表示随机

* -1 表示全部

* 1表示第一个

* 2表示第二个

* ......

测试正常表达式:

Jmeter接口自动化测试_第25张图片

引用提取的变量如下:

Jmeter接口自动化测试_第26张图片

练习:

查看提取变量的结果可以使用debug Samper

Jmeter接口自动化测试_第27张图片

使用表达式:"name":"(.+?)","code":(.+?),

使用模板:$0$,提取包含表达式在内的字符串。如下:

Jmeter接口自动化测试_第28张图片

使用模板:$1$,提取包含表达式在内的字符串。如下:

Jmeter接口自动化测试_第29张图片

使用模板:$2$,提取包含表达式在内的字符串。如下:

Jmeter接口自动化测试_第30张图片

使用模板:$1$$2$,提取包含表达式在内的字符串。如下:

此时的则把2个(.*?)所匹配的内容拼接起来"city=江苏省320",要引用值,可以使用${city_1},${city_2}

Jmeter接口自动化测试_第31张图片

方式二:使用后置处理器,"JSON Extractor"

右键点击“http请求”->"添加"->"JSON Extractor"

例如:在接口1中获取比赛id,然后在接口2中使用比赛id,获取当前节目的状态

Jmeter接口自动化测试_第32张图片

Jmeter接口自动化测试_第33张图片

Jmeter接口自动化测试_第34张图片

在接口二中引用变量时,使用${sdspMatchId_1}

Jmeter接口自动化测试_第35张图片

9.3.for-each控制器的使用

使用场景:循环使用变量

例如:接口二中的参数是动态获取接口一的返回的变量

在接口一中,提取的所有赛事的id

Jmeter接口自动化测试_第36张图片

Jmeter接口自动化测试_第37张图片

添加ForEach控制器

右键点击“线程组”->"添加"->"逻辑控制器"->"ForEach控制器"

Jmeter接口自动化测试_第38张图片

在http请求中的变量引用forEach中的输出变量名${competitionid_mip_prd}

Jmeter接口自动化测试_第39张图片

在结果树中查看到如下结果,forEach控制器下的http请求会遍历所有的competitionid

Jmeter接口自动化测试_第40张图片

9.4.jmeter性能测试场景化操作

添加"Stepping Thread Group"

右键点击"测试计划"->"添加"->"Threads(Users)"->"Stepping Thread Group"

如下图:

(1)共30个线程即30个虚拟用户,每10s启动10个线程,然后运行20s

(2)启动30个线程后在持续运行120s

(3)每3s停止10s线程

Jmeter接口自动化测试_第41张图片

备注:Jmeter默认没有"Stepping Thread Group",线程组,需要安装插件

(1):首先下载Jmeter插件管理器"jmeter-plugins-manager-1.3.jar",地址:https://jmeter-plugins.org/install/Install/

(2):下载完成后,将其放入jmeter安装目录下的lib/ext目录,然后重启jmeter,即可。

启动jemter,点击选项,最下面的一栏,如下图所示:

Jmeter接口自动化测试_第42张图片

启动插件管理器-选择"Available Plugins" -选择"jpgc-Standard Set"->点击"Apply Changes and Restart Jmeter",安装即可

Jmeter接口自动化测试_第43张图片

9.5.Jmeter聚合报告分析

右键点击“线程组”->"添加"->"监听器"->"聚合报告"

聚合报告参数详解:

  • Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
  • #Samples:请求数——表示这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
  • Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,以Transaction 为单位显示平均响应时间
  • Median:中位数,也就是 50% 用户的响应时间
  • 5. 90% Line:90% 用户的响应时间
  • Min:最小响应时间
  • Max:最大响应时间
  • Error%:错误率——错误请求数/请求总数
  • Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
  • KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec

 

  • 一般而言,性能测试中我们需要重点关注的数据有: #Samples 请求数,Average 平均响应时间,Min 最小响应时间,Max 最大响应时间,Error% 错误率及Throughput 吞吐量。

 

9.6.Jmeter脚本封装以及执行的顺序

Jmeter接口自动化测试_第44张图片

执行顺序

  • 配置元件
  • 前置处理器
  • 定时器
  • 取样器
  • 后置处理器 (如果 SampleResult 不为空)
  • 断言 (如果 SampleResult 不为空)
  • 监听器 (如果 SampleResult 不为空)

 

9.7.Jmeter命令行操作生成性能测试报告

  非GUI界面,命令说明:

                     -h 帮助

-n 非GUI模式

-t 指定要运行的 JMeter 测试脚本文件

-l 记录结果的文件 每次运行之前,(要确保之前没有运行过,即xxx.jtl不存在,不然报错)

-r Jmter.properties文件中指定的所有远程服务器

-e 在脚本运行结束后生成html报告

-o 用于存放html报告的目录(目录要为空,不然报错)

需要修改报告的输出格式:使用CSV,修改Jmeter目录下的"jmeter.properties"文件,例如:

"F:\接口\jmeter课件资料\apache-jmeter-4.0\bin\jmeter.properties"

修改如下字段:

jmeter.save.saveservice.output_format=csv

Jmeter接口自动化测试_第45张图片

Jmeter接口自动化测试_第46张图片

命令:

jmeter -n -t E:\project\智慧零售\测试工作\接口\平台接口.jmx -l result.jtl -e -o E:\project\智慧零售\测试工作\接口\html

Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8

Creating summariser 

Created the tree successfully using E:\project\智慧零售\测试工作\接口\平台接口.jmx

Starting the test @ Thu Oct 10 15:16:17 CST 2019 (1570691777018)

Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445

summary =     29 in 00:00:01 =   38.7/s Avg:    20 Min:0 Max:   133 Err:     8 (27.59%)

Tidying up ...    @ Thu Oct 10 15:16:18 CST 2019 (1570691778190)

... end of run

19038992@CNHQ-19038992N E:\

报告如下:

Jmeter接口自动化测试_第47张图片

十、Jmeter+ant+Jenkins实现自动化接口测试

10.1  Ant配置

1.下载ant

2.下载完成后配置ant的环境变量

3.Jmeter脚本已经录制好了,并测试通过,存在(xxx.jmx)脚本

4.将Jmeter所在的目录下extras子目录的ant-jmeter-1.1.1.jar复制到Ant所在目录lib目录下,这样运行Ant时才能找到"org.programmerplanet.ant.taskddfs.jmeter.JMeterTask"这个类,从而成功触发JMeter脚本

5、jmeter默认保存的是.csv格式的文件,所以我们先设置下bin/jmeter.properties文件内存,保存

jmeter.save.saveservice.output_format=xml

6.主要逻辑思路:F:\Test\apiTest\script.jmx脚本,生成.jtl文件放入

F:\Test\apiTest\resultlog\jtl文件中,ant在将相应的文件转换为对应的html文件放入F:\Test\apiTest\resultlog\html中

7.ant的编译文件build.xml 文件:



    
        
    
    
    
    
    
       
    
    
    
    
    
    
    
    
    
     
    
        
        

    
    
        
        
            
            
        
    
 
    
  
        
        
    
 
    

               

        
        
 

        
        
            
                
                
            
        
    
    

        
        
        
        This email was sent automatically by ANT. Please check the automation test report. Thank you!




                



    

Jmeter接口自动化测试_第48张图片

生成报告如下:

Jmeter接口自动化测试_第49张图片

 

10.2  Jenkins 搭建(By tomcat)

1、 Jenkins官网https://jenkins.io/download/下载最新版本jenkins.war

Jmeter接口自动化测试_第50张图片

2、将jenkins.war 放到D:\Develop\tomcat7\webapps,目录下:

Jmeter接口自动化测试_第51张图片

3.启动tomcat 服务:"startup.bat"

Jmeter接口自动化测试_第52张图片

4、出现如下信息,则表示Jenkins已启动OK

Jmeter接口自动化测试_第53张图片

5.在浏览器中输入地址:http://localhost:8080/jenkins/

Jmeter接口自动化测试_第54张图片

6.新建任务

Jmeter接口自动化测试_第55张图片

Jmeter接口自动化测试_第56张图片

任务配置:

Jmeter接口自动化测试_第57张图片

 

每行由 5 个值组成(空格或TAB分隔),分别表示 分(0-59)、时(0-23)、日(1-31)、月(1-12)、周(0-7, 0/7=周日)

使用ant执行脚本

Jmeter接口自动化测试_第58张图片

Jmeter接口自动化测试_第59张图片

Jmeter接口自动化测试_第60张图片

Jmeter接口自动化测试_第61张图片

保存后,点击Build now

Jmeter接口自动化测试_第62张图片

编译完成后可以点击查看控制台的输出如下:

Jmeter接口自动化测试_第63张图片

生成的html报告如下:

Jmeter接口自动化测试_第64张图片

你可能感兴趣的:(接口测试工具,jmeter)