发明名称 一种轻量级的代码分支覆盖率检测方法
摘要 本发明是一种轻量级的代码分支覆盖率检测方法,属于软件测试领域。本方法统计被测代码的分支总数N,在被测函数的入口插入代码,定义数组branch[N/K+1],K为机器字长;在每个分支i插入代码branch[i/K]|=1<<(i%K);在被测函数的出口插入代码,输出数组branch的值;输入测试用例集合,执行测试代码,在测试完成后,统计数组branch中所有元素对应二进制位中1的个数n,获得代码分支覆盖率为n/N。本发明使用1个比特位即可记录1个分支的执行情况,数据量被大幅度的压缩,减少了内存资源的占用,仅在测试程序运行完毕后一次性输出记录结果,大幅度提高测试的执行速度,减少测试的数据量。
申请公布号 CN106294163A 申请公布日期 2017.01.04
申请号 CN201610664607.9 申请日期 2016.08.12
申请人 北京航空航天大学 发明人 李超;史晓华;王斐
分类号 G06F11/36(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 北京永创新实专利事务所 11121 代理人 祗志洁
主权项 一种轻量级的代码分支覆盖率检测方法,其特征在于,实现步骤如下:步骤1,输入被测函数的代码,统计被测代码的分支总数N,并对各分支进行编号0,1,…,N‑1;步骤2,在被测函数的入口插入代码,定义数组branch[N/K+1],并设置数组中的元素均为0;K表示机器字长;步骤3,对于每个分支i,插入代码:branch[i/K]|=1<<(i%K),i=0,1,…,N‑1;其中,branch是整型数组;|是按位或运算符,a|=b表示将变量a和b按位或运算后的结果赋值给变量a;<<是左移位运算符,c<<d的结果是将变量c对应的二进制位向左移动d位,右边空缺部分补0;步骤4,在被测函数的出口插入代码,输出数组branch[N/K+1]的值;步骤5,输入测试用例集合,执行测试代码,在测试完成后,统计数组branch[N/K+1]中所有元素对应的二进制位为1的个数n,获得代码分支覆盖率为n/N。
地址 100191 北京市海淀区学院路37号