万博1manbetx代码覆盖率
如果你有一个万博1manbetx®覆盖™SIL或公益诉讼的许可证,您可以运行一个模拟生产模型生成代码的代码覆盖率。模拟执行多种类型的代码覆盖分析。
语句覆盖
语句覆盖措施的源代码语句执行代码运行时。使用这种类型的覆盖范围来确定程序中的每个语句至少调用一次。
语句覆盖率的百分比由以下方程:
执行的语句的语句覆盖率=(数量/语句总数)* 100
语句覆盖的例子
这个代码片段包含五个语句。达到100%的语句覆盖率,需要至少一个测试和积极的x值,与消极的一个测试x值,和一个测试x的值为零。
如果(x > 0) printf (“x是正数”);else if (x < 0) printf (x = -);其他printf (" x = 0 ");
条件覆盖
条件覆盖分析报表,包括源代码的条件。条件是C / c++布尔表达式包含关系运算符(<
,>
,< =
,或> =
),方程运算符(! =
或= =
),或逻辑运算符(否定!
),但不包含逻辑运算符(& &
或| |
)。这种类型的覆盖决定每个条件评估所有可能的结果至少一次。
条件覆盖的百分比由以下方程:
条件覆盖=(数量的执行条件的结果/条件的结果总数)* 100
条件覆盖的例子
在这个表达式:
y = x < = 5 | | x ! = 7;
有两个条件:
x < = 5 x ! = 7
实现条件覆盖率100%,你的测试用例需要展示一个真实的和虚假的结果为条件。例如,一个测试用例x等于4
演示了一个真正的两种情况下,和一个情况x= 7演示了一个错误的两种情况下。
布尔值赋值语句
代码覆盖率分析包含布尔值的赋值语句并报告条件。模型只覆盖分析逻辑表达式赋值语句,意义只包含一个逻辑操作符表达式如逻辑和
(& &
)或逻辑或
(| |
)。这种差异会导致差异模型和代码覆盖率结果,有时会导致结果的代码覆盖分析不可满足的条件。
例如,考虑下面的语句:
bool = true;
在代码覆盖分析,万博1manbetx仿真软件覆盖分析这句话的条件覆盖。声明是正确的在每一个时间步长,得到的结果是50%的条件覆盖率在这个声明中,因为错误的情况不可能发生。模型覆盖率不分析这句话,所以它还创建了一个模型和代码覆盖率结果之间的差异。
决定覆盖
决定覆盖分析语句代表决定源代码。决策是布尔表达式组成的条件和一个或多个逻辑C / c++的操作符& &
或| |
。条件分支内构造(if / else,和延伸的)决定。决定覆盖决定决定结果的总数的百分比代码执行期间练习。使用这种类型的范围来确定是否所有决策,包括分支,在代码中进行测试。
请注意
做的决定覆盖定义- 178 c合规不同于万博1manbetx仿真软件覆盖定义。决定保险符合- 178 c,在配置参数,设置结构覆盖水平来条件决定
布尔表达式不包含& &和| |运算符。
决定覆盖率的百分比由以下方程:
决定覆盖率=(数量的决策执行结果/决策结果的总数)* 100
决定报道的例子
这个代码片段包含了三个决定:
y = x < = 5 & & x ! = 7;/ /决定# 1如果(x > 0) / /决定# 2 printf(“决策# 2是正确的”);else if (x < 0 # 3 & & y) / /决定printf(“决策# 3是正确的”);其他printf(" # 2和# 3是错误的决定”);
覆盖率达到100%决定,你的测试用例必须展示一个真实的和虚假的结果为每个决定。
修改条件/决定覆盖(MCDC)
修改条件/决定覆盖(MCDC)分析内部条件决定是否独立执行期间影响决策结果。MCDC达到100%,你的测试用例必须证明:
内的所有条件决定一直在评估所有可能的结果至少一次。
每个条件在一个独立的决定影响的结果决定。
的百分比MCDC由以下方程:
MCDC覆盖率=(数量的条件评估所有可能的结果影响的结果决定/内部条件决定的总数)* 100
修改后的条件/判定覆盖示例
对于这个决定:
X | | (Y & & Z)
以下的一组测试用例提供MCDC覆盖率100%。
X | Y | Z | |
---|---|---|---|
测试案例# 1 |
0 | 0 | 1 |
测试案例# 2 |
0 | 1 | 0 |
测试案例# 3 |
0 | 1 | 1 |
测试案例# 4 |
1 | 0 | 1 |
为了证明条件Y
和Z
能独立地影响决策的结果,条件X
必须为这些测试用例是假的。如果条件X
是真的,那么这个决定已经知道是真实的。因此,条件Y
和Z
不会影响决策结果。
圈复杂度
圈复杂度度量代码通过使用的结构复杂性McCabe复杂性度量。要计算圈复杂度的代码,代码覆盖使用这个公式:
N在代码中是决策的数量。on结果的数量吗nth决策点。代码覆盖率增加了复杂性的1号为每一个C / c++函数。
报道的例子
对于这个代码片段,圈复杂度是3:
空白evalNum (int x){如果(x > 0) / /决定# 1 printf (“x是正数”);else if (x < 0) / /决定# 2 printf (x = -);其他printf (" x = 0 ");}
代码包含一个函数,它有两个决策点。每一个决策点有两个结果。使用前面的公式,N是2,o12,o2是2。代码覆盖使用这些决策和结果的公式和函数的加1。这个代码片段的圈复杂度是:
c= (o1−1)+ (o2−1)+ 1 = (2−1)+ (2−1)+ 1 = 3
关系边界的覆盖率
关系边界关系操作代码覆盖率检查代码。关系边界代码覆盖率指标结合的模式覆盖,所述关系边界的覆盖率(万博1manbetx仿真软件覆盖)。定点值在模型是整数代码覆盖率。