性能测试
性能测试概述
性能的概念
- 什么是性能?
- 时间:系统处理用户请求的响应时间
- 资源:系统运行过程中,系统资源的消耗情况
- 什么是性能测试
- 使用自动化工具,模拟不同的场景,对软件各项性能指标进行测试和评估的过程
- 什么是性能测试的目的
- 评估当前系统能力
- 寻找性能瓶颈,优化性能
- 评估软件是否能够满足未来的需要
性能测试和功能测试
- 不同:
- 功能测试:验证系统的功能需求规格。焦点:功能(正向、逆向)
- 性能测试:验证系统的业务需求场景。焦点:时间、资源
- 一般项目中,先功能测试通过后,后进行性能测试
性能测试分类
基准测试
- 什么是基准测试
- 狭义上讲,就是单用户测试。(单用户循环多次得到的数据)
- 广义上讲,建立基准线,当系统的软硬件环境发生变化之后再进行一次基准测试以确定变化对性能的影响
- 基准测试数据的用途
- 基准测试不会单独存在
- 为多用户并发测试和综合场景测试等提供参考依据
- 为系统/环境配置、系统优化前后的性能提升/下降提供参考指标
负载测试
- 概念:
- 通过逐步增加系统负载,确定在满足系统的性能指标(如响应时间等)情况下,找出系统所能够承受的最大负载量的测试
- 作用:
- 系统最大负载量达到用户要求时,系统才能正式上线使用
![image]()
- 系统最大负载量达到用户要求时,系统才能正式上线使用
- 注意
- 通过负载测试,可以确定系统的最大负载量和极限负载量
- 系统对外宣称的最大负载量
- 负载测试的时间一般为1-2小时
稳定性测试
- 概念:
- 在服务器稳定运行(用户正常的业务负载下)的情况下进行长时间测试(1天-1周等),并保证最终服务器能满足线上业务需求。
- 作用
- 系统在用户要求的业务负载下运行达到规定的时间时,系统才能正式上线使用。
压力测试
- 概念:
- 在强负载下的测试,查看系统在峰值情况下是否功能隐患、系统是否具有良好的容错能力和可恢复能力
- 测试场景
- 极限负载情况下的破坏性压力测试
- 高负载下的长时间的稳定性压力测试
- 分类:
- 高负载下的长时间稳定性压力测试 (如:B-C区间内进行24/3*24小时长时间测试)
- 极限负载下的破坏性压力测试(如:C-D区间内进行测试)
并发测试
- 概念:
- 并发测试(绝对并发):是指在极短的时间内,发送多个请求,来验证服务器对并发的处理能力。
- 应用场景
- 特定活动场景,如:抢红包、秒杀、抢购等。
- 与负载测试对比:
- 负载测试:主要目的是测试高负载情况下,对系统资源的消耗,是否会耗尽的问题(双11活动)
- 并发测试:主要目的是测试极短时间内,并发请求时,系统资源争抢的问题(抢红包、秒杀)
性能测试的指标
响应时间
- 指从客户端发起请求开始,到客户端接收到结果的总时间
- 包括:服务器处理时间 + 网络传输时间
![image]()
并发用户数
- 某一时刻同时向服务器发送请求的用户数
![image]()
吞吐量
- 吞吐量(Throughput):指的是单位时间内处理的客户端请求数量,直接体现软件系统的性能承载能力
![image]()
- QPS
- QPS(Query Per Second)每秒查询数:即控制服务器每秒处理的指定请求的数量
![image]()
- QPS(Query Per Second)每秒查询数:即控制服务器每秒处理的指定请求的数量
- TPS
- TPS(Transactions Per Second)每秒事务数:即控制服务器每秒处理的事务请求的数量
![image]()
- TPS(Transactions Per Second)每秒事务数:即控制服务器每秒处理的事务请求的数量
点击数
- 所有的页面元素(如:图片、链接、框架等)的请求总数量
- 注意:点击数是请求数,不是页面上的一次点击
错误率
- 指系统在负载情况下,失败业务的概率
- 注意:
- 错误率是性能指标,是高负载下的失败业务的概率
- 随机bug是功能bug,先解决随机bug才能进行性能测试
资源利用率
- 概念:系统各种资源的使用情况(资源的使用量/总的资源可用量*100%)
- 常见资源指标
- CPU使用率:不高于75%-85%
- 内存(大小)使用率:不高于80%
- 磁盘IO(速率):不高于90%
- 网络(速率):不高于80%
性能测试的流程

需求分析

性能测试计划
- 测什么
- 项目背景
- 测试目的
- 测试范围
- 谁来测
- 进度与分工
- 交付清单
- 怎么测
- 测试策略
性能测试用例

性能测试执行

性能测试分析和调优
- 性能测试分析人员经过对结果的分析以后,如果不符合性能需求,则会提出性能bug,然后由开发人员进行后续的调优。
性能测试报告

性能测试工具
JMeter和Loadrunner工具对比

JMeter环境搭建
安装JDK:
•下载JDK – 安装JDK – 配置环境变量 – 验证
安装Jmeter:
•下载Jmeter – 安装Jmeter – 配置环境变量 – 启动验证
注意点:
•下载JDK时,注意电脑操作系统是32位/64位
•下载Jmeter时,注意与本机安装的JDK版本匹配
•安装Jmeter时,安装路径中不能有中文/空格
JMeter的功能概要
- JMeter文件目录结构
![image]()
- 基本配置
![image]()
JMeter元件及基本作用域
- 基本元件
![image]()
- 作用域的原则
![image]()
- 元件执行顺序
![image]()
- 案例:执行顺序
![image]()
![image]()
JMeter案例

JMeter三个重要组件
- 线程组
![image]()
![image]()
![image]()
![image]()
- HTTP请求
![image]()
![image]()
![image]()
![image]()
- 查看结果树
![image]()
JMeter参数化

- 用户定义的变量
![image]()
- 用户参数
![image]()
- CSV数据文件设置
![image]()
- 函数
![image]()
- 四种参数化方式的对比
![image]()




JMeter断言

- 响应断言
参数:
![image]()
![image]()
案例
![image]()
![image]()
- JSON断言
参数:
![image]()
![image]()
- 断言持续时间
![image]()
![image]()
![image]()
JMeter关联




- 正则表达式提取器
![image]()
案例:
![image]()
![image]()
方法1:
![image]()
方法2:
![image]()
![image]()



- xpath提取器
![image]()
![image]()
案例:获取传智播客首页的title,并作为参数传递
![image]()
- json提取器
![image]()
案例:提取天气接口中的城市信息,作为参数在访问百度首页时传递
![image]()
Jmeter属性


案例:

自动录制脚本
原理:









直连数据库的作用

JMeter直连数据库
- 步骤
![image]()
![image]()
![image]()
![image]()
![image]()
![image]()
- 案例:
![image]()
![image]()


逻辑控制器
- 如果(if)控制器
![image]()
![image]()
- 循环控制器
![image]()
![image]()
![image]()
- ForEach控制器
![image]()
![image]()
![image]()
![image]()
![image]()
定时器
- 同步定时器
![image]()
![image]()
![image]()
![image]()
- 常数吞吐量定时器
![image]()
- 固定定时器
![image]()
![image]()
![image]()
![image]()











































































浙公网安备 33010602011771号