工欲善其事,必先利其器 先別急著一頭熱就栽進開發的坑裡 在這之前應該能先知道自動化測試的 基本概念 與 正確作法 對之後能夠建置一套有效、穩定、容易維護的自動化測試架構是很重要低~ 來將測試項目分類吧 我們需要執行各種不同類型的測試來確保能交付穩定高品質的軟體應用程式 Brian Marick提出這張測試象限圖依照四個維度將測試工作進行分類 分別是商務導向、技術導向、程式支持度或是為了專案評估 每個區塊依照工作特性來決定可自動化程度 我們這裡可以知道哪些測試工作適合用做自動化完成 右上角的測試方式都屬於手動,是為了要確認我們交付給用戶的程式能符合他們的期待的樣子 驗收測試是確保開發的軟體能符合每個Story的驗收標準 這在Agile開發環境中是相當重要的,驗收測試讓開發者知道我是否已經開發完成 也能讓用戶知道這是我們想要的功能 功能性的驗收測試應該用自動化來完成,有些和capacity, security和performance有關的非功能性測試在市場上也有許多自動化工具能夠達成 與程式和功能特性相關的單元測試,系統測試應該由開發者來完成這些自動化測試程式 Agile自動化測試最佳實踐: 測試金字塔 對於走敏捷開發模式的團隊,測試金字塔是一種規劃Test Strategty的理想模式 這種方式能提升自動化測試的ROI並保證能得到最多的收穫 Developer應該在開發時一併完成 unit test , 並在commit時通過這些測試 這是執行速度最快也是金字塔的基礎 component test 使用mock的方式讓我們能單獨測試一部分模組功能 Integration test 總是有其價值,只是我們要注意分配數量 這種測試比較不容易debug並且容易被其他模組變動影響執行結果 API Test 是最值得開發的項目, 它不但容易開發, 穩定並能提供清楚的資訊 Exploratory Test 是最上層手動測試中特別有價值的測試方式 我們時常遺忘它, 但這卻能讓我們有機會去執行那些沒接觸到的程式碼或邏輯路徑 然而實際上我們的自動化測試常會變成這樣... 對於沒有徹底執行敏捷開發模式的團隊, 去推動自動化常常會落入像這種 ice cream cone anti-patte