軟件自動化測試—代碼覆蓋率(3)

發表于:2015-04-24來源:uml.org.cn作者:不詳點擊數: 標簽:自動化測試
實際上這也正是visual studio在后臺為我們悄悄做的工作,當然啦,Visual Studio不會直接在原來項目編譯出來的文件作更改,它會將文件(wildchar.exe)拷貝一份,

  實際上這也正是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執行完畢之前)。

原文轉自:http://www.uml.org.cn/Test/201306262.asp

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97