- 測試驅動開發:入門、實戰與進階
- (美)薩利姆·西迪基
- 1200字
- 2024-04-12 19:15:11
譯者序
測試驅動開發(Test-Driven Development, TDD)這種編程手法或許很早就出現了,它后來能夠重新得到關注的其中一個原因在于,有一群開發者很樂意通過各種實例向我們介紹該手法的好處。我剛學編程的那幾年,依然在用老辦法寫程序,雖然也做過一些測試,但都是實現完功能之后補寫的,直到2007年看了Kent Beck的《測試驅動開發》(Test-Driven Development: By Example),才發現原來程序可以這樣寫。
從最基本的流程上說,TDD可以概括成三個環節:首先,寫一項測試,以描述有待實現的某個功能,并在其中做出斷言,以表示產品的執行效果必定與期望的效果相符,由于我們還沒有編寫相關的產品代碼,因此這樣的測試幾乎總是無法通過;其次,用極其簡單的方式(甚至可以是硬代碼)來編寫產品,讓這項測試能夠通過;最后,重構產品與測試代碼,讓兩者都變得更加準確、清晰。
測試代碼明確地描述了需求,促使開發者必須寫出滿足該需求的產品代碼,這確保我們不會走錯方向。測試越寫越多,這些測試所覆蓋的范圍也逐漸擴大,這促使我們把代碼寫得越來越通用,但是,由于我們在每一輪迭代時都力求用最簡單的寫法讓測試通過,因此不會像以前那樣總是想一下子就寫出極為通用的代碼,從而導致過度設計。另外,有這套測試做保障,就不用害怕新編的代碼會破壞已經寫好的功能了,因為假如出現那樣的情況,就會有測試無法通過,從而提醒我們注意該問題。
現在距離《測試驅動開發》一書面世已經20多年了,但仍有一些朋友尚未嘗試過TDD,還有一些雖然嘗試過,但尚未完全了解它的理念并體會到它的好處。如果說Kent Beck重新發現了TDD,那么Saleem Siddiqui的這本書則有可能讓TDD變得更加流行。
本書采用一個完整的項目貫穿各章,作者全程示范了如何把項目拆解成多個小功能,并依次采用測試驅動的方式實現這些功能。每實現一個功能,作者都會演示如何通過重構,把這個功能的代碼乃至項目的結構調整得更好。作者采用三種編程語言講解,這不僅能吸引更多的人來閱讀,而且讓我們能夠觀察各種編程語言在設計思路與實現細節方面的異同,進而養成一種超越編程語言的設計思維。大家在書中會看到如何結合具體語言的優勢,以清晰的代碼將這種思維表達出來。此外,作者還指引我們把這個項目提交到本地的git代碼庫中,以便做版本管理,并且告訴我們如何將本地倉庫與遠程的GitHub庫同步,以及如何通過腳本制作CI(持續集成)管道,讓項目代碼每次推送到遠程庫之后都能夠自動接受測試。
總之,這是一本流暢而連貫的教程,能讓大家很快喜歡上TDD。當然,TDD本身仍有一些地方尚待思考,例如怎樣測試圖形界面以及多線程的代碼等,希望大家結合自己的實際工作來探索這些問題。
為便于閱讀,譯者根據漢語習慣及原文語境補充了部分詞句,以六角括號〔〕標出,原書中某些不便翻譯的術語酌情保留原樣,讓大家能夠直接用這些英文詞來溝通,以避免誤解。
翻譯過程中,我得到了家人和朋友的幫助,在此深表謝意。
由于譯者水平有限,錯誤與疏漏在所難免,請大家訪問github.com/jeffreybaoshenlee/ltdd-errata/issues留言,或發郵件至eastarstormlee@gmail.com,給予批評和指正。
愛飛翔
2022年7月21日
- INSTANT Mock Testing with PowerMock
- HTML5+CSS3王者歸來
- iOS Game Programming Cookbook
- Java Web開發學習手冊
- JavaScript 從入門到項目實踐(超值版)
- Visual Studio 2012 Cookbook
- Game Programming Using Qt Beginner's Guide
- Software Testing using Visual Studio 2012
- Learning Python Design Patterns(Second Edition)
- Java程序設計與實踐教程(第2版)
- Microsoft Dynamics GP 2013 Reporting, Second Edition
- 零基礎輕松學SQL Server 2016
- Scala程序員面試算法寶典
- C語言程序設計實驗指導 (第2版)
- PySide 6/PyQt 6快速開發與實戰