談?wù)劀y試驅(qū)動開發(fā)

背景

本人一直都從事 PHP 后端項(xiàng)目開發(fā),一直使用 Laravel 框架。從業(yè)近 10 年來從未采用過測試開發(fā),因?yàn)槲乙恢倍荚谕獍竟ぷ?,公司的性質(zhì)決定「按期交付」為第一生命線,因此從未關(guān)注過 TDD 相關(guān)的信息,畢竟 TDD 在我看來耗費(fèi)的時(shí)間過大,會影響項(xiàng)目進(jìn)度。

不過由于公司老大的一再堅(jiān)持,接下來三個(gè)月我要在公司內(nèi)部主推測試,因此有必要花時(shí)間來整理一下學(xué)習(xí)路徑。

相關(guān)原理

測試驅(qū)動開發(fā)的基本思想就是在開發(fā)功能代碼之前,先編寫測試代碼。也就是說在明確要開發(fā)某個(gè)功能后,首先思考如何對這個(gè)功能進(jìn)行測試,并完成測試代碼的編寫,然后編寫相關(guān)的代碼滿足這些測試用例。然后循環(huán)進(jìn)行添加其他功能,直到完全部功能的開發(fā)。

我們這里把這個(gè)技術(shù)的應(yīng)用領(lǐng)域從代碼編寫擴(kuò)展到整個(gè)開發(fā)過程。應(yīng)該對整個(gè)開發(fā)過程的各個(gè)階段進(jìn)行測試驅(qū)動,首先思考如何對這個(gè)階段進(jìn)行測試、驗(yàn)證、考核,并編寫相關(guān)的測試文檔,然后開始下一步工作,最后再驗(yàn)證相關(guān)的工作。下圖是一個(gè)比較流行的測試模型:V測試模型。

【圖 V測試模型】

在開發(fā)的各個(gè)階段,包括需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼過程中都應(yīng)該考慮相對應(yīng)的測試工作,完成相關(guān)的測試用例的設(shè)計(jì)、測試方案、測試計(jì)劃的編寫。這里提到的開發(fā)階段只是舉例,根據(jù)實(shí)際的開發(fā)活動進(jìn)行調(diào)整。相關(guān)的測試文檔也不一定是非常詳細(xì)復(fù)雜的文檔,或者什么形式,但應(yīng)該養(yǎng)成測試驅(qū)動的習(xí)慣。

方法

測試驅(qū)動開發(fā)的基本過程如下:

  1. 明確當(dāng)前要完成的功能??梢杂涗洺梢粋€(gè) TODO 列表。
  2. 快速完成針對此功能的測試用例編寫。
  3. 測試代碼編譯不通過。
  4. 編寫對應(yīng)的功能代碼。
  5. 測試通過。
  6. 對代碼進(jìn)行重構(gòu),并保證測試通過。
  7. 循環(huán)完成所有功能的開發(fā)。

測試驅(qū)動的缺點(diǎn)

TDD 對開發(fā)人員的素質(zhì)要求非常高。新手看到TDD會歡欣鼓舞,因?yàn)樗麄儭柑羁印沟墓ぷ骶蜕倭撕芏唷5撬麄儧]有能力來實(shí)踐。
老手們在項(xiàng)目的壓力下,早就麻木了,有時(shí)間寫測試,還不如快速推進(jìn)項(xiàng)目進(jìn)度(比如我)。

所以,在團(tuán)隊(duì)內(nèi)推動 TDD 需要公司內(nèi)部有相應(yīng)的資源才能比較好的推行,比如項(xiàng)目部給研發(fā)團(tuán)隊(duì)爭取更寬松的時(shí)間,HR 給團(tuán)隊(duì)帶來更專業(yè)的人 :)

注意事項(xiàng)

TDD不是銀彈,不可能適合所有的場景,但這不應(yīng)該成為我們拒絕它的理由。
也不要輕易否定TDD,如果要否定,起碼要在認(rèn)真實(shí)踐過之后。

相關(guān)視頻

參考資料

以上就是我當(dāng)前對 TDD 的一些淺顯的理解,接下來將在工作中更加細(xì)致的磨練相關(guān)技能。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容