很久沒寫博客了,剛好這段時間空閑,做點記錄 前提:最近部門需要白盒測試的工具,在網上也搜索了很多資料,國內很少有類似的資料(很少公司.net代碼進行白盒測試),最後在國外(翻牆)網站查找到了部分資料 白盒測試中的 條件覆蓋、邏輯覆蓋....這裡就不解釋了 用到的開源工具:Opencover、Repo ...
很久沒寫博客了,剛好這段時間空閑,做點記錄
前提:最近部門需要白盒測試的工具,在網上也搜索了很多資料,國內很少有類似的資料(很少公司.net代碼進行白盒測試),最後在國外(FQ)網站查找到了部分資料
白盒測試中的 條件覆蓋、邏輯覆蓋....這裡就不解釋了
用到的開源工具:Opencover、ReportGenerator(這兩個開源工具就不在這裡介紹了,百度有介紹)
開發語言:C#
白盒測試範圍:web站點、exe執行文件
運行OpenCover需要一系列參數,這裡只說明幾個主要的參數:
-target:這是目標應用或服務的路徑(名稱),這裡指單元測試工具的路徑,支持NUnit和MS Unit
-targetdir:目標目錄的路徑,如果target argument已經包含了一個路徑,那麼這個參數可以提供一個查找pdb文件的可選路徑
-targetargs:target參數指定的應用所需要的參數(編譯測試工程生成的一個dll文件或者EXE文件路徑)
-output:輸出XML文件的路徑,如果沒有提供將在當前目錄下生成results.xml, 該文件將用於ReportGenerator生成可視化的覆蓋率報告
ReportGenerator所需要的參數:
-reports:上述XML文件的路徑
-targetdir:生成報告的目錄
string sExecShell = "{0} -register -target:\"{1}\" -output:{2} -targetdir:\"{3}\"";
public void Exec(OpenCoverModel.WebModel model, LibClass.OpenCoverModel.GlobalModel globalModel) { TransfEvent("Web模式,執行站點" + model.Site); string sOutput = model.OutPut + "\\" + model.Site; XMLEvent(sOutput + "\\" + model.Site + ".xml"); if (!Directory.Exists(sOutput)) { Directory.CreateDirectory(sOutput); } string sShell = string.Format(sCmdFromat, globalModel.OpenCover, @"C:\Program Files (x86)\IIS Express\iisexpress.exe", model.TargetDir, model.Site, globalModel.ApplicationHost, globalModel.Register, sOutput + "\\" + model.Site + ".xml"); Thread thread = new Thread(ThreadExec); thread.IsBackground = true; thread.Start(sShell); }
詳細代碼可以下載附件
https://files.cnblogs.com/files/jhy55/CodeAnalysis.zip
在執行以上命令之後會生成指定文件的數據(output)
通過ReportGenerator可以生成 html格式的可視化文檔
string sCmd = "{0} -reports:{1} -targetdir:{2}";
生成html之後,index.html為主入口
先寫到這裡為止吧!有問題或者描述不對的請反饋