从可测试的软件到自容错的软件

本文于2005年8月21日发表在搜狐博客

一直我为软件的集成、测试深受其苦,几十万行的软件尚且如此,一个更加庞大的系统又该如何。即使我们增强了单元测试的力度,同样不能解决有效集成的问题,换句话说就是,即使分系统测试通过,还是不能保证系统更好的集成。
以前我一直有个隐约的想法,软件系统也应该提供模拟仿真的功能,在仿真容器中运行之后,基本就可以可靠的运行于正式系统。在系统集成前,通过仿真环境就可以模拟集成时的情况,降低系统集成的成本。不过如何仿真,却是没有思路,想想就算了。
上周与朋友吃饭,朋友是《机电系统测试与诊断理论》方面的专家,谈起了飞船、卫星等系统的测试时间比较长,如果能够在设计中引入可测试性的设计,就可以在集成测试中比较容易的定位问题,大大减少测试的时间。朋友做过舰艇的故障检测,要是老一些的船没有相应接口,做起来就比较麻烦,如果能在系统的设计过程中预留测试接口,就顺利很多。
看来,可测试性的设计就是我想要的东西,平时我们也会做一些。例如一个事件管理器,addListener、removeListener、notify是对外接口,listenerSize就是一个测试性接口。对于软件系统来说,log只是个记录而已,是远远不够的。假如我在在系统启动时需要加载 5000 个资源,如果有一个BUG导致其中的一个资源加载失败,最好的方式就是在加载过程中提供若干测试接口,用来测试加载过程的状态,根据状态分析失败的原因,如果仅仅根据log进行分析,会是一个很痛苦的事情,如果故障的发生比较随机,就更加困难了。
初步的软件的可测试性设计和硬件、机械系统一样,需要在设计过程中,建立测试规范,定义测试接口,这些接口和对外的API一样,是系统的重要组成部分,有了可测试性的规范,仿真容器也就呼之欲出了,httpunit就是一个测试容器。两者结合,就可以认为经过测试的分系统很容易集成到上级系统中;集成的过程中也会很容易的检测到分系统的故障状态。
我想:如果有了可测试性的设计,系统即使在运行状态中,也可以对这些情况进行监控,利用这些中间状态信息,软件也能做到自我容错的功能。对于一个可靠性要求高的系统,容错是提高可靠性必不可少的方法。
不过朋友说,我们机电系统成本太高,需要这个,你们软件稍稍一改就好了,是不是真的需要呀?确实有道理,灵活是软件的优势,但是这种低成本的做法也多少伤害了软件的质量,例如交互式设计这个重要但是成本比较高的过程,就很少在我们的软件中体现
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 不用增加任何额外硬件投资,纯软件方式实现双机容错,且对备份机无硬件配置要求。 2. 可支持Notes、Exchange、SQL Server、Sybase、Informix、0racle、SAP等多种系统的应用层叠恢复。 3. 采用全球第一套基于NT操作系统的容错软件,并同时支持UNIX平台。支持远程灾难备份。 4. 支持共享磁盘阵列柜和扩展镜像两种方式,给用户提供了选择上的灵活性,同时也能适应各种机型、网络结构、软件平台及应用系统。 5. 在扩展镜像或共享磁盘阵列任意方式下,均能实现两台NT服务器各自运行不同应用且相互热备份,即实现双机Active运转模式。 6. 使用共享磁盘阵列柜方式时,最多可以支持16个节点,远远大于其它类似系统所支持的2个节点数。 7. 最大限度地保护用户端的应用连续性。用户的硬件资源(如网卡)及软件资源(如NT操作系统、数据库管理系统、数据库应用系统、电子邮件系统等)均能处于该容错系统的保护之下,当这些被保护资源出现技术故障时,容错系统可随时实施系统资源切换。如此,该容错系统真正实现了用户硬件或是软件资源发生故障时系统及应用层上的在线热切换。 8. 占用系统资源极少,不增加网络负荷,且不打扰任何具体应用系统的任何操作。 9. 真正实现无人值守,全自动地实现应用资源切换,且图形界面操作,简单方便。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值