ImageVerifierCode 换一换
格式:PDF , 页数:10 ,大小:3.26MB ,
资源ID:1567188      下载积分:30 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zhuanlichaxun.net/d-1567188.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于数据代码分离技术的测试用例生成方法.pdf)为本站会员(g****)主动上传,专利查询网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知专利查询网(发送邮件至2870692013@qq.com或直接QQ联系客服),我们立即给予删除!

基于数据代码分离技术的测试用例生成方法.pdf

1、(10)申请公布号 CN 103019934 A(43)申请公布日 2013.04.03CN103019934A*CN103019934A*(21)申请号 201210496043.4(22)申请日 2012.11.28G06F 11/36(2006.01)G06F 9/44(2006.01)(71)申请人北京交控科技有限公司地址 100070 北京市丰台区科技园海鹰路6号院北京总部国际2、3号楼(72)发明人何玺胜 胥志洪(74)专利代理机构北京路浩知识产权代理有限公司 11002代理人王莹(54) 发明名称基于数据代码分离技术的测试用例生成方法(57) 摘要本发明提供一种基于数据代码分离技

2、术的测试用例生成方法,包括:S1、对程序源代码进行预处理,并生成程序控制流图;S2、根据所述程序控制流图生成路径矩阵A,并为每条路径P中的每个谓词设置对应的优先级因子;S3、将所述路径根据所述优先级因子逆序排序,获得矩阵A;S4、对于所述矩阵A,选取路径Pi计算测试数据,当选取的路径Pi组成的矩阵A的秩等于路径矩阵A的秩时,则路径选取结束;S5、根据所述路径Pi中谓词的类型,生成测试数据;S6、根据所述测试数据和所述路径Pi,生成测试用例。本发明实现了代码智能化分析,简化人力设计测试用例和测试数据的工时,简化测试脚本编写时间,提高了测试效率。(51)Int.Cl.权利要求书2页 说明书5页 附

3、图2页(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书 2 页 说明书 5 页 附图 2 页1/2页21.一种基于数据代码分离技术的测试用例生成方法,其特征在于,所述方法包括:S1、对程序源代码进行预处理,并生成程序控制流图;S2、根据所述程序控制流图生成路径矩阵A,并为每条路径P中的每个谓词设置对应的优先级因子;S3、将所述路径根据所述优先级因子逆序排序,获得矩阵A;S4、对于所述矩阵A,选取路径Pi,当选取的路径Pi组成的矩阵A的秩等于路径矩阵A的秩时,则路径选取结束;S5、根据所述路径Pi中谓词的类型,生成测试数据;S6、根据所述测试数据和所述路径Pi,生成测试用例。2

4、.根据权利要求1所述的方法,其特征在于,步骤S2中所述路径矩阵A中每行表示一条路径经过的边集合,每列表示每条路径经过边的次数。3.根据权利要求1所述的方法,其特征在于,在步骤S3之前所述方法还包括生成路径优先级系数,所述路径优先级系数为路径矩阵A每行中谓词的使用次数与所述每行中谓词对应的优先级因子的乘积。4.根据权利要求1所述的方法,其特征在于,步骤S5之前还包括:设定程序的初始输入I0以及迭代次数上限T,如果I0能经过路径Pi,则获得经过路径Pi的程序输入If,即IfI0;若I0不能经过路径Pi,则跳转步骤S5。5.根据权利要求1或4中任一项所述的方法,其特征在于,所述步骤S5中若所述路径P

5、i中谓词的类型为非线性,则所述方法包括:S51、计算所述非线性谓词的线性函数L(Ni,Ik,Pi),其中Ik为输入变量,Pi为选取的路径,Ni为Pi上的结点;S52、用路径Pi中的所有线性函数和L(Ni,Ik,Pi)构造输入变量的线性约束系统,所述所有线性函数为所述路径Pi中谓词类型为线性的函数;S53、计算所述线性约束系统,得到输入Ik+1;S54、若Ik+1能经过路径Pi,则If=Ik+1;否则,重复步骤S51S53,直至得到能够经过路径Pi的输入,所述重复步骤的迭代次数上限为T。6.根据权利要求5所述的方法,其特征在于,步骤S51中所述计算所述非线性谓词的线性函数L(Ni,Ik,Pi)的

6、方法具体包括:根据路径Pi上的谓词结点Ni关于输入变量Ik,得到通用线性函数L(Ni,Ik,Pi),计算所述线性函数L(Ni,Ik,Pi),使得L(Ni,Ik,Pi)=0,则所述线性函数L(Ni,Ik,Pi)代表谓词函数在Ik处的切平面,则称L(Ni,Ik,Pi)为Ni的谓词函数关于Ik的线性算术表示。7.根据权利要求1或4中任一项所述的方法,其特征在于,所述步骤S5中若所述路径Pi中谓词的类型为线性,则所述方法包括:S52、用路径Pi中的线性函数构造输入变量的线性约束系统;S53、计算所述线性约束系统,得到输入Ik+1;S54、若Ik+1能经过路径Pi,则If=Ik+1;否则,重复步骤S52

7、S53,直至得到能够经过路径Pi的输入,所述重复步骤的迭代次数上限为T。8.根据权利要求1所述的方法,其特征在于,在步骤S6之后所述方法还包括:对程序输出状态的集合进行映射,并根据每一个程序输出状态对应的转移概率,将程序输出状态权 利 要 求 书CN 103019934 A2/2页3映射到区间01。9.根据权利要求1所述的方法,其特征在于,步骤S6中的所述测试用例是指从路径起始结点到终止结点所经过的边的序列。10.根据权利要求18任一项所述的方法,其特征在于,执行测试用例生成过程,当所述矩阵A的秩大于路径矩阵A的秩,且P(p|A)为A状态时,检查激励p的概率其中,A为输入状态,即路径矩阵A作为

8、输入状态,p为激励。权 利 要 求 书CN 103019934 A1/5页4基于数据代码分离技术的测试用例生成方法技术领域0001 本发明涉及软件测试技术,特别涉及一种基于数据代码分离技术的测试用例生成方法。背景技术0002 随着软件开发周期的时间限制、资源限制以及软件的日趋复杂化,一般大型应用软件的白盒测试工作仅靠手工已不能完全胜任。尤其是在迭代开发过程中,每一个版本下的各个组件都需要不断验证。由此产生了数据代码分离系统和自动化白盒测试技术。由于脚本编制工作,是一项较为繁琐的工作,目前通常使用基于控制模型的白盒测试脚本自动生成算法,此种设计方式的益处主要有如下两个方面:1、基于图的最小路径覆

9、盖算法,可以在满足覆盖率要求的条件下,提高测试效率,节省资源;2、基于控制模型生成测试用例,在保证了逻辑完整性及功能的时序性。0003 然而,该设计方式对于安全要求较高,且没有对源代码进行智能化分析,影响了测试用例生成的效率。发明内容0004 (一)解决的技术问题0005 本发明解决的技术问题是:实现代码智能化分析和测试用例自动生成的问题。0006 (二)技术方案0007 本发明提出了一种基于数据代码分离技术的测试用例生成方法,所述方法包括:0008 S1、对程序源代码进行预处理,并生成程序控制流图;0009 S2、根据所述程序控制流图生成路径矩阵A,并为每条路径P中的每个谓词设置对应的优先级

10、因子;0010 S3、将所述路径根据所述优先级因子逆序排序,获得矩阵A;0011 S4、对于所述矩阵A,选取路径Pi,当选取的路径Pi组成的矩阵A的秩等于路径矩阵A的秩时,则路径选取结束;0012 S5、根据所述路径Pi中谓词的类型,生成测试数据;0013 S6、根据所述测试数据和所述路径Pi,生成测试用例。0014 优选地,步骤S2中所述路径矩阵A中每行表示一条路径经过的边集合,每列表示每条路径经过边的次数。0015 优选地,在步骤S3之前所述方法还包括生成路径优先级系数,所述路径优先级系数为路径矩阵A每行中谓词的使用次数与所述每行中谓词对应的优先级因子的乘积。0016 优选地,步骤S5之前

11、还包括:设定程序的初始输入I0以及迭代次数上限T,如果I0能经过路径Pi,则获得经过路径Pi的程序输入If,即If=I0;若I0不能经过路径Pi,则跳转步骤S5。0017 优选地,所述步骤S5中若所述路径Pi中谓词的类型为非线性,则所述方法包括:说 明 书CN 103019934 A2/5页50018 S51、计算所述非线性谓词的线性函数L(Ni,Ik,Pi),其中Ik为输入变量,Pi为选取的路径,Ni为Pi上的结点;0019 S52、用路径Pi中的所有线性函数和L(Ni,Ik,Pi)构造输入变量的线性约束系统,所述所有线性函数为所述路径Pi中谓词类型为线性的函数;0020 S53、计算所述线

12、性约束系统,得到输入Ik+1;0021 S54、若Ik+1能经过路径Pi,则IfIk+1;否则,重复步骤S51S53,直至得到能够经过路径Pi的输入,所述重复步骤的迭代次数上限为T。0022 优选地,步骤S51中所述计算所述非线性谓词的线性函数L(Ni,Ik,Pi)的方法具体包括:根据路径Pi上的谓词结点Ni关于输入变量Ik,得到通用线性函数L(Ni,Ik,Pi),计算所述线性函数L(Ni,Ik,Pi),使得L(Ni,Ik,Pi)=0,则所述线性函数L(Ni,Ik,Pi)代表谓词函数在Ik处的切平面,则称L(Ni,Ik,Pi)为Ni的谓词函数关于Ik的线性算术表示。0023 优选地,所述步骤S

13、5中若所述路径Pi中谓词的类型为线性,则所述方法包括:0024 S52、用路径Pi中的线性函数构造输入变量的线性约束系统;0025 S53、计算所述线性约束系统,得到输入Ik+1;0026 S54、若Ik+1能经过路径Pi,则If=Ik+1;否则,重复步骤S52S53,直至得到能够经过路径Pi的输入,所述重复步骤的迭代次数上限为T。0027 优选地,在步骤S6之后所述方法还包括:对程序输出状态的集合进行映射,并根据每一个程序输出状态对应的转移概率,将程序输出状态映射到区间01。0028 优选地,步骤S6中的所述测试用例是指从路径起始结点到终止结点所经过的边的序列。0029 优选地,执行测试用例

14、生成过程,当所述矩阵A的秩大于路径矩阵A的秩,且P(p|A)为A状态时,检查激励p的概率其中,A为输入状态,即路径矩阵A作为输入状态,p为激励。0030 (三)有益效果0031 本发明在生成测试数据时进行代码智能分析,通过自动提取路径中谓词条件中的测试数据,构成谓词线性约束系统,实现了代码智能化分析,简化人力设计测试用例和测试数据的工时,简化测试脚本编写时间,提高了测试效率。附图说明0032 图1是本发明提出的方法流程图;0033 图2是本发明中程序控制流图。具体实施方式0034 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。0035 本发明提出了一种基于数据

15、代码分离技术的测试用例生成方法,参加图1,所述方法包括:0036 S1、对程序源代码进行预处理,并生成程序控制流图;说 明 书CN 103019934 A3/5页60037 S2、根据所述程序控制流图生成路径矩阵A,并为每条路径P中的每个谓词设置对应的优先级因子;0038 S3、将所述路径根据所述优先级因子逆序排序,获得矩阵A;0039 S4、对于所述矩阵A,选取路径Pi,当选取的路径Pi组成的矩阵A的秩等于路径矩阵A的秩时,则路径选取结束;0040 S5、根据所述路径Pi中谓词的类型,生成测试数据;0041 S6、根据所述测试数据和所述路径Pi,生成测试用例。0042 本发明提出的一种基于数

16、据代码分离技术的测试用例生成方法具体为以下内容:0043 对程序源代码进行预处理,所述预处理包括删除注释、空行,提取语句和控制流信息,以及程序中变量的定义和使用情况。0044 在结构测试中,对于给定覆盖准则C,生成一组路径P,使得这组路径P能够达到C所描述的覆盖要求。本文所期望获得的基路径,是指能够覆盖边集合E的最小P集合。0045 在图论中,圈复杂度被定义为V(G)=E-N+p,其中E表示边集合,N表示程序控制流图(Program flow graph,PFG)中结点的数量,p表示连通分支数。如果不考虑PFG的方向性,则V(G)=E-N+1。但是PFG并不是强连通的,解决方法是增加一条从入口

17、到出口的边,这样PFG的圈复杂度就是V(G)=E-N+2。0046 设PFG中E为e1,e2.en,则可将PFG转化为矩阵A,其中每行表示一条路径经过的边集合,每列表示每条路径经过边的次数。由于任一矩阵的秩唯一且小于或等于列数。即不管有多少条可能路径,矩阵的秩不会超过程序控制流图中的边数。基于McCabe理论,矩阵的秩即是程序流图的圈复杂度。0047 对于程序控制流图如图2所示,根据图2可以得到路径P的集合为:0048 p1=0049 p2=0050 p3=0051 p4=0052 p5=0053 p6=0054 根据路径P的集合将PFG转化为路径矩阵A,0055 0056 路径上具有明确取值

18、要求的判断语句中的条件表达式称为分支谓词。在Macabe圈复杂度测试基础上,对每个谓词增加优先级因子,用以选取高优先级路径生成测试用例。0057 使用路径矩阵A,每行中谓词的使用次数与对应谓词的优先级因子计算乘积,说 明 书CN 103019934 A4/5页7获得该行对应路径的优先级系数,并将路径根据优先级因子逆序排序,获得矩阵A。0058 对于路径矩阵A,由于任一矩阵的秩唯一且小于或等于列数。即不管有多少条可能路径,矩阵的秩不会超过程序控制流图中的边数。基于McCabe理论,路径矩阵的秩就是程序流图的圈复杂度。0059 对于矩阵A,根据自顶向下原则,选取路径Pi用以计算测试数据,并使Pi组

19、成矩阵A,当矩阵A的秩等于时,路径选取结束。0060 因为若路径Pi中的谓词的函数是线性的,则其线性算术表示就是谓词函数本身。0061 根据筛选后得到的路径Pi,设定程序的初始输入I0以及迭代次数上限T,如果I0能经过路径Pi,则获得经过路径Pi的程序输入If,即If=I0;若I0不能经过路径Pi,则分析Pi上谓词类型,并根据谓词类型生成测试数据,步骤如下:0062 当路径Pi上谓词的函数为非线性函数,则:0063 1、计算该点谓词函数的线性算术表示L(Ni,Ik,Pi)。0064 2、根据路径Pi上的谓词结点n关于给定输入Ik的输入变量,写出一个通用线性函数L(Ni,Ik,Pi),然后计算该

20、函数,使得L(Ni,Ik,Pi)=0,所述线性函数L(Ni,Ik,Pi)代表谓词函数F在Ik处的切平面,则称L(Ni,Ik,Pi)为结点Ni的谓词函数F关于Ik的线性算术表示。0065 3、用Pi中的所有线性谓词函数和L(Ni,Ik,Pi)构造输入变量的线性约束系统,所述所有线性谓词函数为路径Pi中谓词类型为线性的函数。0066 4、求解线性约束系统,得到新的输入Ik+1。0067 5、若Ik+1能经过路径Pi,则If=Ik+1;否则,重复步骤14,直至得到能够经过路径Pi的输入,所述重复步骤的迭代次数上限为T。0068 当路径P上谓词函数为线性函数,则:S52、用路径Pi中的线性函数构造输入

21、变量的线性约束系统;0069 S53、计算所述线性约束系统,得到输入Ik+1;0070 S54、若Ik+1能经过路径Pi,则If=Ik+1;否则,重复步骤S52S53,直至得到能够经过路径Pi的输入,所述重复步骤的迭代次数上限为T。0071 对于程序:0072 0:read(a,b,c)0073 1:m=a+b0074 P1:if(2*a+b6)then0075 2:n=m0076 3:else n=b end if0077 P2:if(n-c)4 then0078 4:n=a*b*c0079 5:m+0080 P3:else if(a2+c2100)then0081 6:m=a*c+1 en

22、d if0082 P4:if(n0)then0083 7:write(m)说 明 书CN 103019934 A5/5页80084 P5:else if(b-Sin(c)0 then0085 8:write(n) end if0086 当选取路径P=0,1,P1,2,P2,4,5,P4,7,I0(1,2,3)。0087 因I0不能使经过路径P,故继续执行算法后面的步骤。构造谓词的函数关于输入变量I0的线性约束系统:0088 2*a+b-60,0089 a+b-c-40,0090 a*b*c0。0091 求解线性约束系统:0092 可求得一组解a=2,b=2,c=0。则新的输入I1=(2,2,0

23、)。因I1可以经过路径P,故算法结束。0093 选取路径P=0,1,P1,3,P2,4,5,P4,P5,8,I0(1,2,3)。0094 因I0不能经过路径P,故继续执行算法后面的步骤。因P中谓词函数P5是非线性的,故求P5F=b-sin(c)的线性算术表示:0095 可令其线性算术表示为L(B P5,Ik,P)=kb+lc+p,利用均差近似导数,可得k=1,l=0.89792,p=-2.83488,0096 所以谓词函数F=b-sin(c)关于I0的线性算术表示为L(B P5,I0,P)=b+0.89792c-2.83488.0097 构造线性约束系统:0098 2*a+b-60,0099

24、a+b-c-40,0100 a*b*c0,0101 b+0.89792*c-2.834880。0102 求解线性约束系统:0103 得I1=(2,2,1)可经过路径P,算法结束。0104 对程序输入状态的下一个相邻状态即程序输出状态的集合进行映射。根据每一个程序输出状态对应的转移概率,将输出状态映射到区间(因为转移概率和为1,则区间选在01)。0105 定义输入状态A和激励p的函数F(A,p),pP,P(A)为当前输入状态为A时的激励集合。由函数F(A,p)可得输出状态集E(A)。0106 根据生成测试数据Ii与Pi构造测试用例,得到测试用例后,到达终止状态。直到终止状态停止。0107 测试用例是从从路径起始结点到终止结点所经过的边(或激励)的序列。不断从软件使用模型的初始结点状态开始,执行测试用例的生成过程,直到选取的测试路径数组的秩超过圈复杂度,且P(p|A)为A状态时,检查激励p的概率0108 以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。说 明 书CN 103019934 A1/2页9图1说 明 书 附 图CN 103019934 A2/2页10图2说 明 书 附 图CN 103019934 A10

copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1