一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种活动图到状态图的转换算法的制作方法

2022-12-13 23:33:50 来源:中国专利 TAG:


1.本发明属于软件测试技术领域,具体涉及一种活动图到状态图的转换算法。


背景技术:

2.弹载交互式软件交互场景复杂,测试人员通常采用活动图方式对软件需求进行测试建模,由于活动图不是有向图,导致无法直接生成测试用例,通常情况下需要测试人员根据模型手动导出测试路径,生成测试用例。这种方式主要带来了两个问题:一是:测试覆盖率无法评估,测试质量无法保障;二是测试效率低,测试成本高。


技术实现要素:

3.本发明解决的技术问题在于,提出了一种活动图到状态图的转换算法,保证转换后的状态图路径无遗漏,提高软件测试的有效性和效率。
4.本发明一种活动图到状态图的转换算法,包括如下步骤:
5.一.定义活动图和状态图
6.活动图描述一组对象在协作完成某一个任务的过程中,各个对象所执行的活动以及活动的顺序,展现从一个活动到另一个活动的控制流;
7.活动图数学表达:一个活动图为一个四元组g=《a,r,i,f》,其中:
8.1)a=an∪on∪cn∪i∪f,其中an是活动节点的集合,on是对象节点的集合,cn=ch∪me∪fo∪jo,ch是分支节点的集合,me是合并节点的集合,fo是分叉节点的集合,jo是汇合节点的集合;
9.2)r是节点间的关系;
10.3)i是初始节点的集合;
11.4)f是终止节点的集合;
12.状态图描述对象在其生命周期中响应事件所经历的状态序列,以及引发响应的激励或事件;构成要素包括状态、转移和事件;
13.状态图数学表达:令sd=(s,λ,e)表示一个状态转换图,其中s是起始状态的集合,e是终止状态的集合,λ=∑λi=∑(si,ci,s
i 1
)是状态转移的集合,ci是相邻两个状态之间触发转换的事件;
14.二.活动图到状态图的转换过程:
15.1)将活动图中被测对象的活动转换为状态图中的状态;
16.2)将活动图中表示活动间执行顺序的动作流转换成状态图中的转移;
17.3)将活动图中表示执行动作流需要判断的条件转换成状态图中的转移需满足事件条件;
18.4)忽略由被测对象出发到达其他泳道对象的出边;
19.5)对被测对象活动的来自其他泳道对象的特定活动的入边,将该入边所关联的输入活动以及其对象转换为状态转移上的触发事件;
20.6)在进行转换时,当没有来自其他对象的活动的输入,而状态的转换只跟某一个值的变化或者系统状态的变化相关时,则可将这种变化转换成触发状态转移的变化事件;
21.7)在进行转换时,当没有来自其他对象的活动的输入,而活动的执行只跟自身的状态以及时间有关,此时可将时间的变化作为触发状态转移的时间事件;
22.8)将活动图中,被测对象下,多个顺序执行且中间无判断条件的多个活动合并为同一个状态;
23.9)将活动图中,被测对象下,分支判断省去,将分支所表示的由当前活动到其他活动的有条件的执行流程,转换为当前活动所表示的状态到其他活动所表示状态的有条件转移;
24.10)对于活动图中表示并发开始的分叉节点,如果分叉节点的出边中有去往其他对象的出边,则直接去除该出边;对于剩余的n条出边,则将前面已经转换得到的状态图复制n份,每个状态图对应一条出边,然后继续沿着每个出边代表的路径执行活动图到状态图的转换;如果后续继续遇到表示并发开始的分叉节点,则根据上述策略,同样通过复制得到多个状态图。
25.进一步地,所述活动图到状态图的转化过程具体包括,
26.首先输入活动图,用于存储各节点和边的活动图结构,然后进行如下步骤:
27.第一步,初始化一个状态图对象z
28.第二步,寻找起始节点,创建状态图开始状态节点
29.判断当前节点是否为起始节点,且不属于被测系统,遍历起始节点后续各节点,若后续节点不属于被测系统,则删除节点和相关边,直到遇见被测系统的节点判断当前节点是起始节点,且属于被测系统;
30.第三步,寻找终止节点,创建状态图终止状态节点
31.判断当前节点是否为终止节点,且不属于被测系统,遍历终止节点前向各节点,若前向节点不属于被测系统,则删除节点和相关边,直到遇见被测系统的节点;
32.第四步,寻找普通节点,创建状态图中的普通状态节点;
33.第五步,增加转移和事件条件信息
34.将判断节点相连的边转换为状态转移,将边相连的活动也转为状态图中的状态,将边上的条件转为状态转移上的监护条件,添加到已经得到的各个状态图对象中去;
35.第六步,重复循环执行第二步~第五步,执行遍历活动图中所有节点。
36.进一步地,第四步具体包括如下步骤:
37.1)判断当前节点是否为普通活动节点,且不属于被测系统,标记该节点以及相关边为删除状态;
38.2)判断当前节点属于被测系统且为并发节点,首先从各后续节点开始遍历,直到遇见并发结束节点,生成从并发开始节点到并发结束节点之间的k条路径,然后,将状态图对象z复制k份,将k条路径分别加入到k个状态图对象中;
39.3)判断当前节点是属于被测系统的一个普通节点,其前序节点为其他对象的节点、且后续不是判断节点时,创建一个状态图的状态节点,并记录状态节点对应的活动节点,将该状态节点加入到各个状态图对象中;
40.4)判断当前节点是属于被测系统的一个普通节点,其属于被测系统的前序节点存
在且也是一个普通节点,且后续不是判断节点时,将节点内容合并到各个状态图对象该节点前序节点对应的状态中去,并记录下该活动节点;
41.5)判断当前节点是属于被测系统的一个普通节点,其属于被测系统的前序节点存在且也是一个普通节点,且后续是判断节点时,将节点内容合并到各个状态图对象该节点前序节点对应的状态中去,记录下该活动节点,并判断该节点前序节点中是否存在属于其他对象的节点,如果有则将来自于其他对象的节点作为接下来判断中条件的触发事件。
42.该算法实现了活动图到状态图的自动转换,对于活动图中的并发节点通过采用多场景复制的方法实现了转换后状态图路径无遗漏,活动图中相关对象、节点、时序、控制信息的不丢失。同时将活动图转换成状态图后,由于状态图是有向图,测试人员可以根据即有的覆盖准则和用例声称算法自动产生反映软件系统正确行为的各种状态转移序列,并形成测试用例。这种方式能够满足弹载交互式软件测试需求的充分性覆盖性要求,同时提高软件测试的有效性和效率。
附图说明
43.图1算法流程图;
44.图2匹配定位的活动图;
45.图3活动图转为匹配定位的状态图之一;
46.图4活动图转为匹配定位的状态图之二。
具体实施方式
47.下面结合附图对本发明作进一步详细说明,本发明的技术方案为:
48.一.活动图定义:
49.活动图是用于对系统的动态行为建模的一种常用工具。它描述了一组对象在协作完成某一个任务的过程中,各个对象所执行的活动以及活动的顺序,展现从一个活动到另一个活动的控制流。
50.数学表达:一个活动图是一个四元组g=《a,r,i,f》,其中:
51.1)a=an∪on∪cn∪i∪f,其中an是活动节点的集合,on是对象节点的集合,cn=ch∪me∪fo∪jo,ch是分支节点的集合,me是合并节点的集合,fo是分叉节点的集合,jo是汇合节点的集合;
52.2)r是节点间的关系;
53.3)i是初始节点的集合;
54.4)f是终止节点的集合。
55.二.状态图定义:
56.状态图描述了对象在其生命周期中响应事件所经历的状态序列,以及引发响应的激励或事件。构成要素包括:状态、转移和事件。
57.数学表达:令sd=(s,λ,e)表示一个状态转换图,其中s是起始状态的集合,e是终止状态的集合,λ=∑λi=∑(si,ci,s
i 1
)是状态转移的集合,ci是相邻两个状态之间触发转换的事件。
58.三.活动图到状态图的转换规则:
59.1)将活动图中被测对象的活动转换为状态图中的状态;
60.2)将活动图中表示活动间执行顺序的动作流转换成状态图中的转移;
61.3)将活动图中表示执行动作流需要判断的条件转换成状态图中的转移需满足事件条件;
62.4)忽略由被测对象出发到达其他泳道对象的出边;
63.5)对被测对象活动的来自其他泳道对象的特定活动的入边,将该入边所关联的输入活动以及其对象转换为状态转移上的触发事件;
64.6)在进行转换时,当没有来自其他对象的活动的输入,而状态的转换只跟某一个值的变化或者系统状态的变化相关时,则可将这种变化转换成触发状态转移的变化事件;
65.7)在进行转换时,当没有来自其他对象的活动的输入,而活动的执行只跟自身的状态以及时间有关,比如每隔多少秒进行一次判断时,此时可将时间的变化作为触发状态转移的时间事件;
66.8)在活动图中,指定某一泳道为被测对象,多个顺序执行且中间无判断条件的多个活动合并为同一个状态;
67.9)在活动图中,指定某一泳道为被测对象,菱形所表示的分支判断省去,将分支所表示的由当前活动到其他活动的有条件的执行流程,转换为当前活动所表示的状态到其他活动所表示状态的有条件转移;
68.10)对于活动图中表示并发开始的分叉节点,如果分叉节点的出边中有去往其他对象的出边,则直接去除该出边。对于剩余的n条出边,则将前面已经转换得到的状态图复制n份,每个状态图对应一条出边,然后继续沿着每个出边代表的路径执行活动图到状态图的转换。如果后续继续遇到表示并发开始的分叉节点,则根据上述策略,同样通过复制得到多个状态图。
69.四.具体转换算法如下:
70.输入:活动图(存储各节点和边的活动图结构)
71.如图1所示,转化算法的步骤为:
72.第一步:初始化一个状态图对象z
73.第二步:寻找起始节点,创建状态图开始状态节点。方法为:判断当前节点是否为起始节点,且不属于被测系统,遍历起始节点后续各节点,若后续节点不属于被测系统,则删除节点和相关边,直到遇见被测系统的节点判断当前节点是起始节点,且属于被测系统。
74.第三步:寻找终止节点,创建状态图终止状态节点。方法为:判断当前节点是否为终止节点,且不属于被测系统,遍历终止节点前向各节点,若前向节点不属于被测系统,则删除节点和相关边,直到遇见被测系统的节点;
75.第四步:寻找普通节点,创建状态图中的普通状态节点。方法为:
76.1)判断当前节点是否为普通活动节点,且不属于被测系统,标记该节点以及相关边为删除状态;
77.2)判断当前节点属于被测系统且为并发节点,首先从各后续节点开始遍历,直到遇见并发结束节点,生成从并发开始节点到并发结束节点之间的k条路径,然后,将状态图对象z复制k份,将k条路径分别加入到k个状态图对象中;
78.3)判断当前节点是属于被测系统的一个普通节点,其前序节点为其他对象的节
点、且后续不是判断节点时,创建一个状态图的状态节点,并记录状态节点对应的活动节点,将该状态节点加入到各个状态图对象中;
79.4)判断当前节点是属于被测系统的一个普通节点,其属于被测系统的前序节点存在且也是一个普通节点,且后续不是判断节点时,将节点内容合并到各个状态图对象该节点前序节点对应的状态中去,并记录下该活动节点;
80.5)判断当前节点是属于被测系统的一个普通节点,其属于被测系统的前序节点存在且也是一个普通节点,且后续是判断节点时,将节点内容合并到各个状态图对象该节点前序节点对应的状态中去,记录下该活动节点,并判断该节点前序节点中是否存在属于其他对象的节点,如果有则将来自于其他对象的节点作为接下来判断中条件的触发事件;
81.第五步增加转移和事件条件信息。将判断节点相连的边转换为状态转移,将边相连的活动也转为状态图中的状态,将边上的条件转为状态转移上的监护条件,添加到已经得到的各个状态图对象中去。
82.第六步:重复循环执行第二步~第五步,执行遍历活动图中所有节点。
83.以匹配定位软件为例,图2为匹配定位的活动图,图3、4为活动图转为匹配定位的状态图。
84.上述具体实施方式仅限于解释和说明本发明的技术方案,但并不能构成对权利要求保护范围的限定。本领域技术人员应当清楚,在本发明的技术方案的基础上做任何简单的变形或替换而得到的新的技术方案,均落入本发明的保护范围内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献