一种基于四值逻辑的位运算测试用例生成方法

文档序号:9288376阅读:465来源:国知局
一种基于四值逻辑的位运算测试用例生成方法
【技术领域】
[0001] 本发明涉及软件测试中测试用例生成技术领域,尤其是位运算的处理,具体涉及 一种基于四值逻辑的位运算测试用例生成方法。
【背景技术】
[0002] 位运算是指对整数二进制形式的每一位进行逻辑运算;逻辑运算又称布尔运算, 以假或真为单位进行运算;〇表示假,1表示真。
[0003] C语言的数值运算共有11个,分为三类:①以四则运算为基础:包括加、减、乘、除、 取模;对应的运算符号分别为: +、_、*、/、% ;②以逻辑运算为基础:包括按位与、按位或、 按位异或、按位取反;对应的运算符号分别为:&、I、~、~;③移位:包括右移、左移,对应的 符号分别为:〈〈、>>,移位并不基于逻辑运算。
[0004]位运算以逻辑运算为基础,对16个C工程近15万行代码进行统计,如图1所示, 位运算在工程中出现的比例为
[0005]测试用例(TestCase)是为某个特殊目标而编制的一组数值,自动生成测试输入, 以便测试某个程序路径或核实是否满足某个特定需求。
[0006]在使用搜索技术进行测试用例生成时,变量的值域越大,搜索空间就越大。为了减 小搜索空间,需要计算变量的值域;现有技术中,对于四则运算,使用区间运算来计算变量 的值域。但是,对于位运算,因为传统的区间运算都是基于四则运算,位运算基于逻辑运算, 所以,无法使用区间运算来计算变量的值域,位运算的测试用例的搜索效率很低。

【发明内容】

[0007]本发明的目的是为了解决位运算的测试用例生成效率不高的问题,提供了一种基 于四值逻辑的位运算测试用例生成方法。
[0008] 具体实施步骤如下:
[0009] 步骤一、分别设定四值逻辑运算的方法和四值逻辑运算的逆运算方法;
[0010] 四值逻辑运算定义:将逻辑变量的值域抽象成四种取值,分别表示为:丄,〇, 1,T; 其中丄 =鍵、0 = {0}、1 = {1}、T= {0, 1};
[0011] 逻辑运算的逆运算定义:已知逻辑运算xRy=z,通过y和z求x的运算称为R的 逆运算,记为x=zR\;R是位运算符,RG{&、|、~}。
[0012]基于四值逻辑的运算式包括:x与y,x或y,x异或y和x按位取反;分别用符号表 不:x&y,x|y,x~y和~x;
[0013] 四值逻辑的逆运算式包括:x与y的逆运算,x或y的逆运算,x异或y的逆运算和 x按位取反的逆运算;分别用符号表示:z& z|\,z\和~zS
[0014] 步骤二、将位运算约束分解为逻辑运算约束;
[0015]位运算约束的形式有两种:①一元约束:~x=y;②二元约束:xRy=z;其中, X、y、Z是整数;将位运算约束中的整型变量表示成二进制形式,则二进制形式中的每一位 对应一个逻辑运算约束,符号化描述如下:
[0016] ~x=y-~X02. ? ?X;. ? ?xn=y?y;. ? ?yn-~x!=y厂~x2=y2. ?,~X; =yi. ?xn=yn,其中
[0017] Xl,yiG{〇,l};n为整数,表示二进制形式下的位数。
[0018] xRy=zX!X2. . .x;. . .xnRy1y2. . .y;. . .yn=z. .z;. . .zn^-
[0019] XjRy^zjx2Ry2=z2 ? ? ?XjRy^z i. . .xnRyn=zn
[0020] 其中,XiJoZiG{〇,l}
[0021] 步骤三、将逻辑运算约束对应为约束满足问题;
[0022] 约束满足问题表示成三元组〈X,D,C> ;X是变量集,D是与变量集对应的值域集,C 是变量的约束集;
[0023] 步骤四、依据四值逻辑运算和逆运算的方法使用搜索算法求解逻辑运算约束;
[0024] 步骤401、应用四值逻辑运算和逆运算的方法对约束集C进行抽象计算;得到变量 集X中各个子集的抽象结果;
[0025] 变量集X中的元素即为子集,用Xl表示基于四值逻辑的位运算生成的测试用例的 二进制形式。
[0026] 步骤402、从变量集X的抽象结果中选择一个子集变量Xl进行处理;
[0027] 步骤403、选定子集变量^后,从对应的值域集D中选择一个子集D1;
[0028] 步骤404、将<Xl,DA代入约束集C,如果发生矛盾,则从值域集D中重新选择子集 D1;否则,继续选择下一组〈X1+1,D1+1>,直至变量集X中所有变量都赋值。
[0029] 步骤405、变量集X中所有变量都赋值且满足约束,求解成功。
[0030] 变量集X的一个赋值如果是约束求解问题的一个解,满足当且仅当该赋值包含所 有变量且满足所有约束。
[0031] 步骤五、将逻辑运算约束的解合成为位运算约束的解,该位运算约束的解为生成 的测试用例。
[0032] 本发明的优点与积极效果在于:一种基于四值逻辑的位运算测试用例生成方法, 应用多值逻辑来计算变量的值域,从而提高搜索空间和位运算的搜索效率,进一步提高了 位运算的测试用例生成效率。
【附图说明】
[0033] 图1为本发明中位运算在工程中出现频次的统计:
[0034] 图2为本发明一种基于四值逻辑的位运算测试用例生成方法的流程图;
[0035] 图3(a)为本发明四值逻辑运算定义的表格示意图;
[0036] 图3(b)为本发明四值逻辑逆运算定义的表格示意图。
【具体实施方式】
[0037] 下面将结合附图和实施例对本发明作进一步的详细说明。
[0038] 在二值逻辑中,一个命题只有"真"和"假"两种取值,如果不限于"真"、"假"二值, 而是三值、四值、任意多个值,则称之为多值逻辑。
[0039] 1920年,Jan.Lukasie冒icz扩展了Aristotle的经典二值逻辑,仓丨j建了"可能"这个 逻辑值,以解决Aristotle的"海战f孛论"。1921年,EmilL.Post引入了n值逻辑(n彡2)。 在逻辑运算中应用多值逻辑是因为:即使操作数不确定,也可能确定运算结果。
[0040] 比如x&0 =y,无论x为 0 或 1,x&0 = 0,所以y= 0。
[0041] 逻辑运算的一些抽象取值如下:
[0042]
[0043] 注:由于0 -T和1 -T不能减小x的取值域,所以没有列出;
[0044] -种基于四值逻辑的位运算测试用例生成方法,采用四值逻辑来提高位运算的求 解效率。如图2所不,具体实施步骤如下:
[0045] 步骤一、分别设定四值逻辑运算的方法和四值逻辑运算的逆运算方法;
[0046] 四值逻辑运算定义:将逻辑变量的值域抽象成四种取值,分别表示为:丄,0, 1,T; 其中丄=0、0 = {〇}、1 = {1}、T= {0, 1};
[0047] 逻辑运算的逆运算定义:已知逻辑运算xRy=z,通过y和z求x的运算称为R的 逆运算,记为x=zR\ ;R是位运算符,RG{&、|、~}。
[0048] 基于四值逻辑的运算式包括:x按位与y,x按位或y,x按位异或y和x按位取反; 分别用符号表示:x&y,x|y,x~y和~x;
[0049] 四值逻辑的逆运算式包括:x按位与y的逆运算,x按位或y的逆运算,x按位异或 y的逆运算和x按位取反的逆运算;分别用符号表示:z& z|\,z\和~zS
[0050] 如图3 (a)所示,四值逻辑运算的方法如下:
[0051] (l)x&y:x的值为丄时,无论y是什么值,x&y的结果都为丄;
[0052]x的值为0时,y从丄、0、1或T中选取,当y为丄,贝ljx&y的结果为丄;当y为0、1 或T中任一值时,x&y的结果为0 ;
[0053]x的值为1时,y从丄、0、1或T中选取,当y为丄,贝ljx&y的结果为丄;当y为0则 x&y的结果为0,当y为1贝ljx&y的结果为1,当y为T,贝ljx&y的结果为T;
[0054]x的值为T时,y从丄、0、1或T中选取,当y为丄,贝ljx&y的结果为丄,当y为0则 x&y的结果为0,当y为1贝ljx&y的结果为T,当y为T,贝ljx&y的结果为T。
[0055] (2)x|y:x的值为丄时,无论y是什么值,x|y的结果都为丄;
[0056]x的值为0时,y从丄、0、1或T中选取,当y为丄,贝ljx|y的结果为丄,当y为0,则 x|y的结果为0,当y为1,则x|y的结果为1,当y为T则x|y的结果为T;
[0057]x的值为1时,y从丄、0、1或T中选取,当y为丄,贝ljx|y的结果为丄,否贝1J,当y 为0、1或T中任一值x|y的结果为1 ;
[0058]x的值为T时,y从丄、0、1或T中选取,当y为丄,贝ljx|y的结果为丄,当y为0,则 x|y的结果为T,当y为1,则x|y的结果为1,当y为T,则x|y的结果为T。
[0059] (3)x~y:x的值为丄时,无论y是什么值,x~y的结果都为丄;
[0060]x的值为0时,y从丄、0、1或T中选取,当y为丄,贝ljx~y的结果为丄,当y为0则 x~y的结果为0,当y为1则x~y的结果为1,当y为T则x~y的结果为T;
[0061]x的值为1时,y从丄、0、1或T中选取,当y为丄,则x>的结果为丄,当y为0则 x~y的
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1