[发明专利]一种自动生成字符串类型测试用例的方法有效
| 申请号: | 201510628462.2 | 申请日: | 2015-09-28 |
| 公开(公告)号: | CN105224455B | 公开(公告)日: | 2018-01-09 |
| 发明(设计)人: | 王雅文;张旭舟;宫云战;金大海;黄俊飞 | 申请(专利权)人: | 北京邮电大学 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 北京永创新实专利事务所11121 | 代理人: | 赵文利 |
| 地址: | 100876 *** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 自动 生成 字符串 类型 测试 方法 | ||
技术领域
本发明涉及软件测试领域中的测试用例自动生成技术,具体是一种自动生成字符串类型测试用例的方法。
背景技术
随着互联网时代的来临,数据库、网络协议等软件得到广泛应用,字符串类型经常作为基本的数据类型使用,并且通过标准库中的字符串函数进行操作。
面向路径的测试用例自动生成技术中,通常的方法是利用符号执行技术得到路径上输入变量的约束,即符号表达式,然后利用约束求解器得到满足路径约束的变量取值。
1976年,James C.King等人提出符号执行技术用于判断程序的正确性。
符号执行技术是指:使用符号执行分析程序时,该程序会使用符号值作为输入,而非一般执行程序时使用的具体值。在达到目标代码时,分析器可以得到相应的路径约束,即输出符号表达式,然后通过约束求解器来得到可以触发目标代码的具体值,即通过对符号表达式的分析对程序的正确性进行判定。
现有技术中,测试用例自动生成的工具无法自动对字符串类型生成满足约束的测试用例。由于字符串类型是一种常用的复杂数据类型,具有结构属性和数值属性,并且常常通过字符串函数调用的形式操作,字符串函数操作导致字符串的约束是非线性的约束,因此现有的测试用例自动生成工具无法支持字符串的测试用例自动生成。
发明内容
本发明的目的是为了解决现有的测试用例自动生成工具无法支持字符串的测试用例自动生成,提出了一种自动生成字符串类型测试用例的方法,具体包括如下步骤:
步骤一、针对源程序的执行路径,对每条执行路径的每个语句分别使用符号执行技术进行约束提取,得到每个语句的字符串约束;
步骤二、取当前语句的字符串约束,判断是否包含字符串函数,如果包含,则执行步骤三;否则执行步骤四;当前语句初始值为第一个语句;
步骤三、根据字符串函数在路径中所表示的语义,使用中间变量以及原子函数的组合来表示该函数;
首先、生成字符串类型的数据结构符号,其结构符号包含两个属性:
1)是字符成员属性,以“下标”_“字符”为键值对的集合;2)是长度属性;
然后、定义三个原子函数:
(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在值域中选择一个值,执行结束;
若当前原子函数是第二种原子函数strAtomic2(str,down,up),则依次为第二、三个参数
down,up在其值域中各选择一个值,执行结束;
若当前原子函数是第三种原子函数strAtomic3(str,n),则为第二个参数n在其值域中选择一个值,执行结束;
如果值域中的值都被选取过并且该参数不是首个选取的数值型符号,则选择前一个数值型符号作为当前符号,并转到步骤五;如果值域中的值都被选取过并且该参数是首个选取的数值型符号,则算法失败,执行结束。
步骤七、根据原子函数的参数确定值,对原子函数进行解释,如果解释失败,则说明参数取值错误,转到执行步骤八;否则执行步骤九;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京邮电大学,未经北京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510628462.2/2.html,转载请声明来源钻瓜专利网。





