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

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

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

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

分享:

  实际上这也正是visual studio在后台为我们悄悄做的工作,当然啦,Visual Studio不会直接在原来项目编译出来的文件作更改,它会将文件(wildchar.exe)拷贝一份,然后再拷贝上进行更改,更改后的程序文件会存放在 解决方案文件夹的Test Result文件夹里以测试结果命名的文件夹中,例如我的修改过的可执行文件存放在:

  E:\临时文档\WildChar\TestResults\施懿民_SHIYIMIN 2009-12-19 01_02_22\Out\

  使用ILDASM.exe(或者reflector.exe)你就可以看出来,例如下面就是修改过后的IL 代码:

.method private hidebysig static void  ReverseStringPairImp(string input,
                                                            int32 inputIter,
                                                            char[] result,
                                                            int32 resultIter) cil managed
{
  // Code size       1333 (0x535)
  .maxstack  5
  .locals init ([0] int32[] indics,
           [1] int32 i,
           [2] bool CS$4$0000,
           [3] int32[] CS$0$0001)
  IL_0000:  call       void Microsoft.VisualStudio.Coverage.Init_c292aced4dea6d28292bbb91547781d7::Register()
// 下面就是 Visual Studio自动为我们添加的跟踪代码覆盖率的代码:
  IL_0005:  ldsfld     uint32[] Microsoft.VisualStudio.Coverage.Init_c292aced4dea6d28292bbb91547781d7::m_vscov
  IL_000a:  ldc.i4     0xa
  IL_000f:  ldelem.u4
  IL_0010:  ldc.i4     0xa
  IL_0015:  add
  IL_0016:  ldc.i4.1
  IL_0017:  stind.i1
  IL_0018:  nop
  IL_0019:  br.s       IL_0033
  IL_001b:  ldsfld     uint32[] Microsoft.VisualStudio.Coverage.Init_c292aced4dea6d28292bbb91547781d7::m_vscov
  IL_0020:  ldc.i4     0xa
  IL_0025:  ldelem.u4
  IL_0026:  ldc.i4     0xb
  IL_002b:  add
  IL_002c:  ldc.i4.1
...
} // end of method Program::ReverseStringPairImp

使用代码覆盖率的注意事项

  1. 代码覆盖率只能告诉你产品代码还有哪些地方、哪些功能模块没有测试到,或者说很仔细地测试过。不能告诉你比如测试效果是否已经足够好了,比如说代码覆盖率为100%不能说明你已经把用户的需求都考虑并且测试到了。请考虑下面的代码:

  Int a = b * c;

  Console.WriteLine(a);

  如果b 和c的值很小的话,那么 后面的Console那句就会执行,如果我们先执行这个测试用例,那么Console那句就会被标注为已经覆盖过,而且是100%覆盖过。但是并不没有测试到b和c很大造成整数溢出异常这种情形。

  2. 另外,代码覆盖率并不是自动化测试才能检查的,如果你的自动化测试用例不够,你完全可以把Visual Studio修改过的程序拷贝出来,手工执行一些测试用例。不管是自动化还是手工的测试用例,只要能够执行为覆盖的产品代码,最后 Visual Studio在统计结果的时候,都会统计进去(当然,手工用例的执行,应该在 Visual studio统计结果之前执行—通常就是一次Test Run执行完毕之前)。

推荐阅读:

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

代码覆盖率的价值以及不足

代码覆盖率浅谈

对代码覆盖率价值的初步认识

33/3<123
价值398元的测试课程免费赠送,填问卷领取吧!

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号