聊一聊性能测试是如何开展的?
目录
以下是开展性能测试的一般步骤:
明确目标:
环境设置:
选择或开发测试工具:
设计测试场景:
创建测试数据:
执行测试:
分析结果:
优化和调整:
重复测试:
文档化:
下图各节点描述
(1)学习业务:
(2)分析需求:
(3)工作评估:
(4)设计模型:
(5)编写计划:
(6)开发脚本:
(7)准备测试环境:
(8)准备测试数据:
(9)执行测试:
(10)缺陷管理:
(11)性能分析:
(12)性能调优:
(13)评审(准出检查):
(14)编写测试报告,汇报工作:
企业为了节约人力资源,增加产量,大部分都是通过流水线,机器人来实现提高生产效率,进行性能测试工作也有个流程,基于以往的经验,下图是通过项目管理来裁剪性能测试流程。
性能测试是软件测试的一种,旨在评估系统在特定工作负载下的行为。它可以帮助确定系统的响应时间、吞吐量、资源利用率等性能指标,并识别瓶颈。
以下是开展性能测试的一般步骤:
明确目标:
确定测试的目的,例如是为了验证系统的可扩展性、稳定性还是为了找出最大用户承载量。
定义成功标准和关键性能指标(KPIs),如页面加载时间、交易处理时间、每秒事务数等。
环境设置:
尽可能复制生产环境的配置,包括硬件、网络、操作系统版本、数据库版本等。
设置监控工具来收集服务器端和客户端的数据,比如CPU使用率、内存占用、磁盘I/O、网络流量等。
选择或开发测试工具:
选择合适的性能测试工具,如JMeter、LoadRunner、Gatling、Locust等。
如果现有工具不能满足需求,则可能需要开发定制化的测试脚本或工具。
设计测试场景:
根据业务流程和预期用户行为设计测试用例。
规划不同类型的测试,如负载测试、压力测试、峰值测试、持久性测试等。
创建测试数据:
准备足够的测试数据以模拟真实的用户活动。
注意数据隐私和安全问题,确保不会使用真实用户的敏感信息。
执行测试:
按照计划执行测试,逐渐增加负载直到达到预定的目标或者系统出现性能瓶颈。
在测试过程中密切监控系统的行为和资源使用情况。
分析结果:
收集并分析性能测试的结果,找出任何异常模式或性能下降的原因。
使用图表和其他可视化手段帮助理解数据。
优化和调整:
根据测试结果对系统进行必要的调整和优化。
可能需要修改代码、调整配置参数、优化数据库查询等。
重复测试:
在做出更改后再次运行性能测试,以验证改进的效果。
性能测试通常是一个迭代过程,随着应用的发展而不断重复。
文档化:
记录所有发现的问题、采取的措施以及最终的性能状态。
为未来的性能测试提供参考。
通过上述步骤,可以有效地开展性能测试,确保应用程序能够在实际环境中提供良好的用户体验。
下图各节点描述
(1)学习业务:
通过查看文档,并咨询提出测试需求的人员,手工操作系统来了解系统功能。
(2)分析需求:
分析系统非功能需求,圈定性能测试的范围,了解系统性能指标。比如用户规模有多大,用户需要哪些业务功能,产生的业务量有多大,这些业务操作的时间分布如何,系统的部署结构怎样,部署资源有多大等。
测试需求获取的途径主要有需求文档、业务分析人员,包括但不限于产品经理、项目经理等(在敏捷开发过程下,最直接的途径是从项目的负责人或者产品经理处获取相关需求信息)。
(3)工作评估:
分解工作量,评估工作量,计划资源投入(需要多少个人,多少个工作日来完成性能测试工作)。
(4)设计模型:
圈定性能测试范围后,把业务模型映射成测试模型。什么是测试模型呢?比如一个支付系统需要与银行的系统进行交互(充值或者提现),由于银行不能够提供支持,我们会开发程序来代替银行系统功能(这就是挡板程序、Mock程序),保证此功能的性能测试能够开展,这个过程就是设计测试模型。
通俗点说就是把测试需求落实,业务可测,可大规模使用负载程序去模拟用户操作,具有可操作性、可验证性;并根据不同的测试目的组合成不同的测试场景。
(5)编写计划:
计划测试工作,在文档中明确列出测试范围、人力投入、持续时间、工作内容、风险评估、风险应对策略等。
(6)开发脚本:
录制或者编写性能测试脚本(现在很多被测系统都是无法录制脚本的,我们需要手工开发脚本),开发测试挡板程序和测试程序等。有时候如果没有第三方工具可用甚至需要开发测试程序或者工具。
(7)准备测试环境:
准备性能测试环境包括服务器与负载机两部分,服务器是被测系统的运行平台《包括硬件与软件),负载机是我们用来产生负载的机器,用来安装负载工具,执行测试脚本。
(8)准备测试数据:
根据数据模型来准备被测系统的主数据与业务数据(主数据是保证业务能够运行畅通的基础,比如菜单、用户等数据;业务数据是运行业务产生的数据,比如订单;订单出库需要库存数据,库存数据也是业务数据)。我们知道数据量变会引起性能的变化,在测试的时候往往要准备一些存量/历史业务数据,这些数据需要考虑数量与分布。
(9)执行测试:
执行测试是性能测试成败的关键,同样的脚本,不同执行人员得出的结果可能差异较大。这些差异主要体现在场景设计与测试执行上。
(10)缺陷管理:
对性能测试过程中发现的缺陷进行管理。比如使用、ALM等工具进行缺陷记录,跟踪缺陷状态,统计分析缺陷类别、原因;并及时反馈给开发团队,以此为鉴,避免或者少犯同类错误。
(11)性能分析:
性能分析指对性能测试过程中暴露出来的问题进行分析,找出原因。比如通过堆分析找出内存溢出问题。
(12)性能调优:
性能调优指性能测试工程师与开发工程师一起来解决性能问题。性能测试工程师监控到异常指标,分析定位到程序,开发工程师对程序进行优化。
(13)评审(准出检查):
对性能报告中的内容进行评审,确认问题、评估上线风险。有些系统虽然测试结果不理想,但基于成本及时间的考虑也会在评审会议中通过从而上线。
(14)编写测试报告,汇报工作:
测试报告是测试工作的重要交付件,对测试结果进行记录总结,主要包括常见的性能指标说明(TPS、RT、CPUUsing……)、发现的问题等。
性能测试主要交付件有:
测试计划;
测试脚本;
测试程序;
测试报告或者阶段性测试报告。
如果性能测试执行过程比较长,换句话说性能测试过程中性能问题比较多,经过了多轮的性能调优,需要执行多次回归测试,那么在这个过程中需要提交阶段性测试报告。
阅读后若有收获,不吝关注,分享,在看!!