一种基于状态机的测试用例生成方法和系统技术方案

技术编号:36778367 阅读:19 留言:0更新日期:2023-03-08 22:07
本发明专利技术属于嵌入式软件测试领域,涉及一种基于状态机的测试用例生成方法和系统,包括使用数据协议描述语言DPD对接口协议进行描述;基于DPD所描述的接口协议信息和被测系统的软件设计说明书构建状态机并用状态图表示;基于所述状态图定义状态变迁矩阵;基于所述状态变迁矩阵,使用完全变迁路径覆盖算法生成初始测试用例;使用改进的AETG算法对所述初始测试用例进行覆盖率优化得到完整测试用例集。本发明专利技术利用自定义数据协议描述语言DPD,基于根据状态机的状态转移图自动生成测试用例,并经过覆盖率优化达到高覆盖率、低重复率的高质量测试用例集。用例集。用例集。

【技术实现步骤摘要】
一种基于状态机的测试用例生成方法和系统


[0001]本专利技术属于嵌入式软件测试领域,尤其涉及一种基于状态机的测试用例生成方法和系统。

技术介绍

[0002]目前,软件测试中的测试用例,大部分还是依靠测试人员手工的编写方式实现的,这种方式测试效率低下,不仅不能够保证测试的充分性,而且还需要耗费大量的人力、财力、物力和时间。随着软件复杂程度的不断提高,对测试人员的要求也在不断的提高,为了能够提高测试的准确性和节约测试成本,自动化生成测试用例技术是软件测试领域的研究热点之一。
[0003]目前的测试用例生成技术大致可以划分为随机测试用例生成方法、基于搜索的测试用例生成方法、形式化的测试用例生成方法。其中随机测试用例生成方法的缺点是生成测试用例集庞大,测试执行效率不高,浪费大量的时间;基于搜索的测试用例生成方法的缺点是在算法搜索求最优解的过程中,算法可能陷入局部最优值,难以保证正确收敛到全局最优解;形式化测试用例生成方法的缺点是求解比较困难和路径爆炸。
[0004]另一方面,领域特定语言DSL是针对某一特定领域,具有受限表达性的一种计算机程序设计语言。DSL主要分为两类:内部DSL和外部DSL。内部DSL形式,由于利用现有通用编程语言为宿主,而通用编程语言固有的缺陷很难实现对总线协议报文以及信号特征的领域通用化描述。由此,需要构建独立于任何宿主语言的外部DSL语言,以满足嵌入式接口的自动化测试需要。

技术实现思路

[0005]鉴于上述的分析,本专利技术旨在提供一种基于状态机生成测试用例的方法和系统,利用自定义数据协议描述语言DPD,基于根据状态机的状态转移图自动生成测试用例,并经过覆盖率优化达到高覆盖率、低重复率的高质量测试用例集。
[0006]一方面,本专利技术提供了一种基于状态机生成测试用例的方法,具体包括如下步骤:
[0007]基于被测系统的接口协议信息构建状态机得到状态变迁矩阵;
[0008]基于所述状态变迁矩阵,使用完全变迁路径覆盖算法生成初始测试用例;
[0009]使用改进的AETG算法对所述初始测试用例进行覆盖率优化得到完整测试用例集。
[0010]进一步的,所述基于被测系统的接口协议信息构建状态机得到状态变迁矩阵包括:
[0011]使用数据协议描述语言DPD对接口协议进行描述;
[0012]基于DPD所描述的接口协议信息和被测系统的软件设计说明书构建状态机并用状态图表示;
[0013]基于所述状态图得到状态变迁矩阵。
[0014]进一步的,所述基于所述状态变迁矩阵,使用完全变迁路径覆盖算法生成初始测
试用例包括:
[0015]从所述状态变迁矩阵第0行第一个不为0的变迁开始搜索,逐行查找为0的变迁,当变迁的目标状态为终止状态时或者变迁已在查找到的路径中出现过,则形成一条基于变迁的完全路径;
[0016]返回第0行重新开始查找下一条基于变迁的完全路径,对于已出现过的变迁不再使用,直到所有的变迁均已在路径中出现后,生成了所有的初始测试用例;
[0017]其中,所述不为0的变迁指由一个状态无法变迁到矩阵的相邻状态。
[0018]进一步的,所述使用改进的AETG算法对所述初始测试用例进行覆盖率优化得到完整测试用例集包括:使用改进的AETG算法对每个所述初始测试用例进行覆盖率优化,得到该测试用例对应的测试用例集;所有初始测试用例对应的测试用例集,构成完整测试用例集。
[0019]进一步的,所述得到状态变迁矩阵包括:
[0020]矩阵ST
n
×
n
=(st
ij
),0≤i,j≤n

1,st
ij
=t
k
,t
k
∈T;
[0021]其中,ST表示状态变迁矩阵,n
×
n表示矩阵的维度,()表示矩阵所有元素的集合,s表示状态,t表示变迁,st
ij
表示从状态s
i
变迁到s
j
,st
ij
=t
k
,当t
k
=0时表示由状态s
i
无法变迁到s
j

[0022]进一步的,所述基于所述状态变迁矩阵,使用完全变迁路径覆盖算法生成初始测试用例包括以下步骤:
[0023]Step1:初始化,令i=0,j=0,变迁集T初始化为ST
n
×
n
中所有不为0的st
ij
;其中,TPS表示基于变迁的完全路径集合,tp表示完全路径,表示空集;
[0024]Step 2:判断st
ij
是否为0,若st
ij
==0,则j=j+1,返回Step2继续判断,否则,转向Step3;
[0025]Step3:将s
i
·
t
k
·
s
j
加入到完全路径tp中,即tp

tp+s
i
·
t
k
·
s
j
,将t
k
从变迁集T中删除,即T

T

t
k
,并且令st
ij
=t
k
=0;
[0026]Step4:判断s
j
==s
e
||t
k
∈TPS,若是,则完全路径tp已形成,将其加入到完全路径集合TPS中,即TPS

TPS+tp,继续Step5;否则,i=j,j=0,返回Step2;
[0027]Step5:判断若是,则结束并输出TPS;否则,令i=0,j=0,返回Step2,搜索下一条基于变迁的完全路径。
[0028]进一步的,使用改进的AETG算法对所述初始测试用例进行覆盖率优化得到完整测试用例集,包括:
[0029]Step 1:根据P1、P2、

、P
h
的值集V1、V2、

、V
h
,产生初始两两组合集Uncover;其中,P1、P2、

、P
h
表示测试用例的h个参数,V、V2、

、V
h
表示对应的值集;
[0030]Step 2:置初始测试用例集Ts为空集φ;
[0031]Step 3:查找Uncover中出现的次数最多的值v
k
,得到其对应的参数标识P
k
,将P
k
加入已扩展参数列表LP;
[0032]Step 4:构造一个待完成的测试用例t,令t[k]=v
k
,将t的其余位置置为
“‑”
;其中,t[k]表本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于状态机的测试用例生成方法,其特征在于,包括如下步骤:基于被测系统的接口协议信息构建状态机得到状态变迁矩阵;基于所述状态变迁矩阵,使用完全变迁路径覆盖算法生成初始测试用例;使用改进的AETG算法对所述初始测试用例进行覆盖率优化得到完整测试用例集。2.根据权利要求1所述的测试用例生成方法,其特征在于,所述基于被测系统的接口协议信息构建状态机得到状态变迁矩阵包括:使用数据协议描述语言DPD对接口协议进行描述;基于DPD所描述的接口协议信息和被测系统的软件设计说明书构建状态机并用状态图表示;基于所述状态图得到状态变迁矩阵。3.根据权利要求2所述的测试用例生成方法,其特征在于,所述基于所述状态变迁矩阵,使用完全变迁路径覆盖算法生成初始测试用例包括:从所述状态变迁矩阵第0行第一个不为0的变迁开始搜索,逐行查找为0的变迁,当变迁的目标状态为终止状态时或者变迁已在查找到的路径中出现过,则形成一条基于变迁的完全路径;返回第0行重新开始查找下一条基于变迁的完全路径,对于已出现过的变迁不再使用,直到所有的变迁均已在路径中出现后,生成了所有的初始测试用例;其中,所述不为0的变迁是指由一个状态无法变迁到矩阵的相邻状态。4.根据权利要求1

3任一项所述的测试用例生成方法,其特征在于,所述使用改进的AETG算法对所述初始测试用例进行覆盖率优化得到完整测试用例集包括:使用改进的AETG算法对每个所述初始测试用例进行覆盖率优化,得到该测试用例对应的测试用例集;所有初始测试用例对应的测试用例集,构成完整测试用例集。5.根据权利要求2或3所述的测试用例生成方法,其特征在于,所述得到状态变迁矩阵包括:矩阵ST
n
×
n
=(st
ij
),0≤i,j≤n

1,st
ij
=t
k
,t
k
∈T;其中,ST表示状态变迁矩阵,n
×
n表示矩阵的维度,()表示矩阵所有元素的集合,s表示状态,t表示变迁,st
ij
表示从状态s
i
变迁到s
j
,st
ij
=t
k
,当t
k
=0时表示由状态s
i
无法变迁到s
j
。6.根据权利要求5所述的测试用例生成方法,其特征在于,所述基于所述状态变迁矩阵,使用完全变迁路径覆盖算法生成初始测试用例包括以下步骤:Step1:初始化,令i=0,j=0,变迁集T初始化为ST
n
×
n
中所有不为0的st
ij
;其中,TPS表示基于变迁的完全路径集合,tp表示完全路径,表示空集;Step2:判断st
ij
是否为0,若st
ij
==0,则j=j+1,返回Step2继续判断,否则,转向Step3;Step3:将s
i
·
t
k
·
s
j
加入到完全路径tp中,即tp

tp+s
i
·
t
k
·
s
j
,将t
k
从变迁集T中删除,即T

T

t
k
,并且令st
ij
=t
k
=0;Step4:判断s
j
==s
e
||t
k
∈TPS,若是,则完全路径tp已形成,将其加入到完全路径集合T...

【专利技术属性】
技术研发人员:陈俊英刘伟王嬴超赵菲安鹏伟曲天润宋志强曾丽婷陈朋张榕
申请(专利权)人:北京京航计算通讯研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1