故障注入在智能网络管控系统测试中的应用研究
2023-05-30王敏
王敏
关键词:可靠性;可靠性测试;故障注入
中图分类号:TP393 文献标识码:A
文章编号:1009-3044(2023)02-0075-03
1 引言
随着云计算技术在各个行业的普及,基于云计算的软件在各个行业的应用也越来越广泛。云计算软件在长期运行过程中,经常会出现一些可靠性问题,虽然部分问题是低概率问题,但是问题一旦出现,会给整个系统造成严重的后果。智能网络管控系统作为全局网络设备的管理、控制和分析中心,在整个网络中的地位尤其重要,一旦出现问题,必然会带来非常严重的影响。为了避免此类问题,软件可靠性测试尤其重要。软件可靠性测试涵盖了需求分析、软件设计、测试设计、测试验证等各个阶段。在智能网络管控系统测试过程中,结合故障注入技术,在该软件系统中开展可靠性测试全过程,通过工作实践证明,故障注入测试在可靠性测试中的重要性。
2 故障注入概念
故障注入测试属于软件可靠性测试方法[1]中的一种,它是根据选定的故障模型,采用故障注入工具将故障注入系统中,通过采集系统对注入故障的反应信息,对系统进行可靠性分析[2]。
故障注入技术根据故障注入方式不同分为三种:硬件实现的故障注入、仿真实现的故障注入、软件实现的故障注入[3]。软件实现的故障注入是通过软件的方式模拟故障,通过修改软件的相关数据或软件的状态变量来模拟故障的产生,从而加速系统的失效[4]。通常情况下,软件系统的故障可能会隐藏得较深,需要在特定的环境或复杂的条件下才能触发,被动地等待故障发生后,再去定位和修复,这种方式是非常低效的,也无法全面保证软件系统的可靠性。软件故障注入能够在可控的条件下主动去触发故障,再进行分析和解决,从而保证软件系统可靠性测试的充分性[5]。
3 智能网络管控系统的故障注入测试
智能网络管控系统实现了物理网络与商业意图的有效连接,向下实现全局网络的集中管理、控制和分析,面向商业和业务意图使能资源云化、全生命周期自动化,以及数据分析驱动的智能闭环;向上提供开放网络API与IT快速集成。智能网络管控系统应用于运营商网络、数据中心、企业园区、企业专线等场景,让网络更加简单、智慧、开放和安全,加速运营商及企业的业务转型和创新。整个系统层级结构如图1 所示。
智能网络管控系统具有以下三个关键能力。第一个能力是管、控、析融合,实现以场景为中心的自治闭环。采用云化架构,将不同系统和流程中的数据统一到一个平台,拉通数据模型,匹配不同业务场景和各运维阶段的诉求,将业务意图封装在业务模型中,客户可根据业务诉求选择所需模型,多个业务模型以场景为中心封装在业务App中,闭环解决该场景的各类运维需求。第二个能力是云地协同,AI使能预测性网络维护。通过大数据处理技术,注入多种AI算法,实现网络流量实时可视和可预测、网络故障自动识别和预测、业务体验历史可回放和预测。第三个能力是开放可编程,使能开放App生态,提供开放可编程框架,南向支持与第三方网络控制器或者设备对接,北向与云端AI训练平台和IT应用快速集成。
智能网络管控系统的可靠性测试贯穿整个版本生命周期,可靠性测试过程主要包括:可靠性测试计划制定、需求分析、测试设计、测试执行和测试结果分析,如图2所示。
3.1 可靠性测试计划制定阶段
由版本测试经理制定版本测试计划,版本测试计划包含了各类专项测试计划,其中一个专项测试就是可靠性专项测试,该计划中需要明确可靠性测试范围、可靠性测试方法以及测试时间点等。
3.2 可靠性需求分析和测试设计阶段
测试架构师和测试工程师参与需求分析和开发设计的评审,从需求列表分析出可靠性测试需求,制定测试方案,并设计测试用例。可靠性测试方案和测试用例需通过测试架构师评审,再由测试工程师针对可自动化用例提前编写自动化测试脚本。
针对智能网络管控系统层级结构的特点,测试架构师设计了故障注入可靠性测试用例基线,故障类型主要分为节点故障、进程故障、网络故障、内存故障、CPU故障、磁盘故障、文件故障等七大类[6],如表1所示。各故障类型中包含多个测试用例,用例基线总数超过了200个。测试工程师可根据所负责模块的需求进行分析,从基线中选取适用的故障注入类型,生成各个模块的故障注入测试用例。
3.3 可靠性测试环境搭建
故障注入测试之前,必须首先完成测试环境的搭建,包括环境部署和软件产品的安装,以及故障注入工具的安装。
3.3.1 环境的部署和软件产品的安装
智能网络管控系统部署相对复杂,这里从服务器配置开始介绍整个硬件环境部署和软件产品的安装过程。
1)配置硬件设备
登录各服务器系统,配置IP和用户名密码,根据磁盘数量和磁盘可靠性要求配置RAID。
2)安装FusionCompute CAN 和FusionComputeVRM
各服务器主机节点首先安装FusionCompute CAN (Compute Node Agent),然后规划两个主机节点安装FusionCompute VRM(Virtual Resource Management),通过FusionCompute VRM 可以实现对虚拟资源和用户数据的统一管理,对外提供弹性计算、存储、IP等服务。
3)配置FusionCompute 安装VRM时,已经自动将VRM所在的两台CNA 主机添加到FusionCompute管理系统中。为了管理所有的CNA主机,需要在FusionCompute管理界面手动添加其余的CNA主机,并将新添加主机的存储资源都添加到FusionCompute中。
虛拟机管理软件FusionCompute安装完成后,默认会创建一个ManagementDVS虚拟分布式交换机,用于业务分发平面(和CNA、VRM地址规划所在平面相同)。需要再创建1个虚拟分布式交换机,用于内部通信。虚拟交换机通过上行链路连接到物理机网口,通过端口组连接到虚拟机网口,创建虚拟交换机的同时需要添加上行链路和创建端口组才能正常工作。
4)创建虚拟机
FusionCompute 完成配置后,可通过本地模板创建虚拟机。通过https://VRM 节点IP地址:8443登录FusionCompute,选择本地相应的虚拟机模板文件创建相应操作系统的虚拟机,虚拟机安装操作系统后需要进行必要的网络配置。
5)安装产品软件
完成上述规划后,即可通过EasySuite软件,根据计划安装的集群选取虚拟机节点数量,安装对应的智能网络管控系统版本。
3.3.2 故障注入测试工具安装
这里介绍TC工具、CFE工具、客户端命令、ARES 工具四种故障注入方法[7],在测试过程中,主要通过ARES工具实现故障注入测试。
1)TC工具注入
TC(Traffic Control)流量控制器,是Linux自带的模块。通过TC命令可以注入网络丢包、网络错包以及网络延时等故障。
2)CFE工具注入
CFE(Common Fault-injection Entry)工具是公司自研的故障注入工具,在Linux系统中通过CFE命令方式可以实现进程故障、CPU故障、内存故障、磁盘故障等多种故障注入。
3)客户端命令注入
通过客户端软件登录虚拟机,实现虚拟机复位、进程重启等故障,也可以通过Linux操作系统的ifcon?fig实现虚拟机网络端口故障。
4)ARES工具注入
ARES工具是公司基于CFE自研的可视化故障注入工具,可通过Web界面实现各类故障注入测试。该工具集成了TC工具、CFE工具、客户端命令支持的所有故障注入类型,且操作界面方面简单,不需要记忆各种操作命令。
因为ARES工具操作简单,故障注入测试优先选用ARES工具进行测试。首先,将ARES客户端安装包上传到需要注入故障的各个虚拟机,并进行安装。然后,登录ARES服务器Web页面,通过输入虚拟机IP、用户名和密码进行连接,连接虚拟机成功后,就可以针对虚拟机进行各类故障注入测试。
3.4 可靠性测试执行
完成智能网络管控系统和故障注入工具安装后,就可以按照可靠性测试用例进行测试执行。可靠性测试执行方式包括自动化执行和手工执行两部分。
测试工程师在需求交付后,完成自动化脚本的调试和执行,所有脚本提交到自动化工厂,经自动化工厂验收通过后方可纳入自动化工厂脚本。无法实现自动化的脚本,则由测试工程师手工执行。根据版本可靠性测试计划,在相应迭代开发时间点,由自动化工厂完成全部可靠性腳本执行,并由测试工程师完成脚本分析和手工测试执行。
无论是自动化测试还是手工测试,故障注入测试过程如图3所示。首先,需完成业务背景的部署,要求按照业务满规格的一定比例进行部署,具体比例由开发架构师和测试架构师审核达成一致。然后,执行相关业务配置,完成业务配置后,注入故障。在注入故障的同时,进行业务检查。由于此时处于故障注入状态,部分业务会显示不正常状态,因此需要选择可预估的业务状态进行检查。最后,撤销故障注入,再次进行业务检查,所有业务状态都应该恢复正常。为了能更好地发现低概率问题,故障注入自动化测试也可用作夜航脚本,利用晚上的时间反复执行后,再去检查系统状态,通过夜航脚本可以更高效地发现问题。
3.5 可靠性测试结果分析
在多个版本的可靠性测试过程中,故障注入测试发现了很多有价值的可靠性问题,如典型故障有:
1)集群环境中某个节点注入故障后,整个集群不能感知该节点故障,业务继续下发到故障节点,导致业务处理失败。
2)构造集群中某个节点上关键配置文件损坏故障后,无法从集群中其他节点获取最新配置文件,导致该节点异常。
3)通过设置超大日志或者大量日志文件,触发日志文件绕接场景,发现日志绕接失败,日志文件过多,导致磁盘空间满。
通过对每一轮故障注入测试发现问题的故障分析,甄别出典型故障,并在版本的各个模块发起测试排查,同步完善可靠性测试用例基线。经过测试执行闭环和基线用例闭环,进一步提升了版本的可靠性质量。
4 结束语
随着软件系统在长期使用过程中,暴露出越来越多的可靠性问题,可靠性测试的重要性也在逐步提升,做好软件的可靠性测试,对于提升整个软件的产品质量,提高系统的稳定性和安全性,尤为重要。在智能网络管控系统的可靠性测试中结合故障注入技术,使系统可靠性测试的故障类型更加全面,同时也提高了低概率问题发现的效率,故障注入技术已经成为可靠性测试中不可缺少的重要手段。