一种计算机软件白盒测试的实现方法及系统技术方案

技术编号:4270222 阅读:546 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种计算机软件白盒测试的实现方法及系统。该实现方法包括:步骤1,求解判定布尔表达式中各个条件的独立对;步骤2,基于各个条件对应的独立对求解判定最小独立对集合,求解判定出的最小独立对集合构成参考用例集合;步骤3,选择参考用例集合中一个最小独立对集合,并生成与该最小独立对集合对应的测试用例集合,该测试用例集合即为最小测试集;步骤4,用最小测试集对源程序进行修正条件/判定覆盖测试。本发明专利技术可以减少修正条件/判定覆盖(MC/DC)测试的成本,避免了生成大量的测试用例以及对测试用例进行精简的过程。

【技术实现步骤摘要】

本专利技术涉及计算机软件领域,尤其涉及一种计算机软件白盒测试的实现方法及系统
技术介绍
软件测试是软件工程中的重要环节,由于测试目标的不同,存在不同的测试标准。 修正条件/判定覆盖(Modified Condition/Decision Coverage,简称MC/DC),是软件白盒 测试领域逻辑覆盖测试技术中的一种测试标准。该标准最早是在1994年由John Jos印h Chilenski和Steven P. Miller两位工程师在D0-178B标准中首次提出。D0-178B标准由 航空无线电技术协会制定,美国联邦航空局将其用于测试所有新开发的航空软件,时至今 日已经成为航空软件以及关键安全领域软件测试中一个广泛应用的测试标准。在D0-178B 中阐明了 MC/DC的意义对于关键性的实时程序而言,超过半数的可执行代码可能都与布 尔运算表达式有关,表达式的复杂性应得到关注。MC/DC测试标准主要是为了检测程序中布 尔表达式当中可能存在的错误。 修正条件/判定覆盖中的条件(condition)表示不含有逻辑操作符的布尔表达 式,例如(x > 20)、 (x > y > 10);如果同一个布尔表达式在一个判定中出现了多次,那么 该表达式应算作多个条件。判定(decision)表示由条件和零个或者多个逻辑操作符所组 成的一个布尔表达式,例如Z = ((x > 20)or(y > 20))and((x > 20)or(z < 20))代表了 一个判定,这个判定可以简写为(A or B)and(A orD)。该判定中有四个条件A、 B、 A、 D。 MC/DC测试标准有四条准则 a)程序的入口点和出口点都要被执行到; b)程序中每一个判定的所有可能结果都要被执行到; c)程序中每一个判定中的每一个条件的所有可能结果都要被执行到; d)判定中的每一个条件都能独立影响判定的结果。 MC/DC标准中最重要的一条准则就是判定中的每一个条件都能独立影响判定的 结果。若一组两个测试用例中对于某个条件的取值相反,而保持其他条件取值不变,如果判 定的结果也相反,则表明此条件能够独立的影响判定的结果,说明该条件在逻辑上是有效 的,同时这样的一对测试用例可以构成该条件在MC/DC测试标准中的独立影响对(简称为 独立对)。例如布尔取值组合(true, true) (false, true)可以作为判定(A and B)中条件 A的独立对,为简单起见,下文中都将以大写字母T表示true,大写字母F表示false。输入 上述的取值组合,判定的结果由T变为F,条件A改变的同时,保持了条件B的取值。应用 MC/DC测试标准,关键就是计算判定中每个条件的独立对。 在MC/DC独立对的实际求解过程中,还需要考虑两个问题,一个是布尔运算中的 短路计算;另外一个是判定表达式中条件之间的耦合关系。 所谓布尔表达式的短路计算是指无需对表达式中全部的操作数和操作符进行计 算就可得到表达式的布尔值。例如对于布尔表达式Z二 (A and B),若A为false,则无需计算B的值就能确定Z必为false。此判定中在A的值为false的时候,可以进行短路计 算;反之,若A的值为true,则还需计算B的值。 此外,在实际测试过程中,由于判定中条件之间可能存在耦合关系,改变一个条件 的取值而保持其他条件取值不变这个原则有时并不能保证。条件之间的耦合关系可以分为 以下两类 a)强耦合指改变一个条件的取值,必然会改变其他某些条件的取值,例如判定 (x > O)and(y > lO)or(x <= 0)中的条件(x > 0)和(x <= 0);两个条件的取值必然相反。 b)弱耦合指改变一个条件的取值,可能改变其他一些条件的取值,例如判定(X > O)and(x > 20)中的两个条件。弱耦合也能导致某些取值组合无法得到,若(x > 20)为 true,则(x > 0)必然为true,因此(x > 0)为false,而(x > 20)为true的取值组合无 法获得。 条件之间存在这样的耦合关系导致在求解独立对的时候,改变一个条件的取值的 同时并不能保证其他条件取值保持不变,则此时需要对独立对的定义和求解方式作相应 修改。目前应用中主要有两种形式的独立对定义,对应不同的求解方式,即唯一原因法 (unique-cause method)禾口屏蔽法(maskingmethod)。 所谓唯一原因法,就是按照独立对的初始定义求解独立对。亦即在改变当前条件 的布尔取值时,保持判定中其他条件的取值不变,若结果改变,则说明改变前后的两个case 构成了当前条件的独立对; 所谓屏蔽法,就是在求解独立对的过程中,屏蔽掉耦合条件的取值,如判定((A and B) || (A2 and C))中,A ~是相同的条件(下标表示条件在判定中的不同位置)。求 解条件A的独立对时,保持子表达式(A2 and C)的取值为false (意味着保持条件C的取 值为false)即可屏蔽掉4对^的影响。 通常在求解独立对的过程中,一般采用短路计算;在判定表达式中无条件耦合的 情况下采用唯一原因法,若存在耦合,则采用屏蔽法求解独立对。 不论采用哪种方法,求解独立对的最终目的都是为了从独立对结果出发,指导测 试用例的生成,对源程序测试其MC/DC覆盖率,依此检测出源程序中布尔表达式的错误。 MC/DC测试标准是广泛应用在航空、国防等关键安全领域的软件测试标准,主要用 于检测程序中布尔表达式的错误。在测试过程中,传统的流程如下 第1步先求解判定表达式中各个条件的独立对在无条件耦合的情况下,采用唯 一原因法求解独立对;若判定中各个条件之间存在耦合(特别是强耦合)的情况,则采用屏 蔽法求解独立对。 第2步根据独立对的求解结果生成测试用例由于每一个独立对包含两个case, 对每一个case生成相应的测试用例。 第3步在第2步中,各条件对应的独立对结果在某些情况下会很多,例如采用屏 蔽法求解的时候。此时将会生成大量的测试用例,特别在对整个程序测试的时候,程序中大 量的判定将会生成海量的测试用例,为了节约测试成本、降低测试难度,需要对大量的测试 用例进行精简,以求得到一个最小的测试用例集合(亦即最小测试集)。 第4步将最小测试集作为输入,检测程序中布尔表达式相关的错误。 传统的流程总体来说是先求解判定表达式中条件的独立对,根据独立对生成测试 用例。由于大量的测试用例中往往存在冗余的部分,而且为了减少测试工作量,通常需要对 测试用例进行精简以得到最小测试集。如果能够从独立对结果出发,求解得到一个最小的 独立对集合,用最小独立对集合指导生成最小测试集。则可以避免了生成大量的测试用例 以及对测试用例进行精简的过程。目前尚未发现有直接求解此类最小(或最优)的独立对 集合的方法。
技术实现思路
为了解决上述的技术问题,本专利技术提供了一种计算机软件白盒测试的实现方法及 系统,主要是针对MC/DC测试标准。其目的在于,避免生成大量的测试用例以及对测试用例 进行精简的过程。 本专利技术提供了一种计算机软件白盒测试的实现方法,包本文档来自技高网
...

【技术保护点】
一种计算机软件白盒测试的实现方法,其特征在于,包括:步骤1,求解判定布尔表达式中各个条件的独立对;步骤2,基于各个条件对应的独立对求解判定最小独立对集合,求解判定出的最小独立对集合构成参考用例集合;步骤3,在参考用例集合中选取一个最小独立对集合,并生成与该最小独立对集合对应的测试用例集合,该测试用例集合即为最小测试集;步骤4,用最小测试集对源程序进行修正条件/判定覆盖测试;最小独立对集合满足下述条件:给定一个判定Z,该判定含有N个条件,N个条件中含有M个不相等条件,M个不相等条件的真值表中的2↑[M]个用例C↓[i]组成用例集合S,i∈[1,2↑[M]];每一个条件对应一个非空有限独立对结果集合R↓[k](i∈[1,N]),R↓[k]中的元素为独立对P,独立对P包含两个用例C↓[i]、C↓[j],i,j∈[1,2↑[M]];由N个独立对P↓[k]中的所有用例构成集合D,任意P↓[k]∈R↓[k],k∈[1,N];满足集合元素个数|D|最小的D为最小独立对集合。

【技术特征摘要】
一种计算机软件白盒测试的实现方法,其特征在于,包括步骤1,求解判定布尔表达式中各个条件的独立对;步骤2,基于各个条件对应的独立对求解判定最小独立对集合,求解判定出的最小独立对集合构成参考用例集合;步骤3,在参考用例集合中选取一个最小独立对集合,并生成与该最小独立对集合对应的测试用例集合,该测试用例集合即为最小测试集;步骤4,用最小测试集对源程序进行修正条件/判定覆盖测试;最小独立对集合满足下述条件给定一个判定Z,该判定含有N个条件,N个条件中含有M个不相等条件,M个不相等条件的真值表中的2M个用例Ci组成用例集合S,i∈[1,2M];每一个条件对应一个非空有限独立对结果集合Rk(i∈[1,N]),Rk中的元素为独立对P,独立对P包含两个用例Ci、Cj,i,j∈[1,2M];由N个独立对Pk中的所有用例构成集合D,任意Pk∈Rk,k∈[1,N];满足集合元素个数|D|最小的D为最小独立对集合。2. 如权利要求1所述的计算机软件白盒测试的实现方法,其特征在于,步骤1中,根据唯一原因法或者屏蔽法求解各个条件对应的独立对。3. 如权利要求1所述的计算机软件白盒测试的实现方法,其特征在于,步骤2中,从每个条件对应的独立对中选择一个进行组合生成独立对集合,并选择独立对集合中元素最少的独立对集合作为最小独立对集合。4. 如权利要求1所述的计算机软件白盒测试的实现方法,其特征在于,步骤4中,统计最小测试集的修正条件/判定覆盖的覆盖率;如果根据覆盖率判定需要补充测试用例,则在剩余的最小独立对集合选取至少一个并执行步骤3,生成对应的测试用例作为补充。5. —种计算机软件白盒测试的实现系统,其特征在于,包括独立对求解模块,用于求...

【专利技术属性】
技术研发人员:陈聪明李丰冯晓兵霍玮
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1