一. 性能测试
1.0 为什么要进行性能测试?
- 评估当前系统的能力
- 寻找性能瓶颈,优化系统性能
- 评估软件是否满足未来的需要
- 招聘需要
1.1 什么是性能
时间:系统处理用户请求的响应时间
资源:系统运行过程中,系统资源的消耗情况
1.2. 性能测试是什么
1.2.1 广义定义
基于协议模拟用户发出请求,对服务器形成一定负载,来测试服务器的性能指标是否满足要求性能指标关注点:时间性能、空间性能性能测试与页面无关
1.2.1 狭义定义
指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
1.3 功能和性能测试
- 不同
功能测试验证系统的功能需求规格,聚焦功能。
性能测试验证系统的业务性需求场景,聚焦时间和资源。 - 关系
一般项目中,先功能测试通过后,后进行性能测试。
1.4 性能测试的分类
1.4.1 基准测试
狭义:单用户测试
广义:建立基准线,当系统软硬件环境发生变化之后再进行一次基准测试以确定变化对性能的影响。
1.4.2 负载测试
- 概念
通过逐步增加系统负载,确定在满足性能指标的情况下,找出系统所能承受最大负载量的测试。 - 作用
系统最大负载量达到用户要求时,系统才能正式上线使用。 - 案例
电梯行业规范:电梯从1楼到5楼的运行时间不超过24s1人 20s 7人 20s 13人 20s 达到最大负载 16人 25s 19人 28s 21人 断绳子
- 注意
通过负载测试,可以确定系统的最大负载量和极限负载量
系统对外宣称的最大负载量
负载测试的时间一般为1-2小时
1.4.3 稳定性测试
- 概念:在服务器稳定运行(用户正常业务负载下)的情况进行长时间测试(1天-一周等),并最终保证服务器能满足线上业务需求。
- 系统在用户需求的业务负载下运行达到规定的时间时,系统才能正式上线使用。
1.4.4 压力测试
- 概念:在强负载下的测试,查看系统在峰值下是否功能隐患、系统是否具有良好的容错能力和可恢复的能力。
- 测试场景
高负载下的长时间稳定性压力测试 (如:B-C区间内进行24/3*24小时长时间测试)
极限负载下的破坏性压力测试(如:C-D区间内进行测试)
1.4.5 并发测试
- 概念:在极短时间内,发送多个请求,来验证服务器对并发的处理能力。
- 应用场景
特定的活动场景:抢红包、秒杀、抢购等。 - 与负载测试对比:
负载测试:主要目的是测试高负载情况下,对系统资源的消耗,是否会耗尽的问题(双11活动)
并发测试:主要目的是测试极短时间内,并发请求时,系统资源争抢的问题(抢红包、秒杀)
1.5 性能测试的指标
1.5.1 响应时间
- 指从客户端发起请求开始,到客户端接收到结果的总时间
- 包括:服务器处理时间 + 网络传输时间
1.5.2 并发用户数
某一时刻同时向服务器发送请求的用户数
1.5.3 吞吐量(Throughout)
1.概念:单位时间内处理客户端的请求数量,直接体现软件系统能能承载能力。
- 吞吐量单位分类
1.5.4 QPS
QPS(Query Per Second)每秒查询数,即控制服务器每秒处理的指定请求的数量。
1.5.5 TPS
TPS(Transaction Per Second)每秒事务数,即控制服务器每秒处理事务请求的数量。
如:支付请求事务=查询用户余额请求+校验支付安全请求+发送支付请求
每秒处理查询用户余额15请求,每秒处理校验支付安全15个请求,每秒处理发送支付15个请求
支付tsp为15
1.5.6 点击数
所有的页面元素(如:图片、链接、框架等)的请求总数量
- 注意:
- 点击数是请求数,不是页面上的一次点击
1.5.7 错误率
- 指系统在负载情况下,失败业务的概率
- 注意:
- 错误率是性能指标,是高负载下的失败业务的概率
-随机bug是功能bug,先解决随机bug才能进行性能测试
1.5.8 资源利用率
- 概念:系统各种资源的使用情况,率=资源使用量/总资源可用量x100%
- 常见资源指标
CPU使用率:不高于75%-85%
内存大小使用率:不高于80%
磁盘IO(速率):不高于90%
网路(速率):不高于80%
1.6 性能测试工具
二. Jmeter简介
2.1. 我们为什么使用Jmeter
开源,免费,基于Java编写,可集成到其他系统可拓展各个功能插件
支持接口测试,压力(负载和压力)测试等多种功能,支持录制回放,
入门简单相较于自己编写框架活其他开源工具,有较为完善的UI界面,便于接口调试
多平台支持,可在Linux,Windows,Mac上运行,支持多协议
2.2. Jmeter的作用
- 接口测试 面试说postman,因为方便好用。
- 性能测试 jmeter,也可以用postman(runner),但是没有性能指标
- 数据库测试
2.3. Jmeter怎么用
Windows下Jmeter下载安装,登录 http://jmeter.apache.org/download_jmeter.cgi ,根据自己平台,下载对应文件
2.4. 安装JAVA环境
安装JDK,配置环境变量(具体步骤不做介绍)
将下载Jmeter文件解压,打开/bin/jmeter.bat
2.5. Jmeter的目录结构
/bin 目录常用文件介绍:
examples:目录下包含Jmeter使用实例
ApacheJMeter.jar:JMeter源码包
jmeter.bat:windows下启动文件
jmeter.sh:Linux下启动文件
jmeter.log:Jmeter运行日志文件
jmeter.properties:Jmeter配置文件
jme