APP下载

一种基于场景的装备软件测试用例设计方法研究

2018-10-23王万金韩成柱

舰船电子工程 2018年10期
关键词:测试用例变迁节点

王万金 韩成柱

(92124部队 大连 116023)

1 引言

根据GJB 2434A-2004《军用软件产品评价》的要求,软件产品质量需求一般包括内部质量、外部质量和使用质量。目前装备软件测试的重点集中在基于需求的测试,即侧重软件外部质量和内部质量的验证,而反映装备软件最终表现的使用质量,即用户的使用需求却没有被很好重视。

本文给出一种基于场景的装备软件测试方法。通过分析、构建软件使用场景,基于场景路径覆盖设计、生成用例,并在具体的实例中进行了应用。

2 场景模型

通常,我们把系统一个最小的功能状态定义为原子场景。原子场景按照一定规则通过顺序、条件、循环等各种控制结构组成场景(Scenario)。

图1 场景空间转换示意图

一个场景的状态空间可以用一个三元组<S0,S,T>表示:

S0∈S,S0是状态空间的初始状态。

S是状态空间所有状态(原子场景)的集合,包含初始状态和终止状态。

T是变迁的集合,当Si和Ti相关联的所有输入变迁满足使能时,状态发生迁移Si→Sj。

3 场景模型的构建

随着软件工程化的深入开展,软件文档质量较以前有了比较大的改善,基于需求进行使用场景构建已经具备了输入条件。

对于使用场景的构建,需要做好以下工作:

1)提取需求,确定软件的初始状态(即:场景的输入);

2)确定软件的最终状态(即:场景的终止状态);

3)分析归纳软件的使用场景;

4)画出软件使用场景状态图。

4 基于场景的覆盖准则

对于状态空间< S0,S,T >,设Si∈S且Ti∈T,对于所有的0 ≤ i≤(n-1),如果 Si→TiSi+1,则序列(S0,T0),(S1,T1),(S2,T2),…,(Sn-1,Tn-1),(Sn)称 为 路径。设P是路径的集合。

场景覆盖准则一般有2种:状态覆盖、路径覆盖。

状态覆盖State Coverage(SC):当测试集生成的测试路径P,对于其中的状态Si,如果满足∑Si=S,则测试集满足状态覆盖。

路径覆盖Path Coverage(PC):当测试集生成的测试路径P,对于其中的变迁Ti,如果满足∑Ti=T,则测试集满足路径覆盖。

显然,路径覆盖的要求大于状态覆盖,本文将重点讨论路径覆盖的用例设计、生成方法。

5 基于场景路径覆盖的测试用例设计、生成方法

在软件使用场景状态图的基础上,路径覆盖准则要求遍历所有分支路径,覆盖从初始节点到终止节点的每条路径至少一次。遍历场景状态图的每一条路径,即对应一个测试用例。通过遍历使用场景状态图中的全部路径可以获得所有的测试用例,然后确定相关的用例输入。

基于场景路径覆盖的测试用例生成的步骤如下:

1)将场景状态图中的初始节点放入一个堆栈中,记录初始节点为当前节点;

2)查找当前节点的后继节点,按照深度优先的方法进行遍历,将该变迁及目标节点压入堆栈并将该路径标记为已访问,将该目标节点记录为当前节点;

3)重复步骤2),直到当前节点没有后继节点(即当前节点为终止节点)。此时,输出从堆栈的栈底到栈顶的所有节点和变迁信息(即初始节点到终止节点构成一个测试场景的路径输出);

4)从堆栈中依次弹出节点和变迁,如当前栈顶对象是节点且该节点有尚未访问的后继节点和变迁,则转到步骤2)、步骤3),直到弹出堆栈中的所有节点和变迁为止。

其中,步骤3)输出的一条路径构成一个测试用例,所有输出构成测试用例集。

6 应用实例

6.1 实例描述

自动饮料机程序是软件测试常用的例子,该问题的需求说明如下:

1)自动饮料机仅接受1元硬币和5毛硬币;2)1听饮料价值1.5元;

3)当硬币总额超过1.5元以后,饮料机拒绝再接受其它的硬币;

4)饮料机在用户硬币金额不足、没有饮料、没有找零硬币时会分别给出提示“金额不足”、“没有饮料”、“没有零钱”,在这3种情况下,无法完成饮料购买的交易;在正常情况下,机器显示“交易成功”;

5)饮料机程序处理流程:统计投入的硬币钱数→统计机内饮料数→统计机内零钱数,分别根据统计结果进行相应处理。

6.2 实例的使用场景分析与构建

根据饮料机需求,提取并定义场景的节点和变迁如表1。

很显然,可以提取4种使用场景,分别为金额不足、没有饮料、没有找零、正常交易。经过分析,对应的场景状态图分别如图2~5所示。

6.3 基于实例使用场景的用例生成

根据基于场景路径覆盖的测试用例设计、生成方法,依次生成的测试用例如表2。

表1 饮料机模型的节点和变迁定义表

图2 场景1:“金额不足”场景状态图

图3 场景2:“没有饮料”场景状态图

图4 场景3:“没有找零”场景状态图

表2 饮料机模型的用例设计表

7 结语

装备软件比较适用于基于状态的行为描述,适合进行场景建模。按本文提出的基于场景的方法对自动饮料机模型进行使用场景构建和测试用例的设计,试验结果表明,该方法可以很好地设计和生成“基于使用”的测试用例。下一步工作:1)对场景状态图进行形式化描述,结合场景用例生成算法,自动生成测试路径(测试用例);2)研究测试路径转换成测试环境支持的测试脚本,实现测试自动化。

猜你喜欢

测试用例变迁节点
小渔村的变迁
基于图连通支配集的子图匹配优化算法
基于LDA模型的测试用例复用方法*
结合概率路由的机会网络自私节点检测算法
面向复杂网络的节点相似性度量*
采用贪婪启发式的异构WSNs 部分覆盖算法*
回乡之旅:讲述世界各地唐人街的变迁
一纸婚书见变迁
清潩河的变迁
软件测试中的测试用例及复用研究