什么是恢复测试?附示例
恢复测试
恢复测试是一种软件测试技术,用于验证软件从软件/硬件崩溃、网络故障等故障中恢复的能力。恢复测试的目的是确定在发生灾难或数据完整性丢失后,软件操作是否可以继续。恢复测试涉及将软件恢复到已知完整性的点,并重新处理事务直到故障点。
恢复测试示例
当应用程序从网络接收数据时,拔掉连接线。
- 一段时间后,重新插上电缆,分析应用程序从网络连接中断的那一刻起继续接收数据的能力。
- 在浏览器打开确定数量的会话时重启系统,并检查浏览器是否能够恢复所有会话。
在软件工程中,可恢复性测试是一种非功能测试类型。(非功能测试指软件中可能与特定功能或用户操作无关的方面,例如可扩展性或安全性。)
恢复所需的时间取决于
- 重启点的数量
- 应用程序的数量
- 执行恢复活动的人员的培训和技能以及可用的恢复工具。
当存在多个故障时,恢复测试不应处理所有故障,而应以结构化的方式进行,这意味着恢复测试应先针对一个部分进行,然后再针对另一个部分进行。
它由专业测试人员完成。在恢复测试之前,将足够的备份数据保存在安全位置。这样做是为了确保即使发生灾难,操作也能继续进行。
恢复过程的生命周期
恢复过程的生命周期可分为以下五个步骤
- 正常运行
- 灾难发生
- 操作中断和失败
- 通过恢复过程清除灾难
- 重建所有流程和信息,使整个系统恢复正常运行
让我们详细讨论这5个步骤:
- 由硬件、软件和固件组成的系统被集成以实现共同目标,并投入运行以执行明确且既定的目标。该系统被要求在规定时间内无中断地执行正常操作以完成设计任务。
- 中断可能由于软件故障、各种原因(例如输入引起的故障、硬件故障导致的软件崩溃、火灾、盗窃和罢工造成的损坏)而发生。
- 中断阶段是最痛苦的阶段,会导致业务损失、关系破裂、机会损失、工时损失以及不可避免的财务和商誉损失。任何明智的机构都应该有灾难恢复计划,以使中断阶段最小化。
- 如果在发生灾难和中断之前有正确的备份计划和风险缓解流程,那么恢复就可以在不损失太多时间、精力和能量的情况下完成。应指定一个人及其团队,并明确每个人的角色,以明确职责并帮助组织避免长时间的中断。
- 重建可能涉及多次操作会话,以重建所有文件夹和配置文件。应该有适当的重建文档和流程,以实现正确的恢复。
恢复策略
恢复团队应该有他们独特的策略来检索重要的代码和数据,以使机构的运作恢复正常。
该策略可能因组织所处理系统的关键性而异。
关键系统的可能策略可以如下设想
- 拥有一个或多个备份
- 在同一地点或不同地点拥有多个备份
- 拥有在线备份或离线备份
- 备份是根据策略自动完成,还是需要手动完成?
- 拥有独立的恢复团队,或者开发团队本身可以用于这项工作
这些策略中的每一个都有相关的成本因素,多个备份所需的多个资源可能会消耗更多的物理资源,或者可能需要一个独立的团队。
许多公司可能会因为其数据和代码对相关开发机构的依赖而受到影响。例如,如果亚马逊AWS停机,它将导致25%的互联网中断。在这种情况下,独立恢复至关重要。
如何进行恢复测试
执行恢复测试时应考虑以下事项。
- 我们必须创建一个尽可能接近实际部署条件的测试平台。接口、协议、固件、硬件和软件的更改应尽可能接近实际条件,如果不能完全相同。
- 尽管详尽的测试可能耗时且成本高昂,但应执行相同的配置和完整的检查。
- 如果可能,应在我们最终将恢复到的硬件上执行测试。如果我们恢复到与创建备份的机器不同的机器,则尤其如此。
- 一些备份系统期望硬盘驱动器的大小与备份源硬盘驱动器的大小完全相同。
- 必须管理过时问题,因为硬盘技术发展迅速,旧硬盘可能与新硬盘不兼容。解决此问题的一种方法是恢复到虚拟机。VMware Inc. 等虚拟化软件供应商可以配置虚拟机以模拟现有硬件,包括磁盘大小和其他配置。
- 在线备份系统也不例外。大多数在线备份服务提供商通过使用容错存储系统来保护我们免受媒体问题的直接影响。
- 虽然在线备份系统极其可靠,但我们必须测试系统的恢复端,以确保检索功能、安全性或加密没有问题。
恢复后的测试程序
大多数大型公司都有独立的审计师定期执行恢复测试演练。
维护和测试全面的灾难恢复计划的费用可能很高,对于小型企业来说可能难以承受。
较小的风险可能依赖于其数据备份和异地存储计划,以在灾难发生时挽救它们。
恢复文件夹和文件后,可以进行以下检查以确保文件已正确恢复
- 重命名损坏的文档文件夹
- 计算恢复文件夹中的文件并与现有文件夹进行匹配。
- 打开一些文件,确保它们可访问。务必使用通常使用它们的应用程序打开它们。并确保您可以浏览数据、更新数据或执行您通常执行的任何操作。
- 最好打开不同类型的几个文件,图片、mp3、文档,以及一些大文件和一些小文件。
- 大多数操作系统都提供可用于比较文件和目录的实用工具。
摘要
在本教程中,我们学习了恢复测试的各个方面,这些方面有助于了解系统或程序在发生故障后是否满足其要求。