一种基于代码转换的MC/DC覆盖准则的软件测试数据生成方法技术

技术编号:11193007 阅读:121 留言:0更新日期:2015-03-25 21:37
本发明专利技术公开了一种基于代码转换的MC/DC覆盖准则的软件测试数据生成方法,输入为一段待测程序,输出为满足MC/DC覆盖准则的软件测试数据集合,步骤:1)定义待测程序的语句的类型;2)定义待测程序的语句的转换规则;3)根据步骤1)中定义的语句类型,识别待测程序中每条语句的类型;4)根据步骤3)中确定的待测程序中语句的类型,对每种类型的语句按照步骤2)中定义的语句转换规则进行代码转换;5)将步骤4)中得到的代码转换后的程序作为基于分支覆盖的软件测试数据生成工具的输入,得到测试数据集合。使得当测试数据集合对于代码转换后的程序T(S)的分支覆盖率达到100%时,测试数据集合对于待测程序S的MC/DC覆盖率为100%,从而达到MC/DC覆盖。

【技术实现步骤摘要】
一种基于代码转换的MC/DC覆盖准则的软件测试数据生成 方法
本专利技术涉及一种基于代码转换的MC/DC覆盖准则的软件测试数据生成方法,属于 计算机软件测试领域。
技术介绍
随着现代软件系统日益复杂庞大,软件质量问题已经严重制约了计算机技术的发 展。软件测试是保证软件质量和可靠性的主要手段,也是软件工程实施过程中必要的步骤 之一。测试数据的生成是软件测试的重要内容,程序在测试数据上执行以发现软件中存在 的错误缺陷,是软件测试领域的基本方法。 由于不可能穷举软件系统的所有程序路径,传统的完全测试(thorough testing) 技术在实际上往往是不可行的。因此,结构化的测试技术逐渐被人们所提出,结构测试是一 种按照程序内部逻辑结构和编码结构设计测试数据的测试方法。覆盖率分析技术就是一种 结构化的测试技术,目前已经成为了一种非常重要的软件质量评估方法。常用的两种覆盖 率分析技术为语句覆盖和分支覆盖。 目前,测试人员普遍采用手工方法设计测试数据,但是,手工生成测试数据的效率 极其低下,并且容易出错。尤其是为某些条件要求苛刻的路径生成测试数据是很困难的,这 使得测试成本昂贵,很难保证软件质量。测试数据自动生成技术能够自动生成对被测程序 进行测试时所需的数据,这样不但减轻了测试人员所必须付出的大量劳动,同时降低了由 手工测试而产生的高额成本,有效地大幅提高了测试过程的可信赖程度。 对于包含有复杂逻辑的安全攸关软件来说,结构化的测试技术只是考虑了程序的 结构,往往是不够充分的。因此,许多更加复杂的逻辑覆盖准则被提出,包括条件覆盖准 则(Condition Coverage, CC)、判定覆盖准则(Decision Coverage, DC)、条件 / 判定覆盖 准则(Condition/Decision Coverage,C/DC)和多重条件覆盖准则(Multiple Condition Coverage,MCC)。然而,在目前的软件测试中,对于一些嵌入了复杂逻辑语句的程序,CC、 DC、C/DC也是不够充分的,而MCC生成的测试数据数目会根据逻辑条件的数目呈现指数型 增长,使得测试数据数量异常庞大。 为了权衡测试的精确性与测试数据数目,J.J. Chilenski和S.P. Miller于1994 年提出了修订的条件/判定覆盖(Modified Condition/Decision Coverage,MC/DC)准则, 旨在能够在生成测试数据时覆盖到程序中每一个独立的判定条件,MC/DC准则要求程序中 的每个入口点和出口点至少唤醒一次,每个条件的所有可能结果至少出现一次,每个判定 本身的所有结果也至少出现一次,并且判定中的每一个条件能够独立地影响判定的结果, 即在其它条件不变的前提下仅改变这个条件的值就能使判定结果改变。MC/DC准则是一种 实用的软件结构覆盖率测试准则,已被广泛地应用于软件验证和测试过程中。它是在C/ DC的基础上发展起来的,但是它与C/DC存在着许多不同之处,具有更多的优点。例如,MC/ DC测试用例的数量是线性增加的。我们更倾向于使用少量的测试数据满足覆盖准则,MC/ DC准则显然是首选。另外,最近的实验结果显示,MC/DC准则有更好的检错能力,并且比其 他覆盖准则更加高效。 近几年来,动态符号执行(Dynamic Symbolic Execution,DSE)方法在测试数据生 成方面被广泛应用。MC/DC对于每一个判定条件都需要特定的组合值,但并不总是使被测程 序能够执行一个新的分支。因此,现有的基于DSE的测试数据生成方法不能够达到MC/DC 覆盖。为了解决这个问题,研究者提出了一种方法,将待测程序代码进行转换,以优化现有 的基于语句覆盖和分支覆盖的软件测试数据生成方法,从而达到MC/DC覆盖。但是,他们并 没有给出严格的转换规则,并且这些方法并不能够保证当测试数据集合对于转换后的程序 的分支覆盖率达到100%时,测试数据对于待测程序的MC/DC覆盖率也达到100%。因此, 本专利技术提出了 一系列代码转换准则,来弥补先前方法中的缺陷。
技术实现思路
本专利技术的目的在于克服现有技术中存在的问题,提供一种基于代码转换的MC/DC 覆盖准则的软件测试数据生成方法。该方法通过制定一系列代码转换规则,对待测程序的 代码进行代码转换,将转换后的程序作为符号执行工具的输入程序,使得当测试数据集合 对于待测程序的分支覆盖率达到100 %时,测试数据对于待测程序的MC/DC覆盖率也能达 至 Ij 100%。 为了实现本专利技术的目的,采用的技术方案概述如下: 一种基于代码转换的MC/DC覆盖准则的软件测试数据生成方法,其输入为一段待 测程序(软件),输出为满足MC/DC覆盖准则的软件测试数据集合,其特征在于包括以下步 骤: (1)定义待测程序的语句的类型; ⑵定义待测程序的语句的转换规则; (3)根据步骤(1)中定义的语句类型,识别待测程序中每条语句的类型; (4)根据步骤(3)中确定的待测程序中语句的类型,对每种类型的语句按照步骤 (2)中定义的语句转换规则进行代码转换; (5)将步骤(4)中得到的代码转换后的程序作为基于分支覆盖的软件测试数据生 成工具的输入,得到测试数据集合。使得当测试数据集合对于代码转换后的程序T (S)的分 支覆盖率达到100 %时,测试数据集合对于待测程序S的MC/DC覆盖率为100%,从而达到 MC/DC 覆盖(Modified Condition/Decision Coverage,MC/DC,修订的条件 / 判定覆盖)。 所述步骤(1),具体包括以下步骤: (1-1)定义待测程序的语句S的类型,语句S由如下语法规则构成,不包括函数调 用; 语句S为变量声明Type id ; 或赋值表达式x = a ; 或空语句skip ; 或顺序语句S1;S2; 或分支语句如果判断b为真(T),那么语句S1; 或分支语句如果判断b为真(T),那么语句S1;否则语句S 2。 其中,a为算术表达式,b为判断,x为变量。 所述步骤(2),具体包括以下步骤: (2-1)定义待测程序的语句S的转换规则如下; 其中,S表示待测程序中的语句,T(S)表示转换后的程序中相应的语句。a为算术 表达式,X为变量。算术表达式%是将算术表达式a中的变量X替换为变量X ^导到的;算 术表达式%是将算术表达式a中的变量X替换为变量X 2得到的;判断b 1是将判断b中的 变量X替换为变量14导到的;判断b 2是将判断b中的变量X替换为变量X 2得到的;语句 Sn、S12表示将语句S JP S 2中的变量y替换为变量y i,语句S21、S22表示将语句S JP S 2中的 变量y替换为变量y2;条件c π是将条件c 的变量X替换为变量X ^导到的;条件c 2i是将 条件Ci中的变量X替换为变量X 2得到的; 转换规则1 : S为变量声明Type id; T(S)为变量声明 Type id1;Type id2; 转换规则2: S为赋值表达式X = a ; T本文档来自技高网
...
一种基于代码转换的MC/DC覆盖准则的软件测试数据生成方法

【技术保护点】
一种基于代码转换的MC/DC覆盖准则的软件测试数据生成方法,其输入为一段待测程序,输出为满足MC/DC覆盖准则的软件测试数据集合,其特征在于包括以下步骤:(1)定义待测程序的语句类型;(2)定义待测程序的语句的转换规则;(3)根据步骤(1)中定义的语句类型,识别待测程序中每条语句的类型;(4)对步骤(3)中确定的待测程序中每条语句的类型,按照步骤(2)中定义的语句转换规则进行代码转换;(5)将步骤(4)中得到的代码转换后的程序作为基于分支覆盖的软件测试数据生成工具的输入,得到测试数据集合。使得当测试数据集合对于代码转换后的程序T(S)的分支覆盖率达到100%时,测试数据集合对于待测程序S的MC/DC覆盖率为100%,从而达到MC/DC覆盖(Modified Condition/Decision Coverage,MC/DC,修订的条件/判定覆盖)。

【技术特征摘要】
1. 一种基于代码转换的MC/DC覆盖准则的软件测试数据生成方法,其输入为一段待测 程序,输出为满足MC/DC覆盖准则的软件测试数据集合,其特征在于包括W下步骤: (1) 定义待测程序的语句类型; (2) 定义待测程序的语句的转换规则; (3) 根据步骤(1)中定义的语句类型,识别待测程序中每条语句的类型; (4) 对步骤(3)中确定的待测程序中每条语句的类型,按照步骤(2)中定义的语句转换 规则进行代码转换; (5) 将步骤(4)中得到的代码转换后的程序作为基于分支覆盖的软件测试数据生成工 具的输入,得到测试数据集合。使得当测试数据集合对于代码转换后的程序T(巧的分支覆 盖率达到100 %时,测试数据集合对于待测程序S的MC/DC覆盖率为100 %,从而达到MC/DC 覆盖(ModifiedCondition/DecisionCoverage,MC/DC,修订的条件 / 判定覆盖)。2. 如权利要求1所述的方法,其特征在于:所述步骤(1),定义待测程序的语句类型具 体包括W下步骤: (1-1)定义待测程序的语句S的类型,语句S由如下语法规则构成,不包括函数调用; 语句S为变量声明Typeid; 或赋值表达式X=a; 或空语句skip; 或顺序语句Si;S2; 或分支语句如果判断b为真(T),那么语句Si; 或分支语句如果判断b为真(T),那么语句Si;否则语句S2; 其中,a为算术表达式,b为判断,X为变量。3. 如权利要求1所述的方法,其特征在于:所述步骤(2),定义待测程序的语句的转换 规则具体包括W下步骤: (2-1)定义待测程序的语句S的转换规则如下; 其中,S表示待测程序中的语句,T(巧表示转换后的程序中相应的语句,a为算术表达 式,X为变量,算术表达式ai是将算术表达式a中的变量X替换为变量X1得到的;算术表 达式a,是将算术表达式a中的变量X替换为变量X2得到的;判断b1是将判断b中的变量 X替换为变量Xi得到的;判断b2是将判断b中的变量X替换为变量X2得到的;语句Su、S。 表示将语句Si和S2中的变量y替换为变量y1,语句S21、S22表示将语句S1和S2中的变量y 替换为变量y2;条件C 是将条件C i中的变量X替换为变量X1得到的;条件C 21是将条件C i 中的变量X替换为变量X,得到的; 转换规则1; S为变量声明Typeid; T(巧为变量声明Typeidi;TypeicU; 转换规则2 : S为赋值表达式X = a ; T做为赋值表达式Xi=ai;x2= 32; 转换规则3 : S为空语句skip; T(巧为空语句skip; 转换规则4 : S为顺序语句Si;S2; T做为顺序语句T(Si) ;T(S2); 转换规则5 : S为分支语句: 如果判断b为真(T) 语句Si; T做为: 语句G化); 如果判断bi为真(T) 如果判断b2为真(T) 转换语句Si到语句T(S1); 否...

【专利技术属性】
技术研发人员:卢琼吴添勇严俊
申请(专利权)人:中国科学院软件研究所
类型:发明
国别省市:北京;11

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

1