因為某項目的白盒單元測試做的不是很好,而QA又提出了非常高的代碼覆蓋率移行標准,不得以開始調研能覆蓋手工測試(Mannual Test)的覆蓋率工具,加上一些最基礎的條件,該工具必須滿足如下三點:
1:能計算白盒單元測試覆蓋率;
2:能計算黑盒手工測試覆蓋率;
3:支持MSTest框架;
第一個自然想到的就是NCover,沒錯,它肯定滿足這三個條件,它有一個滿足21天使用的Trial版本可以用,但是,商業版本的價格也是驚人的:
NCover Code Central$ 2,298
NCover Desktop$ 658
NCover Collector$ 448
很多刀刀。相比而言,生產Resharper的Jetbrains的DotCover,價格就要便宜很多,Personal License只要99刀,即便商業授權也只要199刀。當然,我現在還發現一個更齷蹉的方法,就是使用Classroom版本,然后到期了改時間就OK。DotCover現在是鼓勵大家合理使用。
閑話少說,那么到底它支持不支持如上3個標准(實際上,最重要的是:是否良好支持手工測試覆蓋率計算)。下載Classroom liscence,安裝之(目前已支持VS2012)。DotCover是基於VS插件的形式存在的,安裝完畢,我們會在VS的工具欄中發現DotCover的標識,如下,比如,啟動之“Cover Application”:
就會出現如下界面:
可以看到,它支持的應用種類還是比較多的。如果是啟動普通的應用程序,如Winform,那么操作起來還是比較簡單的,點擊“Standalone Application”后,就會出現如下界面:
按照提示,輸入后,OK-》run,DotCover就會為我們啟動應用程序,當然,隨着啟動應用程序,DotCover的主模塊也被啟動起來,如下:
然后隨着我們使用該應用程序(也就是測試),DotCover會跟蹤代碼執行的路徑。測試完畢,我們“Get Snapshot”,最終DotCover會為我們生成如下的報告:
覆蓋率結果清清楚楚的列在最后一列。
測試網站,要稍稍復雜一點,因為我們要將DotCover部署在WEB服務器上。由於它是以VS插件的形式存在的,首先WEB服務器上就得有VS(注意,Express版本可是不行滴)。啟動DotCover還是一樣的,但是最主要的,我們在選擇Application Type的時候,要選擇“IIS Application”,然后在彈出的界面里,URL可以空着,Run webbrowser也可以不勾選(因為我們又不是要在服務器上測試網站),最最重要的,是在“Edit Filter”的彈出界面中把網站的Bin路徑配置進去。注意,如果我們的站點有多個虛擬路徑的話,則需要把全部虛擬路徑的Bin目錄配置進去(以分號隔開)(下面的那些checkbox都可以不再勾選)。配置完畢,點“Run”。
然后,我們回到某個客戶端上,啟動瀏覽器,輸入網站地址,當第一個人啟動網站后,我們就會發現,在服務器的這個界面:
中的Process欄目,會變成w3wp這個進程,如果這個進程出現了,那么說明DotCover開始工作了。
最后,有幾點需要進行說明:
1:每次測試完畢,應該將Snapshot保存為獨立的文件,最終每次測試的結果我們可以使用DotCover的命令行工具進行合並,示例如下:
DotCover merge /source=d:\1.dcvr;d:\2.dcvr /output=d:\end.dcvr /tempdir=d:\
2:其次,當前的Release版本為2.1.xxx,恭喜你,安裝在Win7上毫無問題,但是,當你安裝在XP或者Window Server2003版本上的時候,會發現:
“Can't initialize profiler. PDB server wasn't started."
這個時候,我們就要去JetBrains的Dailybuider版本的地址下載最新的安裝包了,在這里:http://confluence.jetbrains.net/display/DCVR/dotCover+Early+Access+Program,JetBrains號稱2.2版本已經修復了該問題。是的,它確實已經修復了,但是還有些別的小問題,如果你不幸遇到了"failed to cocreate profiler",一定記得來問我是如何齷蹉滴解決了該問題的。
當然,所有這一些,我相信2.2的Release版本出來后一定會解決的,畢竟,牛公司就得有個牛公司的風范。
總之,DotCover還是一款非常不錯的覆蓋率計算的工具軟件,解決了開發、測試、QA三方面的問題(PS,白盒的覆蓋率就不介紹了,畢竟那還是最基本的功能)。