如何计算MC/DC覆盖率, 怎样编写case才能覆盖
2008-04-23 17:03
323 查看
有两种coverage.一种是对需求的覆盖,一种是对代码的覆盖。对代码的覆盖包括语句覆盖、分支覆盖、条件覆盖、分支条件覆盖、LSACJ覆盖、MC/DC覆盖、路径覆盖等。
MC/DC(修订的条件/判定覆盖)(Modified Condition Decision Coverage)准则是一种实用的软件结构覆盖率测试准则, 已被广泛地应用于软件验证和测试过程中. 修正条件判定覆盖方法要求在一个程序中每一种输入输出至少得出现一次,在程序中的每一个条件必须产生所有可能的输出结果至少一次,并且每一个判定中的每一个条件必须能够独立影响一个判定的输出,即在其他条件不变的前提下仅改变这个条件的值,而使判定结果改变.
condition 和 decision 的概念:
if A or B and C then
Statement;
else
Statement2;
A,B,C都是一个条件,而(A or B and C)叫一个Decision,如果是判定覆盖的话只需两个case就能覆盖,就是让这个decision为true和false各一次就能达到即为 0 1 1 , 0 1 0
如果是MC/DC的话就得四个case,而且只比条件数目多一个而已,怎么计算的呢?
定义: 在每个判定中的每个条件都曾独立的影响判定的结果至少一次, (独立影响意思是在其他的条件不变的情况下,改变一个条件);
总结一句:每个条件对结果都独立起作用
比如A对结果起作用的话, B 必须为 false, C必须为 true -- 1 0 1 和 0 0 1, 这样结果就独立受A的值影响.
同理如果B对结果独立起作用的话,A必须为false, C必须为 true, 两种情况B为true,false各一. 即为 0 1 1 和 0 0 1
而C独立对结果起作用的话就是让(A or B) 为 true, 为了减少case, 上面的case 已经含有这样的case了,我们就取A为false,B为true, 这样c独体起作用的case为: 0 1 1 和 0 1 0
可以看出每个条件各走了一次true和false, 这样三个变量条件就会有六个case, 我们看出其中里面还有两个是重复的,
case 2 和case 4重复, case 3 和case5 重复,这样去掉两个 剩四个case,我们发现我们的判定里面的条件数为N个, 那么这个判定就需要N+1个case,不信你试试!
MC/DC(修订的条件/判定覆盖)(Modified Condition Decision Coverage)准则是一种实用的软件结构覆盖率测试准则, 已被广泛地应用于软件验证和测试过程中. 修正条件判定覆盖方法要求在一个程序中每一种输入输出至少得出现一次,在程序中的每一个条件必须产生所有可能的输出结果至少一次,并且每一个判定中的每一个条件必须能够独立影响一个判定的输出,即在其他条件不变的前提下仅改变这个条件的值,而使判定结果改变.
condition 和 decision 的概念:
if A or B and C then
Statement;
else
Statement2;
A,B,C都是一个条件,而(A or B and C)叫一个Decision,如果是判定覆盖的话只需两个case就能覆盖,就是让这个decision为true和false各一次就能达到即为 0 1 1 , 0 1 0
如果是MC/DC的话就得四个case,而且只比条件数目多一个而已,怎么计算的呢?
定义: 在每个判定中的每个条件都曾独立的影响判定的结果至少一次, (独立影响意思是在其他的条件不变的情况下,改变一个条件);
总结一句:每个条件对结果都独立起作用
比如A对结果起作用的话, B 必须为 false, C必须为 true -- 1 0 1 和 0 0 1, 这样结果就独立受A的值影响.
同理如果B对结果独立起作用的话,A必须为false, C必须为 true, 两种情况B为true,false各一. 即为 0 1 1 和 0 0 1
而C独立对结果起作用的话就是让(A or B) 为 true, 为了减少case, 上面的case 已经含有这样的case了,我们就取A为false,B为true, 这样c独体起作用的case为: 0 1 1 和 0 1 0
可以看出每个条件各走了一次true和false, 这样三个变量条件就会有六个case, 我们看出其中里面还有两个是重复的,
起作用 | Case序号 | A | B | C | 结果 |
A | 1 | 1 | 0 | 1 | 1 |
2 | 0 | 0 | 1 | 0 | |
B | 3 | 0 | 1 | 1 | 1 |
4 | 0 | 0 | 1 | 0 | |
C | 5 | 0 | 1 | 1 | 1 |
6 | 0 | 1 | 0 | 0 |
相关文章推荐
- 如何编写代码才能使得效率高
- [c#]如何编写需要授权才能使用的WebService?
- 怎样打开谷歌如何才能在国内注册Google账号
- 如何编写需要授权才能使用的WebService?
- DIV+CSS:如何编写代码才能更有效率
- 如何编写需要授权才能使用的WebService?
- 如何编写代码才能使得效率高
- MC/DC逻辑覆盖
- MC/DC覆盖率准则
- cp如何才能强行覆盖原目录和文件?
- 如何才能提高文档编写能力
- 编写嵌入式linux驱动时,如何才能自动加载设备并生成节点
- [webService]如何编写需要授权才能使用的WebService?(原著网事如风)
- 如何编写代码才能使得效率高
- 如何编写代码才能使得效率高
- Robotium编写测试用例如何模拟Junit4的BeforeClass和AfterClass方法2 - SingleLaunchActivityTestCase
- 老李分享:Robotium编写测试用例如何模拟Junit4的BeforeClass和AfterClass方法2 - SingleLaunchActivityTestCase
- eclipse 中main()函数中的String[] args如何使用?通过String[] args验证账号密码的登录类?静态的主方法怎样才能调用非static的方法——通过生成对象?在类中制作一个方法——能够修改对象的属性值?
- Robotium编写测试用例如何模拟Junit4的BeforeClass和AfterClass方法2 - SingleLaunchActivityTestCase
- 如何编写函数才能提高代码质量总结