软件性能测试过程

简介:

摘要:本文简单介绍软件的性能测试过程,将性能测试过程分为性能测试设计、性能测试执行、测试结果分析三个阶段,并介绍了每个阶段的主要工作内容和方法,配有简单的例子进行解释。

  关键字:性能测试 性能测试设计 测试场景 结果分析

   随着企业需求的日益增长以及计算技术的不断进步,企业级系统的应用已经从早期的单机时代转换到了服务成千上万个用户的因特网时代。随着企业业务量的增 加,企业的应用系统承载的负荷越来越重,对应用系统的要求越来越高。系统性能的好坏直接影响企业对外提供服务的质量,而性能测试在软件的质量保证中起着重 要的作用。

  本人结合自己的经验,从技术角度简单讨论一下软件性能测试的测试过程。软件性能测试过程分为三个阶段:

  ● 性能测试设计

  ● 性能测试执行

  ● 测试结果分析

  1.性能测试设计

  性能测试设计是性能测试过程中一个非常重要的环节,性能测试设计的好坏直接关系到测试的充分性和测试结果的有效性。

  性能测试设计阶段主要包括性能需求分析、测试场景制定等。

  1.1 性能需求分析

  性能需求分析主要包括测试目的和性能指标确定。

  进行性能需求分析,需要明确性能需求。性能需求可以从被测软件的相关文档中获得,也可以通过与用户沟通来获得。仔细阅读被测软件附带的相关文档,包括需求文档、使用文档、数据库设计文档等,提取有关软件性能相关的描述,例如“要求操作响应时间在……以内”、“要求……能够快速……”、“要求……能够支持……用户访问”、“要求……能快速稳定运行”、“要求系统连续……无故障运行”等,然后对提取的测试需求进行分析。

  (1)确定测试目的

  进行需求分析,首先要明确性能测试目的,测试目的不同直接影响后序的性能测试场景的制定。测试目的可以总结为三类:符合性验证、性能考察、性能调优。

  ● 符合性验证―主要验证软件是否满足规定的性能指标要求。如测试软件在某一条件下的平均响应时间,或者吞吐率,或者并发用户数等是否满足规定的要求。

  ● 性能考察―主要测试软件在某种条件下运行的性能状况。如测试软件所能支持的最大并发用户数或者最大数据量,软件在不同环境下的性能状况,随用户数量的变化或者数据量的变化情况下软件的性能变化状况等。

  ● 性能调优―主要是通过性能测试找出软件的性能瓶颈,分析出引起软件性能缺陷的原因,并进行针对性的性能优化,以改进软件性能。如对软件进行性能测试,确定是软件否存在性能方面的问题,并定位性能瓶颈,对其进行性能优化。

  将测试需求与上述目的进行比较,确定出本次测试的测试目的。

  (2)确定性能指标

   此处确定的性能指标指的是性能需求中要求的,且通过性能测试直接得到的性能指标,主要包括响应时间、吞吐率、资源利用率、交易成功率等,是测试结果分析 和判断的依据。性能测试需要有明确的性能指标,某些软件系统具有明确的性能指标,而有的软件系统则需要和用户一起,通过对软件系统的业务特点、技术特点、 应用情况等进行综合分析来获得。

  如,一软件系统,要求1个小时内必须完成7 200笔业务。可以得出每秒需要完成的业务为7 200/3 600=2笔,则可以得出该系统需要关注的性能指标为服务器处理请求的能力,即吞吐率,值为2笔/秒。

  1.2 测试场景制定

  测试场景是指导测试执行的依据。测试场景主要是模拟软件系统一些实际的应用情况,包括测试时执行的业务、每种业务执行的用户数量、模拟的总用户 数、数据库数据量、用户增长方式、测试循环方式、用户退出方式、执行过程中的相关参数设定等,还包括测试中需要监视的性能计数器,主要是服务器端操作系统 相关的计数器、应用服务器相关的计数器、数据库相关的计数器等。不同的测试目的,其测试场景是不同的。

  ● 符合性验证主要是验证软件性能是否符合用户使用的要求,则测试中应模拟软件系统的实际使用情况。如,在各功能操作中加入适当的思考时间和迭代间隔时间,用 户增长方式采用逐渐加压方式等。软件实际使用时,主要是多用户执行多项功能操作,所以测试场景主要是多用户、多任务的并发测试。当软件系统有长时间连续运 行的情况时,还需要有疲劳测试的测试场景。

  ● 性能考察中对于测试软件性能极限的情况,如支持的最大用户数、最大的数据量等,测试场景应该尽可能的模拟极限情况。为了保证测试中对软件施加足够的压力, 用户增长方式采用同时加载,思考时间、迭代间隔时间都忽略等。测试软件性能极限,需要不断调整影响软件性能的要素,并分别进行并发测试。如,测试软件支持 的最大并发用户数,应不断调整并发用户数,在每组用户数下对系统进行并发测试。对于有长时间运行要求的软件系统,则需要进行疲劳测试。

  性能考察中检测软件在不同条件下的性能状况时(非性能极限),测试场景应该尽可能与实际使用情况相接近,与符合性验证类似。

  ● 性能调优主要是为了软件实际应用中的性能优化,则测试中应模拟软件系统实际应用中的多用户、多任务的并发测试场景,与符合性验证类似。为了验证软件系统是否存在内存泄漏等问题,还需要对其进行疲劳测试。

  2.性能测试执行

  根据制定的测试场景,开始执行测试。测试执行不仅包括测试场景的执行,还包括测试场景执行前的一些准备工作,如,测试环境搭建、测试脚本准备、测试场景布置、测试场景执行等。

  2.1 测试环境搭建

  测试环境主要包括软件运行的软硬件环境和数据环境。

  首先,需要根据测试执行方案搭建测试环境。确保测试结果的有效性,要求搭建一个独立、无毒、逼真的软、硬件环境及网络环境,安装调试被测软件,安装测试工具等。

  其次,需要准备测试数据。以有利于测试为原则,可以自己准备,也可以从用户处获得满足要求的测试数据,或通过以上两种方式相结合获得。自己准备的数据要符合业务规范,同时避免增加垃圾数据。准备好测试数据后,应及时备份数据库。

  2.2 测试脚本准备

  根据测试执行方案中制定的测试功能,准备测试脚本。测试脚本可以通过测试工具来准备,也可以通过自己编写来完成。

  准备测试脚本前,首先确定测试功能运行无误,防止影响测试结果。测试脚本录制或编写完毕后,需要进行相应的编辑,如参数化、调试等,并需要验证测试脚本的有效性:

  (1)首先,进行单脚本单用户验证,验证每个测试脚本运行与实际功能操作是否相符。如增加功能的脚本,既要保证脚本可以成功运行,还要保证数据库中有相应的增加数据。

  (2)其次,进行单脚本多用户验证,验证每个测试脚本的数据池是否有效。

  (3)最后,进行多脚本多用户验证,验证测试脚本是否可以并发运行。

  2.3 测试场景布置

  根据制定的测试场景布置各测试场景,包括测试脚本及其对应的虚拟用户数、对应的运行参数、用户增长方式、测试循环方式、用户退出方式、需要监视的性能计数器等。

  2.4 测试场景执行

  测试场景布置完毕后,开始执行测试场景。测试中,测试人员要监视测试运行情况,如有过多错误,应及时停止方案的运行,查找错误原因。若是因为外 界原因(如网络不稳定等)或者运行参数设置问题,则需要进行相应的调整再运行方案。如果不是外界原因和运行参数设置问题,则保存测试结果,以便进行结果分 析,找出问题原因。执行所有的测试场景,及时汇总测试结果,为下一步结果分析做准备。

  为了保证方案运行的有效性,在执行测试前,要将数据库恢复到脚本准备前的原始状态。在运行中,所有相关设备不要进行与测试无关的操作,以避免影响测试结果。

  3.测试结果分析

  测试结果分析是性能测试中的一个重要部分,同时也是一个难点。不同的软件系统,不同的性能指标,结果分析方法都是不一样的。下面给出一个简单的结果分析方法。

  首先,查看运行结果中是否有错误出现,可以结合运行日志信息来查找。若有错误信息,则需要进一步分析,根据错误信息查找原因。如,测试结果中出现超时错误,可能的原因有:

  a. 硬件有瓶颈,如CPU、内存等;

  b. 程序算法有问题;

  c. 应用服务的相关参数设置有问题;

  d. 程序中处理有关表的时候检查字段太多。

  接下来,对这几个可能的原因进一步分析,以确定出具体的原因。

  若运行结果没有出现错误,则根据关注的性能指标进行分析。首先对网络进行分析,排除网络问题,对服务器硬件(CPU、内存、磁盘I/O)进行相 关分析,确定是否是硬件瓶颈引起的性能问题,然后对应用服务器配置进行分析,确认是否是由于应用服务器本身的配置引起的性能问题,然后对数据库进行性能分 析,重点是索引、数据库Cache、死锁等问题的分析,排除上述因素后,再对程序代码进行分析,找出导致性能问题的因素。

  测试结果分析是一项复杂而又重要的部分,涉及的内容比较多,需要根据实际测试情况来进行分析。


本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

目录
相关文章
|
4月前
|
人工智能 安全 网络安全
Burp Suite Professional 2025.5 for macOS x64 & ARM64 - 领先的 Web 渗透测试软件
Burp Suite Professional 2025.5 for macOS x64 & ARM64 - 领先的 Web 渗透测试软件
154 3
|
4月前
|
安全 测试技术 Linux
Flawnter 5.9.1 (macOS, Linux, Windows) - 应用程序安全测试软件
Flawnter 5.9.1 (macOS, Linux, Windows) - 应用程序安全测试软件
130 2
Flawnter 5.9.1 (macOS, Linux, Windows) - 应用程序安全测试软件
|
4月前
|
人工智能 安全 网络安全
Burp Suite Professional 2025.5 for Windows x64 - 领先的 Web 渗透测试软件
Burp Suite Professional 2025.5 for Windows x64 - 领先的 Web 渗透测试软件
214 4
Burp Suite Professional 2025.5 for Windows x64 - 领先的 Web 渗透测试软件
|
3月前
|
测试技术
软考软件测评师大题——案例分析之白盒测试
历年下午案例试题一固定考察白盒测试,主要包含三大核心问题:推导逻辑条件、绘制控制流图及计算环路复杂度、确定线性无关路径集合。内容涵盖覆盖层级标准(语句、分支、判定、条件覆盖等)、控制流图构建规范(顺序、分支、循环结构转换原则)、环路复杂度计算公式以及线性无关路径生成方法。通过典型题型示例解析,如代码路径分析与验证指标,帮助考生掌握解题思路和技巧。
|
3月前
|
测试技术
软考软件评测师——可靠性测试测试方法
软件可靠性是指软件在规定条件和时间内完成预定功能的能力,受运行环境、软件规模、内部结构、开发方法及可靠性投入等因素影响。失效概率指软件运行中出现失效的可能性,可靠度为不发生失效的概率,平均无失效时间(MTTF)体现软件可靠程度。案例分析显示,嵌入式软件需满足高可靠性要求,如机载软件的可靠度需达99.99%以上,通过定量指标评估其是否达标。
|
3月前
|
安全 测试技术 持续交付
软考软件评测师——基于风险的测试技术
本文详细阐述了测试计划的核心要素与制定流程,涵盖测试范围界定、实施策略规划、资源配置及风险管理机制。通过风险识别方法论和评估模型,构建了完整的质量保障体系。同时,针对不同测试级别与类型提供具体配置建议,并提出技术选型原则与实施规范,确保测试活动高效有序开展,为项目成功奠定基础。内容结合实际经验,具有较强指导意义。
|
10月前
|
测试技术 开发者 Python
自动化测试之美:从零构建你的软件质量防线
【10月更文挑战第34天】在数字化时代的浪潮中,软件成为我们生活和工作不可或缺的一部分。然而,随着软件复杂性的增加,如何保证其质量和稳定性成为开发者面临的一大挑战。自动化测试,作为现代软件开发过程中的关键实践,不仅提高了测试效率,还确保了软件产品的质量。本文将深入浅出地介绍自动化测试的概念、重要性以及实施步骤,带领读者从零基础开始,一步步构建起属于自己的软件质量防线。通过具体实例,我们将探索如何有效地设计和执行自动化测试脚本,最终实现软件开发流程的优化和产品质量的提升。无论你是软件开发新手,还是希望提高项目质量的资深开发者,这篇文章都将为你提供宝贵的指导和启示。
|
11月前
|
机器学习/深度学习 人工智能 监控
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
|
10月前
|
测试技术 持续交付
探索自动化测试在软件质量保证中的关键作用
本文深入探讨了自动化测试在现代软件开发生命周期中的重要性,以及它是如何成为确保软件产品质量的不可或缺的一环。通过分析自动化测试的优势、挑战和最佳实践,本文旨在为读者提供对自动化测试全面而深刻的理解,从而帮助他们在实际工作中更有效地应用自动化测试策略。
106 2