什么是浸泡测试?定义、含义、示例

浸泡测试

浸泡测试(Soak Testing)是一种非功能测试,用于衡量软件应用程序在长时间大负载下的性能。浸泡测试的目标是确保软件应用程序能够承受大量的持续使用,并检查超出其设计预期的情况会发生什么。

下图描绘了一个测试周期,显示了浸泡测试(性能测试的一种类型)在应用程序的哪个阶段进行。

Soak Testing

在这种类型的测试中,主要监测的是应用程序在系统中内存的使用情况。它是在系统级别进行的测试,以查找系统是否能承受非常高的使用量,并查看超出其设计预期的情况会发生什么。

为什么要进行浸泡测试?

一个系统在使用2小时时可能表现正常,但当同一个系统连续使用10小时或更长时间时,它可能会发生故障或表现异常/随机/崩溃。为了预测此类故障,需要进行浸泡测试。

何时进行浸泡测试?

浸泡测试应在以下场景中进行: –

  1. 在将构建部署到客户端之前,即在任何应用程序发布到特定平台之前,它需要通过一系列在高流量或等效流量水平下的成功负载测试。之后进行浸泡测试。它帮助我们确定如何长时间运行任何特定应用程序。如果在浸泡期间发现内存泄漏/内存损坏等问题,应立即报告。
  2. 进行浸泡测试的最佳时间是周末,因为应用程序需要运行一整天或一整夜。这完全取决于测试情况的限制。浸泡测试是最重要的合规性要求之一,每个公司都必须严格遵守。

浸泡测试策略

长时间浸泡测试是一种系统长时间处于负载下的策略。

一个简单的例子是,用户长时间登录系统并执行许多业务事务。这样会产生大量数据。系统/数据库服务器可能会承受很大的负载,从而导致系统/数据库服务器停滞/崩溃。

在长时间浸泡测试下,将多天(例如30天)的活动在受限的时间框架(例如2天)内完成。此受限时间框架内的事务数量应与多天的事务数量相匹配或超出。重点应放在处理的事务数量上。浸泡测试最重要的部分是检查CPU中可用的内存以及将要使用的内存量。我们需要记录浸泡测试开始和结束时的内存使用情况。如果必要,还需要监控Java虚拟机等设施的内存使用情况,这一点也很重要。

以下是任何用户/测试人员在开始浸泡测试之前需要进行的更多检查

a) 监控数据库资源消耗。

b) 监控服务器资源消耗(例如 CPU 使用率)。

c) 浸泡测试应以实际的用户并发量运行。

浸泡测试的特点

标准的浸泡测试方法应具有以下特点: –

  • 大多数浸泡测试的持续时间通常由可用时间决定。
  • 如果任何应用程序需要长时间运行,它必须不间断地运行。
  • 它应涵盖所有利益相关者同意的场景。
  • 大多数系统都有定期的维护窗口期,这些窗口期之间的时间是确定浸泡测试范围的关键驱动因素。

浸泡测试的例子

  • 在银行业领域,当有大量来自商户的数据时,测试人员会将系统持续加载70小时到150小时,以检查应用程序在此加载期间的表现。
  • 假设有 33,000 个登录需要通过系统,这代表了七天半的活动量。在这种情况下,可以在周五晚上 6 点左右开始进行 60-70 小时的浸泡测试,并于周一早上 6 点完成。只有通过这种测试,才能在受控条件下观察到任何性能下降。
  • 在视频游戏、移动应用程序等领域,浸泡测试涉及让游戏或应用程序长时间处于运行状态,在各种操作模式下——例如空闲、在标题屏幕暂停等,以查明应用程序是否能够处理持续的预期负载。

浸泡测试中常见的发现问题

  1. 内存分配(可能最终导致内存危机或仅随时间显现的舍入错误的内存泄漏)。
  2. 数据库资源利用率(在某些情况下未能关闭数据库游标,最终可能导致整个系统停滞)。
  3. 它还可能导致性能下降,即确保长时间持续活动后的响应时间与测试开始时一样好。
  4. 在某些情况下,多层系统之间连接未能关闭,可能导致系统部分或所有模块停滞。
  5. 在长时间测试中,某些功能的响应时间会逐渐下降,因为内部数据结构效率变低。

摘要

  • 软件工程中,浸泡测试用于确定被测应用程序是否能够承受持续的负载。
  • 它是一种性能测试类型。
  • 它有助于系统确定其是否能承受非常高的使用量
  • 在这种类型的测试中,主要监测的是应用程序在系统中的内存利用率
  • 在开始浸泡测试之前,任何用户/测试人员都需要进行的检查包括
  • 监控数据库资源消耗。
  • 监控服务器资源消耗(例如CPU使用率)。
  • 浸泡测试应以实际的用户并发量运行。