耐久性测试(定义、类型、示例)


耐久性测试

耐久性测试是一种非功能性测试,其中应用程序或软件产品在长时间内承受重负载进行测试,以评估其在持续使用下的响应和行为。执行耐久性测试的主要原因是确保正在测试的应用程序或软件能够处理扩展负载,而不会降低其响应时间。

它在性能运行周期的最后阶段执行。这是一个漫长的过程,甚至可能持续一年。它可能包括应用外部负载,如互联网流量、用户操作等。这使得耐久性测试区别于负载测试。

耐久性指的是容量。因此,耐久性测试有时也称为容量测试。

耐久性测试的目标

  • 主要目标是发现内存泄漏。

  • 了解系统在持续使用下的行为或响应。

  • 确保系统在长时间使用后,其响应时间保持与测试开始时相同或更好。

  • 确定被测系统在满足所有性能目标的同时能够承受的用户/事务数量。

  • 我们还需要管理未来的负载。为此,我们需要了解为了支持未来的使用,我们需要哪些和多少额外的资源。耐久性测试帮助我们实现这一目标。此类资源包括处理器容量、磁盘容量、内存使用情况、网络带宽等。

  • 通常通过过载系统或减少某些系统资源,然后评估结果来执行。

  • 进行耐久性测试是为了确保在指定的正常使用期间不会出现内存泄漏和其他错误。

在耐久性测试中我们测试什么?

我们在耐久性测试中测试以下内容:

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

  • **测试系统层之间连接的关闭** - 如果系统不同层之间的连接未关闭,则系统可能会崩溃。

  • **测试数据库连接的关闭** - 同样,如果测试数据库连接未关闭,则系统可能会崩溃。

  • **测试响应时间** - 在长时间使用后,系统的响应时间可能会延迟。因此,测试应用程序或软件的响应时间变得至关重要。

耐久性测试流程

  • **测试环境** - 确定执行耐久性测试所需的硬件、软件操作系统。为团队成员分配角色和责任。确保在测试执行之前环境已准备就绪。此外,确定常见数据库生产规模和年度增长。这很重要,因为我们必须测试应用程序或软件在一年或两年后将如何响应。

  • **创建测试计划和测试场景** - 根据测试的性质,计划您是否需要手动测试、自动化测试或两者的组合。此外,设计测试用例、审查和测试执行。确保在测试计划中包含测试以对系统进行压力测试、断点测试等。

  • **测试估算** - 估算完成测试阶段需要多长时间。在考虑所涉及的测试人员数量和所需的测试周期数量的情况下进行分析。

  • **风险分析** - 分析测试过程中涉及的风险,并采取适当的措施来防止它们。根据风险因素确定测试用例的优先级,并识别以下提到的风险以及测试团队在耐久性测试期间可能面临的问题:

    • 软件的性能是否会随着时间的推移保持一致?

    • 是否存在尚未发现的其他问题,即使是次要问题?

    • 是否存在尚未解决的外部干扰?

  • **测试计划** - 决定预算,按时交付成果。在耐久性测试中,将大量的自然负载事务应用于系统持续一段时间。

  • **测试执行** - 在此阶段,我们最终开始耐久性测试。

  • **测试周期结束** - 在此阶段,我们根据测试计划阶段指定的退出标准结束测试周期。

耐久性测试示例

压力测试将软件或应用程序测试到其极限,但耐久性测试会随着时间的推移将软件或应用程序测试到其极限。

例如,大多数复杂的问题,如内存泄漏、数据库服务器使用、系统无响应等,都发生在软件运行较长时间时。忽略或跳过耐久性测试不是明智的决定,因为在部署之前发现此类缺陷的机会非常低。

假设在封锁期间,例如由于 COVID 导致的封锁,银行长时间不营业。在此期间,网上银行业务活动将比其他工作日增加。因此,银行系统必须准备好处理和管理意外的大规模负载。

耐久性测试工具

  • **WebLOAD** - 此耐久性测试工具由 RadView 开发。此工具专为 Web 应用程序而设计,也用于负载测试和性能测试。它与从 Web 协议到企业应用程序的多种技术兼容。WebLOAD 提供与 Jenkins、Selenium 和其他 DevOps(开发与运营)工具的内置集成。

此工具既可以用作本地产品,也可以用作完全托管的 SaaS 负载测试解决方案。它通过可自定义的 Web 仪表板与各种 Web 协议、移动协议和企业协议兼容。WebLOAD 提供了 Web 应用程序性能的清晰视图,指出了可能阻碍我们实现负载响应要求的问题。

  • **LoadComplete** - 这是一款易于使用且价格合理的工具,也用于性能测试。它帮助我们为网站和 Web 应用程序创建和执行真实的负载测试。它通过记录用户交互并使用数百个虚拟用户模拟它们来帮助创建自动化的负载测试。

此工具有助于检查 Web 服务器在大量负载下的性能。它还有助于确定健壮性和可扩展性。它为我们提供了详细的报告,这些报告提供了对基础设施、应用程序行为和最终用户体验的深入见解。

  • **Apache JMeter** - 此开源测试工具是 Java 平台应用程序。它主要用作性能测试工具,可以与测试计划集成。它可以加载到服务器或网络中以检查其性能,并分析其在不同条件下的功能。

最初,它用于测试 Web 应用程序,但现在其范围已扩大。JMeter 在测试资源(如 Servlet、Perl 脚本和 JAVA 对象)的功能性能方面非常有用。JMeter 需要 JVM 1.4 及更高版本才能运行,并在 Unix 和 Windows 操作系统上运行。

  • **LoadRunner** - Micro Focus 的此产品用于性能测试。它在了解和确定软件或应用程序的性能方面非常有用。

LoadRunner 可以同时创建和管理数千个用户。它还有助于收集有关基础设施性能的相关信息。它包含不同的工具,例如虚拟用户生成器、控制器、负载生成器和分析器。

  • **Appvance** - 此工具是第一个统一的测试自动化平台。它消除了传统 QA 工具创建的冗余,这些工具会阻碍 DevOps 团队。它提供与 Jenkins、Hudson、Rally、Bamboo、Jira 等的集成。它也与 Selenium、JMeter、Junit、Jython 等兼容。

  • **LoadUI** - 此开源工具允许我们通过拖动不同的组件来执行复杂的负载测试并检查性能。使用 LoadUI,我们甚至可以在执行测试用例时创建和更新它们。此工具支持 Windows、Linux 和 Mac OS。它还有助于我们测试 API 的速度和可扩展性。

其一些功能包括:

  • 基于云的负载测试
  • 并行负载测试
  • 服务器监控
  • 重用功能测试
  • 分布式负载生成器
  • 隔离负载测试
  • 端点负载测试

  • OpenSTA − 此基于GUI的工具用于对Web服务器进行基准测试。它可以执行HTTP和HTTPS高负载测试,并进行性能测量。它是一个开源工具,可在Windows操作系统上运行。

耐久性测试的优点

  • 它有助于确定系统可以处理多少负载。

  • 它提供准确的数据,可用于验证和改进基础设施需求。

  • 它可以发现系统长时间运行后可能出现的性能问题。

  • 它确保在短时间内出现巨大负载时软件仍然可用。

  • 它还用于检查长时间使用后是否存在任何性能下降。

耐久性测试的缺点

  • 难以确定值得施加多少负载。

  • 它可能导致网络或软件故障,如果测试环境未保持隔离,则可能造成严重中断。

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

  • 即使在移除负载后,资源使用率仍然很高。

  • 某些应用程序元素可能无法响应。

  • 如果未处理异常,最终用户可能会观察到。

更新于: 2021年10月30日

浏览量1K+

开启您的职业生涯

通过完成课程获得认证

开始学习
广告