软件自动化测试中的代码覆盖率(下)

发表于:2009-12-22 11:39

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Donjuan(CSDNBlog)    来源:51Testing软件测试网采编

代码覆盖率的实现原理

  看到这里,是不是有点神奇?为什么执行过一些自动化测试用例,就可以查看代码覆盖率呢?它是怎么实现的呢?

  实际上我们在“localtestrun.testrunconfig”窗口里面设置查看代码覆盖率那一步时,Visual Studio悄悄地修改了WildChar.exe,在原来的IL 代码里添加了一些新的语句。

  在解释之前,我们先考虑代码覆盖率的意思,代码覆盖率的意思其实就是表明有多少行代码被执行到了,因此首先要统计有多少块代码,然后再统计有多少块代码被执行了。什么叫代码块呢,代码块就是一段连续的代码。例如在program.cs里面,下面这些代码行组成一个代码块:

char[] result =newchar[input.Length];

intresultIter = 0;

 

ReverseStringPairImp(input, 0, result, resultIter);

 

returnnewstring(result);

  因为上面的代码,如果不ReverseStringPairImpl 函数不抛出异常的话,就会连贯地执行下去,因为上面四行代码可以看成是一块代码(或者说是一行代码)。

  而下面的代码则可以看成是两块代码:

if(indics[1] == 0)

   indics[1] = -1;

elseif(indics[1] > 0)

   break;

  要么是第一个if执行,要么第二个if 执行。

  下面的代码会有点意思,虽然是一行代码,但是可以当作两个代码块来看待:

while(inputIter < input.Length && input[inputIter] ==' ')

  1. 要么前面一个条件成立,后面的条件不成立,那么最后一个语句不执行;

  2. 要么两个条件都成立,最后语句执行;

  3. 要么两个条件都不成立,最后一条语句不执行。

  由于第二个条件存在不被执行的机会—即我们设计的所有测试用例都导致第一个条件总是不成立,所以这也是为什么在显示代码覆盖率结果的时候,上面那行代码只有部分覆盖到的原因。

31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号