Visual Studio 2013 + Visual Studio Online (原名 Team Foundation Service) 進行持續整合與壓力測試
作者 –張羽承 (Sky, 微軟MVP)
註 - Team Foundation Service 已於 2013/11月改名為 Visual Studio Online
本文將包括2部份 – 分別為「使用Team Foundation Service 持續整合」及「利用Team Foundation Service進行負載測試」
使用Team Foundation Service 持續整合 – 自動化佈署Windows Azure上的網頁應用程式
持續整合 (Continuous integration, CI)是軟體開發生命週期中,不可缺少的一個部分;試著思考一個情境,當其中一位開發人員引用了第三方的類別庫,但忘了將此類別庫簽入到版本控制裡面,雖然在此開發人員的電腦上是可以編譯的,但其他同事簽出此程式碼的時候,卻會產生無法編譯的錯誤;而過程中的除錯與處理,都會浪費掉鉅額的時間。
而透過持續整合,可以在簽入程式碼的當下、每天固定時間等,來建置應用程式,並自動的將程式部署到指定的位置與環境,最後還可以整合測試,來讓問題提早發現並提早處理,以確保團隊的開發效率,讓團隊能持續進行,而不會受到打擾與中斷。
而現在,隨著雲端時代的來臨,Team Foundation Service的持續整合也已經和Windows Azure緊密的結合,能直接透過Team Foundation Service直接部署到雲端上了( Windows Azure上的Web Sites和Cloud Service都已經支援 )。
建立Windows Azure Web Sites
首先,必須先在Windows Azure上建立一個Web Site,筆者這邊命名為testtfsci。
接下來,從testtfsci這個Web Site的【儀表板】,可以找到【設定從原始檔控制進行部署】。
從下圖,可以發現到有非常多的來源選項,這邊選擇【Team Foundation Service】來當作原始碼的來源。
點下去之後,要輸入之前註冊的Team Foundation Service網址,所以如果還沒有申請Team Foundation Service的讀者,可以點選立即建立TFS帳戶;而已經註冊過的讀者直接輸入註冊的網址就可以,輸入完後,點選【立即授權】即可。
接下來,會跳出確認視窗,如果無誤,同意即可。
接著,就可以選擇在Team Foundation Service上的專案,這邊筆者選擇的是VS2013Demo這個專案。
完成之後,就會自動跳到Windows Azure的【部署】選項下,並且明確的訊息寫著已經連結。
透過簽入來觸發持續整合
當完成以上的設定後,預設下的觸發模式是連續整合,也就是每次簽入原始碼的時候都會觸發建置,如果想要調整成其他的模式,也可以利用Visual Studio連結Team Foundation Service,連結Team Foundation Service後,至下圖的位置,於【Team Explorer】視窗下,選擇【組建】。
然後選擇從Team Foundation Service自動產生的組件定義,並選擇【編輯組件定義】。
之後,就可以從視窗下,調整觸發的模式;另外,這邊也提供了很多組建的選項,筆者就不再這邊一一的介紹。
如果觸發選項是選擇【連續整合】;當簽入原始碼的時候,就會開始建置,並且部署到Windows Azure Web Site上,如下圖就是開始建置的畫面,從【組建】的畫面下,可以得知目前的建置狀況。
除此之外,也可以透過Windows Azure Web Site的【部署】觀看到現在的狀況。
當完成之後,就可以利用瀏覽器查看部署上去的網站。
透過Team Foundation Service持續整合與Windows Azure服務的整合,可以讓整個開發團隊的開發流程更加的穩固,並且讓各種測試工具或是測試人員輕鬆地接手測試,以提升整體的開發,達到良好的軟體開發之目的。
參考資料
- https://www.windowsazure.com/en-us/documentation/services/web-sites/?fb=zh-cn&l=zh-tw
- https://tfs.visualstudio.com/en-us/learn/connect-vs
利用Team Foundation Service當代理伺服器進行負載測試
備註: 此功能需要Visual Studio Ultimate 2013 和 Team Foundation Service,並且讓Visual Studio已經連線到Team Foundation Service。
在Team Foundation Server 2012的時代,要進行負載測試需要準備很多的東西,如下圖,從Visual Studio開始,會透過測試控制器來控制測試代理程式,讓測試代理程式執行測試與收集資料;乍聽之下感覺很簡單,但實際上,當要進行千人以上的壓力測試的時候,就會需要非常大的資源;這時可能就會需要準備新的電腦,或是要去與IT單位進行協調與申請;也因為事情的繁雜,也會讓團隊的開發流程,造成阻礙。
隨著雲端的發展,現在要進行負載測試也變得比前更加的容易與簡單;透過Team Foundation Service與Visual Studio 2013的服務與功能,可以讓Team Foundation Service自動的創建需要的硬體規模大小,來擔任測試代理程式這個重大的責任,也因此,簡化了原本繁雜的程序,讓負載測試變成一件很簡單的事情。
將測試設定改變為使用Team Foundation Service來執行測試
首先,打開Visual Studio 2013後,就可以新增一個【Web效能和負載測試專案】。
接下來,只要點選Local.testsettings,就會出現設定;從測試回合位置的地方,改成【使用Visual Studio Team Foundation Service執行測試】,就可以將測試代理程式改成使用Team Foundation Service;確定後按下【套用】就設定完成了。
錄製測試樣本
設定完使用Team Foundation Service執行測試後,需要針對要測試的目標,錄製一下測試的樣本,簡單的說,就是要針對那個網站做那些事情;這邊選擇【加入要求】;代表的是要對哪個網站進行瀏覽,另外也可以選MENU紅色的【加入錄製】按鈕,會帶出瀏覽器來協助製作樣本。
接下來,選擇要測試的URL,也就是目標。
執行負載測試
完成基本的要求樣板後,就可以準備進行負載測試,接下來,針對此專案,加入新的項目。
接下來,可以選擇【考慮時間特性】,代表著使用者是否會停下來思考,如果有需要可以自行調整,筆者這邊則選擇【不使用考慮時間】。
下一步後,要設定使用者人數,這邊可以選擇是要逐步的提升使用者數量,或是一開始就讓模擬的數量全部都進行測試。筆者這邊基本上不需要依據每秒的時間慢慢往上加,所以選擇【常數負載】,並且【使用者計數】定為25人。
接下來,這邊的選項,會依據【測試混合】所設定的測試項目,來依據比例進行測試,而這邊【按總測試數】,表示當下使用者會隨機的拿測試案例測試,但測試完後,比例會符合我們設定的比例;而【按虛擬使用者人數】,表示測試中的每個時間點,比例都會依據設定的比例;所以【按總測試數】和【按虛擬使用者人數】的差異是,一個是過程中比例不會符合,而結束的時候會符合比例,而一個是過程中一直維持符合比例。
至於【按使用者步調】,是指定固定測試幾次後,在跳到下一項目,而項目的順序,則是依據設定,但每個人當下測試的項目會不同;至於【依據循序測試】,如同【按使用者步調】,差異在於當下每個人測試的項目是完全一樣。
接下來,如果有錄多的範本,這邊就可以選擇多項測試。
接下來,選擇網路模式,這邊也可以依據需求,選擇想要的網路類型,並且依據百分比分配。
再來選擇瀏覽器的模擬器,同樣的,也可以選擇多個瀏覽器,並進行比例的分配。
接下來,如果有想要特別針對監控的電腦,可以在這邊增加。
最後一個步驟,設定測試的時間,預設是10分鐘,可以自由提高或是降低,此外,也可以針對此測試,進行多次的反覆項目。
完成設定後,就可以按下Menu上的【執行負載測試】。
按下去後,Visual Studio就會叫用Team Foundation Service,讓Team Foundation Service依據需求來建立測試代理伺服器,所以如果Visual Studio沒有連線的話,就會發生錯誤。下圖是建立中的過程。
接下來,就會開始進行壓力測試。
當壓力測試完成後,可以點選【Download report】來下載剛剛測試的報告。
下載完成後,可以再按一下【View report】
就會看到詳細且完整的報告。
如果想讀取之前的報告,也可以從【Load Test Manager】的選項得知。
從【Load Test Manager】就可以看到從以前到現在的所有報告。
透過Team Foundation Service越來越強大的功能,原本很多需要自己配置的東西,現在透過雲端,不需要準備太多的東西,就可以輕易的處理,立即使用。
參考資料
- https://blogs.msdn.com/b/edglas/archive/2013/11/27/load-testing-visual-studio-online.aspx (編按 - 於11/27發佈的新文章)
- https://blogs.msdn.com/b/visualstudioalm/archive/2013/06/03/introducing-cloud-based-load-testing-with-team-foundation-service.aspx
- https://tfs.visualstudio.com/en-us/learn/load-testing.aspx
- https://blogs.msdn.com/b/visualstudioalm/archive/2013/06/26/load-testing-with-team-foundation-service-launching-preview-and-early-adoption-program.aspx
- https://msdn.microsoft.com/zh-tw/library/dd648127.aspx
- https://msdn.microsoft.com/zh-tw/library/dd293540.aspx
◎延伸閱讀
軟體生命週期管理的新功能 - 使用 Visual Studio Ultimate + Team Foundation Server 2013
運用 Git 進行版本控管 - 使用 Visual Studio + Team Foundation Server
Team Foundation Service 雲端協同開發平台簡介
整合社交驗證及開發Facebook App – 使用ASP.NET及 Visual Studio 2013
[線上功能展示影片] 利用雲平台執行負載壓力測試 (Cloud Load Testing) - https://channel9.msdn.com/Series/Visual-Studio-2012-Premium-and-Ultimate-Overview-CHT/Cloud-Load-Testing-CHT