什么是恢复测试?举例

⚡ 智能摘要

恢复测试验证软件在崩溃、网络中断或硬件故障后能否恢复正常运行,方法是将系统恢复到已知良好的状态,并重新处理故障发生之前的交易。

  • 🔁 它证明了什么: Opera灾难过后,恢复工作仍在继续,而不仅仅是备份文件存在。
  • 🧩 它位于: 一种非功能性测试技术,由训练有素的测试人员针对受保护的备份数据进行测试。
  • ⏱️ 恢复时间影响因素: 重启点、数据量以及恢复团队的技能和工具。
  • 🔄 过程形状: 正常运营、灾难、中断、恢复,然后重建恢复正常。
  • 💾 策略选择: 单次或多次备份,单站点或多站点备份,在线或离线备份,自动或手动备份。
  • 恢复后: 统计文件数量与原始文件夹数量,打开多种类型的文件,并使用系统实用程序比较目录。

软件测试中的恢复测试是什么?举例说明。

什么是恢复测试?

恢复测试 恢复测试是一种软件测试技术,用于验证软件从诸如软件或硬件崩溃、网络故障等故障中恢复的能力。恢复测试的目的是确定软件在灾难或完整性丢失后是否能够继续运行。恢复测试包括将软件回滚到已知完整性的状态,并重新处理直至故障点的事务。

在软件工程中,可恢复性测试是一种 非功能性测试 — 它涵盖与特定功能或用户操作无关的方面,例如可扩展性或安全性。这项工作由专业测试人员完成,并且事先会在安全位置保存充足的备份数据。

恢复测试示例

以下两个场景以最简单的方式展示了这项技术。在每个场景中,都会人为地强制造成故障,然后观察应用程序如何恢复运行。

  • 网络中断: 当应用程序正在从网络接收数据时,拔下连接线。过一段时间后,重新插上连接线,并分析应用程序是否能够从连接断开的位置继续接收数据。
  • 会话恢复: 在浏览器打开一定数量的会话的情况下重启系统,并检查浏览器是否恢复了所有会话。

下图以视觉形式表达了同样的概念。

恢复测试概念图,展示了系统发生故障后如何恢复到正常运行状态。

恢复所需的时间取决于:

  • 重启点数量
  • 应用程序保存的数据量
  • 开展恢复活动人员的培训和技能,以及可用的恢复工具

当出现多个故障时,恢复测试应该以结构化的方式进行,而不是一次性全部进行——先对一个部分进行测试,然后再对另一个部分进行测试。

恢复过程的生命周期

在设计测试用例之前,了解恢复测试介入的位置很有帮助。恢复过程的生命周期包含五个步骤:

  1. 正常运算
  2. 灾害发生
  3. 行动中断和失败
  4. 通过恢复过程进行灾难清理
  5. 重建所有流程和信息,使整个系统恢复正常运行。

下面的流程图按顺序显示了这五个阶段。

涵盖正常运行、灾难、中断、恢复和重建的恢复流程图生命周期

让我们详细讨论这五个步骤:

  1. 普通手术。 一个由硬件、软件和固件组成的系统,集成在一起以实现共同目标,在规定的时间内不间断地执行其设计任务。
  2. 灾难发生。 软件故障可能导致中断,其原因包括输入引起的故障、硬件故障导致的崩溃,或火灾、盗窃或罢工造成的损坏。
  3. 混乱和失败。 这是最痛苦的阶段,会导致业务损失、关系破裂、错失良机、工时浪费,以及不可避免的财务和商誉损失。灾难恢复计划可以最大限度地减少这一阶段的影响。
  4. 灾后清理。 如果事先制定了备用方案和风险缓解流程,恢复所需的时间和精力将大大减少。指定一个团队,并预先明确每个人的职责,可以明确责任,避免长时间的中断。
  5. 重建。 这可能需要多次操作才能重建所有文件夹及其配置文件。正确的恢复需要完善的文档和明确的重建流程。

恢复策略

恢复团队应制定自己的策略来恢复重要代码和数据,以使运营恢复正常。该策略因组织而异,取决于其所管理系统的关键性;对于关键系统而言,最终取决于一系列选择:

  1. 单个备份,或多个备份
  2. 多个备份可以保存在同一位置,也可以保存在不同位置。
  3. 在线备份或离线备份
  4. 备份可根据策略自动运行,也可手动触发。
  5. 一个独立的修复团队,或者负责这项工作的开发团队

每种选择都会产生成本,多次备份可能会消耗更多物理资源或需要独立团队。依赖性也很重要:公司如果将代码和数据保存在单一供应商处,就会面临风险,而大规模备份也会造成风险。 AWS 故障曾多次导致知名消费者服务同时离线。在这种情况下,独立的恢复能力至关重要。

如何进行恢复测试

策略已定,下一个问题是如何设置测试本身。执行恢复测试时应考虑以下几点。

  • 创建尽可能接近实际部署条件的测试平台:接口、协议、固件、硬件和软件应与生产环境相匹配。
  • 虽然详尽的测试可能耗时耗力,但仍然应该进行相同的配置和完整的检查。
  • 如果可能,请在最终要恢复到的硬件上进行测试——尤其是在恢复到与创建备份的机器不同的机器时。
  • 一些备份系统期望硬盘的大小与备份的硬盘大小完全相同。
  • 应对硬盘过时问题:硬盘技术发展迅速,旧硬盘可能与新硬盘不兼容。恢复到旧硬盘状态 虚拟机 这有助于虚拟化软件模拟现有硬件,包括磁盘大小。
  • 在线备份系统也不例外,需要进行测试。大多数服务提供商通过容错存储来保护用户免受介质问题的影响,因此故障往往在后期才会显现出来。
  • 尽管在线备份系统非常可靠,但必须对恢复方面进行测试,以确认检索、安全性或加密方面没有问题。

由于恢复训练贯穿整个赛程,因此这些训练通常会安排在训练间隙进行。 系统测试 而不是以单位为单位。

修复后的测试程序

数据恢复只是整个过程的一半;恢复后的副本还必须证明可用。大多数大型企业都会定期聘请独立审计人员进行恢复演练。维护和测试一套全面的灾难恢复计划成本高昂,因此规模较小的组织通常依赖备份和异地存储。

文件夹和文件恢复后,会进行以下检查以确认它们已正确恢复:

  • 重命名损坏的文档文件夹,以免恢复后的副本与之混淆。
  • 统计恢复文件夹中的文件数量,并与原始文件夹中的文件数量进行比对。
  • 使用通常使用这些文件的应用程序打开几个文件,并确认可以像往常一样浏览和更新数据。
  • 打开几个不同类型的文件——图片、 MP3文件和资料,有的很大,有的很小。
  • 使用大多数文件和目录比较实用程序。 操作系统 提供。

常见问题

故障转移测试检查流量是否能顺利切换到备用节点。恢复测试则更进一步,检查原始服务、其数据及其正在进行的事务是否恢复到正确状态。

恢复时间目标 (RTO) 是指恢复服务所需的时间;恢复点目标 (RPO) 是指可接受的数据丢失量。恢复测试会同时衡量这两项指标:RTO 用于衡量恢复时间,RPO 用于衡量恢复数据与上次已知良好状态的比较。

三种变体反复出现:站点级故障的灾难恢复、数据存储损坏的数据库恢复以及配置或依赖项损坏的环境恢复。每种变体都使用相同的生命周期,但故障触发条件不同。

机器学习模型会根据事件历史记录和依赖深度对服务进行排序,从而优先运行风险最高的恢复路径。此外,对恢复日志的异常检测还会标记出已完成但生成数据不完整的运行。

GitHub 副驾驶 能够快速编写故障注入辅助函数、恢复脚本和恢复后断言。测试人员仍然需要决定强制执行哪种故障以及正确的恢复状态是什么样的,因为两者都遵循业务规则。

年度演练很常见,关键系统则每季度进行一次演练。备份工具、存储平台或架构的任何变更都应触发新的演练,因为未经测试的变更会使之前的演练结果失效。

它会导致真正的失败,因此与……重叠 破坏性试验但目的是为了恢复系统,而不是为了破坏系统。请在隔离的测试环境中运行,不要使用实际生产数据。

记录注入的故障、开始和结束时间、测量的 RTO 和 RPO、需要人工干预的步骤,以及恢复数据中发现的所有差异。添加纠正措施和重新测试日期。

总结一下这篇文章: