- 输入异常数据或进行异常操作,以检验系统的保护性。如果系统的容错性好,系统只给出提示或内部消化掉,而不会导致系统出错甚至崩溃。
- 灾难恢复性测试。通过各种手段,让软件强制性地发生故障,然后验证系统已保存的用户数据是否丢失,系统和数据是否能尽快恢复。
对于自动恢复需验证重新初始化、检查点、数据恢复和重新启动等机制的正确性;对于人工干预的恢复系统,还需估测平均修复时间,确定其是否在可接受的范围内。容错性好的软件能确保系统不发生无法意料的事故。
从容错性测试的概念可以看出,当软件出现故障时如何进行故障的转移与恢复有用的数据是十分重要的。
1.故障转移与数据恢复
故障转移是确保测试对象在出现故障时能成功完成故障的转移,并能从导致意外数据损失或数据完整性破坏的各种硬件、软件和网络故障中恢复。数据恢复可确保:对于必须持续运行的系统,一旦发生故障,备用系统将不失时机地“顶替”发生故障的系统,以避免丢失任何数据或事务。容错测试是一种对抗性的测试过程。在这种测试中,将把应用程序或系统置于(模拟的)异常条件下,以产生故障。例如设备输入/输出(I/O)故障或无效的数据库指针和关键字等。然后调用恢复进程并监测和检查应用程序和系统,核实系统和数据已得到了正确的恢复。
2.测试目标
确保恢复进程将数据库、应用程序和系统正确地恢复到预期的已知状态。测试中将包括以下各种情况:
- 客户机断电、服务器断电。
- 通过网络服务器产生的通信中断或控制器被中断。
- 断电或与控制器的通信中断周期未完成(数据过滤进程被中断,数据同步进程被中断)。
- 数据库指针或关键字无效,数据库中的数据元素无效或遭到破坏。
3.测试范围
应该使用为功能和业务周期测试创建的测试来创建一系列的事务。一旦达到预期的测试起点,就应该分别执行或模拟一下操作:
- 往软盘保存时,不插入软盘,或将软盘加写保护。
- 不接打印机,但进行打印操作。
- 客户机断电和服务器断电。
- 网络通信中断,如可以断开通信线路的连接,关闭网络服务器或路由器的电源。
- 控制器被中断、断电或与控制器的通信中断,模拟与一个或多个控制器及设备的通信,或实际取消这种通信。
一旦实现了上述情况(或模拟情况),就应该执行其他事务。而且一旦达到第二个测试点状态,就应调用恢复过程。在测试不完整的周期时,所使用的技术与上述技术相同,只不过异常终止或提前终止数据库进程本身。对以下情况的测试需要达到一个已知的数据库状态。当破坏若干个数据库字段、指针和关键字时,应该以手工方式在数据库中(通过数据库工具)直接进行。其他事务应该通过使用“应用程序功能测试”和“业务周期测试”中的测试来执行,并且应执行完整的周期。
4.完成标准
在所有上述情况中,应用程序、数据库和系统应该在恢复过程完成时立即返回到一个已知的预期状态。此状态包括仅限于已知损坏的字段、指针或关键字范围内的数据损坏,以及表明进程或事务因中断而未被完成的报表。
5.需考虑的特殊事项
恢复测试会给其他操作带来许多的麻烦。断开缆线连接的方法(模拟断电或通信中断)可能并不可取或不可行。所以,可能需要采用其他方法,例如诊断性软件工具。需要系统(或计算机操作)、数据库和网络组中的资源。这些测试应该在工作时间之外或在一台独立计算机上运行。
原文地址:http://blog.sina.com.cn/s/blog_5e5b64ea0100cdy3.html