文章目录
- 一、概念
- 1.性能
- 2.性能测试
- 3.目的
- 4.与功能测试的区别
- 二、策略
- 1.基准测试
- 2.负载测试
- 3.稳定性测试
- 4.压力测试
- 5.并发测试
- 三、指标
- 1.响应时间
- 2.并发数
- 3.吞吐量
- 4.点击率
- 5.错误率
- 6.资源使用率
- 四、流程
- 1.测试流程
- 五、JMeter软件
- 1.安装
- 2.常用文件目录
- 3.界面汉化
- 4.修改背景颜色
- 六、JMeter使用
- 1.元件
- 2.元件的作用域和执行顺序
- 3.线程组
- 4.HTTP请求
- 5.查看结果树
- 6.参数化
- 7.断言
- 8.关联
- 9.属性
- 10.录制脚本
- 11.直连数据库
- 12.逻辑控制器
- 13.定时器
- 注
一、概念
1.性能
(1)时间: 系统处理用户请求响应的时间。
(2)资源: 系统运行过程中,系统资源(CPU,内存,磁盘,网络)消耗情况。
2.性能测试
使用自动化工具,模拟不同场景,对软件各项性能指标进行测试和评估的过程。
3.目的
(1)评估当前系统能力。
(2)寻找性能瓶颈,优化性能。
(3)评估软件是否满足未来需要。
4.与功能测试的区别
(1)功能测试: 功能需求,主要在于正向功能和逆向功能(eg:登录,正向为登录成功,逆向为登录失败)。
(2)性能测试: 业务需求,主要在于时间和资源。
二、策略
1.基准测试
(1)定义:
单用户测试,单用户循环多次得到的数据。
建立基准线,当系统环境发生变化之后再进行异常基准测试以确定变化对性能的影响,不会单独存在。
(2)作用:
为多用户并发测试和综合场景测试等提供参考依据,为系统/环境配置、新能提升/下降提供参考指标。
2.负载测试
(1)定义: 通过逐步增加系统负载,确定在满足系统的性能指标情况下,找出系统所能承受的最大负载量的测试。
(2)作用: 系统最大负载量达到用户要求时,才能正式上线使用。
3.稳定性测试
(1)定义: 在服务器稳定运行的情况下进行长时间测试,并保证服务器能满足线上业务需求。
(2)作用: 系统在用户要求的业务负载下运行达到规定时,才能正式上线使用。
4.压力测试
(1)定义: 在强负载下的测试,查看系统在峰值情况下是否功能隐患,系统是否具有良好的容错能力和可恢复能力。
(2)分类:
1、极限负载情况下导致系统崩溃的破坏性压力测试。
2、高负载下的长时间的稳定性压力测试。
5.并发测试
(1)定义: 是指在极短是时间内,发送多个请求,来验证服务器对并发的处理能力。
(2)应用场景: 特定活动场景。(抢红包、秒杀、抢购等)
三、指标
1.响应时间
(1)定义: 指用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的结果,整个过程所耗费的时间。
(2)注意: 通过HTTP接口请求消息来测试,不包括发消息时前端页面的处理时间和收到消息后前端页面的渲染显示时间。
2.并发数
(1)定义: 某一时刻同时向服务器发送请求的用户数。
3.吞吐量
(1)定义: 单位时间内处理的客户端请求数量,直接体现软件系统的性能承载能力。
(2)不同角度单位:
1.业务:“业务数/小时”,“页面访问量/天”。
2.网络:“字节数/小时”,“字节数/天”。
3.技术:
3.1每秒事务数:TPS:控制服务器每秒处理的事务请求数量。
3.2每秒查询数:QPS:控制服务器每秒处理的指定请求数量。
(3)QPS和TPS: 一个事务可以对应一个或者多个请求。
一个事务可以对应一个请求时:TPS=QPS
一个事务可以对应n个请求时: QPS=n * TPS
4.点击率
所有页面元素(eg:图片、链接、框架)的请求总数量。
5.错误率
系统在负载情况下,失败业务的概率。
6.资源使用率
(1)定义: 系统各种资源的使用情况,资源的使用量/总的资源可用量x100%。
(2)常见指标:
1.CPU使用率:不高于75%-85%
2.内存使用率:不高于80%
3.磁盘IO(速率):不高于90%
4.网络(速率):不高于80%
四、流程
1.测试流程
(1)需求分析:
(2)计划及方案:
1.测什么:背景、目的、范围。
2.谁来测:进度与分工、交付清单。
3.怎么测:测试策略。
(3)用例设计:
(4)执行:
(5)分析和调优:
性能测试分析人员经过对结果的分析以后,如果不符合性能需求,则会提出性能bug,然后由开发人员进行后续调优。
(6)报告总结:
1.测试工作的经过回顾
2.缺陷分析与调优
3.风险评估
4.性能测试结果
5.测试工作总结与改进
五、JMeter软件
开源,小巧,有丰富的学习资料和扩展组件。
不支持IP欺骗,分析和报表能力相对于LR欠缺精度。
1.安装
2.常用文件目录
printable_docs目录:用户帮助手册。
lib目录:存放JMeter依赖的jar包和用户扩展所依赖的jar包。
3.界面汉化
4.修改背景颜色
六、JMeter使用
1.元件
多个类似的功能组件的容器(类似于类)。
组件: 实现独立的某个功能(类似于方法)。
2.元件的作用域和执行顺序
(1)作用域:
是靠测试计划的树形结构中元件的父子关系来确定的。
(2)执行顺序:
在同一个作用域不同元件:配置元件-前置处理器-定时器-取样器-后置处理器-断言-监听器。
在同一个作用域相同元件:从上到下。
(3)案例:
http端口号:80(可不写)
https端口号:443
3.线程组
控制Jmeter用于执行测试的一组用户,可以看成一个虚拟用户组,线程组中每一个线程都可以理解为一个虚拟用户。
(1)setUp线程组: 可用于执行预测试操作,所有脚本之前执行。
(2)tearDown线程组: 可用于执行测试后工作,所有脚本之后执行。
(3)普通线程组: 执行测试用例,可以有1个或者多个(并行/串行)。
4.HTTP请求
5.查看结果树
(1)查看HTTP消息请求和响应内容
1.查看请求参数:请求-Request Body (请求行+请求体)
2.查看响应结果:响应数据-Response Body(响应体)
(2)解决中文乱码:
6.参数化
**参数化测试:**把测试数据组织起来,用不同的测试数据调用相同的测试方法。
本质是实现测试数据与测试方法的分离。
(1)实现方式:
1.用户定义的变量——全局变量
2.用户参数——为每个用户分配不同的参数值
3.CSV数据文件设置——文件方式参数化
4.函数——随机数据
5.数据库
(2)用户定义的变量:
(3)用户参数:
(4)CSV数据文件设置:
(5)函数:
适用情况: 自动生成不重复的数据,让每个用户每次循环都能取到不同的数据,且不需要提前定义。
(6)如何选择:
函数:
作用:保证不同用户及多次循环时,都可以取到不同的值,不需要提前设置。
局限性:输入数据有特定的业务要求时无法使用(eg:登录时的用户名和密码)。
7.断言
让程序自动判断预期结果和实际结果是否一致。
(1)响应断言:
作用:对HTTP请求的任意格数的响应结果进行断言。
位置:测试计划-线程组-HTTP请求-(右键添加)断言-响应断言
(2)JSON断言:
(3)断言持续时间:
(4)如何选择:
8.关联
(1)正则表达式提取器:
(2)XPath提取器:
(3)JSON提取器:
9.属性
10.录制脚本
在没有接口文档的旧项目中,通过录制http接口请求的方式,来快速编写接口测试脚本。
11.直连数据库
(1)使用场景: 用作请求的参数化、作用结果的断言、清理垃圾数据、准备测试数据。
12.逻辑控制器
(1)If控制器
(2)循环控制器:
(3)ForEach控制器
13.定时器
(1)同步定时器
(2)常数吞吐量定时器
注
该为b站黑马程序员性能测试 学习笔记。