Visual Studio Online (原名 Team Foundation Service) 雲端協同開發平台簡介
作者 – 陸雲中 (Kent, 微軟MVP)
註 - Team Foundation Service 已於 2013/11月改名為 Visual Studio Online
Team Foundation Service是微軟提供的Application Lifecycle Management(ALM) 團隊開發的雲端服務,是 Team Foundation Server的雲端版本,Team Foundation Service提供了以下優勢:
l 不須安裝,可快速建置
l 以需求功能與使用量為計費基礎
l 提升服務的可靠性
l 改善效能與可延展性
目前 Team Foundation Service 仍有些功能是不及 Team Foundation Server的,分別為:
- 身份驗證 - Team Foundation Service 目前是以 Live ID 身份驗證,對於企業及研發團隊,需用AD整合身份驗證以提供更完整的群組及權限設定者,應使用 Team Foundation Server
- 完整的專案管理報表 – Team Foundation Server 才提供完整的報表以利專案管理及各式指標查詢
- 客製化的流程 – Team Foundation Server提供完整的客製化流程以符合個別團隊需求,Team Foundation Service不提供客製化流程
Team Foundation Service是微軟 Windows Azure 平台上的ALM服務,因此其Service Level Agreement (SLA) 可達到 99.95%,也就是每年30分鐘以內的離線時間。對於大部分企業而言,要以相當有限的成本達到此SLA標準是相當困難的。而Team Foundation Service目前只支援英文版介面,提供了以下功能:
l 雲端程式版本控管
l 團隊協同作業與敏捷開發
l 雲端自動化測試(目前為Preview版)
l 雲端自動化組建與部署(目前為Preview版)
在接下來的章節中會一一簡要說明。
開始使用Team Foundation Service
要使用Team Foundation Service的功能,首先要申請一個Windows Live ID帳號。然後使用此帳號申請Visual Studio 帳號,如下圖1所示:
圖 1:申請Visual Studio 帳號
在圖1中「Account URL」 的部分可以自行選擇團隊的URL網址。點選「Create Account」 後,會自動建立團隊專屬的Team Collection,瀏覽器網址為https:// [Visual Studio 帳號].visualstudio.com。接著可以建立用來管理團隊開發的Team專案。點選「New Team Project」 如圖2所示:
圖 2:建立管理團隊開發的Team專案
接著輸入專案名稱與流程模板(目前有Microsoft Visual Studio SCRUM 3.0與MSF For Agile Development 7.0與MSF for CMMI Development 7.0三種可以選擇)與關連的版本控管系統(目前有Team Foundation Version Control與Git兩種可以選擇)後點選「Create Project」即可完成,如圖3所示:
圖 3:設定管理團隊開發的Team專案
建立完畢後點選「Navigate to Project」即可連接到新建立的Team 專案,如圖4所示:
圖 4:建立完成的Team專案
建立Team專案後,點選圖4右方的「Manage all members... 」將其他團隊成員加入到此Team專案並授權後,其他團隊成員即可存取此Team 專案[1]。如果開發人員有安裝Visual Studio 2013 (VS 2013),可以直接點選圖4右方的「Open new instance of Visual Studio」打開VS 2013進行開發,如圖5所示:
圖 5:從Web存取網站開啟VS 2013
當團隊Team專案準備好了之後,就可以開始使用Team Foundation Service提供的相關功能了,首先由開發協同作業開始介紹。
規劃開發協同作業
團隊開發中第一個活動通常是規劃開發協同作業,Team Foundation Service提供了Microsoft Visual Studio SCRUM 3.0與MSF For Agile Development 7.0與MSF for CMMI Development 7.0三種開發方法論用於規劃開發協同作業。限於篇幅本文以Microsoft Visual Studio SCRUM 3.0進行說明。SCRUM開發方法的基本流程如圖6所示:
圖 6:SCRUM開發方法
圖6中表示的第一個步驟(Manage the backlog)是建立產品待處理項目(Product Backlog)。當使用者說明了需求後,可利用Office PowerPoint建立使用者故事(User Story),如圖7所示:
圖 7:利用Office PowerPoint建立使用者故事
建立好的使用者故事可以上傳後與Team Foundation Service的產品待處理項目清單關聯,如圖8所示:
圖 8:建立產品待處理項目清單
若開發產品的規模較大或須由多個開發小組共同開發多個功能,可使用組合清單(portfolio backlog)先將功能(Feature)列出,再建立各功能的產品待處理清單,如此可由功能與關連的產品待處理項目的進行雙向追溯管理。如圖9所示:
圖 9:建立組合清單(portfolio backlog)
當產品待處理項目清單整理完畢,即可開始規劃衝刺(Sprint)的內容,規劃衝刺時會先決定那些產品待處理項目需要處理,也就是從產品待處理項目清單中依照優先順序找出此衝刺要處理的產品待處理項目,這份清單稱為衝刺待處理項目清單(Sprint Backlog),如圖10所示:
圖10:建立衝刺待處理項目清單(Sprint Backlog)
接著團隊針對衝刺待處理項目清單進行工作分解規劃,包含工作項目內容與預估時間等,規劃完畢後由團隊成員分工。這些工作都可以在Team Foundation Service提供的面板(board)上進行,如圖11所示:
圖 11:在面板上規劃衝刺工作
衝刺規劃完畢以後,團隊成員就可以各自依照分配的工作一一進行並且在面板上以滑鼠拖曳的方式進行進度回報,如圖12所示:
圖 12:團隊成員在面板上回報目前工作進度
開發團隊可利用面板進行SCRUM每日站立會議以追蹤每日團隊成員各自開發進度。同時開發團隊可以利用cumulative flow diagram (CFD)以視覺化的方式掌握團隊目前整體的開發進度,如圖13所示:
圖 13:Cumulative flow diagram (CFD)
至此我們利用Team Foundation Service完成了一個SCRUM衝刺週期,接下來介紹Team Foundation Service的版本控管功能。
版本管控
Team Foundation Service的版本管控應該是開發團隊最常使用的功能之一。使用Team Foundation Service的版本管控的方式相當簡單,首先先利用VS 2013上傳程式碼,如圖14所示:
圖 14:上傳程式碼到Team Foundation Service
上傳後簽入即可利用版本控管功能進行簽入簽出等版控功能。另外Web存取也有提供基本的版控功能(例如程式碼版本比較等),如圖15所示:
圖 15:Web存取中的版控功能
另外,也可以利用程式碼檢閱來提高程式碼品質。當需要使用程式碼檢閱時,直接在Team Explorer中的「我的工作」中選擇「要求檢閱」即可啟動程式碼檢閱流程,如圖16所示:
圖 16:啟動程式碼檢閱流程
收到程式碼檢閱的檢閱者,可以在Team Explorer中開啟檢閱並輸入檢閱內容,如圖17所示:
圖 17:檢閱者檢閱程式碼
開發人員收到檢閱意見後即可參考檢閱意見進行程式修改。如果需要多人共同討論,可以使用Team Foundation Service中的Team Room(聊天室)功能進行,團隊成員可以由Team Explorer的Team Room連結進入聊天室,透過左方代表某個聊天室名稱旁的向下箭頭,叫出下拉選單選擇管理事件選項,或是在右下方的「Manage events」連結,而後在對話窗設定那些團隊活動觸發的事件要自動出現在該聊天室,如圖18所示:
圖18:設定多種團隊事件發生時,自動反映到Team Room
若設定「建置完成」、「程式碼變更」、「工作項目更新」、「程式碼檢閱」等事件要出現在聊天室時,當這些事件發生後,會自動呈現在聊天室的內容內,如圖19所示:
圖19:透過 Team Room 討論並檢視團隊開發的各種事件
這些事件還會提供各事件細節的連接,讓團隊可以進一步了解事件的來龍去脈。由於它們自動留存在聊天室內,而聊天室的紀錄可以透過上方的日期切換,方便找尋以往某時發生的團隊事件,並在進一步分析某個時間下相關事件的前因後果。
當程式碼開發完成以後,可以使用Team Foundation Service中的Build(組建)功能進行持續整合(continuous Integration,CI)。
自動化組建
在程式開發完成後,通常必須編譯佈署到測試環境上進行測試。在Team Foundation Service中主要由Build(組建)功能完成,Team Foundation Service的組建系統架構如圖20所示:
圖20:Team Foundation Service的組建系統架構
在Team Foundation Service中可以有兩種Build Server: Team Foundation Service內建的Hosted Build Server與自行安裝設定的On Premises Build Servers。Hosted Build Server可直接使用,但開發團隊沒有管理設定的權限,因此功能上不如自行安裝設定的On Premises Build Servers,相對的,On Premises Build Servers因為要自行安裝設定,會產生額外的操作成本。一般來說建議使用Hosted Build Server。
Build(組建)功能必須在Team Explorer中設定,開啟VS 2013後點選「組建」後選擇「新增組建定義」即可新增一個組件定義,如圖21所示:
圖21:設定Team Foundation Service組建
接著可以在VS 2013中看到組建定義的設定精靈如圖22所示:
圖22:新增Team Foundation Service組建定義
如果在「流程」頁籤中使用AzureContinuousDeployment.11.xmal建置流程範本,可以將編譯完成的產出直接佈署到Windows Azure的測試環境。詳情請參考以下網址:https://www.windowsazure.com/en-us/develop/net/common-tasks/publishing-with-tfs/
開發團隊可以利用組建功能自動化編譯、程式碼分析、單元測試、佈署等功能,以達到持續交付(CI)的目的。接下來說明Team Foundation Service的測試功能。
管理測試
所有的開發團隊在交付產出給使用者前,必須經過測試以確保產出品質。執行測試時應有完整的測試計畫,計畫中應有預計測試的測試案例。可以使用Microsoft Test Manager(MTM)連線到Team Foundation Service進行測試計畫與測試案例管理,如圖23所示:
圖23:使用Microsoft Test Manager(MTM)管理測試計畫與測試案例
另外,也可以使用Web存取管理測試計畫與測試案例,如圖24所示:
圖24:使用Web存取管理測試計畫與測試案例
測試計畫完成後,可在Web存取或者MTM上指派測試案例給測試人員,由測試人員執行測試並回報測試結果。測試人員在Web存取或者MTM直接執行測試案例,系統會帶出Test Runner紀錄並回報測試結果,如圖25所示:
圖25:使用Test Runner測試並回報結果
如果需要作Web壓力測試,可以使用Team Foundation Service中的雲端Load Test,它的優勢是不需要僅為了壓力測試而建置龐大的壓測環境(包含軟體、硬體及網路)。可在需要執行壓測時付費使用即可,建立壓力測試的步驟為利用VS 2013建立測試專案,錄製Web效能測試,建立負載測試,有一點要注意的部分是,在測試設定檔中(.testsettings)的「一般」頁籤需選擇「使用Visual Studio Team Foundation Service執行測試」,如圖26所示:
圖26:在負載測試設定中設定在Visual Studio Team Foundation Service執行測試
結語
本文以Team Foundation Service簡要說明了如何實作ALM的開發流程步驟:團隊開發協同作業、開發版本管控、自動化編譯佈署、測試管理等。目的是希望讀者能了解Team Foundation Service對於開發團隊的重要性。特別是對於個人、小型開發團隊、或是使用SVN版控工具更是值得參考使用,本文目的不在於工具的細節操作,而是提供筆者以Team Foundation Service規劃團隊ALM流程的經驗交流,作為建立開發團隊的參考。
參考資料
- https://kevintsengtw.blogspot.tw/2012/11/team-foundation-service.html
- https://tfs.visualstudio.com/en-us/feature-tour
- https://tfs.visualstudio.com/en-us/pricing/tfs-information
- https://vsarguidance.codeplex.com/releases/view/87996
- https://blogs.msdn.com/b/visualstudioalm/
- https://msdn.microsoft.com/en-us/library/tfs/dd286619.aspx
延伸閱讀
- 軟體生命週期管理的新功能 - 使用 Visual Studio Ultimate + Team Foundation Server 2013
- Visual Studio 2013 + Team Foundation Service 進行持續整合與壓力測試
- 運用 Git 進行版本控管 - 使用 Visual Studio + Team Foundation Server
[Visual Studio 2013 功能展示影片]
- 如何測試 Windows Store App - https://channel9.msdn.com/Series/Visual-Studio-2012-Premium-and-Ultimate-Overview-CHT/Testing-Windows-Store-Applications-CHT
- 利用 IntelliTrace 找到上線環境錯誤的程式碼 - https://channel9.msdn.com/Series/Visual-Studio-2012-Premium-and-Ultimate-Overview-CHT/Go-To-Code-From-Production-CHT
- 觀看定義 (Peek Definition) - https://channel9.msdn.com/Series/Visual-Studio-2012-Premium-and-Ultimate-Overview-CHT/Peek-Definition-CHT
- .NET 程式中分析記憶體使用 (Managed Memory Analysis) - https://channel9.msdn.com/Series/Visual-Studio-2012-Premium-and-Ultimate-Overview-CHT/Managed-Memory-Analysis-CHT
- 在編輯器中顯示程式碼資訊 (CodeLens) - https://channel9.msdn.com/Series/Visual-Studio-2012-Premium-and-Ultimate-Overview-CHT/CodeLens-CHT
- 利用雲平台執行負載壓力測試 (Cloud Load Testing) - https://channel9.msdn.com/Series/Visual-Studio-2012-Premium-and-Ultimate-Overview-CHT/Cloud-Load-Testing-CHT