面向安全苛刻系统的自动化测试执行调度方法

时间:2022-10-12 11:54:59

面向安全苛刻系统的自动化测试执行调度方法

摘要:在安全苛刻系统的自动化测试中,当测试用例数量达到一定程度时,测试时间通常较长。文章通过对测试用例的执行调度问题进行分析,提出了一种面向安全苛刻系统自动化测试执行控制与调度方法,能有效提高测试用例的总体执行效率,降低总执行时间。

关键字:安全苛刻系统;分布式;自动化测试;执行控制与任务调度

1引言

安全苛刻系统泛指一类其功能一旦失效将引起财产、生命等重大损失的特殊系统,广泛存在于航空航天、医疗、金融领域。根据国际航空无线电委员会(RTCA,Radio Technical Commission for Aeronautics)提出的D0-178B标准的定义,A级软件,即具有安全苛刻特性的软件,是指其异常行为可能引起或导致系统功能失效,进而引起灾难性失效状态的软件。

安全苛刻系统的测试用例通常数量庞大,只依靠人工测试会耗费太多的人力、物力。而回归测试中用例是完全设计好的,测试期望的结果也是完全可以预料的,这就使得由软件代替人工操作,完成对被测试系统的输入,并且对输出进行验证的自动化测试成为可能。

虽然自动化测试要比人工测试效率提高很多,但在测试用例数量庞大的时候,执行一次完整的测试还是会花费数天时间,导致测试周期过长。因此在对大量测试用例的自动化执行过程中,设计一种合理的测试用例执行调度方法,进一步缩短测试时间是十分必要的。

本文针对一类大型安全苛刻性系统(一般为分布式架构)自动化测试提出了一种测试用例执行控制与调度方法,并通过实际系统验证了该方法在缩短测试用例总执行时间上的有效性和可行性。

2分布式自动化测试

自动化测试中,测试用例将在部署测试软件的主机上自动执行,该主机称为测试用例的执行节点。本文面向如下分布式系统:执行节点之间是同构的。针对该分布式系统设计的每个测试用例可能需要在单个执行节点或同时在多个执行节点上执行。由于同一类的执行节点之间是同构的,这些测试用例在确定的一类执行节点中的任意一个上执行效果等价。由于测试用例的执行节点是任意的,因此执行这些测试用例时应该根据一定的策略将它们分发到不同的执行节点上执行。

现有的分布式自动化测试中,当存在多个测试用例等候执行时,一般都会将多个测试用例组成一个执行队列,确定测试用例队列和确定测试用例的执行节点。当被测系统中存在多个执行节点,在执行测试用例之前便需根据一定的规则确定测试用例的执行节点,现有的自动化测试方法中一般是在空闲的执行节点中随机选取执行节点来执行。

这种方法的缺陷是手动指定执行顺序会增加测试人员的工作量;若根据测试用例的优先级来确定,则很难找到一个统一确定测试用例优先级的原则。另外若测试用例的执行节点选取不当,可能会导致部分执行节点上的测试用例已执行完毕,另外部分执行节点上仍在执行某个时间较长的测试用例,或者某些执行节点上无用例执行的情况,测试节点的整体利用率不高。

3一种新的执行控制与调度方法DCS3

通过上述对目前分布式系统自动化测试的问题分析,本文提出了一种面向安全苛刻系统的执行控制与调度方法DCS3(Distributed Control and Scheduling for Safetycritical System)。首先给出一些定义。

定义1 测试用例预期执行时间。某测试用例第n次执行的预期执行时间为:

预期执行时间是根据该测试用例之前执行的时间来预测的,由于自动化测试主要用于回归测试中,此时被测系统的环境及软件版本已基本固定,因此测试用例每次执行的时间也比较稳定,根据该测试用例之前的执行时间来预测本次的执行时间是比较准确的,同时测试用例的预期执行时间将同步记录到测试数据库中。

定义2 测试用例执行优先级。测试用例执行优先被定义为该测试用例被划分到的测试用例类别的优先级值。测试用例的类别包括6类,按照优先级从高到低依次为:在被测系统刚进入初始状态下执行的测试用例,执行添加操作的测试用例,执行查看操作的测试用例,执行编辑操作的测试用例,执行删除操作的测试用例以及执行重置操作的测试用例。

具体方法步骤如图1所示。

Step1 测试控制端新建一个测试任务,并输入测试任务中各测试用例的基本信息(编号、预期执行时间、优先级、执行节点类别和执行节点数目、以及其他资源),然后提交该测试任务。

Step2 测试控制端依次读取测试任务中每个测试用例的基本信息,将测试用例添加到未执行的测试用例列表中。

Step3 取未执行的测试用例列表中优先级最高的所有测试用例,根据执行节点类别进行分组,将同一类执行节点上执行的测试用例分为一组,各组测试用例并行地在对应类别的执行节点上执行,具体过程如下:

Step3.1对每组中的所有测试用例先按照需要的执行节点数目从多到少的顺序排序,再对具有相同的执行节点数目的测试用例进行排序。优先级最高的为第一次执行的测试用例,其次是所有预期执行时间不为0的测试用例,这些测试用例再按照预期执行时间从长到短的顺序排序。对于具有相同的执行节点数目且都为第一次执行的测试用例,它们之间的相对顺序是随机的。

Step3.2判断未执行的测试用例的执行条件是否满足,若满足,为该测试用例分配执行节点及执行需要的额外资源,并执行该测试用例,然后判断下一个测试用例,若不满足则直接判断下一个测试用例;重复该判断直至被测系统中无空闲的对应类别的执行节点或者该组中所有的测试用例均己判断完毕。

Step3.3监测所有正在执行的测试用例的执行状态,若监测到任意一个测试用例执行完毕,则判断该组测试用例中是否有未执行的测试用例,若有转至Step3.2继续执行,若没有则执行Step3.4。

Step3.4等待当前所有正在执行的测试用例执行完毕,更新数据库中测试用例的预期执行时间,保存测试用例的执行结果。

Step4判断是否还有未完的测试用例,若有则继续执行,若都已执行完成,则结束本次测试任务,并将本次测试用例的执行结果保存至数据库,输出测试报告。

4系统实证

本文提出的测试方法在某航空任务系统上得到了实际应用。被测的航空任务系统是一个分布式的系统,有多个操作台、多个不同职能的服务器及交换机组成。

为了实现自动化测试,开发部署了一套自动化测试平台,如图2所示,由测试监控台、测试数据库服务器、测试中心处理服务器及交换机组成,测试监控台、测试数据库服务器、测试中心处理服务器通过交换机相连。测试平台通过测试中心处理服务器与被测系统交换机连通。

测试监控台上部署了测试资源管理软件及测试显示控制软件,分别用于用户对测试资源的管理以及对测试任务的管理。测试中心处理服务器上部署了测试中心处理软件,实现对本文提出的方法,执行测试任务的控制与调度。采用本文的调度方案,各节点上执行测试用例较为平均,空闲等待时间较少,提高了资源的利用率(见图1)。

5结语

文章实现了一种对于安全苛刻分布式系统测试用例的执行控制与调度方法,通过按优先级降低的顺序执行测试用例,降低了测试用例中因执行条件不满足导致测试用例无法执行的可能性;通过根据测试用例执行需要的节点数、预期执行时间对其执行顺序进行排序,降低了因单个执行时间较长的测试用例最后执行而增加多测试用例的总执行时间的可能性,减小了多个测试用例的总执行时间。

同时通过开发实现的自动化测试工具,对方法进行了验证,实现了分布式软件系统测试用例的自动化执行,简化了测试人员的工作。

上一篇:基于Web的机票预订系统的设计与实现 下一篇:计算机技术在电子商务网络消费互动中的作用