測試驅動開發是什麼

更新於 發佈於 閱讀時間約 2 分鐘
在軟體開發中,有許多測試的流派,像是 TDD(Test-Driven Development,測試驅動開發)就是其中之一,除此之外還有 BDD(Behavior-Driven Development,行為驅動開發)等等不同方式,根據不同的情境選擇適合的測試方式也會是一個重要的技巧。

測試與規格

從測試方法的名字中可以很輕鬆的了解到,TDD(測試驅動開發)的前提就是先寫測試,然後再去開發我們的系統。要達成這樣的條件,就會需要有明確的規格才能夠實行。
假設我們沒辦法明確的定義出像是「當日用品跟清潔用品一起購買時折扣 10%」的規格時,我們基本上就可以預期測試驅動開發會變得非常難以進行,因為我們無法給出一個詳細的 User Story(使用者故事)並且根據這些資訊推導出所需要的測試案例應該如何撰寫。

先測試的好處

然而,我們可以反過來思考,假設我們希望先進行測試的話,是否應該反向的驗證規格是否有所缺漏。
基於這樣的前提,我們可以將測試驅動開發想像為一個「反思」的技巧,當我們拿到「當日用品跟清潔用品一起購買時折扣 10%」的條件時,是否還需要更多的資訊呢?舉例來說,我們是否需要限定在特定時間折扣、是否有折扣的額度上限等等
當我們釐清規格的時候,大致上也對當下的需求有了更清晰的理解,此時再去根據測試的限制撰寫實際運作的程式,就能夠更好的控制範圍以及減少錯誤。

穩定的發展專案

如同測試的目的所說,測試能夠讓工程師更勇敢的修改,也會在測試逐步完善的過程中減少反覆驗證的成本,逐漸的加速開發。在這樣的狀態下,我們的專案實際上就是穩定發展的,因為人為疏失或者意外造成的影響會逐步地減少。
然而,在不同的情境下使用不同的測試方式依舊還是有必要的。因為 TDD 大多是以「單元」測試為前提,對於產品經理或者專案經理來說是難以直接給出確切的規格。而 BDD(行為驅動開發)可以搭配像是 Cucumber 這類工具,先由工程師設計對應的關鍵字,讓非工程師可以用「描述行為」的方式來定義功能,先進行一個「大方向」的規格定義,再由工程師確認細節夠撰寫「小單元」測試來確保每一個零件都是正常的。

封面圖片使用 UnsplashLauren Sauder 的作品,有想聽的主題可以透過匿名問卷告訴我,想了解專業的技術主題可以到弦而時習之找找靈感。
為什麼會看到廣告
avatar-img
55會員
40內容數
軟體工程師逐漸變成一個熱門的職業,當我們進入這個職業之後應該要具備怎樣的技能才會在工作上更加順利呢?這系列的專欄會分享日常工作中的經驗以及一些案例分析,讓我們一起努力成為一位更優秀的軟體工程師吧!
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
蒼時弦也的沙龍 的其他內容
大多數的工程師常常會有一個疑問,就是「測試」應該要怎麼測試才是正確的?在過去,軟體測試大多還是以人工為主,在這幾年逐漸的出現自動化測試之後,實際上我們是不清楚應該要怎麼寫測試。
刷題的時候,我們應該思考的不是「如何回答」而是用科學的方式,根據情境、題目要求進行分析,最後再找出適合的演算法去解決這些問題,同時也可以反思自己是否缺少對某些知識的理解。
很多公司面試確實會去考這些題目,並不是為了知道你是否會解題,更多的是想知道你怎麼思考。在工作中,當我們遇到各種不同類型的問題時,是否能夠根據自身的知識、經驗去探索出最佳的解決方案,大多是面試工程師所看重的一環。
前陣子剛好聽了 AWS(Amazon Web Service,亞馬遜的雲端服務)介紹他們的雲端服務,簡單來說就是從「硬體思維」轉換到「軟體思維」的方式,以軟體方式去思考就可以看作是「雲端」
既然是例外,就表示出現了我們預期以外的事情,就這點而言這個用詞跟翻譯都非常的精確。假設我們認為這段程式執行的時後不應該出現這個情況,那麼它就必須是一個例外。
當時我不會喝酒,畢竟從小對喝酒的印象就不是很好,因此很自然的到吧台點了一杯「可樂」準備來喝。沒想到,調酒師竟然問我「不調嗎?」然而,身為一個乖寶寶學生,當然要拒絕他!
大多數的工程師常常會有一個疑問,就是「測試」應該要怎麼測試才是正確的?在過去,軟體測試大多還是以人工為主,在這幾年逐漸的出現自動化測試之後,實際上我們是不清楚應該要怎麼寫測試。
刷題的時候,我們應該思考的不是「如何回答」而是用科學的方式,根據情境、題目要求進行分析,最後再找出適合的演算法去解決這些問題,同時也可以反思自己是否缺少對某些知識的理解。
很多公司面試確實會去考這些題目,並不是為了知道你是否會解題,更多的是想知道你怎麼思考。在工作中,當我們遇到各種不同類型的問題時,是否能夠根據自身的知識、經驗去探索出最佳的解決方案,大多是面試工程師所看重的一環。
前陣子剛好聽了 AWS(Amazon Web Service,亞馬遜的雲端服務)介紹他們的雲端服務,簡單來說就是從「硬體思維」轉換到「軟體思維」的方式,以軟體方式去思考就可以看作是「雲端」
既然是例外,就表示出現了我們預期以外的事情,就這點而言這個用詞跟翻譯都非常的精確。假設我們認為這段程式執行的時後不應該出現這個情況,那麼它就必須是一個例外。
當時我不會喝酒,畢竟從小對喝酒的印象就不是很好,因此很自然的到吧台點了一杯「可樂」準備來喝。沒想到,調酒師竟然問我「不調嗎?」然而,身為一個乖寶寶學生,當然要拒絕他!
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
測試對於構建複雜的 Vue 應用至關重要,因為它能防止回歸並鼓勵將應用拆分為可測試的模組。我們介紹了測試的基本術語和推薦的工具,包括單元測試、組件測試和端對端測試。建議越早開始測試,避免隨著時間推移而增加的相依性。單元測試專注於函數和邏輯的正確性,而組件測試則驗證 UI 元素的行為與交互。
Thumbnail
單元測試為重構提供了安全防線,確保程式碼在修改後仍能正常運作。透過撰寫測試,我們能夠提高程式碼品質、預防回歸錯誤,並在重構過程中更具信心。測試的過程不僅幫助找出錯誤,也促使我們深入思考系統設計,從而優化整體架構。
Thumbnail
單元測試不僅能發現錯誤,更是提升開發技能的關鍵工具。Laravel 提供強大的測試框架,讓我們可以輕鬆撰寫測試。建立測試資料庫、撰寫測試方法、使用 Factory 生成測試資料,能確保程式碼穩定,並幫助開發者在修改與重構中更有信心。持續撰寫測試能提高程式碼品質,並讓開發過程更有條理與安全感。
Thumbnail
PDCA循環是一種有效的管理方法,透過計劃(Plan)、執行(Do)、檢查(Check)與行動(Act)四個步驟,促進企業流程與產品品質的持續提升。這一管理理念強調選擇與努力相互依賴,共同驅動成果。
Thumbnail
A/B 測試是一種用來測試不同版本效果的實驗方法,可以用於網站優化、電子郵件行銷和社群媒體行銷中。瞭解 A/B 測試的五個大小技巧,包括明確的測試目標、控制變因、足夠的樣本數、一次只測試一個變因以及追蹤長期表現。在進行網頁優化時,可以將 A/B 測試應用於不同標題、文案、等元素,找出有效的改進方向。
Thumbnail
產品開發的成功,除了品質,更在於是否能夠在適當的時程內推出並滿足客戶需求。 身為開發、設計人員,從文中提供的三個角度來思考,以確保產品與公司的競爭力。
Thumbnail
在《為什麼這樣工作會快、準、好》一書中,作者Charles Duhigg介紹了「工程設計流程(engineering design process)」決策法,這是一套要求人們在解決問題的過程中,需要根據以下幾個步驟:明確界定問題、蒐集資料、提出解決方案、討論選擇並透過持續的實驗找到最好答案。其實這個
Thumbnail
有別於試圖直接從數據中找出洞察,商業分析的精髓在於先思考 so what——從定義目標開始,做出商業決策的雛形後,才用數據去支持假說。這篇文章介紹 A/B 測試的技巧,以及摘櫻桃的應用,解說數據篩選的操作、摘櫻桃的好處,以及企業案例:數位轉型後的報社,亞馬遜CEO貝佐斯改造百年郵報。
Thumbnail
EC tracker utilization ** 3C機構設計爸版權所有** 在開發設計過程中,通常會有的流程包括開案 —> 設計 —> EVT(prototyping) —> DVT(tooling T1) —> PVT(tooling Txx) —> MP(T-Final)。當然,已經有很
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
測試對於構建複雜的 Vue 應用至關重要,因為它能防止回歸並鼓勵將應用拆分為可測試的模組。我們介紹了測試的基本術語和推薦的工具,包括單元測試、組件測試和端對端測試。建議越早開始測試,避免隨著時間推移而增加的相依性。單元測試專注於函數和邏輯的正確性,而組件測試則驗證 UI 元素的行為與交互。
Thumbnail
單元測試為重構提供了安全防線,確保程式碼在修改後仍能正常運作。透過撰寫測試,我們能夠提高程式碼品質、預防回歸錯誤,並在重構過程中更具信心。測試的過程不僅幫助找出錯誤,也促使我們深入思考系統設計,從而優化整體架構。
Thumbnail
單元測試不僅能發現錯誤,更是提升開發技能的關鍵工具。Laravel 提供強大的測試框架,讓我們可以輕鬆撰寫測試。建立測試資料庫、撰寫測試方法、使用 Factory 生成測試資料,能確保程式碼穩定,並幫助開發者在修改與重構中更有信心。持續撰寫測試能提高程式碼品質,並讓開發過程更有條理與安全感。
Thumbnail
PDCA循環是一種有效的管理方法,透過計劃(Plan)、執行(Do)、檢查(Check)與行動(Act)四個步驟,促進企業流程與產品品質的持續提升。這一管理理念強調選擇與努力相互依賴,共同驅動成果。
Thumbnail
A/B 測試是一種用來測試不同版本效果的實驗方法,可以用於網站優化、電子郵件行銷和社群媒體行銷中。瞭解 A/B 測試的五個大小技巧,包括明確的測試目標、控制變因、足夠的樣本數、一次只測試一個變因以及追蹤長期表現。在進行網頁優化時,可以將 A/B 測試應用於不同標題、文案、等元素,找出有效的改進方向。
Thumbnail
產品開發的成功,除了品質,更在於是否能夠在適當的時程內推出並滿足客戶需求。 身為開發、設計人員,從文中提供的三個角度來思考,以確保產品與公司的競爭力。
Thumbnail
在《為什麼這樣工作會快、準、好》一書中,作者Charles Duhigg介紹了「工程設計流程(engineering design process)」決策法,這是一套要求人們在解決問題的過程中,需要根據以下幾個步驟:明確界定問題、蒐集資料、提出解決方案、討論選擇並透過持續的實驗找到最好答案。其實這個
Thumbnail
有別於試圖直接從數據中找出洞察,商業分析的精髓在於先思考 so what——從定義目標開始,做出商業決策的雛形後,才用數據去支持假說。這篇文章介紹 A/B 測試的技巧,以及摘櫻桃的應用,解說數據篩選的操作、摘櫻桃的好處,以及企業案例:數位轉型後的報社,亞馬遜CEO貝佐斯改造百年郵報。
Thumbnail
EC tracker utilization ** 3C機構設計爸版權所有** 在開發設計過程中,通常會有的流程包括開案 —> 設計 —> EVT(prototyping) —> DVT(tooling T1) —> PVT(tooling Txx) —> MP(T-Final)。當然,已經有很