语句覆盖(Statement Coverage)|判定覆盖(Decision Coverage)|修订的条件/判定覆盖(Modified Condition/Decision Coverage)
来源:互联网 发布:java软件开发培训中心 编辑:程序博客网 时间:2024/04/30 08:02
- 语句覆盖(Statement Coverage)
- 又称行覆盖(Line Coverage),段覆盖(Segment Coverage),基本块覆盖(Basic Block Coverage)
- 这是最常用也是最常见的一种覆盖方式,就是度量被测代码中每个可执行语句是否被执行到了
- 这里说的是“可执行语句”,因此就不会包括像C++的头文件声明,代码注释,空行,等等
- 语句覆盖常常被人指责为“最弱的覆盖”,它只管覆盖代码中的执行语句,却不考虑各种分支的组合等等
- 简言之,语句覆盖,就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。这里的“若干个”,意味着使用测试用例越少越好
- 语句覆盖率 = 被测试到的语句数量 / 可执行的语句总数 x 100%
- 判定覆盖(Decision Coverage)
- 又称为分支覆盖(Branch Coverage)
- 所谓判定覆盖,就是设计若干个测试用例,运行被测程序,使得程序中每个判定的取真分支和取假分支至少被测试一次
- 【优点】:判定覆盖具有比语句覆盖更强的测试能力,而且具有和语句覆盖一样的简单性,无需细分每个判定就可以得到测试用例
- 【缺点】:往往大部分的判定语句是由多个逻辑条件组合而成(如,判定语句中包含AND、OR、CASE),若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径
- 修订的条件/判定覆盖(Modified Condition/Decision Coverage)
- MC/DC(修订的条件/判定覆盖,Modified Condition/Decision Coverage)准则是一种实用的软件结构覆盖率测试准则, 已被广泛地应用于软件验证和测试过程中
- 下举例来详细说明MC/DC下测试用例的设计准则:
- 看下代码:
if (A() || B() && C()) { do action1();} else { do action2();}
- A(),B(),C()都是一个条件,而(A() || B() && C())叫一个Decision,如果是判定覆盖的话只需两个case就能覆盖,就是让这个decision为true和false各一次
- 如果是MC/DC的话就得四个case,而且只比条件数目多一个而已,怎么计算的呢?
- 定义: 在每个判定中的每个条件都曾独立的影响判定的结果至少一次, (独立影响意思是在其他的条件不变的情况下,改变一个条件)
- 那么就有如下测试用例(true和false的顺序就按照A()、B()、C()来):
- A()对结果独立影响,那么就要求"B()"和"C()"中至少一个为false,于是有:
- A()独立影响且decision为true:
- true false false
- true false true
- true true false
- A()独立影响且decision为false:
- false false false
- false false true
- false true false
- A()独立影响且decision为true:
- B()对结果独立影响,那么就要求"A()"为false,"C()"为true,于是有:
- B()独立影响且decision为true:
- false true true
- B()独立影响且decision为false:
- false false true
- B()独立影响且decision为true:
- C()对结果独立影响,那么就要求"A()"为false,"B()"为true,于是有:
- C()独立影响且decision为true:
- false true true
- C()独立影响且decision为false:
- false true false
- C()独立影响且decision为true:
- A()对结果独立影响,那么就要求"B()"和"C()"中至少一个为false,于是有:
- 看下代码:
- 需要进一步补充说明的是,MC/DC测试的主要目的是为了防止在组合条件表达式中包含边际效应(side effect),如以下语句:
if (A() || B() || C()) { statements...;}
- 当B()函数或C()函数具备边际效应时,MC/DC测试存在非常大的必要性
- 原则上不应在组合条件表达式中调用包含边际效应的函数
- MC/DC(修订的条件/判定覆盖,Modified Condition/Decision Coverage)准则是一种实用的软件结构覆盖率测试准则, 已被广泛地应用于软件验证和测试过程中
- 语句覆盖(Statement Coverage)|判定覆盖(Decision Coverage)|修订的条件/判定覆盖(Modified Condition/Decision Coverage)
- 判定/条件覆盖(Decision/Condition coverage)
- MC/DC(Modified Condition/Decision Coverage)修正条件判定覆盖
- 判定覆盖(Decision coverage)
- 条件覆盖(Condition coverage)
- 语句覆盖(Statement coverage)
- Minimal coverage-区间覆盖问题
- ural Minimal Coverage (区间覆盖)
- 白盒测试:语句覆盖、条件覆盖、判定覆盖、条件-判定覆盖、组合覆盖、路径覆盖
- 【测试】语句覆盖,判定覆盖,条件覆盖,路径覆盖
- 判定覆盖 与 条件覆盖 的区别
- 判定覆盖与条件覆盖的区别
- 判定覆盖和条件覆盖
- 白盒测试 语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖
- 白盒测试 语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖
- 白盒测试 语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖
- 白盒测试 语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖
- 白盒测试 语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖
- win32编程入门
- Python之禅
- CentOS 6 IPv6 关闭方法
- 如何在 Windows Phone 8 的 LongListSelector 中显示分组列表内的数据
- Common functions for BASH SCRIPT
- 语句覆盖(Statement Coverage)|判定覆盖(Decision Coverage)|修订的条件/判定覆盖(Modified Condition/Decision Coverage)
- 如何在 Windows Phone 中创建自定义的不确定进度条
- 玩玩小程序
- 百度不收录怎么办?
- ubuntu12.04 没有/var/log/messages
- padding,margin,border的区别
- sqlite3自增key设定(创建自增字段)
- ZOJ Problem Set - 2348
- C++ 类成员函数重载(overload), 覆盖、重写(overrider), 隐藏(hidden)