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