软件测试中的持久性测试

持久性测试

持久性测试是一种非功能类型的软件测试,通过在相当长的时间内对软件进行高负载测试,以评估软件应用程序在持续使用情况下的行为。持久性测试的主要目的是确保应用程序有足够的能力处理扩展负载,而不会影响响应时间。

此类测试在性能运行周期的最后阶段执行。这使得持久性测试与负载测试不同,负载测试通常需要几个小时左右才能结束。

持久性意味着能力,换句话说,可以把持久性测试称为能力测试。 在本教程中,将了解-

  • 什么是持久性测试?
  • 持久性测试的目标
  • 持久性测试中应监控的内容
  • 如何进行持久性测试
  • 持久性测试示例
  • 持久性测试工具
  • 持久性测试的优势
  • 持久性测试的弊端

持久性测试的目标

  • 持久性测试的主要目标是检查内存泄漏。
  • 了解系统在持续使用情况下的运行情况。
  • 以确保在较长时间后,系统响应时间将保持与测试开始时相同或更好。
  • 要确定给定系统将支持和满足性能目标的用户和/或事务数量。
  • 要管理未来的负载,我们需要了解需要多少额外资源(如处理器容量、磁盘容量、内存使用量或网络带宽)来支持未来的使用。
  • 持久性测试通常通过使系统过载或减少某些系统资源并评估结果来完成。
  • 执行该操作是为了确保在被认为是相对“正常”的使用期之后不会发生缺陷或内存泄漏。

持久性测试中应监控的内容

Endurance Testing image
Endurance Testing image

在持久性测试中,要测试的东西有以下几个。

  • 测试内存泄漏-检查应用程序中是否存在可能导致系统或操作系统崩溃的内存泄漏。
  • 测试系统各层之间的连接关闭情况-如果系统各层之间的连接未成功关闭,则可能会使系统的部分或所有模块停止工作。
  • 测试数据库连接成功关闭-如果数据库连接未成功关闭,可能会导致系统崩溃
  • 测试响应时间-当应用程序因长时间使用系统而降低效率时,系统将针对系统的响应时间进行测试。

如何进行持久性测试

以下是持久性测试的基本测试方法

  • 测试环境-确定持久性测试所需的硬件、软件和操作系统,在团队中分配角色和职责等。因此,需要测试应用程序在一年、两年或五年后的响应情况。
  • 创建测试计划、场景-基于测试的性质-手动或自动化或两者的组合,测试用例设计、评审和执行都应计划。对系统施加压力的Testin测试确定应用程序中的断点。
  • 测试估算-提供完成测试阶段所需时间的估算。应该根据涉及的测试人员的数量和所需的测试周期数来进行分析。
  • 风险分析-分析风险并采取适当的预防措施。根据风险因素确定测试用例的优先顺序,并确定以下风险和问题,测试人员可能会在持久性测试期间分阶段进行测试。
  • 随着时间的推移,性能是否会保持一致?
  • 是否还有其他尚未检测到的小问题?
  • 是否存在未解决的外部干扰?

  • 测试计划-确定时间范围内的预算和交付内容。因为持久性测试连续一段时间向系统/应用程序应用了巨大但自然的事务负载安排。

持久性测试示例

压力测试使被测系统达到极限,而持久性测试随着时间的推移使应用程序达到极限。

例如,当软件长时间运行时,会出现最复杂的问题-内存泄漏、数据库服务器利用率和系统无响应。如果跳过持久性测试,则在部署之前检测到此类缺陷的几率非常低。

持久性测试工具

  • WebLOAD
  • LoadComplete
  • Apache JMeter
  • LoadRunner
  • Appvance
  • LoadUI
  • OpenSTA
  • Rational Performance Tester

持久性测试的优势

  • 有助于确定负载下系统可以如何处理工作负载。
  • 提供客户可用来验证或增强其基础架构需求的准确数据。
  • 确定系统在较长时间处于高水平运行后可能出现的性能问题
  • 典型问题是在较小的目标性能测试中发现的,这意味着即使在非常短的跨度时间内有大量负载,也能确保应用程序保持可用。
  • 持久性测试还用于检查在长时间执行后是否有任何性能下降

持久性测试的弊端

  • 通常很难定义有多大的压力值得施加。
  • 持久性测试可能会导致应用程序和/或网络故障,如果不隔离测试环境,故障可能会导致严重中断。
  • 系统压力过大可能会导致永久性数据丢失或损坏。
  • 消除压力后,资源利用率仍然很高。
  • 某些应用程序组件无法响应。
  • 最终用户观察到未处理的异常。

总结:

  • 在软件工程中,持久性测试是负载测试的一个子集。
  • 持久性测试是一个漫长的过程,有时甚至长达一年。
  • 进行检查是为了验证
  • 测试内存泄漏
  • 测试响应时间
  • 测试数据库连接等。

IT赶路人

专注IT知识分享