软件测试中的耐久性测试是什么意思?

耐力测试

耐久性测试是一种非功能类型的软件测试,其中软件程序长时间承受高负载,以评估其在帮助使用下的行为。耐久性测试的主要目的是确保应用程序可以处理大量数据而不会变得缓慢。

这种测试是在性能运行周期结束时完成的。耐力测试是一个耗时的过程,可能会持续长达一年。可能会应用外部负载,例如 Internet 流量或用户操作。耐久性测试不同于负载测试,负载测试通常持续几个小时。

耐力描述能力。因此,耐力测试也可以重新考虑为容量测试。

耐力测试的目的是什么?

此调查的主要目的是找出任何可能的内存泄漏。因此,在测试过程中密切监控内存利用率。我假设您熟悉术语“内存泄漏”。不过,让我为不熟悉该术语的人定义内存泄漏。

当软件程序无法释放不需要的内存时,就会发生内存泄漏,从而导致性能不佳或失败。

内存泄漏可能不会立即产生影响,但会随着时间的推移降低系统速度,最终没有可用内存并导致应用程序或系统崩溃。内存泄漏是一个只有在经过一段时间后才会发现的问题。

因此,需要进行耐久性测试来识别此类缺陷。

但是,您的应用程序可能会在短时间内(例如一个小时)在高负载下有效运行。但是,如果您的应用程序在较长时间内(例如 3-4 小时)持续承受相同级别的压力,则会由于资源困难和磁盘空间不足而崩溃。

耐久性软件测试旨在检测的另一个重要问题是性能下降。在长时间使用之后,必须确保吞吐量或反应时间与测试开始时相当或更好。

Endurance 测试还会发现数据库连接问题。可以想象,如果数据库连接没有正确结束,系统就会崩溃。

耐久性测试还会寻找系统各层之间的正确连接闭合,如果没有,这可能会导致特定模块挂起。

简而言之,耐久性测试用于衡量系统在很长一段时间内的运行情况。耐久性测试检测内存泄漏、性能下降、数据库连接问题和其他关键问题。

耐力测试:寻找什么

在耐久性测试期间检查以下项目。

  • 测试内存泄漏- 执行检查以查看应用程序中是否存在任何可能导致系统或操作系统崩溃的内存泄漏。

  • 测试系统各层之间的连接关闭——如果系统各层之间的链接没有有效关闭,则系统的部分或全部模块可能会停止。

  • 关闭数据库连接成功- 如果数据库连接没有正确结束,系统可能会崩溃。

  • 测试响应时间 - 由于长时间使用导致应用程序效率降低,因此检查系统的响应时间。

耐力测试持续时间

如果项目需要每周 7 天、每天 24 小时不间断运行,并且耐力测试应持续至少 72 小时。这样做的理由是该程序应该能够在周末无人值守的情况下运行(因为周末支持对组织来说成本很高)。

因此,我们需要在比周末稍长的时间内在重负载下测试系统。但是,因为进行 72 小时的测试可能过于费力,所以我们通常只进行 12 小时。

此外,浸泡测试应该持续多长时间没有硬性规定。它主要由客户参与、实际生产使用等方面决定。耐力测试有时可能会持续一年!

如何进行此测试

进行此测试的程序如下 -

#1) 创建测试环境 -

这需要确定硬件、软件、数据库(以及随着测试的进行其大小)和运行耐力测试所需的操作系统。

它还需要组建一个团队来进行耐力测试并在团队内分配角色和职责。在运行测试之前,测试环境应该准备好,并且应该与实时系统充分分离。

#2) 设计、审查和完成测试用例 - 应该设计、评估和完成测试用例。

这也是制定测试执行策略的时候。

应确定应用程序的断点,并最终确定在耐久性测试期间将应用于应用程序的负载量。

#3) 测试周期的估计- 这需要确定每个测试阶段的长度和所需的测试周期数。

#4) 风险分析 - 这是测试过程中的关键步骤。风险因素用于确定测试用例的优先级。

以下是测试人员在耐力测试期间可能遇到的一些风险和问题 -

  • 性能测试的一致性是否会随着时间的推移而保持?

  • 是否还有其他尚未解决的小问题?

  • 是否有任何尚未解决的外部干扰?

#5) 测试时间表:建立预算、可交付成果和截止日期。

#6) 测试执行:这是耐力测试终于开始的时候。

#7) 测试周期关闭:根据在测试计划阶段建立的退出标准,关闭测试周期。它可以通过发现的缺陷数量、测试时间等来确定。

耐力测试的优势

以下是此测试的一些优点 -

  • 它确保应用程序适合使用。

  • 它可以识别其他性能测试可能无法检测到的问题。例如,在容量测试或压力测试期间,您可能不会注意到内存泄漏。

  • 增强应用程序的坚固性:它检测在高持续需求下可能出现的性能下降问题,然后修复它们,使应用程序更具弹性。

  • 它描述了系统在应变下的长期行为。换句话说,它监控系统的长期生存能力。

  • 客户可以使用来自耐久性测试的数据来验证或改进他们的基础设施要求。

耐力测试的缺点

  • 可能很难确定多少压力是合适的。

  • 如果测试环境不是隔离的,耐力测试可能会导致应用程序和/或网络故障,从而导致大量中断。

  • 系统压力过大可能导致永久性数据丢失或损坏。

  • 压力解除后,资源利用率仍然很高。

  • 应用程序的某些组件没有响应。

  • 最终用户知道未处理的异常。

耐久性测试示例

压力测试将被测试的系统推向其崩溃点,而耐久性测试则随着时间的推移将应用程序推向其崩溃点。

例如,当软件长时间运行时,会出现最困难的问题——内存泄漏、数据库服务器使用和系统无响应。如果您跳过耐力测试,您将很难在部署前发现此类缺陷。

耐力测试工具

  • 网络加载

  • 加载完成

  • Apache JMeter

  • 负载运行器

  • 应用程序

  • 加载界面

  • 开放式STA

  • Rational 性能测试器

结论

什么是耐力测试?我们在本文中了解了它。必须采取哪些步骤?它的优点和缺点,以及许多可用的仪器。

以下是一些主要的收获 -

  • 耐久性测试(也称为浸泡测试、寿命测试或容量测试)是一种非功能性测试,用于确定软件系统是否可以长时间承受较大的预期负载。

  • 负载测试是其中的一个子集。

  • 作为此测试的一部分,检测到内存泄漏、速度下降、数据库连接困难和其他严重问题。

  • 耐久性测试的长度取决于业务、项目和客户的需求。它可以持续 5 到 10 个小时、几天、一个月甚至一年。

  • 它加强了应用程序并使其准备好无限期地承受巨大的重量。

  • 不应手动完成耐力测试,因为它非常耗时。它在很大程度上是自动化的。

  • 它应该从创建一个孤立的测试环境开始,然后是测试计划的创建、测试周期时间的估计、风险分析、测试时间表的准备、耐力测试的执行,最后是结束测试周期。

  • Apache Jmeter、LoadStorm、LoadRunner、LoadUI、Appvance、OpenSTA、WebLoad 和 IBM Rational Performance Tester 是耐力测试的一些最佳工具。