Visual Studio 2010多核并行環境下單元測試
原創【51CTO獨家特稿】在Visual Studio 2010中,我們推出了運行并行測試的功能,現如今許多機器有多個CPU或一顆CPU有多核,因此我們認為如果測試時利用機器上的所有處理器或所有處理核心,那一定很有意義。同時,還可以有效地提高同一時間測試運行的次數,因此可以縮短運行所有測試的時間。
決定
我們研究了所有不同的測試類型和我們已有的功能,做出了下列決定:
1、我們支持多CPU/核執行的唯一測試類型是單元測試。我們是基于后面這幾個因素做出這個決定的:測試類型是UI測試嗎?測試已經實現了某些形式的并行執行嗎?測試類型托管在不同的主機適配器上嗎(我們可能無法控制測試如何執行)?依賴性測試能保證按一定的順序正確執行嗎?測試是一個單元測試擴展嗎?這些問題的答案迫使我們選擇只支持單元測試。
2、數據適配器(Data Adapters)無法啟用。因為數據收集是基于測試事件的,數據收集時如果有多個測試任務正在執行,將會減緩測試的速度,此外,數據本身可能被錯誤地隔離到特定的測試中,但可能包括來自其他測試的數據和信息。
3、這種情況僅會發生在通過Visual Studio或MSTest執行本地測試時。因為遠程測試允許你跨多個代理劃分測試,我們決定對遠程執行不啟用此方案,此外,目前僅適用于Visual Studio或MSTest。
需求
你可能已經等不及要問我,快告訴我需要做什么!
好,但我首先要提醒你,雖然再明顯不過了,但我還是要說,那就是你需要準備一臺多處理器或多核的機器,可以使用虛擬機,但你要保證宿主主機是多CPU的,最簡單的方法就是打開任務管理器進行驗證。
圖 1 使用任務管理器查看是否是多CPU/核
我的機器只有一顆CPU,但是雙核的。
另外,你的測試必須是線程安全的,只有你自己才能確保它們是,如果不能保證,就可能導致不正確的結果、死鎖和許多頭痛的問題。
如何啟用并行測試執行
1、確保你有一臺多CPU/核機器;
2、確保你只運行單元測試;
3、確保你的測試是線程安全的;
4、確保你的數據適配器沒有開啟;
5、確保你在本地運行測試;
6、修改你的測試設置文件。在測試設置文件上點右鍵,選擇“用…打開”
圖 2 準備打開測試設置文件
6.1以xml格式打開
圖 3 以xml格式打開
6.2 在Execution元素上設置parallelTestCount屬性
圖 4在Execution元素上設置parallelTestCount屬性
有效的選項包括:
不指定該屬性 = 使用1CPU/核(默認值)
0 = 自動配置,我們將根據你的CPU和核心數量盡可能多的安排測試
n = 并行測試的數量(如果你不想使用所有的CPU/核)
6.3 保存你的設置,結束。
結果
我的機器是雙核,因此我的測試結果是:
圖 5 我的測試結果
正如你所看到的,在同一時間我運行了兩個測試,如果我串行運行它們,我至少需要10秒,使用并行測試后,我只用了6秒。
圖 6 結果摘要
當然還有許多其它因素會影響這一數字,但測試速度主要取決于你的CPU/核心數量。
希望本文對你有所幫助!
原文出處:http://blogs.msdn.com/vstsqualitytools/archive/2009/12/01/executing-unit-tests-in-parallel-on-a-multi-cpu-core-machine.aspx
原文名:Executing Unit Tests in parallel on a multi-CPU/core machin
【編輯推薦】