前言:性能测试是现如今测试人员都要有具备会的,至少目前内卷的来说,不会点性能测试、自动化测试,都不对不起自己的高薪,对吧,所以小白想要高薪,就必须要学会这些技能,因为你不会不代表别人不会,缺乏核心竞争力,只会点点点工程师的出路很窄,以下讲解的性能测试用到的工具Jmeter的基础知识,胎教级别教学,绝对看的懂,如果看不懂,当我没说,哈哈哈。
一、性能测试定义
性能测试(Performance Testing):在一定的负载情况下,系统的响应时间等特性是否满足特定的性能需求。
区分用户的概念:
①在线用户:已三次握手但未四次挥手[接口知识]
②并发用户:对系统伤害大的用户集体访问状态(比如12306抢票、双11、京东618等)
③系统实际用户:系统额定的用户。
补充一点:性能指标和性能需求来源于客户。
二、性能测试类型
【1】负载测试(Load Testing):负载测试关注的是不同负载水平的系统的性能指标。为了得到压力数确定下的性能指数。例如我们可以找到系统的最大用户数和最佳用户数。
【2】压力/强度测试(Stress Testing):压力测试则关注在超高负载(超过系统最大用户数)的情况下,系统是否还能稳定处理,如果不能稳定处理,那么系统还能坚持多久。其重点是关注系统是如何失效的,以便于制定系统正式上线后的风险控制措施。
区别:
负载测试
①关注找指标,获取最大用户数指标
②获取指标方式:根据经验得基础指标,在基础指标上增加,一直到系统性能开始下降。在下降的周边范围测试取值。
压力测试
①关注超高负载,目的在于“压死”系统;基于负载测试。
②获取指标方式:根据往期经验值,加到系统崩溃,记录下此时用户数(从最大用户数到崩溃用户数)、时间(系统能撑多久,风险控制措施[含蓄报错,多开服务器]在此时间内上线)、并发等数据。
【3】配置测试(Configuration Testing):在不同的软件、硬件以及网络环境配置下,通过运行一种或多种业务在一定的虚拟用户数量情况下,获得不同配置的性能指标,用于选择最佳的设备及参数配置。
【4】容量测试(Volume Testing):目的是通过测试预先分析出软件中某指标的极限值(如最大并发用户数、数据库记录数等),保证系统在其极限状态下没有出现问题并能正常运行。
区别:
配置测试----》通过对系统的不同配置,获得不同配置下系统的性能指标。
容量测试----》一般用于数据库。(比如:可以打开多少个QQ用户;播放器可以播放多大hz)必须做到极限值。
【5】基准测试(Benchmark Testing):在一定的软件、硬件及网络环境下,模拟一定数量虚拟用户运行或多种业务,将测试结果作为基线数据,在系统调优或者系统评测过程中,通过运行相同的业务场景并比较测试结果,确定调优是否达到效果或者为系统的选择提供决策数据。
【6】并发测试(Concurrency Testing):通过模拟多个用户并发访问同一应用、同一存储过程或数据记录以及其他并发操作,测试是否存在死锁、数据错误等故障。
区别:
基准测试----》在性能测试时就可能覆盖。
并发测试----》关注系统崩溃后会怎么样,是否能恢复,根据情况制定恢复策略。
三、性能指标
【1】工作负荷
就相当于虚拟用户数,对服务器产生多大压力,可以由多少用户同时对服务器发送请求来衡量。
【2】响应时间(Response Time)
从客户端将数据包发出,到接受到服务端发来的请求。[请求发出--响应完成的整个过程时间]
【3】吞吐量(Throughput ~ Ti&To)
吞吐量越大系统性能越好。[吞in;吐out]
【4】吞吐率
单位时间内的吞吐量
【5】Hits/Request
网页点击数/请求数
【6】Hits Per Second
每秒点击次数
四、性能测试实施
1.系统核心部件的性能测试可能处于前期。
2.一般在接口测试通过之后,系统稳定之后进行性能测试。
3.不是所有软件都需要做性能测试,一般出现并发的软件,这就需要结合需求规格说明书来判断。
4.性能测试在生产环境下对系统进行(独特的测试账号,一般不用虚假数据)。
5.测试分析阶段(性能调优)
(性能调优:工资高,经验要求高,需要懂编程语言3-4种、懂协议、懂数据库3-4种)
五、Jmeter简介及特点
【简介】
【特点】
六、Jmeter与LoadRunner
对比项 |
Jmeter |
LoadRunner |
安装 |
简单,下载解压即可 |
复杂,安装包大于1GB,安装时间大于1小时 |
录制/回放模式 |
支持 |
支持 |
测试协议 |
偏少,可自行扩展 |
较多,不可自行扩展 |
分布式大规模压力测试 |
支持(300个) |
支持(50000个) |
IP欺骗功能 |
不支持 |
支持 |
图形逻辑控制 |
支持(较弱) |
支持(很强) |
测试逻辑控制 |
支持 |
支持 |
监控服务资源(CPU、内存等) |
支持 |
支持 |
功能测试 |
支持 |
不支持 |
七、Jmeter工作原理
八、Jmeter环境搭建
操作:
1、点击右键”我的电脑”->”属性”->”高级”->”环境变量”
2、在系统变量内新增一个变量:JAVA_HOME 注:必须大写,格式要求!!!
变量值为jdk安装的路径:E:\Jmeter\JDK\jdk_8u191_Windows_x64(例子)
3、需要修改系统变量path,在变量最后添加jmeter的bin下路径:
E:\Jmeter\jmeter\apache-jmeter-5.0\bin(例子)
九、Jmeter基础使用操作
上图为初始打开界面:
注意编译界面(黑色页面不要关闭,关闭则jmeter会关掉,最小化即可)
【1】语言切换(个人自定义)
【2】点击文件-新建,可以新建一个”测试计划”。
如果是已有jmeter的测试文件,可以打开对应的文件(注:.jmx文件)
【3】测试计划下增加线程组,可以看个人增加多个线程组,线程组=用户。
【4】在线程组下新增HTTP请求。
①HTTP请求的相关接口数据可选用fiddler工具抓包或者Jmeter自带的HTTP代理服务器。
②关于HTPP请求的获取渠道多种多样,web端的F12工具也可以获取HTPP请求的相关参数及请求头、请求方式等信息。其余微信小程序端、APP端等等的可自行拓展研究。
③HTTP请求的填写
④HTTP请求的基础操作
⑤每个HTTP请求下增加HTTP信息头管理器。
为什么需要增加这个?--》在上文提到的一个HTTP请求的请求头部信息的数据就可以放在此处。
实用小技巧:
Jmeter是有层级结构的,也就是说上述的HTTP信息头管理器可以放在测试计划下,HTTP默认值也是同样的道理,用于存放默认的HTTP请求信息(比如所有的请求方式及请求协议、域名、端口就可以设置一个默认值放在测试计划下),后面的HTTP请求就可以不用写这么多信息。TAT
【5】在线程组添加察看结果树、聚合报告。
这样,一个基础的性能/接口测试框架就出来了。
【6】线程组设置---(重点)
【7】执行察看结构树,可以看到执行HTTP请求结果及响应数据等信息。
【8】执行查看聚合报告。
十、Jmeter更多使用操作(略,性能测试水很深,少年需谨慎,哈哈哈)
指引:
1、可以在请求中添加[断言--响应断言]来增加结果的可靠性,不一定绿色即是正常,需要配合断言来判断响应数据比对,才能更严谨。
2、还可以参数化来把HTTP请求里的参数值进行参数化,可外置CSV文件做完测试用例或者测试数据来进行并发压测的数据源,比如有些手机号码、用户ID、礼品ID这些可以做完参数化。
3、可以结合jmeter插件实现图形化的线程递增压测。
4、也可以拓展使用命令的形式来执行jmeter性能测试。
【作者的话:点滴积累,成长无限】