软件性能测试过程

简介:

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

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

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

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

  ● 性能测试设计

  ● 性能测试执行

  ● 测试结果分析

  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/

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
3天前
|
设计模式 测试技术 持续交付
深入白盒测试:提升软件质量与性能的关键策略
【4月更文挑战第20天】 在软件开发的复杂世界中,确保产品的质量和性能始终是至关重要的任务。白盒测试,作为软件测试领域的重要分支,提供了对程序内部结构和逻辑的深入分析手段。本文将探讨如何通过有效的白盒测试策略来优化软件性能,减少缺陷,并最终提高用户满意度。通过剖析代码检查、单元测试、集成测试等白盒测试技术,我们将了解这些方法如何揭示潜在的问题点,并为改进提供方向。
|
3月前
|
监控 测试技术 持续交付
自动化测试和持续集成/交付:提升软件质量和效率的关键
在当今快节奏的软件开发环境中,自动化测试和持续集成/交付已经成为了必不可少的工具和流程。通过自动化测试,开发团队可以更快地检测和修复缺陷,同时提高测试覆盖率和质量。而持续集成/交付则可以让开发者将代码快速、自动地构建、测试和部署到生产环境中。这篇文章将探讨自动化测试和持续集成/交付的优势和实现方式,以及如何在实践中有效地使用它们来提升软件质量和效率。
|
1月前
|
测试技术
模型驱动测试:引领软件质量的新潮流
模型驱动测试:引领软件质量的新潮流
24 2
|
2天前
|
算法 Java 测试技术
深入解析白盒测试:提升软件质量与效率的关键
【4月更文挑战第22天】 在软件开发的复杂多变的世界中,保证代码质量和功能的正确性是至关重要的。白盒测试作为一种重要的软件测试方法,提供了一种透视软件内部逻辑结构的途径。本文将详细探讨白盒测试的概念、技术手段和实际应用,旨在帮助读者理解如何通过这种测试提高软件系统的稳定性和性能。文章还将讨论白盒测试中面临的挑战以及应对策略,以期为软件质量保证提供实用的指导。
10 2
|
10天前
|
Web App开发 测试技术 网络安全
|
10天前
|
监控 jenkins 测试技术
深入探索软件自动化测试的高效策略
【4月更文挑战第13天】 随着软件开发周期的不断缩短和发布频率的增加,传统的手动测试方法已难以满足快速迭代的需求。本文将详细探讨如何通过有效的自动化测试策略提高测试效率和质量。我们将分析自动化测试中的关键要素,包括测试用例的设计、框架选择、持续集成的应用以及性能监控,并结合实际案例来展示如何构建和维护一个健壮的自动化测试系统。文中还将讨论自动化测试过程中常见的误区和挑战,为读者提供实用的解决方案和最佳实践。
|
13天前
|
算法 测试技术 持续交付
深入探索白盒测试:提升软件质量的关键策略
【4月更文挑战第11天】 在软件开发的复杂世界中,确保代码的健康性与可靠性是至关重要的。白盒测试作为一种软件测试方法,允许测试者深入到程序的内部结构,以检查其逻辑和算法的正确性。本文将探讨白盒测试的核心概念、技术及其在提高软件质量方面的应用,特别是如何通过有效的白盒测试策略来优化测试过程并降低错误率。
|
18天前
|
测试技术
深入白盒测试:提升软件质量与性能的关键策略
【4月更文挑战第6天】 在软件开发的生命周期中,确保代码质量和性能始终是至关重要的环节。白盒测试作为一种深入代码内部的测试方法,提供了对程序结构、逻辑路径和内部功能的全面评估。本文将探讨白盒测试的核心概念、技术及其在提升软件质量与性能方面的应用。通过分析控制流测试、数据流测试和静态代码分析等关键技术,我们揭示了白盒测试如何有效发现潜在缺陷,优化代码效率,并增强系统稳定性。
|
24天前
|
Web App开发 Java 测试技术
深入理解与应用软件自动化测试工具Selenium
随着软件开发的快速发展,软件测试在保证产品质量方面发挥着越来越重要的作用。其中,自动化测试以其效率高、成本低的特点受到了广大开发者的欢迎。本文主要介绍了自动化测试工具Selenium的基本概念、原理以及在实际开发中的应用,旨在帮助读者更好地理解和使用Selenium进行高效的自动化测试。
22 4
|
29天前
|
安全 测试技术
【软件设计师备考 专题 】软件测试的原则与方法:确保软件质量的关键步骤
【软件设计师备考 专题 】软件测试的原则与方法:确保软件质量的关键步骤
41 0