一、正确理解性能测试
1.1.性能测试:
属于软件测试
范畴,旨在测试处于特定环境和配置
下的系统在一定量
的负荷下,系统的正确性、响应时间、速度TPS、成功率、稳定性、可恢复性
等特性是否满足特定干系人需求的能力。系统性能关乎用户的体验。性能属于产品的非功能
质量特性
1.2.不符合需求的情况下:
结合系统的业务模型、环境配置、设计、实现细节
等识别出问题
,并最终确保该问题得到妥善解决
的过程。
1.3.常见误区:
1.性能测试=性能测试工具的使用(目标不明确、缺乏规划)
2.性能测试=功能测试+并发量(测试所有场景)
3.性能测试=GUI界面性能测试(App、Web、小程序多管齐下)
4.性能测试=性能脚本运行(缺乏数据收集、分析、调优过程)
5.实验室性能指标=实际环境下性能指标(忽略环境的差异)
6.采用功能测试的思维开展性能测试(性能测试通常采用实验的形式,迭代地进行以支持系统分析、设计和实施)
二、什么时候需要做性能测试
2.1.什么时候需要做?
1.业务系统对性能有明确的要求-性能验收
2.需要评估业务系统的性能效率-性能评估
3.验证在高并发下,系统业务是否有问题-功能
缺陷发现
4.验证在高并发下,技术架构是否问题-技术
缺陷发现/性能调优
5.验证在高并发下,系统是否可靠运行-稳定性
缺陷发现
6.验证在系统变更下,系统性能表现变化情况-基准对照
2.2.能力验证
概念:某系统能够在A条件下具备B能力
特点:1.要求在已确定的环境下运行
2.需要根据典型场景设计测试用例和方案
使用方法:1.负载测试
2.可靠性测试
3.压力测试
4.失效恢复性测试
2.3.验收性
概念:模拟生产上线业务环境,测试是否满足性能要求
特点:1.确定用户的环境
2.用户要求的性能指标
3.执行、分析结果
4.验收性质
5.一定要有客观性的结果
2.4.性能评估
概念:在某种可能发生的条件下,系统具有如何的性能能力
特点:1.探索性性质
2.考虑软件系统的扩展
使用方法:1.负载测试
2.配置测试
3.压力测试
注:验收性能测试(有指标,验收指标)==>系统性能评估测试(没有指标,获得指标)
2.5.高并发下的业务缺陷发现
目的:通过性能测试手段来发现系统中存在的缺陷,通常经历如下过程:
单用户=>低并发=>高并发-压力测试=>极限测试=>系统失效
2.6.性能分析与调优
调优方向:软件架构、硬件环境、代码、tomcat参数
使用方法:压力测试、负载测试、配置测试、失效恢复测试
2.7.稳定性(时间+负载)测试
目的:测试系统在一定负载下运行长时间后是否会发生问题。
三、性能测试中的测试技术概述
3.1.静态测试:
1.关注性能以及性能风险的需求评审
2.数据库架构、数据库设计、存储过程、语句执行效率的评审
3.系统和网络架构评审
4.系统关键部分的代码评审
3.2.动态测试:
1.单元测试:分析关键节点性能效率与资源使用情况
2.集成测试:关注跨组件模块接口调用的性能
3.系统测试:在不同负载条件下检查总体端到端表现
4.验收测试:建立用户、客户、操作员对系统性能的信心,以及在真实条件下对系统进行调优
四、性能测试中的负载生成方法
4.1.使用用户界面生成负载:
并且可以使用所需数量的软件客户端来执行所需的输入。
4.2.使用众测生成负载:
依靠于大量的测试人员,代表真正的用户
4.3.使用Api生成负载:
调用应用程序的Api来模拟用户与用户系统的交互,该方法对用户界面中的更改不敏感
4.4.使用捕获的通信协议生成负载(最常用):
通过工具或脚本模拟用户端发出的通信协议与系统进行交互。具有复用性高,并发量大,可靠性高等优势。
五、PDCA模型在性能测试中的应用
5.1.计划 Plan
要求在进行工作开展时先定制工作计划,这是确保工作顺利进行的前提
5.2.执行 Do
按照计划进行响应工作的开展
5.3.检查 Check
总结执行过程中的结果,记录下所存在的问题
5.4纠正 Action
要求对在实施过程中存在的问题进行科学的分析,并进行有效的改进,对成功的经验予以标准化,对没有解决的问题交给下一个PDCA去解决
六、性能测试相关书籍/资料推荐
《ISTQB认证测试工程师基础级大纲》
《性能之巅》