主要内容

万博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

为了证明条件YZ能独立地影响决策的结果,条件X必须为这些测试用例是假的。如果条件X是真的,那么这个决定已经知道是真实的。因此,条件YZ不会影响决策结果。

圈复杂度

圈复杂度度量代码通过使用的结构复杂性McCabe复杂性度量。要计算圈复杂度的代码,代码覆盖使用这个公式:

c = 1 N ( o n 1 )

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仿真软件覆盖)。定点值在模型是整数代码覆盖率。

相关的话题