基本信息
作者:格倫寧 (James W.Grenning) (作者), 尹哲 (譯者), 等 (譯者)出版社: 機械工業出版社; 第1版 (2012年2月1日)
外文書名: Test-Driven Development for Embedded C
叢書名: 華章專業開發者叢書
平裝: 256頁
正文語種: 簡體中文
開本: 16
ISBN: 9787111366232
內容簡介
《測試驅動的嵌入式C語言開發》深入介紹如何把測試驅動的開發方法套用於嵌入式C語言開發,第一部分介紹了兩個開源的測試框架,通過測試驅動開發方法開發第一個模組:第二部分深入介紹了與系統中其他模組進行互動的代碼的測試技術,如測試替身、仿製對象等;第三部分介紹了設計與持續改進代碼,如寫出更好代碼的一些重要原則,建立可測並靈活設計的高級技術,改進已有代碼的實踐方法一一重構技術,改進遺留代碼,以及編寫和維護測試的指導原則。《測試驅動的嵌入式C語言開發》的代碼幾乎全部用C寫成,並且可以用於嵌入式的、受約束的開發和執行環境。
《測試驅動的嵌入式C語言開發》是作者多年實踐經驗的總結,實用性強,適合嵌入式C/C++語言程式設計師、工程師閱讀。
編輯推薦
《測試驅動的嵌入式C語言開發》由Robert C-Martin鼎力推薦,TDD領域不可多得的佳作。
測試驅動開發(TDD)是C語言開發人員需要掌握的一種現代編程實踐。它是一種不同於以往的編程方法——在一種緊緻的反饋循環中寫出單元測試與產品代碼。你時刻都會得到有價值的反饋。你會在失誤變成bug前就找到它們,你會有更多的時間花在為產品增加有價值的特性上。
James是為數不多的把測試驅動開發套用於嵌入式C的專家之一。他在培訓以及實踐用C、C++、Java和C#做測試驅動開發方面擁有15年的經驗,可以引領你從TDD的入門走向精通。
媒體推薦
我想這本書將成為嵌入式軟體工程師的“聖經”。
——Robert C-Martin
作者簡介
作者:(美國)格倫寧 (James W.Grenning) 譯者:尹哲 等
格倫寧(James W.Grenning)在全球範圍內從事培訓以及諮詢工作、他在軟體開發的技術和管理方面擁有豐富的經驗。、他是把敏捷開發實踐引入到嵌入式領域的帶頭人他發明了計畫撲克(Planning Poker)他還是2001年2月《軟體開發敏捷宣言》的作者之一。
尹哲是Odd-e團隊中的一名敏捷教練。他在世界各地從事培訓和軟體項目諮詢,如測試驅動開發、系統工程實踐以及分析實踐等。他在敏捷與精益教練方面擁有豐富經驗,在研發管理和軟體設計這兩方面也造詣頗深。他同時還是敏捷社區和開源軟體的積極參與者,他與本書作者James相識多年,得其言傳身教,對本書中所涉及的知識及其套用領域都相當了解。
目錄
譯者序
推薦序一
推薦序二
前言
致謝
第1章 測試驅動開發
1.1 為什麼我們需要TDD
1.2 什麼是測試驅動開發
1.3 TDD的機理
1.4 TDD的微循環
1.5 TDD的好處
1.6 對於嵌入式開發的益處
第一部分 開始
第2章 測試驅動開發的工具和約定
2.1 什麼是自動化單元測試框架
2.2 Unity:一個全部用C實現的自動化測試框架
2.3 CppUTest:一個用C++實現的自動化單元測試框架
2.4 單元測試也會崩潰
2.5 “四階段”模式
2.6 我們到哪裡了
第3章 開始一個C語言模組
3.1 具有可測性的C模組的那些元素
3.2 LED驅動都做些什麼
3.3 寫一個測試列表
3.4 寫第一個測試
3.5 先測試驅動接口再測試驅動內部實現
3.6 增量式前進
3.7 測試驅動開發者的狀態機
3.8 測試要做到FIRST
3.9 我們到哪裡了
第4章 一路測試直到完成
4.1 從簡單入手“生長”出解決方案
4.2 保持代碼整潔——邊做邊重構
4.3 重複直到完成
4.4 聲明完成之前先向回走一步
4.5 我們到哪裡了
第5章 嵌入式系統TDD策略
5.1 目標硬體的瓶頸
5.2 雙目標開發的好處
5.3 雙目標測試的風險
5.4 嵌入式的TDD循環
5.5 雙目標的不兼容性
5.6 和硬體一起測試
5.7 欲速則不達
5.8 我們到哪裡了
第6章 是的,但是……
6.1 我們沒那個時間
6.2 為什麼不在寫了代碼之後再寫測試
6.3 測試也需要維護
6.4 單元測試不能發現所有的bug
6.5 我們的構建時間太長
6.6 我們有現存的代碼
6.7 我們的記憶體有約束
6.8 我們不得不和硬體互動
6.9 為什麼要用C++的測試框架來測試C
6.10 我們到哪裡了
第二部分 測試有合作者的模組
第7章 測試替身
7.1 合作者
7.2 脫離依賴關係
7.3 何時使用測試替身
7.4 用C來仿冒,下一步
7.5 我們到哪裡了
第8章 監視產品代碼
8.1 燈光調度測試列表
8.2 對於硬體和作業系統的依賴
8.3 連結時代換
8.4 監視被測試代碼
8.5 控制時鐘
8.6 先0後
8.7 處理多個的情況
8.8 我們到哪裡了
第9章 運行時綁定的測試替身
9.1 測試隨機性
9.2 冒仿函式指針
9.3 外科手術般地插入間諜
9.4 用間諜來校驗輸出
9.5 我們到哪裡了
第10章 仿製對象
10.1 快閃記憶體驅動程式
10.2 MockIO
10.3 測試驅動開發驅動程式
10.4 模擬設備逾時
10.5 這值得嗎
10.6 用CppUMock來仿製
10.7 生成仿製對象
10.8 我們到哪裡了
第三部分 設計與持續改進
第11章 SOLID、靈活並可測試的設計
11.1 SOLID設計原則
11.2 C語言中的SOLID模型
11.3 演進的需求和有問題的設計
11.4 用動態接口來改進設計
11.5 更靈活的基於類型的動態接口
11.6 做多少設計才是足夠的
11.7 我們到哪裡了
第12章 重構
12.1 軟體的兩個價值
12.2 三項關鍵技能
12.3 代碼中的壞味道以及如何改進它們
12.4 轉化代碼
12.5 那性能和大小怎么辦
12.6 我們到哪裡了
第13章 為遺留代碼加測試
13.1 遺留代碼改動準則
13.2 童子軍原則
13.3 遺留代碼改動步驟
13.4 測試點
13.5 兩步結構體初始化
13.6 崩潰直到通過
13.7 鑑別測試
13.8 為第三方代碼做學習測試
13.9 測試驅動缺陷修正
13.10 增加策略測試
13.11 我們到哪裡了
第14章 測試的模式與反模式
14.1 “喋喋不休”測試反模式
14.2 “拷貝-貼上-調整-重複”反模式
14.3 “格格不入的測試用例”反模式
14.4 “測試組之間的重複”反模式
14.5 “不尊重測試”反模式
14.6 “行為驅動開發”測試模式
14.7 我們到哪裡了
第15章 結束語
第四部分 附錄
附錄A 開發系統的測試環境
附錄B Unity快速索引
附錄C CppUTest快速索引
附錄D 開始之後的LedDriver
附錄E 作業系統隔離層的例子
附錄F 參考書目