这是我参与[第五届青训营]伴学笔记创作活动的第15天 主要包括:
- 性能与性能测试
- 性能测试指标
- 性能测试流程
什么是性能?
性能包括资源和时间两个方面
- 时间:用户请求的响应时间
- 资源:系统运行过程中,系统资源的消耗情况
什么是性能测试?
使用自动化工具,模拟实际应用场景,对各项性能指标进行测评和评估的过程
性能测试的目的?
为了评估当前系统性能
寻找性能瓶颈进行针对性优化
为了满足未来需求
功能测试和性能测试的区别?
功能测试专注于业务需求,包括正向需求和逆向需求(比如用户输入正确/错误的账号密码登录成功/失败 )
性能测试专注于效率,包括时间和资源
性能测试的类别?
性能测试包括基准测试、负载测试、稳定性测试、 压力测试和并发测试
- 基准测试:狭义上:单个用户的请求所消耗的时间(这里是单个用户不是单次请求,所以时间是取平均值) 广义上:基准线,分析某个因素变化的时候,对系统性能产生正向还是负向的影响
- 负载测试:逐步增加负载,在满足性能指标的前提下,服务器能够承受的最大负载量
- 稳定性测试:服务器稳定运行(客户要求的负载数)的场景下进行长时间测试,能保证服务器满足业务需求
- 并发测试:在极端时间内,大量请求,来验证服务器对并发请求的处理能力
性能指标有几种?
性能测试的指标包括响应时间、吞吐量、点击数和错误率、资源使用率
- 响应时间:(用户从客户端发送请求,服务端接受后返回数据给用户,整个过程所需要的时间)
- 吞吐量:TPS(单位时间内事务能够支持的事务请求数量) QPS(单位时间内服务器能够支持查询请求数量)
- 资源使用率
- 点击数和错误率
性能测试流程
需求分析-》测试计划和方案(谁来测,测什么,怎么测)-》设计测试用例-》测试执行-》测试报告-》分析测试结果,进行性能优化
(1)需求分析
步骤1:明确被测系统(业务功能 技术架构)
步骤2:明确测试内容(业务角度:用户经常使用的 技术角度:逻辑复杂度高,数据量大)
步骤3:明确测试策略(负载 稳定性 并发)
步骤4:明确测试指标(测试结果怎么样才算好)
(2)测试计划和方案
谁来测:进度与分工(谁测什么 预计完成时间 实际完成时间)
测什么:测试背景 测试目的 测试范围
怎么测:测试策略
(3)设计测试用例:响应 (用户直接能感知的,非常重要) 服务器性能 数据库性能
(4)性能测试执行
建立测试环境
编写测试脚本(自己编写或者使用自动化测试工具)
配置性能监控指标
执行测试脚本
(5)性能分析与调优
对测试结果进行分析,找出测试bug.然后由由开发人员来做性能优化
(6)性能测试报告
测了什么
为什么要测试这个 (测试背景)
取得怎么样的结果(测试结果)
遇到了什么问题 原因是什么 怎么解决(过往工作回顾)
总结教训防止再犯 避免问题再犯就是杜绝产生这些问题的原因
工具
Jmeter
使用线程组请求
线程组里面三个参数
- 线程数:用户数
- Ramp-Up时间:多少秒内完成创建规定线程数
- 循环次数:每个用户发送的请求数量
使用同步定时器来模拟
测试计划-》线程组(100)-》HTTP请求-》同步定时器(两个参数 多少个请求同时发送 到达规定时间内如果没到指定数量也会发送)
使用常熟吞吐量定时器
一个用户以20QPS的频率访问百度页面,持续一段时间,统计运行情况
添加线程组-》添加HTTP请求-》添加常熟吞吐器-》添加查找结果树-》添加监听器-聚合报告(能够查阅吞吐量和异常)
使用定时器和直接使用线程组的区别在哪里?
线程组是在启动线程,然后启动了就会发送,定时器会让线程存起来达到一定数量再一起发送