1. 程式人生 > >VS環境下,沒有原始碼只有dll時做程式碼覆蓋率檢查

VS環境下,沒有原始碼只有dll時做程式碼覆蓋率檢查

近期想做程式碼覆蓋率的測試,但是因為只有編譯好的dll沒有原始碼,很多看著很方便的工具都不能用。百度了半天能用的就是商用的coverage validator.

因為環境是windows+VS+GTEST,就開始研究VS自己的工具。

後來發現其實VS就有提供程式碼覆蓋率的測試。不過只能用命令列方式執行。裡面提供了塊覆蓋率,沒有行的。如果有原始碼,根據生成的記錄可以直接對照原始碼顯示。

1. 按照網上介紹的目錄找exe時,發現沒有。這才注意到VS express不支援測試分析模組,相關工具都不提供。只能安裝VS enterprise版試了。安裝好後,相應的工具貌似就都裝好了。

2. 開始插樁dll:

這幾個可執行檔案都在 C:\Program Files\Microsoft Visual Studio <<version>>\Team Tools\Performance Tools>

vsinstr  /coverage D:\Test\TestDLLApp\bin\Debug\test.dll

 注意:a. test.dll是待測的dll檔案

            b. 需要編譯時同時生成pdb檔案

            c. 需要編譯時開啟link的/profile選項

3. 開始監控:

vsperfcmd /start:coverage /output:c:\test\sample.coverage

4. 這時可以使用各種測試方法呼叫待測dll進行測試,覆蓋率都會統計到上面的output檔案中。

5. 終止監控

vsperfcmd /shutdown

 所有資料已經都寫入檔案,不過只能用VS開啟。但是前面所有操作都可以不開啟VS執行。