(淮北供电公司235000)
摘要:随着国网公司信息化建设的不断推进,承载各类业务系统的服务器的可靠性和健壮性就显得尤为重要。建立一个完善的服务器测试框架具有切实的现实意义和需求。故障注入系统的建立,可以让用户注入各种模拟故障,来发现服务器的问题,通过修复这些问题从而达到更好的可靠性。本问结合故障注入系统的特点和实际应用,对故障注入系统进行了需求分析,并给出了一种故障注入系统实现方式。
关键词:服务器可靠性;故障注入;自动化
0引言
软件测试技术是保证软件质量、提高软件可靠性的重要手段,根据研究机构统计表明,国外软件开发机构大约40%的时间花在软件测试上,软件相关测试费用大约占开发总费用的30%-50%[1],对于安全性、可靠性要求更高的软件,会占用更高的测试费用比例。为了保证提供服务的计算机集群的可靠性和稳定性,需要对其进行测试,甚至是对其攻击,来检测其不足。服务器的测试具有复杂性,通过手工测试具有局限性,并且效率很低。如何保证服务器的可靠性和稳定性成为了一个范围广难度高的课题[2]。人们通常会比较关注软件开发的成本,测试成本却往往被忽视,然而软件测试成本和时间通常与开发软件所需要的时间和成本相近。因为我们知道一个非常简单的程序,其可能存在的输入输出的组合都是成千上万这种,而对服务器的测试用例更为复杂。如果在这种情况下,依靠手工来进行测试,将是一项及其繁重的劳动,当服务器集群的规模越来越大,这些都促进了自动化测试的发展和成长。
因此,一个自动化的测试框架就显得十分重要。故障注入系统就应运而生,它可以模拟数据丢失、数据错误、消耗服务器资源等情况来测试服务器的可靠性、稳定性和可用性,提高了测试的效率,减少了成本[3]。
1系统建设
1.1系统特点
故障注入系统主要目标是为了测试目标系统的稳定性和可靠性,从而让目标系统可以提供可靠、健壮的服务。故障注入系统与传统的自动化测试工具有着显著的区别。在一个分布式实时系统环境中的软件故障注入系统结构,一般分为三层:目标系统、通信网络、软件故障注入系统。故障类型有:内存故障、CPU故障、通信故障和服务故障。并且实验数据表明多数故障为通信故障、内存故障和CPU故障,其覆盖率分别为37.68%、15.47%和15.17%。而本故障注入系统实现了功能中包括了这三种故障模型的注入。提供web端访问。用户无需安装客户端,通过浏览器即可访问、登录系统,大大的提高的便捷性。并且故障注入系统提供了图形化的界面,使用户可以很快的熟悉使用方法、使用也更加的便捷。目标的系统的实时数据也会以图表形式实时展现给用户,方便了用户监控目标系统。提供接口。该故障注入系统将采用restfulAPI给用户提供接口,使用户可以将故障注入系统与自己的项目相结合,从而更加便捷的使用该系统。自定义故障类型。用户可以自定义故障注入的参数和故障的类型,更加的灵活的实现故障注入,系统能够保存用户的故障设置,当用户需要再次注入相同的故障时,就不需要重新设置参数。系统的执行日志也会显示在界面上,用户可以清晰的看见执行故障注入的成功与否,用户可以将日志保存在本地。
1.2系统功能结构
故障注入系统的工作的流程:首先将故障注入系统部署在服务器中,然后用户通过浏览器访问本系统,然后对云端的目标系统进行故障注入操作,本系统对目标系统进行监控,将目标系统的及时数据显示在网页端展现给用户。软件的结构图如图1所示。
图2、故障注入系统架构图
1.3故障模拟实现
(1)模拟目标系统服务不可用。系统可以通过三种方法来实现目标系统的服务不可用:暂停/重启电脑、停止服务、锁定端口。
(2)模拟网络不可用。服务器集群总会遇到各种各样的问题,比如网络不可用,系统利用linux系统自带的Iptables防火墙,通过策略配置实现各类网络访问行为的控制。
(3)模拟HTTP响应和请求。系统提供了模拟HTTP响应和请求的特性,可以将指定的HTTP请求转发至模拟服务器。
2、总结与展望
本系统可以用于电力公司各类业务系统的测试过程之中,结合了公司的软件、硬件资源,实现了模拟故障注入、模拟http请求/响应等功能。为保证服务器集群的稳定性和可靠性提供了一个测试工具,减少了手工测试操作的繁琐,提高了测试的工作效率,为公司的软件质量保证做出了重要贡献。
参考文献:
[1]张向,芳李华,姜英伟.软件测试自动化的实施方案[J].山西科技,2006,(4).
[2]朱宏峰.基于关键字驱动的Web自动化测试的研究[J].硅谷,2009,(24).
[3]庞东贺,冯刚,左德承,张展,杨孝宗.基于STAF的故障注入自动化测试平台.计算机工程,2012,38(7):34-36.