性能测试简介
性能测试是通过自动化的测试工具模拟正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。验证软件系统是否可以到达用户提出的性能指标,发现软件系统存在的性能瓶颈,进而加以优化。性能测试的目的一般分为以下几种:
- 验证系统在给定的条件下处理性能是否到达设计目的与用户要求。
- 验证系统在给定的条件下的稳定性和可靠性。
- 测试系统在给定的条件下极限处理能力。
通过对系统各参数的调整,测试系统的最优性能配置。
性能测试基本流程
性能测试阶段分为性能测试需求分析阶段、性能测试设计阶段、性能测试执行阶段、性能测试分析阶段、性能测试调优阶段、性能测试总结阶段等六个阶段,每个阶段对应的任务如下图所示:
性能测试需求分析
性能需求分析是整个性能测试工作开展的基础,性能测试需求分析阶段需要测试人员与项目相关人员进行沟通,收集各种项目资料,对系统进行分析,建立性能测试数据模型,并将其转化为可衡量的具体性能指标,确认测试的目标。所以性能测试需求分析过程是繁杂的,需要测试人员有深厚的性能理论知识,除此之外还需要懂一些数学建模的知识来帮助我们建立性能测试模型。在性能测试需求分析阶段需要达成以下目标:
- 明确系统进行性能测试的必要性以及性能测试的目的。
- 明确系统的类型以及系统的架构、协议、资源等相关基础信息。
- 明确系统各业务类型,并对业务进行分类,如基本业务、关键业务等。
- 明确系统性能测试点,并给出相应的性能测试原因。
- 明确系统未来业务规划以及性能需求。
- 明确性能测试策略以及各测试点的性能指标。
系统信息调研
性能测试系统信息调研是指对被测系统从多个方面进行全面分析,以便于后续的业务分析、性能指标、性能测试点等工作开展。系统信息调研主要分为系统类型、业务信息、架构部署、技术信息、历史数据、数据规模等几个方面,如下图所示:
业务信息调研
业务信息调研指对被测试的业务进行分析,通过对业务的分析和了解,方便我们后续进行性能测试场景的确定以及性能测试指标的确定。需要分析的业务信息如下图所示(包括但不仅限于如下这些):
性能测试必要性分析
在实施性能测试之前,我们需要对被测系统做相应的评估,主要目的是明确是否需要做性能测试。如果确定需要做性能测试,需要进一步确立性能测试范围、性能测试指标、性能测试预期目标等。主要通过业务和系统这两个方面来评估,系统是否需要进行性能测试。
业务角度:
- 系统的类型和行业。
- 系统的用户规模及业务规模。
系统角度: - 系统架构:系统的架构采用的是其它类似系统成熟架构时,架构层面的性能测试可以选择不做,如果采用的是全新的架构则需要进行性能测试。
- 数据库要求:很多情况下,性能测试是大数据量的并发访问、修改数据库,而瓶颈在于连接数据库池的数量,而非数据库本身的负载、吞吐能力。这时,可以结合DBA的建议,来决定是否来做性能测试。
- 系统特殊要求:从实时性角度来分析,某些系统对响应时间要求比较高,比如证券系统,系统的快慢直接影响客户的收益,这种情况就有作并发测试的必要,在大并发量的场景下,查看这个功能的响应时间。
性能测试目的分析
在需求调研开始,测试人员需要明确系统性能测试目的,那么首先得清楚项目本身情况,针对不同的项目情况也会有不同的目的,根据项目情况一般可以分为以下六种情况:
完全新建系统:
完全新建系统意味着被测试系统没有业务数据作为参考,也没有业务人员能进行有效的进行预估业务量,就不能转换出业务指标值 TPS/QPS ,那么我们通常的测试目的如下:
- 测试应用系统最佳处理能力和极限处理能力,供需求方和开发进行评估。
- 测试应用系统是否稳定。
- 测试应用系统是否可靠。
- 测试应用系统瓶颈,并提供扩容意见等。
改造新系统:
改造新系统一般可以通过老系统业务量进行分析,再结合业务人员根据业务发展情况进行评估。通常的测试目的如下: - 测试应用系统是否满足当前业务量需求。
- 测试应用系统是否满足N年后业务量需求。
- 测试应用系统是否稳定。
- 测试应用系统是否可靠。
- 测试应用系统瓶颈,并提供扩容意见等。
版本升级系统:
版本升级系统有可能是针对缺陷修复升级,也有可能是针对业务需求变更升级。如之前未做过性能测试,按照改造新系统的目标进行相应性能测试。如已做过性能测试通常测试目的如下: - 测试应用系统最佳或极限处理能力与之前测试结果对比分析。
- 测试应用系统是否稳定。
线上运行系统:
线上运行系统要求进行非功能测试,一般是线上遇到非功能测试缺陷,很难复现。通常测试目的如下: - 模拟生产环境运行情况,找出非功能测试缺陷配合开发进行优化复测。
采购型系统:
要求进行非功能测试,一般是对多家厂商的产品进行测试,给出对比测试结果,通常测试目的如下: - 获取固定并发用户数下,各厂商的指标对比情况,如:TPS、响应时间、CPU使用率、错误率等。
软硬件选取:
进行非功能测试,主要是在保持其他情况一致的情况下,性能情况对比。获取不同软硬件处理能力,根据业务情况,选择性价比最高的软硬件。
性能测试范围分析
测试范围主要是在调研过程中,确认被测系统与周边系统关系以图形的方式展现,并以明显的标记标注被测系统和文字的方式说明被测 交易具体与哪些系统进行交互。如下图所示:
被测系统架构分析
架构分析的目的主要是需要确认被测试系统使用的开发语言/开发框架、通信机制/协议、中间件、数据库、是否采用应用集群、是否采用数据库集群、是否存在备份机制(热备/冷备)、负载均衡机制等。为后续设置具体的测试策略,环境部署,监控手段做铺垫。