VcTester与常见C/C++语言覆盖测试工具一样,提供多种覆盖率统计,已涵盖语句覆盖、分支覆盖、条件分支覆盖、MCDC覆盖。本文讲解VcTester的插装实现原理、描述该工具的覆盖率使用特点。
VcTester插装实现原理
VcTester是基于函数调用进行覆盖统计的,比如下面被测语句:
int i = printf(”I am here”);
源码经过插装改造,变为:
int i = (hit_(),printf(”I am here”));
上面借助逗号表达式,在不影响原语句的语法含义前提下插入hit_调用,hit_函数运行过程中自动记录该行语句是否已运行。
除了hit_函数,VcTester还对if语句的条件表达式中插入if_0与if_1函数,if_0用来记录判断结果为FALSE的情况,if_1用来记录判断为TRUR的情况。类似的,针对while与for语句,插装函数是while_0、while_1、for_0、for_1,另外,针对组合子条件,插入cond_0与cond_1函数,针对MCDC覆盖统计,还插入resetMcdc_函数。
VcTester

本文详细介绍了VcTester的插装实现原理,它基于函数调用进行覆盖统计,支持语句覆盖、分支覆盖等多种覆盖率。VcTester的覆盖率统计特点是灵活配置,包括按脚本代码或C/C++方式统计,并支持‘例外’函数列表。此外,VcTester适应‘写一点测一点’的开发模式,提供红绿灯机制确保代码质量。
最低0.47元/天 解锁文章
8874

被折叠的 条评论
为什么被折叠?



