什么是浸泡测试?定义、含义、示例
浸泡测试
浸泡测试(Soak Testing)是一种非功能测试,用于衡量软件应用程序在长时间大负载下的性能。浸泡测试的目标是确保软件应用程序能够承受大量的持续使用,并检查超出其设计预期的情况会发生什么。
下图描绘了一个测试周期,显示了浸泡测试(性能测试的一种类型)在应用程序的哪个阶段进行。
在这种类型的测试中,主要监测的是应用程序在系统中内存的使用情况。它是在系统级别进行的测试,以查找系统是否能承受非常高的使用量,并查看超出其设计预期的情况会发生什么。
为什么要进行浸泡测试?
一个系统在使用2小时时可能表现正常,但当同一个系统连续使用10小时或更长时间时,它可能会发生故障或表现异常/随机/崩溃。为了预测此类故障,需要进行浸泡测试。
何时进行浸泡测试?
浸泡测试应在以下场景中进行: –
- 在将构建部署到客户端之前,即在任何应用程序发布到特定平台之前,它需要通过一系列在高流量或等效流量水平下的成功负载测试。之后进行浸泡测试。它帮助我们确定如何长时间运行任何特定应用程序。如果在浸泡期间发现内存泄漏/内存损坏等问题,应立即报告。
- 进行浸泡测试的最佳时间是周末,因为应用程序需要运行一整天或一整夜。这完全取决于测试情况的限制。浸泡测试是最重要的合规性要求之一,每个公司都必须严格遵守。
浸泡测试策略
长时间浸泡测试是一种系统长时间处于负载下的策略。
一个简单的例子是,用户长时间登录系统并执行许多业务事务。这样会产生大量数据。系统/数据库服务器可能会承受很大的负载,从而导致系统/数据库服务器停滞/崩溃。
在长时间浸泡测试下,将多天(例如30天)的活动在受限的时间框架(例如2天)内完成。此受限时间框架内的事务数量应与多天的事务数量相匹配或超出。重点应放在处理的事务数量上。浸泡测试最重要的部分是检查CPU中可用的内存以及将要使用的内存量。我们需要记录浸泡测试开始和结束时的内存使用情况。如果必要,还需要监控Java虚拟机等设施的内存使用情况,这一点也很重要。
以下是任何用户/测试人员在开始浸泡测试之前需要进行的更多检查
a) 监控数据库资源消耗。
b) 监控服务器资源消耗(例如 CPU 使用率)。
c) 浸泡测试应以实际的用户并发量运行。
浸泡测试的特点
标准的浸泡测试方法应具有以下特点: –
- 大多数浸泡测试的持续时间通常由可用时间决定。
- 如果任何应用程序需要长时间运行,它必须不间断地运行。
- 它应涵盖所有利益相关者同意的场景。
- 大多数系统都有定期的维护窗口期,这些窗口期之间的时间是确定浸泡测试范围的关键驱动因素。
浸泡测试的例子
- 在银行业领域,当有大量来自商户的数据时,测试人员会将系统持续加载70小时到150小时,以检查应用程序在此加载期间的表现。
- 假设有 33,000 个登录需要通过系统,这代表了七天半的活动量。在这种情况下,可以在周五晚上 6 点左右开始进行 60-70 小时的浸泡测试,并于周一早上 6 点完成。只有通过这种测试,才能在受控条件下观察到任何性能下降。
- 在视频游戏、移动应用程序等领域,浸泡测试涉及让游戏或应用程序长时间处于运行状态,在各种操作模式下——例如空闲、在标题屏幕暂停等,以查明应用程序是否能够处理持续的预期负载。
浸泡测试中常见的发现问题
- 内存分配(可能最终导致内存危机或仅随时间显现的舍入错误的内存泄漏)。
- 数据库资源利用率(在某些情况下未能关闭数据库游标,最终可能导致整个系统停滞)。
- 它还可能导致性能下降,即确保长时间持续活动后的响应时间与测试开始时一样好。
- 在某些情况下,多层系统之间连接未能关闭,可能导致系统部分或所有模块停滞。
- 在长时间测试中,某些功能的响应时间会逐渐下降,因为内部数据结构效率变低。
摘要
- 在软件工程中,浸泡测试用于确定被测应用程序是否能够承受持续的负载。
- 它是一种性能测试类型。
- 它有助于系统确定其是否能承受非常高的使用量
- 在这种类型的测试中,主要监测的是应用程序在系统中的内存利用率
- 在开始浸泡测试之前,任何用户/测试人员都需要进行的检查包括
- 监控数据库资源消耗。
- 监控服务器资源消耗(例如CPU使用率)。
- 浸泡测试应以实际的用户并发量运行。