最近這幾個月,很常會被問及 Visual Studio Team Services (VSTS) / Team Foundation Server (TFS) 測試工具藍圖。我這裡希望能分享我們當家的部分以及過去半年持續不斷傳達的策略方向,如果您認為我們正在做的事情是對的或者哪裡我們迷失了焦點都很歡迎收到您的回饋。
有鑑於各種軟體開發趨勢 (Agile, DevOps, Cloud, Mobile),這裡列出我們在測試領域看到的主要轉變:
- 企業期待更快速的交付 – 上市時間 (Time to Market) 成為一個非常重要的區分。多渠道 應用程式運行在網頁、手機、個人電腦與平板上,加上支援企業內部自攜設備 (BYOD) ,引領測試配置爆炸性需求。就品質而言,各維度的期望不斷增加,增加客戶價值,縮短發行週期,更多的測試組態,適度的預算與高度的經營風險伴隨著品質的流失。
- 工程團隊有效率地進行轉變與持續整合 (CI),工程師逐漸擁抱 及早測試、頻繁測試 的概念,他們撰寫更多的單元測試以及頻繁執行作為持續整合的一部分。導入 DevOps 以在一個或者多個環境 (開發 / 測試 / 試生產 / 生產) 中及自動化建置、部署與測試 BDT (Build-Deploy-Test) 流程,並且為每個環境執行相對應的自動化測試。.
- 手動測試 仍然是重要的,但有更多的人投入在手動測試產品之中,功能團隊掃蟲 (bug) 作戰,產品經理試玩產品,企業用戶與領域專家進行用戶驗收測試 (UAT),搶先試用者在真實世界中使用產品的情境等,每個人都想要提供反饋進而改善產品品質,但沒有適切的產品能毫無摩擦的協助彼此溝通。
- 企業渴望借力雲端基礎建置實踐資源最佳化,應用程式搬到雲上的同時,安全性與效能測試變得尤其需要。企業利用在雲上執行測試以及多種 SaaS 服務提供壓力和效能測試、行動裝置測試。
基於以上內容,下述是我們的投資的主要領域。
- 迴圈中開發Dev Inner Loop – 單元測試在Visual Studio 集成開發環境
- 測試在CI 與 CD 發行管理 (RM)
- 手動與探勘測試
- 壓力與效能測試
- 第三方測試服務整合
過去半年我們已經遵行這個策略,下列是我們到現在傳達 VSTS 以及 TFS 2015, 更新 1 和 更新 2 (RC) 的主要價值。
Dev Inner Loop – 單元測試在 Visual Studio 集成開發環境
在 Visual Studio 中,我們擁有開放與可擴充的測試平台,多樣的測試框架撰寫的測試皆能被不同種類的適配器 (adapter) 所執行。我們會持續加強功能,造福所有的單元測試框架 – MSTest, Junit, Xunit, Nunit 等等。時常會有關於有效率執行單元測試的詢問 – 我們已經支援多核心平行處理 (Parrallel execution) 以及增量型確認 (Incremental Validation),執行只影響基於測試的產品變化。
MSTest – 我們會持續支持與強化 MSTest。針對 ASP.NET 5 應用程式我們已經支援撰寫基於 MSTest 的測試以及收集程式碼覆蓋率的資料。我們打算支援高詢問度的需求關於針對類別 (class) 或組件(assembly) 層級的 Data row 與 Test category 等。
現在可以:
- 執行平行測試利用電腦上可用的核心
- 增量型確認(透過內容相關性執行 Context sensitive execution) – 只針對更新的測試容器偵測與執行測。
- 為 ASP.NET 5 應用程式的 MSTest 架構式測試增加了新支援
- 可以從 NuGet 資源庫取得 MSTest 架構元件
即將支援的功能:
- MSTest 的強化 – Data row 與 Test category 的支援
- 程式碼 UI 支援 Edge 瀏覽器
- 測試總管的強化 – 多條路徑中發現測試組件,豐富的過濾器,排序以及功能分組等
持續整合裡的測試
一個完美的 CI 系統中執行與分析測試是必備的功能。我們的目標是提供各種應用程式很棒的體驗在語境測試 (in-context test) 與程式碼覆蓋結果伴隨可執行的見解。我們會不斷的致力在加強這部分的體驗,透過增加更多的價值、圖表以及趨勢如同我們前進的方向。
現在可以:
- 所有在建置中執行的測試結果將統一彙整。
- 上下文檢測結果與可操作的見解。Bug中第一次的測試失敗將會被標記為”新的錯誤 (New Failures)”,以幫助您識別回歸。對於在多次建置中持續失敗的測試,您可以看到這個錯誤已經失效多久以及在哪次建置中發生。
- 支持您所選擇的任何 UT 框架 – MSTest, XUnit, NUnit, Junit 等。
- 增加了xUnit、NUnit、Junit 和附檔名為 .trx 的任務發行測試結果(Publish Test Results) 支援。
- 測試 Java 應用程式:
- 支援 JUnit: 您可以上傳 Junit 結果到 TFS,從Ant、Gradle、 和Maven。您也可以使用不同的命令列工具發行測試結果,執行測試並發行這次測試所產生的結果。
- 支援 Java 應用程式程式碼覆蓋率: 可以為您的Java專案選擇 Jacoco 或者 Cobertura 作為程式碼覆蓋率工具。這個組建檔案可以使用正確的工具動態修改並且上傳結果到 TFS。
- 發行程式碼覆蓋率 (Publish Code Coverage) 工作支援 Jacoco 和 Cobertura 如果您的組建檔案已經成功設定收集程式碼覆蓋率的資訊,或者您使用不同的程式碼覆蓋率工具(例如 Istanbul) 支援產出 Jacoco 或 Cobertura 格式的結果,您可以透過發行程式碼覆蓋率 (Publish Code Coverage) 工作上傳資料到 TFS。
- 趨勢圖中檢視最近10個建置中執行了多少個測試案例,其中失敗的數量。您可以把這些圖表加到儀表板中。
發行管理 (Release Management) 中的測試
和 CI 相似,發行的測試結果會顯示在每個環境 (例如開發/QA/生產) 中。 您將能夠評估每次在特定的環境中發行的品質,並且在您的發行管道之中,為移動到下個環境制定有根據的決定。鑒於每次發行文本會執行大量的測試,我們專注在有效率的執行功能性 UI 測試、負載/性能測試等。我們要無縫執行在任何的雲端架構上 – SCVMM、VMWare、Azure 和提供混合式管理給您的應用程式與測試設備。
現在可以:
- 不同環境的語境 (In-context) 測試結果在 RM – 和Build 相似。
- 不同機器上執行平行測試。
- 支援使用程式碼 UI和 Selenium 進行功能性 UI 測試。
- 支援 建置-部署-測試 (BDT) 工作流程在標準環境和 Azure VM。
- CI 與 RM 中 MTM 測試計劃與測試套件執行改善
- 支援 BDT 工作流程在VMWare 和 SCVMM 環境
即將支援的功能:
- 配置儀錶板上的測試小部件。
- 彙總分支 (CI) 與環境 (RM) 的測試歷史紀錄
- CI中測試影響 (Test Impact)
手動與探勘測試
我們專注在使團隊的所有人都能提供反饋與提高品質。我們提供了新的探勘測試體驗在網頁與行動應用程式上。了解更多關於網頁的探勘測試以及透過從市集下載安裝 Chrome 瀏覽器外掛開始使用。我們打算為了所有手動與探勘測試的需求提供一個可信賴的網站體驗。我們希望讓測試者更加融入敏捷的實踐 – 輕鬆地為使用者故事 (User Story) 添加測試、更新測試結果內聯在看板 (Kanban) 和提供品質觀察在草創時期。
由於我們專注於跨平台、敏捷與測試場景、與第三方測試服務整合、端到端的追溯,我們決定提供大部分的新價值在我們的web體驗上,例如: Test Hub。我們正在積極的縮短微軟測試管理 (MTM) 與 web 體驗 (Test Hub) 之間的功能差距。我們將繼續支援 MTM 但我們鼓勵使用者使用我們的 web 體驗並且受益於我們正在創造的新價值。
現在可以:
手動測試
- 匯出測試成果,手動測試迭代結果。
- 測試結果保留政策(Retention Policy)
- 過濾測試計劃、刪除測試計劃。
- 從子套件查看測試案例
Web 上的探勘測試(XT)
- 簡易的螢幕截圖與註解擷取。
- XT Session中發現檔案錯誤。自動為您擷取註解、有註解的截圖、團隊區域和迭代路徑以及系統和瀏覽器資訊。
- 搜尋並且更新既有的錯誤
- 整合 Perfecto Mobile 為了測試行動應用程式。
- 獨立與連接 ( TFS 或 VSTS) 模式
- 發現問題在 XT Session,自動創建任務。
- 探索工作項目– 從 XT Session 中搜尋工作項目,並關連至對應的 Session。然後您可以在 XT 期間參考驗收標準/描述。在您選定的工作項目與XT Session 中您可以端到端的追溯錯誤與您提出的任務。
即將支援的功能:
- 直接內聯測試在看板 (Kanban)
- Web 存取的配置管理
- 測試計劃/測試套件複製 (透過市集擴充元件)
- 離線測試 (透過市集擴充元件)
- XT-Image 操作紀錄, 追溯能力與影片擷取
- XT-Insights 橫跨多個 XT Session
- XT-Support 給專案關係人請求與未請求的工作流程
- 負載與效能測試
我們的目標是提供一個可信賴的負載測試服務,讓您能在幾分鐘內創建負載測試設備利用多個 Azure 資料中,並提供快速的見解針對您的應用程式效能在真實世界情境裡。
現在可以:
- 支援JMeter
- 作者-執行-分析 (Author-Execute-Analyze) 負載測試的網站體驗
- 整合 Azure 網站應用程式效能測試體驗
- CI/RM 管道的一部分 – 執行負載測試的能力
即將支援的功能:
我們正在積極討論負載測試的藍圖,我稍後會分享更多的細節。.
整合第三方測試服務
我們已經整合了一些第三方測試服務作為擴充元件。我們會持續整合更多的第三方服務提供更信賴的價值給我們的客戶。
還有一件事 – 我們致力於創造一個完美的 DevOps 故事給行動應用程式。透過 VSTS 和 HockeyApp 的整合,您可以建置您的 Andriod、iOS 或 Windows 應用程式,部署到內部裝置或者由第三方雲端服務供應商管理的裝置,運行自動化測試,執行探勘測試,然後利用 HockeyApp 服務分送 beta 給使用者,收集即時的crash reports,獲得真實使用者反饋與分析測試覆蓋率!
讓我澄清我們的定位在其他幾個重要的領域:
Microsoft Test Manager (MTM) and 實驗室管理 (Lab Management)
許多客戶使用 MTM 和實驗室管理進行手動、探勘和自動化測試。針對手動與探勘測試,我們已經提供所有新的價值在網站體驗 – Test Hub。我們很快便會搬移 MTM 剩下的功能到 Web 上。
對於自動化測試 (Build-Deploy-Test) 情境的支援上,我們尚有一些缺口在 TFS 2015 RTM 的測試計劃 (Test Plan) / 測試套件 (Test Suite) 基本的執行、視需求 (on-demand) 執行、和自動化相關,支持 SC-VMM 環境等。
我們正在積極的縮小這些缺口並且加入新的功能,例如針對 VMWare 和 Azure 環境的支援,簡化應用程式部署等。這確實幫助客戶移轉至我們新的建置與發行流程。
我們並沒有做更多的強化功能在既有的 MTM 以及實驗室管理產品上。我們更專注在跨平台、敏捷測試情境、和第三方測試服務的整合、端到端的追蹤和簡化建置/發行的工作流程,我們決定傳遞這些新價值在我們的網站體驗服務 – Test Hub。我們將繼續支援 MTM 但我們鼓勵使用者使用我們的 web 體驗並且受益於我們正在創造的新價值。
Coded UI 和 Selenium
Coded UI 依然會是我們最推薦給桌面、網站以及商店應用程式的功能型 UI 自動化工具。隨著 WebDriver 變成 W3C 標準以及強大的企業需求支援 Selenium 在網站應用程式,我們會持續改善撰寫與執行基於 WebDriver 的 Selenium 以及 Appium 測試。 我們會選擇性的增強程式碼 UI功能,例如UWP,支援 Edge 等,以及鼓勵顧客使用 Selenium 和 Appium 在功能型UI 測試。關於更多細節資訊以及如何開始可以參考以下文章:
- 測試結果在 Build/CI
- 測試 Java 應用程式
- 標準環境與 Azure VM 上的測試
- 使用 Selenium 測試網站應用程式
- 測試儀錶板在 Build/CI
- 執行測試平行
- 增量生成
- 探勘測試
- 單元測試與程式碼UI 支援UWP應用程式
我們很期待聽到您的聲音,感謝您花時間看了這麼長的文章。
如果您喜愛這些功能,快開始使用 VSTS上的測試工具吧!.
如果您有任何疑問或者想要的功能,都可以留訊息給我們!
本文翻譯自 Visual Studio Team Services – Testing Tools Roadmap 若翻譯有誤,煩請不吝惜留言指教:)
【VSTS 相關活動 】-