当前位置: 首页 > article >正文

聊一聊性能测试是如何开展的?

目录

以下是开展性能测试的一般步骤:

明确目标:

环境设置:

选择或开发测试工具:

设计测试场景:

创建测试数据:

执行测试:

分析结果:

优化和调整:

重复测试:

文档化:

下图各节点描述

(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……)、发现的问题等。

性能测试主要交付件有:

测试计划;

测试脚本;

测试程序;

测试报告或者阶段性测试报告。

如果性能测试执行过程比较长,换句话说性能测试过程中性能问题比较多,经过了多轮的性能调优,需要执行多次回归测试,那么在这个过程中需要提交阶段性测试报告。

阅读后若有收获,不吝关注,分享,在看!!


http://www.kler.cn/a/448935.html

相关文章:

  • 重温设计模式--中介者模式
  • 如何打造用户友好的维护页面:6个创意提升WordPress网站体验
  • linux socket编程之udp_dict_serve服务端--引入配置文件
  • 负载均衡的原理
  • leetcode hot100除自身以外的数组的乘积
  • Java 中 Socket 技术全面解析
  • Unittest框架及自动化测试实现流程
  • Blender 中投影仪的配置与使用
  • RT-DETR融合[ECCV2024]FADformer中的FFCM模块
  • 【1 day】OtterRoot:Netfilter 通用 Root
  • 第22天:信息收集-Web应用各语言框架安全组件联动系统数据特征人工分析识别项目
  • SecureCRT汉化版
  • 3D架构图软件 iCraft Editor 正式发布 @icraftplayer-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
  • 关于JavaScript中的this-笔记
  • AAAI-2024 | 大语言模型赋能导航决策!NavGPT:基于大模型显式推理的视觉语言导航
  • 项目底链华为链切换长安链经验总结
  • 简易CPU设计入门:本系统中的通用寄存器(一)
  • 刷题 两数之和
  • Aec-Library-Website 项目常见问题解决方案
  • laya游戏引擎中打包之后图片模糊
  • 【python高级】341-计算机网络基础 for Socket网络编程
  • VSCode:IDE显示设置 --自定义字体及主题颜色
  • 【JVM】如何有效调整JVM年轻代和老年代的大小
  • Java项目--仿RabbitMQ的消息队列--基于MQ的生产者消费者模型
  • elasticache备份
  • Debian 12.0 上为 Nginx 配置 SSL/TLS 证书