浸泡测试
浸泡测试是平均负载测试的另一种变体。它侧重于长时间运行,分析以下方面:
- 系统在长时间运行下的性能和资源消耗的退化。
- 系统在长时间运行下的可用性和稳定性。
浸泡测试与平均负载测试的区别在于测试持续时间。在浸泡测试中,峰值负载持续时间(通常是平均量)会延长数小时甚至数天。虽然持续时间要长得多,但浸泡测试的启动和停止阶段与平均负载测试相同。
在某些测试讨论中,浸泡测试可能被称为耐久性测试、持续高负载测试或耐力测试。
何时进行浸泡测试
大多数系统必须持续运行数天、数周甚至数月而无需干预。这项测试验证了系统在长时间使用下的稳定性和可靠性。
这种测试类型检查只有在长时间使用后才会出现的常见性能缺陷。这些问题包括响应时间下降、内存或其他资源泄漏、数据饱和以及存储耗尽。
注意事项
准备运行浸泡测试时,请考虑以下事项:
将持续时间配置得比其他任何测试都长得多。
一些典型值包括 3、4、8、12、24 以及 48 到 72 小时。
如果可能,请重用平均负载测试脚本
仅更改上述值的峰值持续时间。
不要在运行冒烟测试和平均负载测试之前运行浸泡测试。
每种测试都会发现不同的问题。首先运行此测试可能会导致混淆和资源浪费。
监控后端资源和代码效率。 由于我们正在检查系统退化,强烈建议监控后端资源和代码效率。在所有测试类型中,后端监控对于浸泡测试尤为重要。
k6 中的浸泡测试
浸泡测试与平均负载测试几乎相同。唯一的区别是负载高原的持续时间增加。
- 增加负载直到达到平均用户数或吞吐量。
- 将该负载维持相当长的时间。
- 最后,根据测试用例,停止或逐渐降低负载。
在 options
对象中配置负载持续时间
import http from 'k6/http';
import { sleep } from 'k6';
export const options = {
// Key configurations for Soak test in this section
stages: [
{ duration: '5m', target: 100 }, // traffic ramp-up from 1 to 100 users over 5 minutes.
{ duration: '8h', target: 100 }, // stay at 100 users for 8 hours!!!
{ duration: '5m', target: 0 }, // ramp-down to 0 users
],
};
export default () => {
const urlRes = http.get('https://quickpizza.grafana.com');
sleep(1);
// MORE STEPS
// Here you can have more steps or complex script
// Step1
// Step2
// etc.
};
对于更复杂的行为,请参阅示例。
请注意,与平均负载测试一样,峰值负载维持在 100 个 VU。区别在于持续时间。在此浸泡测试中,峰值负载维持 8 小时,而不是几分钟。
结果分析
如果在之前的测试类型之后执行此测试,那么系统应该在之前的场景下表现良好。在此测试中,随着时间推移,请监控任何性能指标的变化。尝试将任何影响与表明随时间退化的后端测量变化相关联。这些变化可以是前面提到的逐渐退化,也可以是响应时间和后端硬件资源的突然变化(包括改进)。需要检查的后端资源包括消耗的 RAM、CPU、网络以及云资源增长等。
预期结果是后端性能和资源利用保持稳定或在预期变化范围内。
运行完所有先前的测试类型后,您就知道系统在各种不同的负载下(小、平均、高和长时间)表现良好。