一. 什么是(软件)性能测试
性能:事务、物品的某些特性的评价值
软件性能测试:是用一定的技术,找出或验证某个性能指标值的测试,如:你跑100米,用时多少?
举例:
“看看你有几斤几两”:
逐步增加系统负载,测试系统性能变化,并最终确定系统所能承受的最大负载量
“鸭梨好大哦!”:
在较大的性能压力下,持续运行一个比较长的时间,看系统服务及各项资源利用情况
关键词:较大压力 + 较长时间
一般测试中,找出最大的负载量,比如100,然后选择一个比100稍微小点的做7 x 24小时压力测试。一般开始前,先做一个较低的比如10或者20的压力测试,测试通过说明系统的可靠性有一定的保障,再在性能瓶颈90的时候做压力测试
可靠性测试:在给定的一定的业务压力下,持续运行一段时间,查看系统是否稳定
关键词:是否“稳定”,一定业务压力
容量测试:在一定的软、硬件条件下,在数据库不同数量级数据量的情况下,对系统中读写比较多的业务进行测试,从而获得不同数据量级下的性能指标值
关键词:不同数据量级
举例:
可靠性测试:一定的压力并不要求较高,比较低的压力测试,比如最大负载量为100的时候,选择10或者20
容量测试:比如查询1个用户数据和10000个用户数据,数据库查询的响应时间
二. 性能测试的目的
目的:寻找或证明系统的某些关键性性能指标
1. 全新系统,从未做性能测试,寻找关键性的性能指标值
2. 基于已有的性能基础上, 再次做性能测试,验证预定的性能指标值
三. 性能测试的前提
1. 性能测试的必要性研究——关键项评估
1) 主管部门,监管部门审查
2) 涉及生命财产安全
3) 大型新系统
4) 核心系统
5) 架构调整
6) 业务剧增
7) 重大缺陷修复
2. 可测性——可量化为性能指标值
四. 性能测试工具
1. 开源:Jmeter
Java开发、跨平台、版本更新快(建议v3.2以后+jdk 1.8),学习资料比较多非常活跃
2. 商业 :loadrunner
性能测试标杆软件、C语言、国内破解(< lr11),lr12免费试用50限制用户数,更新极慢
3. 自研:python + locust
python语言自行开发
五. 性能测试主要指标
1. 软件应该关注哪些性能?
1) 企业应该关注哪些性能?
关注点 | 性能 | 性能指标 |
服务器利用情况 | 资源利用率 | |
能支持的最大用户 | 系统容量 | |
能支持的最大并发用户 | 并发用户数 | |
是不是可以更换硬件提供性能 | 可扩展 | |
能不能持续运行长时间不宕机 | 稳定性 |
2) 开发人员关注哪些性能?
关注点 | 性能 | 性能指标 |
架构设计是否合理 | 系统架构 | |
数据库设计 | 数据库 | |
代码逻辑 | 代码 | |
线程、异步、同步、队列 | 实现技术 | |
资源配置 | 稳定性 |
2. 并发
指同一个时间点执行相同的操作(秒杀)
3. 并发用户数(重要指标)
同一时间点,执行相同请求的用户数
系统用户数、在线用户数、线程数
4. 事务(Transaction)
指一个客户机向服务器发送请求然后服务器做出反应的过程
注意:这里的线程数指的是虚拟用户数,与开发的线程不太一样
jmeter里通常理解为:一个接口从发起请求到响应称为一个事务,LR中多个接口的请求到响应可以看做一个事务,多个接口写在一个事务包里
5. 响应时间(RT)(重要指标)
从发起请求到收到响应的时间
发起请求网络传输时间 + 服务器处理时间 + 返回响应网络传输时间
6. TPS\QPS(最主要指标)
TPS(Transactions per Second):服务器每秒处理事务数,衡量服务器处理能力的最主要指标
QPS(Queries per Second):每秒查询数
差异:一个Transactions 可能有多个Queries,比如访问网页
注意:TPS高,说明代码复杂度低,CPU好,内存消耗低,数据库运算能力快
一个事务可能包括多个查询,因此可能QPS大一些,TPS小一些,比如百度一下,有可能调用多个查询接口
RT:想要真正的服务器处理时间,因此实际做测试时尽量不要使用堡垒机、跳转机
7. 吞吐量(Throughput)
单位时间内处理的请求数量(事务/s)
如:港口吞吐量,1年5千万标准集装箱
8. 吞吐率
单位时间内通过的数据的平均速率(kb/s)
如:港口日吞吐率,年吞吐量/365天
9. 点击数(Hit per Second)
每秒点击数
10. 资源利用率
指系统资源的使用程度,比如服务器(网络以及数据库)的CPU利用率,内存利用率,磁盘利用率,网络带宽利用率等
CPU利用率
内存利用率
磁盘I/O
一般都不要超过80%
六. 性能测试步骤
1. 性能测试准备
1) 需求分析,熟悉业务
2) 明确性能测试目标(指标值)
3) 了解软件功能,架构
4) 制定测试模型(编辑测试用例)
5) 指定测试计划,做好工作量评估
2. 搭建性能测试环境
1) 工具选型与准备
2) 被测系统环境搭建(服务器、服务版本更新、数据库数据准备)
3) 网络配置
3. 性能测试脚本开发
1) 选取协议
2) 制作脚本
3) 调试脚本
4) 验证脚本
4. 性能测试脚本执行
1) 试用行
2) 场景执行
5. 结果分析与调优
1) 分析依据:结果图表
2) 分析思路:服务器硬件瓶颈 > 网络瓶颈 > 服务器os瓶颈(参数配置、数据库、web服务器) > 应用瓶颈(sql语句、数据库设计、业务逻辑、算法)
3) 调优
4) 修改脚本或场景
注意:做性能测试的必要条件:性能测试服务器的配置要尽可能的和生产服务器配置相近
6. 测试报告与结果追踪
性能测试报告
性能测试问题跟踪
七. 开展性能测试必备条件
1. 网络要求:内网(zoom域) 外网 独立分开 千万不要用跨内网外网
2. 独立环境 功能测试不能和性能测试共用环境
原文地址:https://www.cnblogs.com/my_captain/p/11756343.html