负载测试 load testing
用于评估系统与软件在预期变化负载下的性能表现,负载通常位于低谷、典型和高峰使用的预期条件之间。
注:性能效率测试的一种。
压力测试stress testing
用干评估系统与软件在高干预期或指定容量负载需求,或低于Zui少需求资源的条件下的性能表现。
注:性能效率测试的一种。
峰值测试spike testing
用于评估系统与软件在短时间内负载大幅度超出通常负载时的性能表现。注:性能效率测试的一种。
扩展性测试scalability testing
用干评估系统与软件适应外部性能需求变化(如用户负载支持、事务数量、数据量等)的性能表现。
注:性能效率测试的一种。
容积测试volume testing
用于评估系统与软件在吞吐量、存储容量或两者兼考虑的情况下处理指定数据量(通常达到Zui大指定容量或接近Zui大值)的能力。
注:性能效率测试的一种。
疲劳强度测试endurance testing
用于评估系统与软件在指定的时间段内,能够持续维持所需的负载的能力。
注:性能效率测试的一种。
一、性能测试过程
性能测试过程包括性能测试需求分析、性能测试设计和实现、性能测试执行和性能测试四个过程。
1.性能测试需求分析
性能测试需求分析包括下列活动:
a)确定性能测试的准入准则,在系统构架确定后或冒烟测试通过后执行,测试介入越早越好。
b)确定待测系统与软件的性能需求。性能需求可来自合同、需求规格说明等文档中所明示的需求,或者由业务、数据、预期的用户和系统行为约定的隐含需求。性能需求宜依据性能需求模型来确定。
c)识别待测系统与软件相关的其他外部应用。
d)确定性能测试完成或终止准则。
2.性能测试设计和实现
性能测试设计和实现过程用于导出测试用例和测试规程,相关的活动包括:
a) 确定所需监测的指标、业务场景、被测业务的用户角色分布。
b) 确定采用的性能测试类刑。
c)依据历史运行情况或实际运行环境设计测试数据生成和读取规则。测试数据包括为待测系统
与软件准备的基础数据,以及运行所需要的数据。数据量应与测试环境的配置相适应或与未来扩展数据量一致,在实际环境中数据量应与实际规模相一致;在模拟环境中宜等比对数据规模进行调整。
d)确定负载生成方式,可采用工具或人工的方式加压。应根据制定的测试方案布置各测试场景,包括并发用户数执行时长以及需要监视的性能指标等。
e)针对所需测试的业务逻辑设计测试用例。
f)依据需求或实际运行环境确定测试用例顺序。
g)开发测试脚本。通过脚本对待测系统与软件的用户业务行为进行模拟,脚本的开发可采用录制、编写或定制开发等方式。完成测试脚本开发后,应进行功能验证,确保测试脚本已完成用户业务行为。
h) 确定暂停和恢复准则:
1) 暂停准则可包括:
--系统不可用;
--由于不确定原因导致服务器宕机或必要服务停止运行;
--应用程序在打开状态下具有阻塞程序/严重缺陷;
--所需的依赖项不可用。
2)恢复准则可包括:
--系统和/或服务器可用,启动并运行;
--解决阻塞和/或关键问题;
--应用程序功能已恢复;
---测试数据处理周期未完成时的恢复程度。
3.性能测试执行
性能测试执行过程包括下列活动:
a)执行前就绪检查,对性能测试所需环境和资源进行评估。
b)由人工或利用测试工具执行测试脚本,并监控执行过程中的性能指标,记录测试结果。
c)能测试通常需考察待测系统与软件在一段时间范围内的综合表现,按需取平均值、Zui大值或Zui小值作为测试结果。
d)若性能测试异常终止或不满足需求或预期,填写性能问题报告单。问题报告单应包括问题来源、场景配置、问题描述、问题等级等内容。
e)判断所执行的测试用例是否通过。如果测试不通过,分析具体情况,确定是由软件本身性能瓶颈所引起的,还是由测试环境所引起的。
二、性能测试需求模型
性能测试需求模型应考虑环境、数据、业务流程、用户分布、请求时序分布和网络状态等因素,
1.环境需求
针对不同质量要求,应考虑测试环境对性能测试的影响,推荐使用系统或软件的实际生产环境作为性能测试环境。在进行性能测试环境规划和设计时,应考虑以下因素:
a)稳定性:在相同条件下的多轮次测试结果应保持一致,或在可接受误差范围内;
b)独立性:为避免测试结果失真,测试环境应与其他在用系统或软件保持相互隔离;
c)可控制性:测试环境中的所有设备和资源应可被监控或控制。
2.性能测试环境考虑因素包括:
a)硬件配置:包括需使用的计算机、服务器、磁盘阵列或其他专用设备,考虑上述硬件资源的型号、数量、部署逻辑、通信和连接状态等;
b)软件配置:包括需使用的操作系统、中间件、数据库、性能测试工具或其他专用软件,考虑前述软件资源的版本、补丁等;
c)网络配置:包括需使用的交换机、路由器、集线器或其他专用网络设备,考虑前述网络资源的组网方式、传输速率和延迟特性等。
当现有条件无法支撑测试环境构建时,应Zui大化利用现有资源进行测试环境构建,并分析测试环境和生产环境的差异性,如不同的软硬件或网络设备可能带来的性能增益或损耗。
3.数据需求
性能测试所需的数据包含如下需求:
a)数据的类型和业务需求相匹配。
b)数据量和业务需求相匹配。
c)数据分布模型和业务需求相匹配。应通过收集历史数据,确定数据需求。
d)进行数据需求分析时,考虑数据的使用限制和重用性,制定数据读取策略和备份策略,当进行性能扩展性测试时,应根据实际情况加大数据量。
4.业务流程
性能测试应考虑测试主要或重要的业务流程,不同的业务流程对系统产生的压力不同。在业务流程选择时应基于风险评估考虑如下因素:
a)资源的占用情况;
b)业务使用频率;
c)业务的重要性。