Jmeter接口程序项目实战教程

1.什么是jmeter?

JMeter是100%完全由Java语言编写的,免费的开源软件,是非常优秀的性能测试和接口测试工具,支持主流协议的测试

2.jmeter能做什么?

  1. JMeter是100%完全由Java语言编写的软件性能测试的GUI的测试工具,方便用户可以无代码的方式编写性能测试脚本。JMeter的特点可以总结为如下:
  2. JMerer测试工具不仅仅可以做性能测试,也可以做API的测试,可以和构建工具整合起来,如Ant,Maven,以及CI工具的整合,以及也可以和Grafana可视化整合起来
  3. JMeter支持多种协议进行性能测试,如HTTP,HTTPS,WS

3.jmeter环境搭建

3.1前提:

1、需要安装JDK的环境,配置java环境变量(参考:)

2、查看java环境是否搭建成功:javac / java -version

3.2jmeter下载:

下载地址:

3.3jmeter环境搭建:

3.3.1mac当中jmeter环境搭建:

控制台: sudo vim .bash_profile

把下面的复制进去,JMETER_HOME=后面是jmeter的路径,改成自己的路径

#JMETER export JMETER_HOME=/Applications/tools/apache-jmeter-5.4.1 export PATH=$JMETER_HOME/bin:$PATH

3.4jmeter基本配置

3.4.1.切换语言

环境搭建成功之后,就可以直接在控制台输入jmeter启动,启动成功后,先切换成中文

3.4.2.安装插件

第一步:选项--插件管理

第二步:在搜索框输入json 勾选第一行 点击右下角安装插件

同时,在这我也准备了一份软件测试视频教程(含接口、自动化、性能等),需要的可以直接在下方观看就行,希望对你有所帮助!【公众号:互联网杂货铺】免费领取软件测试资料!

2024年Python自动化测试全套保姆级教程,70个项目实战,3天练完,永久白嫖...

 

4.jmeter组件

4.1测试计划

在JMeter的测试工具中,把测试计划可以理解为是一个工程的目录,也就是说每一个脚本都可以说是一个测试计划,在一个测试计划里面包含了很多的线程组来进行执行,测试计划也是JMeter脚本的根节点。

4.2线程组

测试套件,等于postman里面的集合。JMerer通过线程组来驱动多个(也可以理解为LR⼯具⾥⾯的虚拟⽤户)运⾏测试脚本对⽬标服务器发起⼤量的⽹络请求,在每个客户端上可以运⾏多个线程组,也就是说⼀个测试计划⾥⾯可以包含N个线程组

在JMeter的测试⼯具中,依据业务的形态来设置它的⽬录结果,但是设置性能测试的场景,主要是在线程组中来进⾏设置。JMeter的线程组可以理解为是建⽴了⼀个线程池,在执⾏的过程中处理线程组⾥⾯的各个业务逻辑,线程组的信息具体如下:

Jmeter接口程序项目实战教程_第1张图片

4.2.1取样器错误后要执⾏的动作

这部分可以理解为当客户端向服务端发送请求后,以及发送请求的过程中出错后的异常处理⽅式。

继续

如果有⼀个请求错误,其他的请求会继续,不会因为有⼀个请求错误的导致其他请求终⽌。

启动下⼀个进程循环

如果请求出现问题,同⼀脚本中的其他请求就都不再执⾏,直接执⾏下⼀个进程的信息。如登录后下⼀个请求是查看个⼈主⻚,但是因为登录出错,下个接⼝查看个⼈主⻚就不会被执⾏。

停⽌线程

停⽌线程指的是如果请求失败,就停⽌当前线程执⾏,不再继续执⾏。如果线程数很多的,那么导致的结果是停⽌的线程就会很多,处于真正运⾏的线程会很少,最后导致服务器的负载不够,⼀般不建议构选改选项。

停⽌测试

如果请求失败,那么停⽌所有线程执⾏,也就是说停⽌整个测试。

⽴即停⽌测试

如果请求失败,⽴即停⽌整个测试场景的执⾏。

4.2.2线程属性

线程数

⼀个线程可以理解为对应模拟⼀个⽤户,所以线程数越多,那么也就认为可以模拟的⽤户数越多。

Ramp-Up时间(秒)

该属性指的是所有线程从启动到开始运⾏的时间间隔,单位是秒,也就是说所有线程在多⻓时间内开始执⾏,如线
程数设置50,设置的时间为5秒,那么计算的公式为:
每秒执⾏线程数=线程数/Ramp-Up
具体如:
如设置的线程数为50,Ramp-up的时间为10,那么也就是说开启执⾏后,每秒会启动5个线程,如果Ramp-Up设置为
0,那么开始执⾏后,50个线程会⽴刻启动

循环次数

循环次数可以理解为,请求的重复次数。如果选择“永远”,那么请求将⼀直进⾏,不建议这样操作。

延迟创建线程直到需要如50个线程数,Ramp-Up时间是10秒,执⾏后线程是全部就绪的,那么就是每隔1秒启动5个线程数

调度器

思维调度器可以理解为设置何时开始运⾏。

持续时间

测试计划持续多⻓时间

启动延迟

从当前时间延迟多⻓时间开始运⾏测试,也就是说点击执⾏后,仅仅是做初始化的场景,不会执⾏测试,等待延迟到达后开始运⾏测试,执⾏的时间为持续时间设置的时间。 

4.3jmeter监听器

4.3.1聚合报告

聚合报告是以表格的形式来显示取样器的结果信息,如果不同的取样器拥有相同的名字,那么在聚合报告会显示在⼀⾏⾥⾯,那么⼀般来说,聚合报告都是根据取样器来显示每个取样器的执⾏结果信息。聚合报告的信息具体如下:

Label:取样器名称
Samples:取样器运⾏次数
Average:单个请求的平均响应时间
Median:50%请求的响应时间
90%Line:90%请求响应时间
95%Line:95%请求响应时间
99%Line:99%请求的响应时间
Min:请求的最⼩响应时间
Max:请求的最⼤响应时间
Std.Dev:响应时间的标准⽅差
Error%:事务错误率
Throughput:吞吐率,也就是TPS
KB/sec:每秒数据包流量
Avg.Bytes:平均数据流量
Received KB/sec:每秒从服务器端接收到的数据量
SentKB/sec:每秒从客户端发送的请求的数量

4.3.2后端监听器

后端监听器可以把JMeter与influxdb,grafana整合起来,把性能测试过程中的数据存储到influxdb,然后最后显示在grafana的可视化界⾯中。

4.3.3察看结果树

结果树能够很清晰的显示每个取样器执⾏的结果信息,以及每个取样器的⽹络请求信息

4.3.4取样器

取样器是JMeter的基本单元,⼀般性的各种都是取样器来发起的

HTTP请求

可以把它理解为⼀个独⽴的测试⽤例,或者说是⼀个测试场景。

4.3.5配置元件

配置元件可以理解为对取样器的各种请求进⾏辅助配置。

HTTP信息头管理器

每个HTTP的请求都是需要请求头的信息的,那么可以把请求头的信息添加到HTTP信息头管理器,然后需要把它放在取样器的前⾯。

HTTP Cookie管理器

在系统登录成功后需要访问系统中的其他⽹络请求,但是需要记住⽤户登录成功后的sessionID的信息,那么使⽤HTTP Cookie管理器就可以⾃动记录下这些信息。

在JMeter中,如果一个网站使用的是session来实现的,但是jmeter无法获取登录成功后的sessionid,那么也就导致登录后的请求,都会重定向到登录的页面,也就是说无法验证我是谁,可以使用cookie管理器来解决它内部会记住所有网络请求的cookie信息,并且会让所有的网络请求间的cookie共享,如下图:

Jmeter接口程序项目实战教程_第2张图片

⽤户定义的变量

在测试中,如果某些请求参数存在变化,⽐如是⽤户名和密码,那么就可以单独的独⽴出来,⽤户定义的变量可以很轻松的来解决这部分的问题。

HTTP请求默认值

每个取样器发送⽹络请求的时候都是需要IP地址等信息,但是使⽤HTTP请求默认值可以很轻松的把请求的地址独⽴出来。

4.3.6逻辑控制器

逻辑控制器主要控制JMeter的执⾏顺序,它的存在使整体的测试的灵活度更⾼。⽐如接⼝A执⾏完成后得到的结果信息,经过逻辑控制器判断之后,再执⾏接⼝B或者是接⼝C。⼀般性的⽽⾔,简单控制器使⽤的最多,但是也看具体的场景进⾏设置。

4.3.7前置处理器

在执⾏取样器之前,需要进⾏初始化的设置,等价于UnitTest测试框架中的setUp()的⽅法。 

用户参数

我们⼀个测试点,需要多次操作,并且每次操作的数据都是不⼀样的测试步骤⼀致,但是测试数据每次不⼀样(前置处理器)

比如:登录的账户

Jmeter接口程序项目实战教程_第3张图片

CSV 数据⽂件设置

将数据放到一个文件里直接调用(配置元件里面)

记事本

Jmeter接口程序项目实战教程_第4张图片

csv文件

Jmeter接口程序项目实战教程_第5张图片

4.3.8后置处理器

在执⾏取样器之后执⾏,如API测试中经常会涉及到上个API的输出是下个API的输⼊,那么就会使⽤到后置处理器中的正则表达式提取器或者是JSON提取器,BeanShell断⾔等。

正则表达式提取器:(后置处理器--正则表达式提取器)

测试地址

Jmeter接口程序项目实战教程_第6张图片

  • 模板:⽤$$引⽤起来,如果在正则表达式中有多个正则表达式(多个括号括起来的东东),则可以是$2$,$3$等等,表示解析到的第⼏个值给user_id。例如:$1$表示匹配到的第⼀个值
  • 匹配数字:0代表随机取值,-1代表所有值,此时提取结果是⼀个数组,其余正整数代表第⼏个匹配的内容提取出来。如果匹配数字选择的是-1,还可以通过 {user_id_2}来取第2个匹配的内容。
  • 缺省值:正则匹配失败时,取的值

4.3.9断⾔

主要⽤来验证返回的结果数据与预期的结果数据是否完全匹配,⼀般最常⽤的是响应断⾔和JSON断⾔。

4.3.10定时器

定时器主要⽤来在测试计划执⾏的过程中,定时器⽤来缓减线程运⾏,⽐如刻意的等待3秒后再执⾏下⼀个请求的信息

延时等待

api的测试用例执行的速度非常快的,基本只在毫秒级别的,但是在某些时候,由于业务的特性吗,想让他延迟几秒钟执行,那么这个时候就用延时等待(定时器--固定定时器)

Jmeter接口程序项目实战教程_第7张图片

5.jmeter的目录内容

bin目录:可执行的应用程序

extras目录:扩展插件目录

lib目录:所用到的插件目录,里面均为jar包

6.Jmeter动态参数的解决思路是什么?

假设一个图书管理系统,可以进行增删改查,我们在登录成功之后,会返回一个token值,通过登录接口的后置处理器中的json提取器或者正则表达式提取器,我们一般用json提取器,定义一个变量来存储登录成功后的token,在下个接口中我们在请求头当中调用这个变量。

7.jmeter里面调用变量是什么怎么调用?

在请求头添加token jwt ${token}

添加--配置元件--http信息头管理器--添加

Jmeter接口程序项目实战教程_第8张图片

8.测试报告 

8.1 认识ant

8.1.1 ant下载

下载地址:

8.1.2ant环境变量配置:

mac配置ant环境变量:

#ant环境变量

export ANT_HOME=/Applications/tools/apache-ant-1.10.1

export PATH=$ANT_HOME/bin:$PATH

windows配置ant环境变量:

把他(目录到bin目录)配置到path环境变量

8.1.3验证环境:

控制台输入ant,现实如下说明环境已经搭建好

8.2 认识build.xml文件

ant构建工具,该构建工具执行的时候依赖于build.xml的文件,在build.xml文件里面会定义具体执行的脚本,执行的顺序,以及测试报告存储的目录

 1 xml version="1.0" encoding="UTF8"?>
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
10 
11 
12 
13 
14 
15 
16     
17         
18      
19      
20      
21      
22      
23      
24      
25 
26      
27     
28          
29          
30          
31      
32      
33      
34      
35           执行接口自动化测试
36          
37          
38             
39             
40              
41          
42      
43      
44      
45      
46         
47         
48     
49 
50      
51      
52      生成接口自动测试报告
53          
57         
58         
59         
60              
61                  
62                  
63              
64         
65      
66       
67     
68     发送自动化测试报告
69          
77          
78                
79                      
80                              
81                              
82                              
83                      
84                
85                
86                ${message}
87                
88          
89      
90  

8.3目录结构

tests

用来存放测试的所有资料

Jmeter接口程序项目实战教程_第9张图片

report

用来存放测试报告 里面再创建html和jtl的文件夹

Jmeter接口程序项目实战教程_第10张图片

scrip

用来存放测试脚本

8.4自动发送邮件

1、 在JMeter的extras下找到ant-jmeter-1.1.1.jar,把它copy到ant的apache-ant-1.10.0\lib下。

2、自动发送邮件,需要三个jar包,分别是:activation.jar,commons-email-1.2.jar,mail.jar,这三个文件放在ant的lib目录下

3、输出测试报告的配置

打开jmeter的bin目录下的jmeter.properties文件,做如下修改:
把jmeter.save.saveservice.output_format=csv
修改为jmeter.save.saveservice.output_format=xml

4、build文件修改代码:

(1)修改jmeter的路径

(2)修改收到测试报告的邮箱

Jmeter接口程序项目实战教程_第11张图片

(3)修改要执行测试用例的路径和脚本

5.生成测试报告:在控制台进入到测试用例tests的目录下,输入ant

Jmeter接口程序项目实战教程_第12张图片

6.生成的报告在哪打开?

jmeter--tests--report--html

最下面就是你最新生成的 点击就能直接打开

Jmeter接口程序项目实战教程_第13张图片

生成的测试报告如下:

Jmeter接口程序项目实战教程_第14张图片

你可能感兴趣的:(测试工具,职场和发展,压力测试,软件测试,自动化测试,接口测试,jmeter)