出版時間:2012-1 出版社:機(jī)械工業(yè)出版社 作者:James W. Grenning 頁數(shù):256 譯者:尹哲
Tag標(biāo)簽:無
內(nèi)容概要
本書深入介紹如何把測試驅(qū)動的開發(fā)方法應(yīng)用于嵌入式C語言開發(fā),第一部分介紹了兩個開源的測試框架,通過測試驅(qū)動開發(fā)方法開發(fā)第一個模塊:第二部分深入介紹了與系統(tǒng)中其他模塊進(jìn)行交互的代碼的測試技術(shù),如測試替身、仿制對象等;第三部分介紹了設(shè)計與持續(xù)改進(jìn)代碼,如寫出更好代碼的一些重要原則,建立可測并靈活設(shè)計的高級技術(shù),改進(jìn)已有代碼的實踐方法一一重構(gòu)技術(shù),改進(jìn)遺留代碼,以及編寫和維護(hù)測試的指導(dǎo)原則。本書的代碼幾乎全部用C寫成,并且可以用于嵌入式的、受約束的開發(fā)和執(zhí)行環(huán)境。
本書是作者多年實踐經(jīng)驗的總結(jié),實用性強(qiáng),適合嵌入式C/C++語言程序員、工程師閱讀。
作者簡介
作者:(美國)格倫寧 (James W.Grenning) 譯者:尹哲 等格倫寧(James W.Grenning)在全球范圍內(nèi)從事培訓(xùn)以及咨詢工作、他在軟件開發(fā)的技術(shù)和管理方面擁有豐富的經(jīng)驗。、他是把敏捷開發(fā)實踐引入到嵌入式領(lǐng)域的帶頭人他發(fā)明了計劃撲克(Planning Poker)他還是2001年2月《軟件開發(fā)敏捷宣言》的作者之一。尹哲是Odd-e團(tuán)隊中的一名敏捷教練。他在世界各地從事培訓(xùn)和軟件項目咨詢,如測試驅(qū)動開發(fā)、系統(tǒng)工程實踐以及分析實踐等。他在敏捷與精益教練方面擁有豐富經(jīng)驗,在研發(fā)管理和軟件設(shè)計這兩方面也造詣頗深。他同時還是敏捷社區(qū)和開源軟件的積極參與者,他與本書作者James相識多年,得其言傳身教,對本書中所涉及的知識及其應(yīng)用領(lǐng)域都相當(dāng)了解。
書籍目錄
譯者序
推薦序一
推薦序二
前言
致謝
第1章 測試驅(qū)動開發(fā)
1.1 為什么我們需要TDD
1.2 什么是測試驅(qū)動開發(fā)
1.3 TDD的機(jī)理
1.4 TDD的微循環(huán)
1.5 TDD的好處
1.6 對于嵌入式開發(fā)的益處
第一部分 開 始
第2章 測試驅(qū)動開發(fā)的工具和約定
2.1 什么是自動化單元測試框架
2.2 Unity:一個全部用C實現(xiàn)的自動化測試框架
2.3 CppUTest:一個用C++實現(xiàn)的自動化單元測試框架
2.4 單元測試也會崩潰
2.5 “四階段”模式
2.6 我們到哪里了
第3章 開始一個C語言模塊
3.1 具有可測性的C模塊的那些元素
3.2 LED驅(qū)動都做些什么
3.3 寫一個測試列表
3.4 寫第一個測試
3.5 先測試驅(qū)動接口再測試驅(qū)動內(nèi)部實現(xiàn)
3.6 增量式前進(jìn)
3.7 測試驅(qū)動開發(fā)者的狀態(tài)機(jī)
3.8 測試要做到FIRST
3.9 我們到哪里了
第4章 一路測試直到完成
4.1 從簡單入手“生長”出解決方案
4.2 保持代碼整潔——邊做邊重構(gòu)
4.3 重復(fù)直到完成
4.4 聲明完成之前先向回走一步
4.5 我們到哪里了
第5章 嵌入式系統(tǒng)TDD策略
5.1 目標(biāo)硬件的瓶頸
5.2 雙目標(biāo)開發(fā)的好處
5.3 雙目標(biāo)測試的風(fēng)險
5.4 嵌入式的TDD循環(huán)
5.5 雙目標(biāo)的不兼容性
5.6 和硬件一起測試
5.7 欲速則不達(dá)
5.8 我們到哪里了
第6章 是的,但是……
6.1 我們沒那個時間
6.2 為什么不在寫了代碼之后再寫測試
6.3 測試也需要維護(hù)
6.4 單元測試不能發(fā)現(xiàn)所有的bug
6.5 我們的構(gòu)建時間太長
6.6 我們有現(xiàn)存的代碼
6.7 我們的內(nèi)存有約束
6.8 我們不得不和硬件交互
6.9 為什么要用C++的測試框架來測試C
6.10 我們到哪里了
第二部分 測試有合作者的模塊
第7章 測試替身
7.1 合作者
7.2 脫離依賴關(guān)系
7.3 何時使用測試替身
7.4 用C來仿冒,下一步
7.5 我們到哪里了
第8章 監(jiān)視產(chǎn)品代碼
8.1 燈光調(diào)度測試列表
8.2 對于硬件和操作系統(tǒng)的依賴
8.3 鏈接時代換
8.4 監(jiān)視被測試代碼
8.5 控制時鐘
8.6 先0后
8.7 處理多個的情況
8.8 我們到哪里了
第9章 運行時綁定的測試替身
9.1 測試隨機(jī)性
9.2 冒仿函數(shù)指針
9.3 外科手術(shù)般地插入間諜
9.4 用間諜來校驗輸出
9.5 我們到哪里了
第10章 仿制對象
10.1 閃存驅(qū)動程序
10.2 MockIO
10.3 測試驅(qū)動開發(fā)驅(qū)動程序
10.4 模擬設(shè)備超時
10.5 這值得嗎
10.6 用CppUMock來仿制
10.7 生成仿制對象
10.8 我們到哪里了
第三部分 設(shè)計與持續(xù)改進(jìn)
第11章 SOLID、靈活并可測試的設(shè)計
11.1 SOLID設(shè)計原則
11.2 C語言中的SOLID模型
11.3 演進(jìn)的需求和有問題的設(shè)計
11.4 用動態(tài)接口來改進(jìn)設(shè)計
11.5 更靈活的基于類型的動態(tài)接口
11.6 做多少設(shè)計才是足夠的
11.7 我們到哪里了
第12章 重構(gòu)
12.1 軟件的兩個價值
12.2 三項關(guān)鍵技能
12.3 代碼中的壞味道以及如何改進(jìn)它們
12.4 轉(zhuǎn)化代碼
12.5 那性能和大小怎么辦
12.6 我們到哪里了
第13章 為遺留代碼加測試
13.1 遺留代碼改動準(zhǔn)則
13.2 童子軍原則
13.3 遺留代碼改動步驟
13.4 測試點
13.5 兩步結(jié)構(gòu)體初始化
13.6 崩潰直到通過
13.7 鑒別測試
13.8 為第三方代碼做學(xué)習(xí)測試
13.9 測試驅(qū)動缺陷修正
13.10 增加策略測試
13.11 我們到哪里了
第14章 測試的模式與反模式
14.1 “喋喋不休”測試反模式
14.2 “拷貝-粘貼-調(diào)整-重復(fù)”反模式
14.3 “格格不入的測試用例”反模式
14.4 “測試組之間的重復(fù)”反模式
14.5 “不尊重測試”反模式
14.6 “行為驅(qū)動開發(fā)”測試模式
14.7 我們到哪里了
第15章 結(jié)束語
第四部分 附錄
附錄A 開發(fā)系統(tǒng)的測試環(huán)境
附錄B Unity快速索引
附錄C CppUTest快速索引
附錄D 開始之后的LedDriver
附錄E 操作系統(tǒng)隔離層的例子
附錄F 參考書目
章節(jié)摘錄
版權(quán)頁:插圖:最終,當(dāng)一些保護(hù)測試就緒后,就應(yīng)該可以比較安全地應(yīng)用一些重構(gòu)變化了,因為我們已經(jīng)讓代碼準(zhǔn)備好來迎接我們想做的改變。有了測試來穩(wěn)固遺留的行為,就可以安全地測試驅(qū)動新的行為了。在13.4 節(jié)中,我們會看到在一些遺留代碼中選擇測試點。13.4 測試點我們需要測試點來確認(rèn)對代碼所做事情的理解。有些測試點很容易找到,有些則比較困難。接縫函數(shù)調(diào)用在代碼中的不同部分之間形成了“接縫”。這些接縫是最好的測試點。接縫讓我們可以看到和干預(yù)被測試代碼所做的事情。Michael這樣定義接縫:“接縫就是這樣一個位置,在那里你可以改變程序的行為,卻不用修改那個位置?!苯涌p就是你可以使用測試替身來監(jiān)視傳給合作者數(shù)據(jù)的地方,讓測試用例可以確保被測試代碼給合作者傳去了正確的指令。函數(shù)調(diào)用接縫還是測試替身可以為被測代碼提供間接輸入的地方,這通過測試替身的返回值來完成。你的代碼中可能已經(jīng)有了很多函數(shù)接縫。這里的例外是那種鐵板一塊的函數(shù)。為這種函數(shù)創(chuàng)建接縫可能會很危險。加入一個“感知變量”可能會更安全一點。
媒體關(guān)注與評論
我想這本書將成為嵌入式軟件工程師的“圣經(jīng)”?! 猂obert C.Martin
編輯推薦
《測試驅(qū)動的嵌入式C語言開發(fā)》由Robert C.Martin鼎力推薦,TDD領(lǐng)域不可多得的佳作。測試驅(qū)動開發(fā)(TDD)是C語言開發(fā)人員需要掌握的一種現(xiàn)代編程實踐。它是一種不同于以往的編程方法——在一種緊致的反饋循環(huán)中寫出單元測試與產(chǎn)品代碼。你時刻都會得到有價值的反饋。你會在失誤變成bug前就找到它們,你會有更多的時間花在為產(chǎn)品增加有價值的特性上。James是為數(shù)不多的把測試驅(qū)動開發(fā)應(yīng)用于嵌入式C的專家之一。他在培訓(xùn)以及實踐用C、C++、Java和C#做測試驅(qū)動開發(fā)方面擁有15年的經(jīng)驗,可以引領(lǐng)你從TDD的入門走向精通。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載