设备为达到连续可运行目标,除了在硬件设计中考虑器件可连续无故障运行外,很重要的方面是软件在各种条件下可经受考验,持续工作。这需要在实现基本功能前提下,在软件中设计一系列容错性逻辑去保证。
为全面评估软件容错性和故障恢复能力,测试需要制造或模拟一系列条件,包括内部硬件故障条件、外部恶意攻击条件、偶发过载条件、软件资源耗尽条件、周边环境故障条件以及长时间正常负荷持续运行模拟。为了在产品开发的不同阶段组织针对性测试,这些测试行为又被明确定义并归类。
测试分类
1、协议健壮性测试
协议健壮性测试是为了找出特定协议的具体实现代码的弱点。是一种以破坏性手段去尝试运行软件的行为,通过用户接口的异常输入,使用异常协议消息交互引导软件进入未定义或未保护的状态。
对软件系统而言,合法输入组合以外的输入往往超出正常输入的组合,软件运行中总会遇到一些预期之外的输入。因此,软件需要有严格的合法性检查才能避免进入未知状态。协议健壮行测试的目标就是尽可能找出软件保护不周的问题。
在软件测试的早期阶段进行的参数边界值测试就属于健壮性测试的一部分。比如一个用户接口接受1-100的整数输入,那么1和100就是合法边界,大于100和小于1的输入都是非法输入。其他非整数型的输入也属于非法值,包括故意破坏检查输入条件的代码的一些组合(如超长输入值,空输入,格式化字符等)。软件面对的接口除了最终用户可见的部分之外,还有大量的软件组件之间的不可见部分,以及设备之间的通信协议接口。
除了单一输入的简单合法性判断,软件在组合输入和特定状态下可接受输入的定义更为复杂。为确认软件在各种条件下的运行正常,测试需要尝试尽可能多的组合。复杂的通信协议除了定义有逻辑化结构的 文格式,还有一系列的内部状态,要测试人员完全手工方式遍历这些状态,并且构造所有可能的异常组合输入条件是无法想象的,因此需要专用的测试工具和仪器专门检测软件对各种协议变异 文的处理。目前,商用化的测试工具已经很多,比如IxDefend协议健壮性测试套件和Mu Dynamics的fuzzing测试套件是比较强大的。为了达成在特定状态下注入错误,测试套件需要先完成一些合法的交互过程,使被测目标达到预设状态,然后再注入异常。复杂的协议需要事先配置很多参数去达成这种交互,而变异输入的变化和组合数量非常庞大,一个复杂协议经常达到几十万甚至上百万的测试用例,尽管有自动化测试工具,这种测试运行也要耗费大量的时间。因此,对参数的调整是测试需要关注的一个重要方面。
从系统测试的角度,观测协议健壮性的测试结果是比较困难的,一般是从系统外部观察整机是否存在异常,正在被测试的协议功能有没有停止响应,正常用户请求是否得到及时处理,设备的性能有没有下降。最容易被观测到现象是系统死锁或重启,系统性能变化或主要功能异常也能被及时发现。而一些细微的功能异常或资源耗费,很容易被测试人员忽视,在这里,测试工具也无能为力。
以IxDefend测试TLS-Server举例。
-
完成测试仪器与被测试设备的物理连接,并且将端口配置IP地址,开启TLS-Server服务。 -
通过测试仪器的GUI控制界面装入TLS Server测试套件,如图1所示。 -
配置TLS Server测试所需要的参数,包括被测试设备IP、TLS服务端口、超时时间等,如图2所示。 -
点击开始按钮启动测试运行。
测试运行期间,仪器会发送事先定义好的各种异常组合,并检查设备对这些 文的响应。一旦被测试设备失去任何响应,就记录为一次失败,并持续尝试下面的测试用例。如图3所示的是一个真实的运行记录,设备在某项测试运行后发生异常,该项目被标记为红色。测试人员可以根据该记录重现问题,并将设备异常信息一并提交给开发定位具体原因。
IGP收敛的测试实例。
如图4所示,被测试设备首先从B和C端口学习到大量的IGP路由信息,其中B端口的度量值优于C端口。测试仪器用稳定的流量由A端口发送,被测设备转发到B端口。测试仪器通过在B端口模拟拓扑变化,撤销一部分路由信息,受影响的流量开始丢失。被测试设备在完成路由计算后将这些流量重新路由到C端口上。测试仪器通过计算这个过程丢失的数据流量和发送速率折算收敛过程经历的时间。
在收敛 络之外来评估收敛时间时,可以使用相同的原则,根据发送流量的速率和被丢失 文数量计算出收敛经历的时间。收敛测试的另一个方向是故障恢复主路径时,对于流量的保护。理想的情况可以做到 络无中断地回切到主路径。然而不同的拓扑管理协议和具体实现技术有一定差别,很多情况下回切过程的流量丢失不能完全避免。
常见的收敛指标测试有二层 络STP收敛测试,RPR和RRPP环 收敛,三层路由协议RIP、OSPF、BGP收敛,以及双主控设备的主备倒换测试,VRRP设备倒换测试。为了减少拓扑管理协议在设备重启期间对周边 络的冲击,很多协议开发了Graceful Restart的功能,并通过控制与数据转发分离的Non-Stop Forwarding技术使流量转发近乎不中断。H3C的IRF2技术也可以将多个物理设备组成一个逻辑设备,以降低对STP、VRRP等慢收敛协议的依赖。所有这些技术的目标都是减少设备故障造成的 络影响,提高组 的可靠性,而评价这些技术的指标都是 络收敛时间。测试执行的步骤几乎是相同的,首先构建正常的 络拓扑,模拟故障发生,监测流量切换的过程和流量丢失的情况,计算切换需要的时间。
结束语
以上的几种测试类型基本覆盖了软件可靠性相关的测试。在具体的产品开发过程中,协议健壮性测试、硬件故障模拟测试、内存耗尽测试等适合在软件功能组件的开发过程中进行测试,而压力测试、收敛指标测试、拷机测试需要在系统整合并且功能稳定后才能实施,所以一般放在产品开发后期。经过全方位的可靠性测试并解决所有问题之后,软件系统可以应对各种内部外部的复杂情况,为用户提供更高可用性的健壮 络。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!