[发明专利]一种自动生成字符串类型测试用例的方法有效
申请号: | 201510628462.2 | 申请日: | 2015-09-28 |
公开(公告)号: | CN105224455B | 公开(公告)日: | 2018-01-09 |
发明(设计)人: | 王雅文;张旭舟;宫云战;金大海;黄俊飞 | 申请(专利权)人: | 北京邮电大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京永创新实专利事务所11121 | 代理人: | 赵文利 |
地址: | 100876 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种自动生成字符串类型测试用例的方法,首先,使用一个字符数组和一个长度属性作为字符串类型的数据模型,定义了三个原子函数,使用三个原子函数的组合表示C语言标准库中的字符串函数,然后,利用符号执行技术得到一条程序路径的约束提取过程中,对于字符串和字符串函数进行约束提取,得到包含原子函数表示的字符串约束;最后,针对源程序的执行路径,对每条路径的字符串约束进行约束求解,约束求解过程中,根据原子函数的参数的确定值,对于原子函数进行解释得到字符串的结构和取值,直到得到满足路径所有约束的测试用例。优点在于,应用于处理各种字符串函数,减少人工测试耗费的代价,提高软件测试的自动化程度。 | ||
搜索关键词: | 一种 自动 生成 字符串 类型 测试 方法 | ||
【主权项】:
一种自动生成字符串类型测试用例的方法,其特征在于,包括如下步骤:步骤一、针对源程序的执行路径,对每条执行路径的每个语句分别使用符号执行技术进行约束提取,得到每个语句的字符串约束;步骤二、取当前语句的字符串约束,判断是否包含字符串函数,如果包含,则执行步骤三;否则执行步骤四;当前语句初始值为第一个语句;步骤三、根据字符串函数在路径中所表示的语义,使用中间变量以及原子函数的组合来表示该函数;原子函数包括3个,分别为:(1)访问字符串str中下标为i的一个成员,原子函数为strAtomic1(str,i),参数符号为:str和i;(2)同时访问字符串str中下标由down至up的|up‑down+1|个成员,原子函数为:strAtomic2(str,down,up),参数符号为:str,down,up;(3)同时访问str中n个不确定位置的成员,原子函数为:strAtomic3(str,n),参数符号为:str,n;中间变量指在三种原子函数中除了str之外的参数变量的位置,均为数值类型;步骤四、顺序选取下一语句返回步骤二,直至当前语句是尾语句,输出所有字符串约束,并为中间变量的所有数值型符号,生成初始值域;步骤五、判断当前数值型符号是否为原子函数的参数,如果是转到步骤六;否则转到步骤十;步骤六、为当前原子函数的参数在初始值域中选值作为该参数确定值,执行步骤七;步骤七、根据原子函数的参数确定值,对原子函数进行解释,如果解释失败,则说明参数取值错误,转到执行步骤八;否则执行步骤九;具体解释过程为:若当前选择的是第一种原子函数strAtomic1(str,i)的参数符号i,在i的值域中选择一个值Vi,若str的字符成员集合中不存在下标是Vi的成员,则新建下标为Vi的成员;否则取str中位置是Vi的成员;然后对于路径约束中的strAtomic1(str,i)替换为str中位置Vi的成员,执行结束;若当前选择的是第二种原子函数strAtomic2(str,down,up)的参数符号down和up,在down和up的值域中分别选择值Vdown和Vup,若str的字符成员集合中不存在下标是Vdown至Vup的范围中的成员,则新建相应位置的成员;否则取已经存在的成员,并且对于路径约束中的strAtomic2(str,down,up)替换为str中位置在Vdown至Vup的范围中的成员,执行结束;若当前选择的是第三种原子函数strAtomic3(str,n)的参数符号n,在n的值域中选择值Vn,然后生成Vn个str的字符成员,对应的下标分别为indexv1,indexv2,...indexvn,对于路径约束中的strAtomic2(str,down,up)替换为str中位置在indexv1,indexv2,...indexvn的每一个成员,执行结束;原子函数解释过程中,在字符串的数据结构中新建的字符成员如果与现有的字符成员冲突,或者数据结构的长度属性不符合要求,则原子函数解释失败;步骤八、参数取值错误后,根据步骤六中选择的参数符号和参数确定值增加新的约束:当前参数符号不能取当前参数确定值;并且将原子函数解释失败导致的改变恢复至原来状态,重新转到步骤六;步骤九、使用区间运算方法,对参数符号的取值区间进行缩减,缩减成功后转到步骤五继续处理下一个字符串约束;否则,返回步骤八;直至对当前路径约束中对所有字符串处理完毕,转到步骤十一;步骤十、在当前数值型符号的值域中选取一个值作为其确定值;转到步骤九;步骤十一、若所有字符串约束的参数符号都得到了确定值,则结合变量和符号的关系组成测试用例,测试用例生成结束。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京邮电大学,未经北京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201510628462.2/,转载请声明来源钻瓜专利网。