这里写目录标题
- 一、性能测试整体流程介绍
- 二、性能测试时机(什么时候去做?)
- 三、测试背景(务虚:让不懂的人尽可能看懂)
- 四、术语约定
- 五、测试范围
- 1、调研分析:
- 2、测试范围:
- 六、性能需求分析
- 1、业务模型预估(技术负责人认可):
- 2、性能目标
- a、业务指标
- 3、资源占用指标
- 七、性能测试用例
- 1、基准测试:
- a、用例设计:
- 2、负载测试(不断的改变线程数量):
- 3、压力测试(不改变线程的数量)
- 4、性能测试用例结构:
- 八、测试策略
- 1、执行策略:
- 2、指标监控测试:
- 3、数据准备:
- 九、完成标准:
- 十、风险分析
一、性能测试整体流程介绍
确认性能需求——》
编写测试方案——》
配置测试环境——》
执行性能测试——》
分析测试结果——》
性能优化——》
回归分析——》
最终性能报告
二、性能测试时机(什么时候去做?)
把系统比作一匹马 载人载货(系统:服务用户)
三、测试背景(务虚:让不懂的人尽可能看懂)
华测教育读书屋 是一款提供小说阅读服务的系统。小说内容覆盖了言情小说、穿越架空小说等各种类型。系统功能包含:小说阅读、搜索、小说评论、书架管理、作者管理、小说编辑、收费系统、作者邀请机制等功能特性
市场上类似的产品有: 7猫小说、番茄小说等。
由于面向社会进行推广,看小说的用户日益增加,网站具备一定的访问量,需要进行性能测试来评估 读书屋性能、分析性能变化趋势、分析系统瓶颈风险、帮助规划系统容量、为硬件采购提供建议
四、术语约定
很多产品经理不懂性能,互联网公司可能懂点技术,所以要明确的技术文档
并发量: 模拟业务操作对服务器造成压力的过程,比如模拟100个虚拟的用户同时进行操作
写的越专业,性能测试做的越好
负载测试(Load Testing):在一定软硬件环境下,通过不断加大负载(不同虚拟用户数)来确定在满足性能指标的情况下能够承受的最大用户数。简单来说,可以帮助我们对系统进行定容定量,找到系统性能的拐点,给予生产环境规划建议。这里的性能指标包括TPS(每秒处理的事务数)、RT(事务平均响应时间)
一辆车\一匹马:分别施加100kg、500kg、800kg、1000kg(当施加1000kg货物时:这辆车开不动了,也表示出现拐点了)、1200kg;
压力测试(强度测试):通过高负载的手段来使服务器资源(强调服务器资源、硬件资源)处于极限状态,测试系统在极限状态下长时间运行是否稳定
负载测试和压力测试的最大区别是:
负载测试尽可能的让系统出现问题,以便让我发现问题
压力测试尽可能的让系统在长时间、满负载,运行的时候是否稳定
响应时间 (RT)
错误率:
TPS
HTP
QPS
五、测试范围
1、调研分析:
a、分析用户使用行为;
b、产品经理的帮助;
c、找架构师:提供数据支撑——》数据埋点;
d、性能测试角度:思想,测试左移;
e、强资源占用(上传、下载);
2、测试范围:
1、打开首页点击推荐的小说,看小说介绍
2、阅读小说章节
3、用户登录后,查看书架
4、用户头像修改
测试左移:
用户——》产品——》开发——》测试——》运维
占在用户、产品、开发的角度看问题
六、性能需求分析
1、业务模型预估(技术负责人认可):
日均UV(用户访问内容,独立访客)5000
日均PV:这个页面的总浏览量,50000
5000个人浏览了50000次
2、性能目标
a、业务指标
访问首页:并发量为2000时,响应时间不应该超过3s,同时失败率不能高于0.05%
操作登录时:并发量为400时,响应时间不应该超过3s,同时失败率不能高于0.05%
进入小说阅读页:并发量为1500时,响应时间不应该超过1s,同时失败率不能高于0.05%
响应时间:竞品以及产品设计
相对并发量要求:
1、生产环境的数据统计:这个比较准
2、参考集中访问,推到 并发量——》2/8原则
例如:中午访问了1个小时,晚上访问了2个小时,这3个小时,浏览量占用1天的80%,50000*80%=40000
40000/3/60/60=4:每秒4个请求。
性能测试要 针对 后续会增长的目标量;例如由于面向社会进行推广,看小说的用户日益增加,网站具备一定的访问量
业务量:首页:
日均UV(用户访问内容,独立访客)5000
日均PV:这个页面的总浏览量,50000
5000个人浏览了50000次
可靠性\错误率
3、资源占用指标
七、性能测试用例
1、基准测试:
基准测试能够提供性能指标衡量的一个理论参考数据
举例:并发为1,每秒吞吐量100/s,占用网络带宽为1M
假设生产环境服务器100M带宽,请问业务吞吐量是多少?
100*100=10000
a、用例设计:
用例1
模拟虚拟用户数为1,持续时间为30s,访问首页会调用多个接口
首页的访问- 接口测试内容——》一般的系统静态资源(图片、css、js)和动态资源是分开的;很多时候静态资源的测试和动态资源的测试也是分开的
检查响应时间是否符合要求…检查CPU占用率
用例2:
虚拟用户数1,取100篇小说,循环1000次,对小说介绍页的访问
用例3:
虚拟用户数1,持续时间30s,访问首页——》小说介绍页流程
2、负载测试(不断的改变线程数量):
1、线程数=绝对并发
发起请求之后,会继续请求
一个请求500ms完成,又发起一个请求500ms完成
此时:1个线程——》2个并发/s——》相对并发
一个线程在单位时间内(秒)发起的总共请求数量 = 相对并发
2、用例10:
模拟对首页的访问,总线程数:2000,初始线程数:10,每隔5分钟增加50个线程,达到2000个线程持续5分钟,然后慢慢停止。
3、压力测试(不改变线程的数量)
通过负载测试找到瓶颈
才能知道系统承载极限——》模拟并发极限数量 进行长时间的测试
4、性能测试用例结构:
1、流程节点——》访问的接口/资源
2、结合测试需要设定并发量和持续时间
3、性能测试预期/判定标准——》很多时候性能测试有统一的判定标准
4、最大的疑惑:以接口作为单独的性能用例设计,还是以流程为用例设计用例?
1、不可拆分的场景,多接口一起测试
2、最终仍然会针对
八、测试策略
1、执行策略:
基准测试开始时间,结束时间
负载测试开始时间,结束时间
压力测试开始时间,结束时间
2、指标监控测试:
业务指标——》通过性能测试工具自带的统计进行查看
Jmeter:汇总报告,其他插件
资源监控:linux命令、数据库系统数据,可视化集群监控…
3、数据准备:
要生成哪些数据、如何生成数据
九、完成标准:
指标达到上面要求的性能目标
十、风险分析
例如: 本次测试由于没有采用与生产环境相同的硬件配置可能和实际运行中的性能有一定差距
例如: 本次测试数据为人工生成,可能和实际的数据分布有一定的差异。