JMeter是100%完全由Java语言编写的,免费的开源软件,是非常优秀的性能测试和接口测试工具,支持主流协议的测试
1、需要安装JDK的环境,配置java环境变量(参考:)
2、查看java环境是否搭建成功:javac / java -version
下载地址:
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.4.1.切换语言
环境搭建成功之后,就可以直接在控制台输入jmeter启动,启动成功后,先切换成中文
3.4.2.安装插件
第一步:选项--插件管理
第二步:在搜索框输入json 勾选第一行 点击右下角安装插件
同时,在这我也准备了一份软件测试视频教程(含接口、自动化、性能等),需要的可以直接在下方观看就行,希望对你有所帮助!【公众号:互联网杂货铺】免费领取软件测试资料!
2024年Python自动化测试全套保姆级教程,70个项目实战,3天练完,永久白嫖...
在JMeter的测试工具中,把测试计划可以理解为是一个工程的目录,也就是说每一个脚本都可以说是一个测试计划,在一个测试计划里面包含了很多的线程组来进行执行,测试计划也是JMeter脚本的根节点。
测试套件,等于postman里面的集合。JMerer通过线程组来驱动多个(也可以理解为LR⼯具⾥⾯的虚拟⽤户)运⾏测试脚本对⽬标服务器发起⼤量的⽹络请求,在每个客户端上可以运⾏多个线程组,也就是说⼀个测试计划⾥⾯可以包含N个线程组
在JMeter的测试⼯具中,依据业务的形态来设置它的⽬录结果,但是设置性能测试的场景,主要是在线程组中来进⾏设置。JMeter的线程组可以理解为是建⽴了⼀个线程池,在执⾏的过程中处理线程组⾥⾯的各个业务逻辑,线程组的信息具体如下:
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.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共享,如下图:
⽤户定义的变量
在测试中,如果某些请求参数存在变化,⽐如是⽤户名和密码,那么就可以单独的独⽴出来,⽤户定义的变量可以很轻松的来解决这部分的问题。
HTTP请求默认值
每个取样器发送⽹络请求的时候都是需要IP地址等信息,但是使⽤HTTP请求默认值可以很轻松的把请求的地址独⽴出来。
4.3.6逻辑控制器
逻辑控制器主要控制JMeter的执⾏顺序,它的存在使整体的测试的灵活度更⾼。⽐如接⼝A执⾏完成后得到的结果信息,经过逻辑控制器判断之后,再执⾏接⼝B或者是接⼝C。⼀般性的⽽⾔,简单控制器使⽤的最多,但是也看具体的场景进⾏设置。
4.3.7前置处理器
在执⾏取样器之前,需要进⾏初始化的设置,等价于UnitTest测试框架中的setUp()的⽅法。
用户参数
我们⼀个测试点,需要多次操作,并且每次操作的数据都是不⼀样的测试步骤⼀致,但是测试数据每次不⼀样(前置处理器)
比如:登录的账户
CSV 数据⽂件设置
将数据放到一个文件里直接调用(配置元件里面)
记事本
csv文件
4.3.8后置处理器
在执⾏取样器之后执⾏,如API测试中经常会涉及到上个API的输出是下个API的输⼊,那么就会使⽤到后置处理器中的正则表达式提取器或者是JSON提取器,BeanShell断⾔等。
正则表达式提取器:(后置处理器--正则表达式提取器)
测试地址
4.3.9断⾔
主要⽤来验证返回的结果数据与预期的结果数据是否完全匹配,⼀般最常⽤的是响应断⾔和JSON断⾔。
4.3.10定时器
定时器主要⽤来在测试计划执⾏的过程中,定时器⽤来缓减线程运⾏,⽐如刻意的等待3秒后再执⾏下⼀个请求的信息
延时等待
api的测试用例执行的速度非常快的,基本只在毫秒级别的,但是在某些时候,由于业务的特性吗,想让他延迟几秒钟执行,那么这个时候就用延时等待(定时器--固定定时器)
bin目录:可执行的应用程序
extras目录:扩展插件目录
lib目录:所用到的插件目录,里面均为jar包
假设一个图书管理系统,可以进行增删改查,我们在登录成功之后,会返回一个token值,通过登录接口的后置处理器中的json提取器或者正则表达式提取器,我们一般用json提取器,定义一个变量来存储登录成功后的token,在下个接口中我们在请求头当中调用这个变量。
在请求头添加token jwt ${token}
添加--配置元件--http信息头管理器--添加
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,现实如下说明环境已经搭建好
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
tests
用来存放测试的所有资料
report
用来存放测试报告 里面再创建html和jtl的文件夹
scrip
用来存放测试脚本
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)修改收到测试报告的邮箱
(3)修改要执行测试用例的路径和脚本
5.生成测试报告:在控制台进入到测试用例tests的目录下,输入ant
6.生成的报告在哪打开?
jmeter--tests--report--html
最下面就是你最新生成的 点击就能直接打开
生成的测试报告如下: