基于staf的高端容错机故障注入自动化测试平台及方法

文档序号:6429559阅读:115来源:国知局
专利名称:基于staf的高端容错机故障注入自动化测试平台及方法
技术领域
本发明涉及故障注入技术。
背景技术
航天、金融、邮电等领域中应用的计算机系统在运行过程中不可避免会受到各种环境的干扰。如果系统发生故障,会造成严重的后果和重大损失。为了提高计算机系统的可靠性,满足长运行时间的要求,通常需要包含容错功能,这对容错系统本身的可靠性又提出了较高要求,使系统在发生故障时,仍然能可靠的运行,容忍故障的发生。由此可见,系统中所采用的容错技术必须进行测试和分析,从而保证所设计的容错系统真正实现能够对预定故障正确处理的目标,然而在实验中开发的容错计算机系统面临着如何在使用前进行测试的问题,如果在系统出现问题时再对其进行测试和分析,就会造成重大损失,因此必须系统投入使用之前,进行故障模拟和故障分析,进而评价系统容错能力。故障注入技术是用于验证容错系统设计正确性和评价容错性能的重要方法。现有的故障注入技术大部分采用故障注入工具实现,但是,注入的故障种类比较单一,并且同时只能够向一台目标服务器进行故障注入,不适用于对高端容错计算机的故障注入测试需求。

发明内容
鉴于高端容错计算机故障注入测试的实际需求,本发明设计了一种基于STAF的高端容错机故障注入自动化测试平台及方法。本发明所述的基于STAF的高端容错机故障注入自动化测试平台是基于下述分布式测试环境建立的,所述分布式测试环境是基于STAF搭建的自动化、分布式测试环境,该环境包括控制机、测试代理服务器组、FTP服务器、监视器、目标服务器和数据服务器,其中,控制机,是整个测试环境中的控制端,用于管理、控制整个自动化测试流程; 它通过底层的STAF服务,向测试环境中的各个测试结点提交自动化测试任务,同时监视测试结点的任务执行情况,并将任务执行进展相关数据发送给监视器;监测器,用于将控制机发送的任务执行进展相关数据显示输出,还用于实时显示目标服务器的系统关键性能信息,所述系统关键性能信息包括目标服务器的CPU性能参数、内存使用率、磁盘IO速率、网络速率等,还用于在监控结束后导出监控日志和日志分析文件;FTP服务器,保存与故障注入自动化测试相关的所有文件和脚本,通过文件系统服务下载到指定的计算机,所述指定的计算机包括目标服务器,测试代理服务器;数据服务器,用于收集和存储故障注入实验生成的所有结果;目标服务器,是待测高端容错计算机,是基于故障注入方法进行可用性评测的目标对象;
测试代理服务器组,用于监听并接收控制机发送来的测试任务信息,并执行相应的测试操作,同时反馈测试过程和结果给控制器;该测试代理服务器组由两台测试代理服务器组成,其中,一台测试代理服务器用于运行负载发生器,实现根据控制机的命令产生负载信息给目标服务器;另一台测试代理服务器用于执行向目标服务器注入故障,观察系统对故障的反应,结合负载变化,分析系统相关性能,实现向目标服务器模拟注入故障,评测相关性能的任务;基于上述分布式测试环境的故障注入自动化测试平台由软件实现,它包括应用层、代理层和实现层,其中,应用层为运行在总控端服务中的应用程序,该应用程序利用关系型数据库和文件系统来管理自动化测试过程中的数据和信息,并提供友好的图形界面与用户交互;代理层,运行在应用层和实现层中间,实现任务代理,在后台运行,负责执行用户从界面中提交的自动化测试任务;所述任务代理由任务控制代理背景程序组成,实现层,指运行在自动化测试控制服务器最底层的STAF进程及其提供的包括 STAX在内的各种服务,在该层,封装了自动化测试控制服务器与各种平台的测试代理间通信、执行各种自动化测试具体操作。本发明所述测试相关的文件和脚本包括负载发生器安装程序及工作脚本、故障注入服务安装程序及工作脚本、测试监控服务安装程序及工作脚本。本发明所述的应用层能够把展现和逻辑完全分离开来,增强了系统的可拓展性和可维护性。本发明所述的应用层是按照MVC应用模型的设计思想设计的,该应用层中的总控端服务由视图层、控制器和模型三个部分组成,其中视图层View,用于根据控制器发送的数据提供人机交互界面,实现与评测人员的信息交互,例如可以选择现场制定测试参数,或选择直接从监测机上的SQL数据库中读取测试参数文件;所述视图层的代码全部是软件界面的布局,不包含业务逻辑;控制器Controller,负责分析用户请求并调用合适的模型来处理,还用于实现模型与视图层之间的数据交互;还用于提供人机交互界面需要显示的事件及响应给视图层, 还负责数据的组织,然后交由Model中的STAF传输或者交由DB存储,本发明所述的模型,封装了各种业务逻辑,用于在控制器的调用下实现相应的逻辑动作。所述模型包括测试策略生成管理模块、用户管理模块、测试代理资源管理模块、动态部署模块、自动化测试任务管理模块、测试日志管理模块、结果回收模块、结果分析模块和结果显示模块,其中测试策略生成管理模块用于接收测试参数或测试参数文件,并根据所述测试参数或测试参数文件生成命令控制字;用户管理模块用于管理系统用户信息,并控制系统访问权限;测试代理资源管理模块用于管理整个测试系统中的测试机资源,对这些资源进行合理分配利用;动态部署模块根据人工测试流程采用消息触动机制,应用文件系统服务将FTP服务器上保存的相应程序及脚本分发到分布式测试环境中;自动化测试任务管理模块用于负责自动化测试任务的上传、分类、查询、提交、中断等测试流程中的相关操作;测试日志管理模块用于管理包括自动化测试任务的实时运行日志、测试报告、历史记录等信息;结果回收模块用于实时收集目标系统面对故障的不同反应,并根据所述反映生成故障注入结果;结果分析模块运行于监测机内,用于分析从目标机传来的故障注入结果,并计算相关指标,生成结果报表;结果显示模块用于将结果分析模块发送的结果报表显示在用户界面上,同时保存于监测机的数据库中。基于上述故障注入自动化测试平台的自动化测试方法为1)准备工作,在待测目标机上安装负载模拟子系统;2)控制机从FTP服务器上下载最新的负载发生器和故障注入的安装代码及配套的安装、执行脚本;3)根据配置文件,控制机利用STAF的FS服务将上述安装代码及配套的安装、执行脚本分发、部署到相应的测试代理、服务器上,运行安装脚本,安装相关程序;4)受限于可用性测试套件运行流程,控制机检查目标服务器的运行状况;5)控制机在加载负载发生器的测试代理上运行执行脚本,向对应的目标服务器上施加负载;6)控制机在加载故障注入的测试代理上运行执行脚本,开始对目标服务器进行故障注入;故障注入完毕后,加载故障注入的测试代理将测试结果送回控制机。本发明是基于开源的自动化测试工具STAF(Software Testing Automation Framework)构建的、分布式的、自动化的、可集成多种软件故障注入工具的故障注入平台。


图1是本发明所述的故障注入自动化测试系统的分布式测试环境的结构示意图。 图具体实施方式
五中所述的故障注入自动化测试原理示意图。图3是本发明所述的自动化测试平台软件架构示意图。
具体实施例方式具体实施方式
一本实施方式所述的基于STAF的高端容错机故障注入自动化测试平台,是基于下述分布式测试环境建立的,所述分布式测试环境是基于STAF搭建的自动化、分布式测试环境,该环境包括控制机4、测试代理服务器组、FTP服务器5、监视器3、目标服务器7 (待测高端容错计算机)和数据服务器6,其中,控制机4,是整个测试环境中的控制端,用于管理、控制整个自动化测试流程;它通过底层的STAF服务,向测试环境中的各个测试结点提交自动化测试任务,同时监视测试结点的任务执行情况,并将任务执行进展相关数据发送给监视器3 ;
监测器,用于将控制机4发送的任务执行进展相关数据显示输出,还用于实时显示目标服务器7的系统关键性能信息,所述系统关键性能信息包括目标服务器7的CPU性能参数、内存使用率、磁盘IO速率、网络速率等,还用于在监控结束后导出监控日志和日志分析文件;FTP服务器5,保存与故障注入自动化测试相关的所有文件和脚本,通过文件系统服务下载到指定的计算机,所述指定的计算机包括目标服务器7,测试代理服务器;数据服务器6,用于收集和存储故障注入实验生成的所有结果;本实施方式中,采用SQL数据库文件作为存储数据的形式,此处统一收集各个被测高端容错机的测试实验结果,方便评测人员管理、分析。目标服务器7,也是待测高端容错计算机,是基于故障注入方法进行可用性评测的目标对象;等同于前文介绍的故障注入平台中的目标机,根据故障注入平台的工作原理,目标机需要下载安装故障注入服务程序;测试代理服务器组,用于监听并接收控制机4发送来的测试任务信息,并执行相应的测试操作,同时反馈测试过程和结果给控制器;为了模拟真实环境下的目标系统,该测试平台在运行负载的条件下进行故障注入,因此该测试代理服务器组由两台测试代理服务器组成,其中,一台测试代理服务器2用于运行负载发生器,实现根据控制机4的命令产生负载信息;另一台测试代理服务器1用于执行向对应的目标服务器7注入故障,观察系统对故障的反应,结合负载变化,分析系统相关性能。实现向特定服务器模拟注入故障,评测相关性能的任务;基于上述分布式测试环境的故障注入自动化测试平台有软件实现,它包括应用层、代理层和实现层,其中,应用层为运行在总控端服务中的应用程序,该应用程序利用关系型数据库和文件系统来管理自动化测试过程中的数据和信息,并提供友好的图形界面与用户交互;代理层,运行在应用层和实现层中间,实现任务代理,在后台运行,负责执行用户从界面中提交的自动化测试任务;所述任务代理由任务控制代理背景程序组成,实现层,指运行在自动化测试控制服务器最底层的STAF进程及其提供的包括 STAX在内的各种服务,在该层,封装了自动化测试控制服务器与各种平台的测试代理间通信、执行各种自动化测试具体操作。对于高层来说,实现层可以当作是透明的。本实施方式中所述测试相关的文件和脚本包括负载发生器安装程序及工作脚本、故障注入服务安装程序及工作脚本、测试监控服务安装程序及工作脚本。本实施方式中的基于STAF的高端容错机故障注入自动化测试平台可以实现对多个故障注入目标的多种故障注入,当需要对多个故障注入目标进行故障注入时,所述分布式测试环境中包括多个目标服务器7,每个目标服务器7的对应配有一个测试代理服务器组,参见图1中虚框内部所示。
具体实施方式
二,本实施方式是对具体实施方式
一所述的基于STAF的高端容错机故障注入自动化测试平台中的应用层做进一步说明,本实施方式中,应用层是按照MVC 应用模型的设计思想设计的,该应用层中的总控端服务由视图层、控制器和模型三个部分组成,其中
视图层View,用于根据控制器发送的数据提供人机交互界面,实现与评测人员的信息交互,例如可以选择现场制定测试参数,或选择直接从监测机上的MySQL数据库中读取测试参数文件。所述视图层的代码全部是软件界面的布局,不包含业务逻辑;控制器Controller,负责分析用户请求并调用合适的模型来处理,还用于实现模型与视图层之间的数据交互,例如将模型处理结果数据进行组织并发送给视图层实现显示,将视图层输入的数据进行组织之后发明模型;还用于提供人机交互界面需要显示的事件及响应给视图层,在这一部分中,还会负责数据的组织,然后交由Model中的STAF传输或者交由DB存储,所述控制器实现的是业务逻辑部分。本发明所述的应用层能够把展现和逻辑完全分离开来,增强了系统的可拓展性和可维护性。本发明所述的应用层是按照MVC应用模型的设计思想设计的,该应用层中的总控端服务由视图层、控制器和模型三个部分组成,其中视图层View,用于根据控制器发送的数据提供人机交互界面,实现与评测人员的信息交互,例如可以选择现场制定测试参数,或选择直接从监测机上的SQL数据库中读取测试参数文件;所述视图层的代码全部是软件界面的布局,不包含业务逻辑;控制器Controller,负责分析用户请求并调用合适的模型来处理,还用于实现模型与视图层之间的数据交互;还用于提供人机交互界面需要显示的事件及响应给视图层, 还负责数据的组织,然后交由Model中的STAF传输或者交由DB存储,模型,封装了各种业务逻辑,用于在控制器的调用下实现相应的逻辑动作。
具体实施方式
三,本实施方式是对具体实施方式
二所述的基于STAF的高端容错机故障注入自动化测试平台中的模型做进一步说明,所述模型包括测试策略生成管理模块、用户管理模块、测试代理资源管理模块、动态部署模块、自动化测试任务管理模块、测试日志管理模块、结果回收模块、结果分析模块和结果显示模块,其中测试策略生成管理模块用于接收测试参数或测试参数文件,并根据所述测试参数或测试参数文件生成命令控制字;用户管理模块用于管理系统用户信息,并控制系统访问权限;测试代理资源管理模块用于管理整个测试系统中的测试机资源,对这些资源进行合理分配利用;动态部署模块根据人工测试流程采用消息触动机制,应用文件系统服务将FTP 服务器5上保存的相应程序及脚本分发到分布式测试环境中;需要指出的是,此处的任务调度支持多台待测高端容错计算机故障注入任务的并行执行;自动化测试任务管理模块用于负责自动化测试任务的上传、分类、查询、提交、中断等测试流程中的相关操作;测试日志管理模块用于管理包括自动化测试任务的实时运行日志、测试报告、历史记录等信息;结果回收模块用于实时收集目标系统面对故障的不同反应,并根据所述反映生成故障注入结果;结果分析模块运行于监测机内,用于分析从目标机传来的故障注入结果,并计算相关指标,生成结果报表;结果显示模块用于将结果分析模块发送的结果报表显示在用户界面上,同时保存于监测机的数据库中。方便评测人员查询。
具体实施方式
四,本实施方式是对具体实施方式
二所述的基于STAF的高端容错机故障注入自动化测试平台中的应用层实现任务代理过程的进一步说明,本实施方式中, 所述应用层实现任务代理的流程为首先向底层的STAF注册一个标志此代理(Agent)进程唯一身份的句柄,记为STAFHandle ;接着以一定的时间间隔不断地监测数据库中的数据变化,获取所有处于“等待执行”状态的任务列表,然后调用类AutoTestJobExecutor来逐个执行这些任务;在任务控制代理的过程中,监听STAF消息队列,一旦接收到用户发送的停止消息(MSG_ST0P),任务控制代理在退出自身进程前,并通知底层STAF停止正在运行的所有任务,并更新这些任务在数据库中的状态为“已中止”。该种方法相比于直接终止任务控制代理进程的方式更为安全,确保了数据的完整性。本实施方式中所述的任务控制代理使用多线程的方法来支持多任务并发执行,每一个线程都独立处理一个自动化测试任务的执行过程。为了防止并发的多个任务使用同一台测试代理,在执行任务之前,利用STAF的信号量服务来申请对目标机器的使用权限,在任务结束时再释放该资源,从而确保在执行任务的过程中,目标测试代理不会被其他的任务使用,进而保证一台测试代理在任意时刻最多只为一个自动化测试任务所占用。
具体实施方式
五,本实施方式是对具体实施方式
四所述的基于STAF的高端容错机故障注入自动化测试平台中的类AutoTestJobExecutor执行某一任务的过程的进一步说明,本实施方式中,所述类AutoTestJobExecutor封装了执行某个自动化测试任务的所有细节,执行自动化测试任务的具体过程为1)根据测试任务编号(job Id)从数据库读取任务信息,所述任务信息包括目标机器、任务XML文件、入口函数、所有参数值,所述参数值是指测试数据;2)注册一个STAF句柄,若失败,则执行步骤12);3)申请对目标机器的MUTEX访问资源,若失败,则执行步骤11);4)记录任务开始时刻为tl。5)向底层STAF的STAX Service提交任务,若提交失败,则更改数据库中该任务状态为“执行失败”,然后执行步骤10);6)更新数据库,更改该任务状态为“正在执行”;7)向STAF提出等待,直到STAX返回任务结果RC或超过最长等待时间tmax,如果超时,则更新数据状态为“等待超时”,然后执行步骤10);8)记当前时刻为t2,统计任务执行时间为t = t2-tl ;9)若RC为0,则更改该任务状态为“成功”,否则更改该任务状态为“失败”;10)释放 MUTEX 资源;11)注销 STAF 句柄。
具体实施方式
五,本实施方式是对具体实施方式
一所述的基于STAF的高端容错机故障注入自动化测试平台中的故障注入管理服务模块的进一步说明,本实施方式中,所述故障注入管理服务模块中包括多个故障注入工具和多个构件,每个构件在实现层发送的命令的控制下负责控制一个故障注入工具实现故障注入,每个故障注入工具在实现故障注入之后,将故障注入结果反馈给实现层。本实施方式中,所述多个故障注入模块包括=Ptrace故障注入工具、基于内核模拟的寄存器故障注入工具、软件实现的内存故障注入工具、基于PAL实现的MCA错误故障注入工具、SCSI驱动层故障注入工具和文件系统故障注入工具。故障注入模块是该测试平台的一个核心模块,在整个测试流程中发挥重要的作用,本文采用基于构件的方式开发该模块。如图3所示,故障注入模块由多个构件组成,其中每个构件对应一种故障注入方法,它们以并联的方式与故障注入管理服务连接。当需要增加或删除故障注入方法时,只需增删其中的构件即可。这种方式实现了故障注入平台的灵活组态,同时也减小了各故障注入工具间的耦合度。上述构件均由三部分组成,其开发遵循统一的标准。构件行为描述了构件所能实现的功能,即对应故障注入工具的功能。构件属性代表构件的状态,具体通过ID与描述信息唯一标识各故障注入工具。构件接口是供外部模块使用的方法,具体通过动态链接库的方式提供四个接口函数初始化、获取工具信息、接收消息及退出运行。故障注入模块由多个构件组成,其中每个构件对应一种故障注入方法,它们以并联的方式与主控模块连接。当需要增加或删除故障注入方法时,只需增删其中的构件即可。这种方式实现了故障注入平台的灵活组态,同时也减小了各模块间的耦合度。本实施方式中的Ptrace故障注入工具,用于通过访问和修改进程内存映像中的寄存器值,实现故障注入;是基于UNIX通用的PtraceO系统调用开发而成的。该故障注入工具运行在用户态,针对应用进程层注入寄存器故障。Ptrace提供了一种使父进程得以监视和控制子进程的方式,能够访问和修改子进程中的寄存器和内存映像,因而可以实现对进程的断点调试和跟踪等。Ptrace故障注入工具能够注入寄存器故障和内存故障。故障类型包括位翻转,恒 0,恒1,随机错等。触发方式包括单步调试触发和计时触发两种。Ptrace故障集如下表所示表IPtrace故障注入工具故障集
权利要求
1.基于STAF的高端容错机故障注入自动化测试平台,其特征在于,所述测试平台是基于下述分布式测试环境建立的,所述分布式测试环境是基于STAF搭建的自动化、分布式测试环境,该环境包括控制机(4)、测试代理服务器组、FTP服务器( 、监视器( 、目标服务器(7)和数据服务器(6),其中,控制机G),是整个测试环境中的控制端,用于管理、控制整个自动化测试流程; 它通过底层的STAF服务,向测试环境中的各个测试结点提交自动化测试任务,同时监视测试结点的任务执行情况,并将任务执行进展相关数据发送给监视器(3);监测器,用于将控制机(4)发送的任务执行进展相关数据显示输出,还用于实时显示目标服务器(7)的系统关键性能信息,所述系统关键性能信息包括目标服务器(7)的CPU 性能参数、内存使用率、磁盘IO速率、网络速率等,还用于在监控结束后导出监控日志和日志分析文件;FTP服务器( ,保存与故障注入自动化测试相关的所有文件和脚本,通过文件系统服务下载到指定的计算机,所述指定的计算机包括目标服务器(7),测试代理服务器;数据服务器(6),用于收集和存储故障注入实验生成的所有结果;目标服务器(7),是待测高端容错计算机,是基于故障注入方法进行可用性评测的目标对象;测试代理服务器组,用于监听并接收控制机(4)发送来的测试任务信息,并执行相应的测试操作,同时反馈测试过程和结果给控制器;该测试代理服务器组由两台测试代理服务器组成,其中,一台测试代理服务器( 用于运行负载发生器,实现根据控制机(4)的命令产生负载信息给目标服务器(7);另一台测试代理服务(1)器用于执行向目标服务器(7) 注入故障,观察系统对故障的反应,结合负载变化,分析系统相关性能,实现向目标服务器 (7)模拟注入故障,评测相关性能的任务;基于上述分布式测试环境的故障注入自动化测试平台由软件实现,它包括应用层、代理层和实现层,其中,应用层为运行在总控端服务中的应用程序,该应用程序利用关系型数据库和文件系统来管理自动化测试过程中的数据和信息,并提供友好的图形界面与用户交互;代理层,运行在应用层和实现层中间,实现任务代理,在后台运行,负责执行用户从界面中提交的自动化测试任务;所述任务代理由任务控制代理背景程序组成,实现层,指运行在自动化测试控制服务器最底层的STAF进程及其提供的包括STAX在内的各种服务,在该层,封装了自动化测试控制服务器与各种平台的测试代理间通信、执行各种自动化测试具体操作。
2.根据权利要求1所述的基于STAF的高端容错机故障注入自动化测试平台,其特征在于,所述测试相关的文件和脚本包括负载发生器安装程序及工作脚本、故障注入服务安装程序及工作脚本、测试监控服务安装程序及工作脚本。
3.根据权利要求1所述的基于STAF的高端容错机故障注入自动化测试平台,其特征在于,所述的应用层是按照MVC应用模型的设计思想设计的,该应用层中的总控端服务由视图层、控制器和模型三个部分组成,其中视图层View,用于根据控制器发送的数据提供人机交互界面,实现与评测人员的信息交互,例如可以选择现场制定测试参数,或选择直接从监测机上的SQL数据库中读取测试参数文件;所述视图层的代码全部是软件界面的布局,不包含业务逻辑;控制器Controller,负责分析用户请求并调用合适的模型来处理,还用于实现模型与视图层之间的数据交互;还用于提供人机交互界面需要显示的事件及响应给视图层,还负责数据的组织,然后交由Model中的STAF传输或者交由DB存储,模型,封装了各种业务逻辑,用于在控制器的调用下实现相应的逻辑动作。
4.根据权利要求3所述的基于STAF的高端容错机故障注入自动化测试平台,其特征在于,所述模型包括测试策略生成管理模块、用户管理模块、测试代理资源管理模块、动态部署模块、自动化测试任务管理模块、测试日志管理模块、结果回收模块、结果分析模块和结果显示模块,其中测试策略生成管理模块用于接收测试参数或测试参数文件,并根据所述测试参数或测试参数文件生成命令控制字;用户管理模块用于管理系统用户信息,并控制系统访问权限;测试代理资源管理模块用于管理整个测试系统中的测试机资源,对这些资源进行合理分配利用;动态部署模块根据人工测试流程采用消息触动机制,应用文件系统服务将FTP服务器( 上保存的相应程序及脚本分发到分布式测试环境中;自动化测试任务管理模块用于负责自动化测试任务的上传、分类、查询、提交、中断等测试流程中的相关操作;测试日志管理模块用于管理包括自动化测试任务的实时运行日志、测试报告、历史记录等信息;结果回收模块用于实时收集目标系统面对故障的不同反应,并根据所述反映生成故障注入结果;结果分析模块运行于监测机内,用于分析从目标机传来的故障注入结果,并计算相关指标,生成结果报表;结果显示模块用于将结果分析模块发送的结果报表显示在用户界面上,同时保存于监测机的数据库中。
5.根据权利要求1所述的基于STAF的高端容错机故障注入自动化测试平台,其特征在于,所述应用层实现任务代理的流程为首先向底层的STAF注册一个标志此代理进程唯一身份的句柄,记为STAFHandle ;接着以一定的时间间隔不断地监测数据库中的数据变化, 获取所有处于“等待执行”状态的任务列表,然后调用类AutoTestJobExecutor来逐个执行这些任务;在任务控制代理的过程中,监听STAF消息队列,一旦接收到用户发送的停止消息MSG_ST0P,任务控制代理在退出自身进程前,并通知底层STAF停止正在运行的所有任务,并更新这些任务在数据库中的状态为“已中止”。
6.根据权利要求5所述的基于STAF的高端容错机故障注入自动化测试平台,其特征在于,所述类AutoTestJobExecutor封装了执行某个自动化测试任务的所有细节,执行自动化测试任务的具体过程为1)根据测试任务编号job Id从数据库读取任务信息,所述任务信息包括目标机器、任务XML文件、入口函数、所有参数值,所述参数值是指测试数据;2)注册一个STAF句柄,若失败,则执行步骤12);3)申请对目标机器的MUTEX访问资源,若失败,则执行步骤11);4)记录任务开始时刻为tl;5)向底层STAF的STAXService提交任务,若提交失败,则更改数据库中该任务状态为 “执行失败”,然后执行步骤10);6)更新数据库,更改该任务状态为“正在执行”;7)向STAF提出等待,直到STAX返回任务结果RC或超过最长等待时间tmax,如果超时, 则更新数据状态为“等待超时”,然后执行步骤10);8)记当前时刻为t2,统计任务执行时间为t= t2-tl ;9)若RC为0,则更改该任务状态为“成功”,否则更改该任务状态为“失败”;10)释放MUTEX资源;11)注销STAF句柄。
7.根据权利要求1所述的基于STAF的高端容错机故障注入自动化测试平台,其特征在于,所述故障注入管理服务模块中包括多个故障注入工具和多个构件,每个构件在实现层发送的命令的控制下负责控制一个故障注入工具实现故障注入,每个故障注入工具在实现故障注入之后,将故障注入结果反馈给实现层。
8.根据权利要求7所述的基于STAF的高端容错机故障注入自动化测试平台,其特征在于,所述多个故障注入模块包括Ptrace故障注入工具、基于内核模拟的寄存器故障注入工具、软件实现的内存故障注入工具、基于PAL实现的MCA错误故障注入工具、SCSI驱动层故障注入工具和文件系统故障注入工具。
9.根据权利要求8所述的基于STAF的高端容错机故障注入自动化测试平台,其特征在于,Ptrace故障注入工具,用于通过访问和修改进程内存映像中的寄存器值,实现故障注入;寄存器故障注入工具,是基于内核模拟实现的,它利用kprobe调试接口,对内核时钟中断处理程序进行拦截,将故障注入代码插入到时钟中断处理程序中,访问和修改指定进程的内核堆栈中存储的寄存器值,从而实现寄存器故障的模拟;内存故障注入工具,它是基于软件实现的memFI故障注入工具,利用/dev/mem虚拟文件,修改物理内存地址内容,实现故障注入,对于用户态虚拟内存地址,可以通过查询页表, 转换成物理内存地址,然后进行故障注入;MCA错误故障注入工具,它是基于PAL固件提供的故障注入例程开发而成的,该过程提供了一种向指定处理器的Cache、TLB及寄存器堆注入硬件错误的方式,所注入的错误能够被机器检查架构检测到,并由硬件、固件和操作系统三者配合共同处理故障,SCSI驱动层故障注入工具,是对存储器实现故障注入的工具。
10.基于权利要求1所述的基于STAF的高端容错机故障注入自动化测试平台的自动化测试方法,其特征在于,所述自动化测试的过程为1)准备工作,在待测目标机上安装负载模拟子系统;2)控制机(4)从FTP服务器( 上下载最新的负载发生器和故障注入的安装代码及配套的安装、执行脚本;3)根据配置文件,控制机(4)利用STAF的FS服务将上述安装代码及配套的安装、执行脚本分发、部署到相应的测试代理、服务器上,运行安装脚本,安装相关程序;4)受限于可用性测试套件运行流程,控制机(4)检查目标服务器(7)的运行状况;5)控制机(4)在加载负载发生器的测试代理上运行执行脚本,向对应的目标服务器 (7)上施加负载;6)控制机(4)在加载故障注入的测试代理上运行执行脚本,开始对目标服务器(7)进行故障注入;7)故障注入完毕后,加载故障注入的测试代理将测试结果送回控制机G)。
全文摘要
基于STAF的高端容错机故障注入自动化测试平台及方法,涉及故障注入技术。本发明提供了一种适用于高端容错计算机故障注入测试的自动化测试平台及方法。本发明采用软件嵌入分布式测试环境实现,所述软件中的应用层为运行在总控端服务中的应用程序,利用关系型数据库和文件系统来管理自动化测试过程中的数据和信息,并提供友好的图形界面;代理层运行在应用层和实现层中间实现任务代理,负责执行用户从界面中提交的自动化测试任务;实现层封装了自动化测试控制服务器与各种平台的测试代理间通信、执行各种自动化测试具体操作。本发明是基于开源的自动化测试工具STAF构建的、分布式的、自动化的、可集成多种软件故障注入工具的故障注入平台。
文档编号G06F11/36GK102354298SQ201110212490
公开日2012年2月15日 申请日期2011年7月27日 优先权日2011年7月27日
发明者冯懿, 刘宏伟, 周海鹰, 崔忠强, 左德承, 张展, 杨孝宗, 温东新, 罗丹彦, 苗百利, 董剑, 钱军 申请人:哈尔滨工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1