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