什么是容量测试?通过示例学习

什么是容量测试?
容量测试 是一种软件测试,其中软件要接受大量数据。它也被称为 洪水测试。 通过增加数据库中的数据量来进行容量测试来分析系统性能。
借助容量测试,可以研究暴露于大量数据时对响应时间和系统行为的影响。
例如,一项音乐流媒体服务可能会使用包含 50 万首歌曲的曲库进行测试。 tracks 和一个包含数十亿行的监听历史表,以查看搜索和推荐查询是否仍能在可接受的时间内返回。
请注意以下区别: 测试量增加 数据量 系统保持稳定。增加 并发用户数 负载测试是一种不同的测试,其目标也不同。
容量测试的好处
- 及早发现产能问题可以避免在生产过程中修复这些问题时付出更高的成本。
- 它有助于更快地启动可扩展性计划
- 尽早发现瓶颈
- 它确保您的系统现在能够实际使用
为什么要进行容量测试?
进行容量测试的目的是
- 随着数据库中数据量的增加,检查系统性能
- 识别出数据集增大后可能出现的问题。
- 找出系统稳定性下降的点
- 容量测试将有助于确定系统或应用程序的容量——正常容量和大容量
如何进行容量测试
在容量测试中,需要测试以下内容
- 测试是否有数据丢失
- 检查系统的响应时间
- 检查数据是否存储正确
- 验证数据是否在未经任何通知的情况下被覆盖
- 检查当达到音量限制时,是否实际显示了警告和错误消息。
- 检查大量数据是否影响处理速度
- 确认系统拥有该卷所需的内存和存储资源。
- 确认容量测试覆盖整个系统,而不是单个组件。
- 如果数据量超过规定值,是否存在风险
- 确定是否存在任何保证,确保数据量不会超过规定的最大值。
高容量测试的最佳实践
以下几种实践方法与负载测试相同,因为两者通常在相同的环境下运行。而与卷相关的实践方法则与数据集本身有关:
- 停止所有服务器并检查所有日志
- 负载测试前手动执行应用场景
- 为了获得最有用的结果,错开用户数量
- 为了克服许可证限制,平衡思考时间
- 对新建筑要谨慎
- 建立基线后,分析用例以进行改进
- 如果出现性能瓶颈,则不可避免地会重复进行容量测试的特定部分
容量测试与负载测试
| 容量测试 | 负载测试 |
|---|---|
|
|
|
|
容量测试中的挑战
- 记忆碎片难以产生
- 动态生成密钥
- 相关的 Integrity 生成的数据
此测试与其他性能测试的比较
性能测试是一系列测试的总称,这些测试在施加的载荷形式上有所不同,因此很容易混淆。
| 测试类型 | 增加的是什么 | 它解答的问题 |
|---|---|---|
| 负载测试 | 并发用户数达到预期峰值 | 在正常高峰交通流量下,它能达到目标吗? |
| 容量测试 | 数据库中存储的数据 | 随着数据集的增长,它能否应对? |
| 压力测试 | 负载超过容量,直至发生故障 | 它在哪里断裂,又是如何断裂的? |
| 尖峰测试 | 加载速度极快,速度极快 | 它能否在受到冲击后存活并恢复? |
| 耐力测试 | 正常负荷下的持续时间 | 性能会随着时间推移而下降吗? |
| 浸泡测试 | 时长,观看资源 | 是否存在内存泄漏或句柄泄漏? |
| 稳定性测试 | 各种条件 | 随着环境变化,它还能保持可靠性吗? |
这里最重要的区别在于: 容量测试衡量数据规模,负载测试衡量用户规模。 一份报表,如果处理一万行数据需要两秒钟,处理一千万行数据需要两分钟,那么这是数据量问题,而不是负载问题,再多的服务器容量也无法解决这个问题。
如何生成容量测试的测试数据
挑战部分指出,生成真实数据是容量测试的难点所在。实践中采用了四种方法,每种方法都存在利弊权衡。
| 途径 | 现实主义 | 主要缺点 |
|---|---|---|
| 生产数据副本 | 最高 | 隐私和合规风险 |
| 蒙版制作副本 | 高 | 掩码可能会破坏参照完整性 |
| 合成生成 | 中 | 分布情况可能与实际情况不符。 |
| 重播的生产流量 | 高 | 需要采集基础设施 |
无论你选择哪种方法,都必须满足三个条件,否则测试就无法衡量任何有用的信息。
- 参照完整性。 每个外键都必须解析。一百万个孤立行会给存储引擎带来压力,但不会给应用程序实际使用的连接路径带来压力。
- 实际基数。 如果生产表包含两百个客户的一千万行数据,那么生成包含一千万个客户的一千万行数据会产生完全不同的查询计划。
- 实际分布情况。 真实数据存在偏差。均匀随机数据会掩盖导致生产事故的热分区和索引争用问题。
关于隐私的实用警告。 将生产环境数据复制到测试环境是测试中数据泄露最常见的原因。应在数据离开生产环境之前屏蔽个人字段,而不是之后。
