• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 軟件自動化測試—代碼覆蓋率(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

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>