[发明专利]一种自动生成字符串类型测试用例的方法有效

专利信息
申请号: 201510628462.2 申请日: 2015-09-28
公开(公告)号: CN105224455B 公开(公告)日: 2018-01-09
发明(设计)人: 王雅文;张旭舟;宫云战;金大海;黄俊飞 申请(专利权)人: 北京邮电大学
主分类号: G06F11/36 分类号: G06F11/36
代理公司: 北京永创新实专利事务所11121 代理人: 赵文利
地址: 100876 *** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 自动 生成 字符串 类型 测试 方法
【权利要求书】:

1.一种自动生成字符串类型测试用例的方法,其特征在于,包括如下步骤:

步骤一、针对源程序的执行路径,对每条执行路径的每个语句分别使用符号执行技术进行约束提取,得到每个语句的字符串约束;

步骤二、取当前语句的字符串约束,判断是否包含字符串函数,如果包含,则执行步骤三;否则执行步骤四;当前语句初始值为第一个语句;

步骤三、根据字符串函数在路径中所表示的语义,使用中间变量以及原子函数的组合来表示该函数;

原子函数包括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的每一个成员,执行结束;

原子函数解释过程中,在字符串的数据结构中新建的字符成员如果与现有的字符成员冲突,或者数据结构的长度属性不符合要求,则原子函数解释失败;

步骤八、参数取值错误后,根据步骤六中选择的参数符号和参数确定值增加新的约束:当前参数符号不能取当前参数确定值;并且将原子函数解释失败导致的改变恢复至原来状态,重新转到步骤六;

步骤九、使用区间运算方法,对参数符号的取值区间进行缩减,缩减成功后转到步骤五继续处理下一个字符串约束;否则,返回步骤八;直至对当前路径约束中对所有字符串处理完毕,转到步骤十一;

步骤十、在当前数值型符号的值域中选取一个值作为其确定值;转到步骤九;

步骤十一、若所有字符串约束的参数符号都得到了确定值,则结合变量和符号的关系组成测试用例,测试用例生成结束。

2.如权利要求1所述的一种自动生成字符串类型测试用例的方法,其特征在于,所述的字符串类型使用的数据结构符号包含两个属性:1)是字符成员属性,以“下标”_“字符”为键值对的集合;2)是长度属性。

3.如权利要求1所述的一种自动生成字符串类型测试用例的方法,其特征在于,所述的步骤六具体为:判断当前原子函数是否为第一种原子函数strAtomic1(str,i),如果是,则为第二个参数i在值域中选择一个值,执行结束;否则判断当前原子函数是否为第二种原子函数strAtomic2(str,down,up),如果是,依次为第二、三个参数down、up在其值域中各选择一个值,执行结束;否则,当前原子函数是第三种原子函数strAtomic3(str,n),为第二个参数n在其值域中选择一个值,执行结束。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京邮电大学,未经北京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201510628462.2/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top