基于UML活动图的场景法测试用例生成策略的研究

2017-06-01 12:30陈翠娟
赤峰学院学报·自然科学版 2017年10期
关键词:控制流测试用例环路

陈翠娟

(闽江学院 软件学院,福建 福州 350001)

基于UML活动图的场景法测试用例生成策略的研究

陈翠娟

(闽江学院 软件学院,福建 福州 350001)

传统的软件场景测试法存在着构造场景难度大,场景数量庞大、冗余度高等问题.针对这些问题,本文提出了一种基于UML活动图的场景法测试用例生成策略,利用活动图和基本路径覆盖法压缩、优化测试场景和测试数据,为软件系统测试提供有效、可行、系统的方法.

UML;场景测试;基本路径覆盖法;控制流图;独立路径

1 引言

UML是一种可视化的建模语言,它通过图形表示法从多个侧面对系统的分析、设计、实现、测试等进行刻画.研究表明,采用有效的形式化方法来描述问题域,并选择适当的测试策略,是设计和生成完备的测试用例集合的关键环节[1].活动图是UML中的一种行为图,它描述系统为完成某项功能而执行的操作序列,其实质就是流程图,可用于描述程序流程和工作流程.所以活动图是软件系统测试,尤其是业务流程测试的重要手段.

场景测试法是通过构建各种测试场景,对系统的功能点或业务流程进行描述来设计测试用例的一种方法.场景测试法的关键就是构建测试场景和生成测试数据.本文通过研究如何运用UML中的活动图来构建测试场景,然后利用基本路径覆盖法导出基本路径集合,从中寻找独立路径,生成测试用例.

2 活动图概述

活动图(Activity Diagram)是一种特殊形式的状态机[2].活动图中的状态表示计算过程或业务流程中所处的各种状态.我们将活动图做如下定义.

定义1一个活动图是一个四元组AD={V0,VF(AD),V (AD),E(AD)}.

(1)V0表示活动图中起始结点,活动图的起始结点只有一个;

(2)VF(AD)表示活动图中的所有终止结点的集合;

(3)V(AD)={v1,v2,……,vn}表示活动图中所有结点的集合;

(4)E(AD)={e1,e2,……,em}表示活动图中所有边的集合.

活动图中的分支结点用于表示具有条件的行为,只有一个输入转换,可以有多个带互斥的守卫条件的输出转换.分叉用于表示多个控制并发执行.

3 基本路径覆盖法

基本路径覆盖法是在控制流程图的基础上,分析环路复杂性,导出独立路径集合,从而设计测试用例的方法.控制流图是一种用来描述控制流的图形,圆圈表示结点,带箭头的边表示控制流的方向,结点和边圈起的部分称为区域.为了方便描述,我们做如下定义.

定义2基本路径集合是从控制流图的起始结点开始到终止结点,由边连接而成的结点序列的集合,记为PS={p1, p2,……,pnp},p为一条路径,np为控制流程图中的路径总数.

定义3环路度量又称为环路复杂性,是基本路径集合中独立路径的条数.记为V(G).环路度量有三种方法:

(1)V(G)=M-N+2,其中M为图中的总边数,N为图的总结点数;

(2)V(G)=P+1,其中P为图中的判定结点数,判定结点是该结点输出边数大于等于2的结点;

(3)V(G)=A,A表示图中的区域数,区域是图中边和结点圈起来的部分,当计算区域时,图形最外圈应记为一个区域.

定义4环路是指在控制流图中,由边和结点构成了一个闭合回路.

定义5独立路径是指至少包含一条新边的路径,所谓的新边就是指在前面已定义的独立路径集合中未曾用到的边.我们将独立路径集合记为IDPS={idp1,idp2,……,idpmp},idp为一条独立路径.生成独立路径时,需要对环路进行限制,采取不进入环路或只进入环路一次处理.

4 基于活动图的场景测试策略

场景测试法是基于IBM公司提出的RUP的测试用例生成方法,该方法从系统分析的结果——用例出发,首先从用例开始到结束遍历其中的所有基本流和备选流,从基本流开始,再将基本流和备选流结合起来,可以确定用例场景,然后通过确定某个特定条件来生成每个场景的测试用例[3].

基于活动图的场景测试策略就是利用可视化的UML的活动图来构建测试场景,然后将活动图映射成为控制流图,利用基本路径覆盖法导出独立路径集合,从而确定测试场景和测试用例的一种方法.传统的场景测试法对于一些复杂的业务流程,选择测试场景有一定难度,且容易遗漏.而且复杂业务流程中并发和分支较多,错综复杂,导致测试场景数量爆炸.采用基于活动图的场景测试法,通过合并业务流程中并发执行的活动和顺序执行的活动,从而大大减少测试场景和测试用例,提高测试的效率.

5 实例分析与展示

本节就某教务管理系统中的添加课程设置的系统功能为例,论述基于活动图的场景法测试用例生成的全过程. 5.1 活动图建模

在每个学期开学前,教务管理人员通过教务管理系统能为每门课程选择任课教师、上课的时间和地点,生成课程设置.根据需求,构建课程设置功能的活动图,如图1所示.教务管理人员登录系统后,可以添加教师信息和课程信息,这两个活动可以并发执行.然后选择已有的教师和课程,以及上课时间、上课地点等,添加为课程设置,此时系统将进行冲突检查,检查同一教师在同一时间是否有其他的课程,或是同一教室在同一时间是否已排了其他课程等.检查通过的课程设置再检查课时数是否符合课程要求,都符合要求则添加成功.

图1 课程设置活动图和控制流图

根据前面的定义,此活动图记为AD={V0,VF(AD),V(AD), E(AD)},其中结点集合V(AD)={V1,V2,……,V10},边集合E(AD) ={e1,e2,……,e18},终止结点集合VF(AD)={Vf}.

活动图中的各种并发活动总是从某个结点开始分叉,然后于某个结点汇合结束,可以把它看成是一个单入口和单出口的结点.对于只有单一入口和单一出口的结点,我们可以对它们进行合并.假设对于活动图中的分叉和汇合不做压缩合并,那么并发活动的任意排列组合势必造成场景数量爆炸.所以,我们将活动图中V2和V3结点压缩合并成一个活动的结点N1,合并后删除e3、e4、e5、e6边,则V(AD)’={V1, N1,……,V10},E(AD)’={e1,e7,e8,……,e18}.

5.2 活动图映射为控制流图

在实际应用中,一个不太复杂的功能的测试场景,其路径组合都是一个庞大的数字,为了能好地分析路径,我们将活动图映射为表现形式更为简单的控制流图.活动图中顺序执行的结点没有分支和分叉,只有一条输入边和一条输出边,可以合并为一个结点,使得控制流图进一步简化,有利于分析环路复杂和生成独立路径集合.如图1,映射为控制流图时可以将V0、V1和N1结点合并为M0,V5和V6结点合并为M1,V10和Vf结点合并为Mf结点.合并后,得到右边的控制流图.

5.3 生成独立路径

(1) 按照定义3,计算环路复杂性,采用公式V(G) =M-N+2=8-7+2=3,或V(G)=P+1=2+1=3,或计算区域数V(G) =A=3;

(2) 按照定义4,生成独立路径集合IDPS={idp1,idp2, idp4},其中idp1表示独立路径M0→V4→M1→V8→Mf,idp2示独立路径M0→V4→M1→V7→V4→M1→V8→Mf,idp3示独立路径M0→V4→M1→V8→V9→M4→M1→V8→Mf.

每条独立路径就是一个测试场景,为每个测试场景设置一个测试用例.然后,在测试场景中运行测试用例.最后,将期望的结果与实际输出的结果做比较,如果两个结果不相符,则表示在此路径上存在错误,以此来达到测试软件功能的目的.

6 总结

本文采用可视化的UML活动图对测试场景进行描述,并对UML活动图进行压缩、合并,然后采用基本路径覆盖法将化简后的UML活动图映射为更为形式化更为简单的控制流图,最后通过对控制流图的分析得到独立路径集合,完成了场景测试中场景的构建和测试用例的生成.通过实例的分析和演示,有效地证明了,基于UML活动图的场景法测试用例生成技术,能有效地解决由于活动并发执行带来的数量爆炸问题,大大减少了场景集的数量,提高了测试效率.——————————

〔1〕张楣,刘超,孙昌爱.基于UML活动图模型的测试用例生成技术研究 [J].北京航空航天大学学报,2001,27(4) 433~437.

〔2〕Tombros D,Geppert A,Dittrieh K.Semantics of reactive componentsin event.driven workflow execution[C]// Proceedingsofthe InternationalConference on Advanced Information Systems Engineering.Barcelona,Spain,1997:409—422.

〔3〕徐宏喆,陈建明,等.UML自动化测试技术[M].西安:西安交通大学出版社,2006(8).

TP311.5

:A

:1673-260X(2017)05-0024-02

2017-01-16

猜你喜欢
控制流测试用例环路
抵御控制流分析的Python 程序混淆算法
抵御控制流分析的程序混淆算法
基于SmartUnit的安全通信系统单元测试用例自动生成
基于控制流的盒图动态建模与测试
基于混合遗传算法的回归测试用例集最小化研究
上海市中环路标线调整研究
基于依赖结构的测试用例优先级技术
基于控制流隐藏的代码迷惑
Buck-Boost变换器的环路补偿及仿真
单脉冲雷达导引头角度跟踪环路半实物仿真