性能测试的定义:通过自动化测试工具或者代码手段,来模拟正常、峰值负载访问被测系统,来观测系统各项性能指标是否合格的过程。
性能测试的介入时机,一般是在功能、接口测试都已经完成之后再来做性能测试。
注意:
重点组件有:
线程组是控制用于执行测试的线程数,也可以把一个线程理解为一个测试用户,线程组即一组用户。
线程组的特点:
线程组的分类
线程组属性设置
“添加”-》“配置元件”-》“HTTP请求默认值”这个路径中设置,请求的协议、域名或ip、端口号。
这样其他请求就可以使用这个默认配置,而不用再配置协议、域名或ip、端口号了
直接在路径中带参数
以key-value的形式传参数
以键值对形式传参
直接在“参数”的下面添加参数,适合于content-type为application/x-www-form-urlencoded的时候,不需要单独设置请求头。
以json的形式传参
传文件
只传文件的情况:
除了文件,还要传其他普通参数的情况:
会显示“查看结果树”作用域中的所有http请求。可以查看请求的结果
cookie管理器专门用于管理客户端的cookie信息,一般用于需要登录的场景保持与服务器端的会话。如果不设置该管理器,则无法再jmeter中保持会话
添加方式:“配置元件”-》“cookie管理器”
cookie管理器一般不需要专门设置,添加了就可以了
每次请求发送不同的值,就需要用到参数化。
添加方式:“测试计划”-》“线程组”-》添加“配置元件”-》“用户定义的变量”
步骤:
优势:所有要用到该值的订单,统一使用一个变量${变量名},便于维护
劣势:多个用户也只能取一个值,无法让多个用户使用多个值
添加方式:“测试计划”-》“线程组”-》添加“配置元件”-》“CSV数据文件设置”
步骤:
优势:对同一个用户多次循环,可以取不同的值,适合数据量比较大的参数化测试,是在接口测试或性能测试中常用的一种方式。
主要用于HTML格式的响应断言。
添加方式:“测试计划”-》“线程组”-》“HTTP请求”-》右键“添加断言”-》“xpath”断言
主要用于json格式的响应断言,断言非json格式会失败
添加方式:测试计划-》线程组-》http请求-》右键添加断言-》json断言
步骤:
“Assert JSON Path exists”:设置json的路径,必须用$.表示json的根目录。如:$.code,表示取code的值
“Additionally assert value”: 勾选后可以填写预期结果
主要用于断言请求的响应时间是否在设定的时间范围内。
添加方式:测试计划-》线程组-》HTTP请求-》右键添加断言-》断言持续时间
步骤:
关联主要用于解决性能测试中多个接口之间的依赖关系,一般可以通过后置处理器来提取。
常用的关联方法:
添加方式:测试计划-》线程组-》HTTP请求-》右键添加后置处理器-》正则表达式提取器
步骤:
添加方式:测试计划-》线程组-》HTTP请求-》右键添加后置处理器-》xpath提取器
步骤:
添加方式:测试计划-》线程组-》HTTP请求-》右键添加后置处理器-》json提取器
步骤:
beanshell是一个小型,免费,可嵌入的java源代码解释器,具有用java编写的对象脚本功能。
常见的beanshell组件:
添加方式:测试计划-》线程组-》HTTP请求-》右键添加前置处理器-》BeanShell processor
在文本框中添加sign获取的shell
import org.apache.commons.code.digest.DigestUtils; String sign='要签名的字符串'; String sign_md5 = DigestUtils.md5Hex(sign); // 将签名放入变量signStr中 vars.put("signStr",sign_md5);
添加方式:测试计划--》线程组--》HTTP请求--》右键添加定时器--》Synchronizing Timer
同步定时器目的是阻塞线程,直到阻塞了n个线程,然后立即释放它们。用来做大数据量的并发请求
步骤:
可以让jmeter以指定数字的吞吐量(以每分钟的样本数为单位,而不是每秒)执行,通常用于负载测试、压力测试等。吞吐量计算的范围可以指定为当前线程、当前线程组、所有线程组
添加方式:测试计划-》线程组-》HTTP请求-》右键添加定时器-》constant throughput timer
步骤:
在使用jmeter进行性能测试时,如果并发数比较大,单台电脑的CPU和内存可能无法支持,这时,就可以使用jmeter提供的分布式测试的功能。
注意事项:
注意:linux上通过命令+参数启动:
./jmeter-server -Djava.rmi.server.host.name=ip地址
注意:如果通过远程执行无法显示响应内容的话,需要将jmeter.properties中的mode=Standard取消注释
生成jmeter报告,先配置jmeter环境变量:
生成报告的命令:
jmeter -n -t xxx.jmx -l http.jtl -e -o report
如果已经有之前生成的jtl文件,也可以直接使用jtl文件生成报告
命令如下:
jmeter -g xxx.jtl -o report
如果对python自动化测试、web自动化、接口自动化、移动端自动化、大型互联网架构技术、面试经验交流等等感兴趣的老铁们,可以关注我。我会在公众号(程序员阿沐)/群里(810119819)不定期的发放免费的资料链接,这些资料都是从各个技术网站搜集、整理出来的,如果你有好的学习资料可以私聊发我,我会注明出处之后分享给大家。欢迎分享,欢迎评论,欢迎转发。需要资料的同学可以关注我获取资料链接。