全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
文章的目的在于通过比较发现条件判定覆盖(即Condition/Decision Coverage C/DC)和修正条件判定覆盖(Modified Condition/Decision Coverage即MC/DC)的差异.软件测试是一项大型的软件工程中必不可少且非常重要的一部分,软件测试使用两种测试方法:静态测试和动态测试. C/DC和MC/DC就是白盒测试方法中的逻辑覆盖方法中的两个成员.目前这两种方法在软件测试中被广泛应用,尤其是MC/DC更是被很多大型软件测试(如飞行控制软件的测试)所应用2 对C/DC和MC/DC的描述2.1 C/DC的定义C/DC是Condition/Decision Coverage的缩写,含义是条件判定覆盖.对它的定义为:Condition/Decision Coverageit combines the requirements for decision coverage with those for condition coverage.That is,there must be suficient test cases to toggle the decision outcome between true and false and to toggle each condition value between true and false.if A and (B or C) then? else?具有3个条件的真值表 中选择它的测试集为 TTF,FFT分析如下:当 A,B和C的值依次分别取T,T,F时判定A and (B or C)的值为T;当将A,B和C的值依次分别取F,F,T时,判定A and (B or C)的值为F;在测试中,3个条件A,B,C的所有可能取值T、F,都被测试,而判定 A and (B or C)的所有可能取值T和F也都被执行了一次,由此说明此测试集满足C/DC方法的要求,是C/DC方法的其中一个测试集合.2.2 MC/DC的定义MC/DC是Modified Condition/Decision Coverage(MC/DC)的缩写,含义是修正条件判定覆盖.对它的定义为:Condition a Boolean expression containing no Boolean operators:Decision a Boolean expression composed of conditions and zero or more Boolean operators:Modified Condition/Decision Coverage every point of entry and exit in the program has been invoked at least once,every condition in the program has taken all possible outcomes at least once,and each condition in a decision has been shown to independently affect a decision S outcome by varying just that condition while holding fixed all other possible conditions.由上可知:在MC/DC这种测试方法中,条件表示不含有布尔操作符号的布尔表达式;判定表示由条件和零或者很多布尔操作符号所组成的一个布尔表达式;而修正条件判定覆盖方法要求在一个程序中每一种输入输出至少得出现一次,在程序中的每一个条件必须产生所有可能的输出结果至少一次,并且每一个判定中的每一个条件必须能够独立影响一个判定的输出,即在其他条件不变的前提下仅改变这个条件的值,而使判定结果改变.与上文同样的例子:if and (B or C) then? else? 这条语句,A and (B or C)是一个判定,A,B,C均为条件,使用MC/DC方法找出分别对应此3个条件的测试集中有4组元素为:TTF, F,TFT,FFT.方法如下:测试元素均从表1中选取,保持A和B的值不变测试元素TFF和TFT可以改变C条件的值和整个表达式的结果(F变成了T);而保持A和C的值不变测试元素TTF和TFT可以改变B条件的值和整个表达式的执行结果(T变成了F);而当保持B和C的值不变测试元素TFT和FFT可以改变A条件的值和整个表达式的执行结果(T变成了F).这个测试集完全满足MC/DC的要求即当锁定其它的条件保持不变,而改变判定中一项条件的值,必然引起整个表达式执行的变化.3 C/DC和MC/DC之间的差异3.1选取两种方法的条件不同当以下的需求在程序测试中遇到时,需要考虑用MC/DC方法:每一个程序模块的输入和输出点都要考虑至少出现1次,每个程序的判定到所有可能的结果值要至少实现1次;程序的判定被分解为通过逻辑操作符(AND,OR,etc.)连接为BOOL条件,每一个条件对于判定的结果值是独立的,或者说单个条件的变化将导致判定的最后变化.而对于C/DC方法而言,在程序需要测试时,由于它只要求“判定中每个条件的所有可能取值至少执行一次,同时每个判定的所有可能判定结果至少执行一次”,要求比较简单,所以它可以与其他覆盖方法一样适合于使用在绝大多数的程序的测试中.3.2 两者的测试集不同The MC/DC criterion enhances the condition/decision coverage criterion by requiring that each condition be shown to independently affect the outcome of the decision.MC/DC方法虽是在C/DC方法上的改进,但是两者在寻找测试集时是不同的,原因在于MC/DC方法要求对于判定中的所有条件当固定其他条件的值时每一个已选定的条件必须能够独立地影响一个判定的输出.在以上的举例中:if A and (B or C) then?else? 这条语句上文已找出用C/DC方法其一个测试集合为TTF,FFT,同时如果采用MC/DC方法其测试集合可为TTF,TFF,TFT,FFT.对比两个测试集可发现测试集中的元素是不同的,而且元素组数也是不同(C/DC方法有2组,MC/DC方法有4组).原因是:对于C/DC方法来说,不管条件个数有多少,一个测试集中的元素组数最少可以为2个.推导如下:各个条件的取值只有两种T,F,从每个条件的取值中取出一个将它们组合起来形成一组元素,并使得这组元素分别一一对应相应条件而代人整个判定得出的最后结果值为T;然后从剩下的各个条件的取值中组合形成另一组元素并使得元素中的各个值分别对应相应条件代人整个判定后能使表达式的结果值为F(这两种情况是一定可以从真值表中找到的),这样就达到了C/DC取测试集的要求,即各个条件的可能取值T和F都必须取到,且判定结果的可能取值T,F也必须实现.而另外对于MC/DC方法来说如果在一个表达式中N个条件只出现一次,那么一个测试集中的元素组数为N+1个.这句话说明测试集中的元素组数与表达式中的条件个数有关.3.3两者在测试中的覆盖面不同对于MC/DC方法,它的覆盖面是要大于C/DC方法的,也就是指在测试一个程序或一个软件时,MC/DC能比C/DC找到更多的错误之处,原因就在于MC/DC的测试集检测出错误发生的概率比较高.再举一个很简单的例子:对于这条If A or B then? else?语句,由文章的前部可知使用C/DC方法它的测试集可为TT,FF;可是如果在这条语句中的操作符号是笔误(由and一时大意写成了or ),那么即使采用了TT,FF来测试仍然检测不到错误(因为T and T = T or T,且F and F = F or F,即无论将测试集中的哪组元素代人到两个判定中? V ? ,? ? ,两者所得到的判定结果相同),由此可说明虽然使用了判定条件覆盖(C/DC)准则来测试语句,逻辑表达式中的有些错误仍然不能检测出来;可是如果大家用MC/DC方法,由它的规则可得测试集合为FF,TF,FT ,只需使用其中的一组数据TF,就可知道其中发生了错误.原因是:T or F值为T,而 T and F值为F,T and F语句的判定结果本来应该得到F却得到了T,由此可说明中间的操作符号发生了错误,这样就检测到了错误.所以这个例子说明MC/DC的测试集合的覆盖面要大于C/DC方法,若用户对于测试程序的质量要求较高,而不考虑其他因素,那么可以使用MC/DC的方法来测试自己的大型软件或单个程序.3.4两者的用途不同由于MC/DC在寻找测试集时的要求比C/DC要严格,所以相比较下在测试时为了寻找出测试集合所花费的时间多,由此而引起的人力、物力、财力三重开销也会直接攀升,但是MC/DC测试错误的准确率却是特别地高,因此MC/DC适合那些大型的并且要求测试非常精确的软件测试所用.为达到用户的目的和一个较高的信价比,近年来MC/DC方法主要应用于大型的航空航天软件程序的测试上.对比而言C/DC方法要求较低,开销少,而覆盖率也低,所以比较适合对于例如C+,JAVA等小型的程序的贝4试当中使
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宏桥集团招聘试题及答案
- 风险投资行业分析与报告
- 公务员面试旁白面试题及答案
- 公务员面试面试课面试题及答案
- 互联网架构师招聘试题及答案
- 公务员面试理由面试题及答案
- 海尔集团秋招真题及答案
- 公务员面试监控面试题及答案
- 广药集团招聘面试题及答案
- 工艺整合招聘题目及答案
- 餐饮营运部管理制度
- DB32-T 4001-2025 公共机构能耗定额及计算方法
- 2025-2030年中国胶粘剂行业市场深度分析及前景趋势与投资研究报告
- 校长股权激励协议书
- 大学计算机-计算思维与信息素养 课件 第6章 现代计算机-复杂环境下程序执行
- 财务监管协议书范本
- 辽宁机场集团招聘笔试真题2024
- 人教版高中物理精讲精练-必修1专题强化一:受力分析和整体法与隔离法专题 (原卷版)
- 《认知行为疗法》课件
- 15个小测试-测测您家孩子注意力是否达标
- 《阴极保护原理》课件
评论
0/150
提交评论