JavaScript測試驅動開發

JavaScript測試驅動開發 下載 mobi epub pdf 電子書 2025

[美] 文卡特·蘇布拉馬尼亞姆(Venkat Subramaniam) 著,毛姝雯 譯
圖書標籤:
  • JavaScript
  • TDD
  • 測試
  • 前端開發
  • 軟件測試
  • 編程
  • 開發
  • Web開發
  • 單元測試
  • 自動化測試
想要找書就要到 圖書大百科
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 人民郵電齣版社
ISBN:9787115477156
版次:1
商品編碼:12326929
包裝:平裝
叢書名: 圖靈程序設計叢書
開本:16開
齣版時間:2018-03-01
用紙:膠版紙
頁數:288
正文語種:中文

具體描述

編輯推薦

適讀人群 :有一定經驗的JavaScript開發人員,尤其是對JavaScript自動化測試感興趣的讀者。
使用JavaScript開發應用,測試起來並不容易?其實不然。

無論是使用Node.js、Express、MongoDB、jQuery、Angular,還是DOM和jQuery協作,都能夠進行測試驅動開發。

然而,專業的程序員更關心如何寫齣清晰可行的自動化測試,並使風險* 小化,讓開發過程安全、高效、可持續。本書介紹瞭編寫自動化測試所需的各種技巧和工具,結閤大量實例,幫助讀者理解並寫齣清晰且高效的自動化測試,並學習如何遵循軟件設計敏捷原則,實現輕量級設計,得到可維護的代碼。

本書主要內容:

● 自動化驗證與自動化測試對於可持續開發的必要性
● 自動化測試基礎——為同步函數和異步函數編寫測試
● 為客戶端和服務器端編寫自動化測試,使用Node.js、Express、MongoDB、jQuery以及Angular
● 學習使用測試工具,如Chai、Istanbul、Karma、Mocha、Protractor、Sinon等
● 集成測試和端到端測試——檢查覆蓋率以確保各部分運轉良好

內容簡介

JavaScript已經成為使用* 廣泛的語言之一,它強大且高度靈活,但同時也頗具風險,所以應該用更齣色的開發實踐來支持。自動化測試和持續集成* 是很好的方法,可以降低JavaScript帶來的風險。本書介紹JavaScript自動化測試及其相關實踐,主體內容包括兩部分:* 一部分涵蓋自動化測試的基礎,介紹如何為同步函數和異步函數編寫測試,以及當代碼包含復雜的依賴關係時如何實現自動化測試;* 二部分通過一個測試驅動開發的示例,讓讀者能夠運用在* 一部分所學的內容,為客戶端和服務器端編寫自動化測試。本書在幫助讀者學習和研究測試工具和技術的同時,還會介紹一些軟件設計原則,有助於實現輕量級設計,並得到可維護的代碼。

作者簡介

【作者簡介】

Venkat Subramaniam

博士,Agile Developer公司創始人,敏捷開發先驅,通過演講、著書、培訓等方式影響瞭全球數十萬軟件開發人員。另著有《高效程序員的45個習慣:敏捷開發修煉之道》《Scala程序設計:Java虛擬機多核編程實戰》《Groovy程序設計》等書。

【譯者簡介】

毛姝雯

對編程有著濃烈的興趣,iOS開發、Web前端開發、UI設計等領域都有涉足。曾任職於IBM,專注於移動端Web開發。現在已經是一個可愛寶寶的母親。

目錄

第1章 自動化測試讓你重獲自由 1
1.1 變更的挑戰 1
1.1.1 變更的成本 1
1.1.2 變更的影響 2
1.2 測試與驗證 2
1.3 采用自動化驗證 3
1.4 為什麼難以驗證 5
1.5 如何實現自動化測試 6
1.6 小結 6
第 一部分 創建自動化測試
第2章 測試驅動設計 10
2.1 讓我們開始吧 10
2.1.1 檢查npm和Node.js的安裝 11
2.1.2 創建示例項目 11
2.1.3 創建測試套件和金絲雀測試 12
2.1.4 驗證函數的行為 14
2.1.5 驗證另一個數據 16
2.2 正嚮測試、反嚮測試和異常測試 18
2.3 設計服務器端代碼 20
2.3.1 從測試列錶開始 20
2.3.2 迴文項目 21
2.3.3 編寫正嚮測試 22
2.3.4 編寫反嚮測試 26
2.3.5 編寫異常測試 27
2.4 評估服務器端代碼覆蓋率 29
2.5 為測試客戶端代碼做準備 31
2.5.1 切換到客戶端項目 31
2.5.2 配置Karma 33
2.5.3 從金絲雀測試開始 34
2.6 設計客戶端代碼 34
2.7 評估客戶端代碼覆蓋率 37
2.8 小結 38
第3章 異步測試 39
3.1 服務器端迴調 39
3.1.1 一次天真的嘗試 40
3.1.2 編寫異步測試 41
3.1.3 編寫一個反嚮測試 43
3.2 客戶端的迴調函數 44
3.3 測試promise 46
3.3.1 對promise的簡單介紹 46
3.3.2 promise異步測試的類型 47
3.3.3 返迴promise對象的函數 48
3.3.4 使用done()進行測試 49
3.3.5 返迴promise 的測試 . 49
3.3.6 使用chai-as-promised 50
3.3.7 結閤eventually和done() 50
3.3.8 為promise編寫反嚮測試 51
3.4 小結 52
第4章 巧妙處理依賴 53
4.1 問題以及spike解決方案 53
4.1.1 轉移到spike項目 53
4.1.2 從spike中獲得見解 54
4.2 模塊化設計 55
4.3 盡量分離依賴 56
4.3.1 結束spike,準備自動化測試 56
4.3.2 測試creatURL 57
4.4 使用測試替身 59
4.5 依賴注入 61
4.6 交互測試 62
4.7 使用Sinon清理測試代碼 64
4.7.1 安裝Sinon 65
4.7.2 初探Sinon 65
4.7.3 使用Sinon的mock測試交互 67
4.7.4 使用Sinon的stub測試狀態 68
4.7.5 使用Sinon的spy攔截調用 70
4.8 迴顧與繼續 72
4.9 小結 75
* 二部分 真實的自動化測試
第5章 Node.js測試驅動開發 78
5.1 從策略設計開始——適度即可 78
5.2 深入戰略設計——測試優先 79
5.2.1 創建初始測試列錶 79
5.2.2 編寫* 一個測試 80
5.2.3 編寫一個正嚮測試 82
5.3 繼續設計 85
5.3.1 readTickersFile的反嚮測試 85
5.3.2 設計parseTickers函數 87
5.3.3 設計processTickers函數 88
5.4 創建spike以獲得啓發 89
5.4.1 為getPrice創建spike 89
5.4.2 設計getPrice函數 90
5.5 模塊化以易於測試 93
5.5.1 設計processResponse和processError函數 93
5.5.2 設計processHttpError 95
5.5.3 設計parsePrice和processError 96
5.6 分離關注點 97
5.6.1 設計printReport 98
5.6.2 設計sortData 98
5.7 集成和運行 100
5.8 迴顧代碼覆蓋率和設計 102
5.8.1 評估代碼覆蓋率 102
5.8.2 代碼設計 103
5.9 提供HTTP訪問 104
5.10 小結 105
第6章 Express測試驅動開發 106
6.1 為可測試性設計 106
6.1.1 創建策略設計 107
6.1.2 通過測試創建戰略設計 108
6.2 創建Express應用並運行金絲雀測試 108
6.3 設計數據庫連接 109
6.4 設計模型 113
6.4.1 建立數據庫連接和測試固件 113
6.4.2 設計all函數 114
6.4.3 設計get函數 115
6.4.4 設計add函數 116
6.4.5 處理delete函數 121
6.4.6 設計共享的校驗代碼 123
6.5 設計路由函數 126
6.5.1 重溫路由 127
6.5.2 從為Router創建stub開始 128
6.5.3 測試路徑 的GET方法 129
6.5.4 測試路徑 :id的GET方法 131
6.5.5 處理路徑 的POST方法 133
6.5.6 以路徑 :id的DELETE方法結束整個測試 135
6.6 評估代碼覆蓋率 136
6.7 運行應用 138
6.7.1 使用Curl 139
6.7.2 使用Chrome擴展程序 140
6.7.3 觀察響應 141
6.8 小結 141
第7章 與DOM和jQuery協作 142
7.1 創建策略設計 142
7.2 通過測試創建戰略設計 143
7.2.1 創建測試列錶 143
7.2.2 創建項目 144
7.3 增量開發 145
7.3.1 設計getTasks 146
7.3.2 更新DOM 147
7.3.3 調用服務 150
7.3.4 注冊window對象的onload事件 154
7.4 運行 UI 155
7.5 完成設計 156
7.5.1 設計addTask 157
7.5.2 設計deleteTask 163
7.6 使用jQuery進行測試 165
7.6.1 準備工作 166
7.6.2 使用jQuery選擇器 166
7.6.3 使用$.ajax驗證調用 167
7.6.4 測試document的ready函數 168
7.6.5 完整的測試和使用jQuery的代碼實現 170
7.7 評估代碼覆蓋率 170
7.8 小結 171
第8章 使用AngularJS 172
8.1 測試AngularJS的方式 172
8.2 初步設計 175
8.3 關注控製器 176
8.3.1 準備工作空間 176
8.3.2 編寫* 一個測試 177
8.3.3 設計控製器 177
8.4 設計服務交互 180
8.5 分離關注點,減少mock 182
8.5.1 找到閤適的地方 183
8.5.2 結閤經驗測試和交互測試 183
8.5.3 測試加載順序 186
8.6 繼續設計 187
8.6.1 設計addTask 188
8.6.2 設計deleteTask 192
8.7 設計服務 194
8.7.1 設計get 函數 194
8.7.2 設計add 函數 197
8.7.3 設計delete 函數 198
8.8 評估代碼覆蓋率 199
8.9 運行UI 200
8.10 小結 201
第9章 Angular 2測試驅動開發 202
9.1 通過spike學習Angular 202
9.1.1 管道、服務和組件 203
9.1.2 創建項目 203
9.1.3 創建管道 204
9.1.4 創建服務 205
9.1.5 創建組件 207
9.1.6 集成 211
9.2 通過測試設計Angular應用 213
9.2.1 創建項目 214
9.2.2 創建測試列錶 215
9.3 測試驅動組件的設計 215
9.3.1 驗證是否設置組件屬性 215
9.3.2 初始化模型 218
9.3.3 設計getTasks 219
9.3.4 對任務進行排序 222
9.3.5 驗證依賴注入 224
9.4 測試驅動服務的設計 226
9.5 測試驅動管道的設計 230
9.6 測試驅動啓動代碼 234
9.7 集成 236
9.8 完成設計 237
9.8.1 設計任務添加功能 238
9.8.2 設計任務刪除功能 245
9.8.3 評估代碼覆蓋率 248
9.9 小結 249
* 10章 集成測試和端到端測試 250
10.1 認識Protractor 250
10.1.1 使用Protractor的理由 251
10.1.2 安裝Protractor 251
10.1.3 使用Protractor進行測試 251
10.1.4 為UI層測試做準備 253
10.1.5 編寫* 一個測試 254
10.1.6 測試數據發送 255
10.2 啓動服務器和配置數據庫 256
10.2.1 為TO-DO應用安裝Protractor 257
10.2.2 在設置前啓動服務器 257
10.2.3 為不同的環境創建數據庫 259
10.2.4 在beforeEach中設置數據 260
10.3 測試jQuery UI 261
10.3.1 設置Protractor配置文件 261
10.3.2 發現必要的測試 261
10.3.3 實現集成測試 262
10.4 使用頁麵對象 265
10.5 測試AngularJS的UI 268
10.6 測試Angular 2的UI 272
10.7 小結 275
* 11章 測試驅動你自己的應用 276
11.1 努力的成果 276
11.2 測試的規模和層次 279
11.3 測試驅動:程序員指南 280
11.4 測試驅動:團隊領導、架構師指南 282
11.5 測試驅動:項目經理指南 283
11.5.1 促進可持續的敏捷開發實踐 283
11.5.2 優雅地處理遺留應用 283
11.5.3 結束新的遺留應用 284
11.6 搖滾吧 285
附錄 網絡資源 286
參考文獻 288
《鋒芒初露:Web前端開發實戰指南》 引言 在日新月異的數字浪潮中,Web前端開發正以前所未有的速度演進。從最初的靜態頁麵到如今高度動態、交互豐富的Web應用,前端技術棧的邊界不斷拓展,對開發者的技藝提齣瞭更高的要求。本書旨在為 aspiring 的前端開發者提供一套係統、實用的學習路徑,幫助他們從零開始,逐步構建起紮實的前端開發基礎,並掌握應對實際項目挑戰的關鍵技能。我們將聚焦於現代Web開發的核心技術,從基礎概念到高級實踐,層層遞進,讓讀者能夠 confidently 地駕馭前端開發的每一個環節。 第一部分:築牢基石——HTML、CSS與JavaScript的深度解析 第一章:Web的骨架——HTML5精通 HTML作為Web內容的結構化語言,其重要性不言而喻。本章將帶領讀者深入理解HTML5的語義化特性,不再僅僅停留在標簽的堆砌,而是學習如何利用header, nav, main, article, section, aside, footer等語義化標簽,構建清晰、易於理解且對搜索引擎友好的頁麵結構。我們將探討錶單元素的增強,如input types (email, url, date, number等) 和其屬性 (required, placeholder, pattern),以及如何利用ARIA (Accessible Rich Internet Applications) 屬性提升Web的可訪問性,確保所有用戶都能順暢地訪問和使用Web內容。此外,多媒體元素的集成,如`

用戶評價

評分

《JavaScript 測試驅動開發》這本書,對我來說,就像是為我量身定做的一份“內功心法”。以前我寫 JavaScript,更多的是一種“摸著石頭過河”的狀態,寫完代碼,感覺功能實現瞭就 OK 瞭,至於有沒有 bug,或者寫得是否優雅,心裏總是沒底。這本書徹底改變瞭我這種混沌的開發模式。它用一種非常係統化的方法,教會瞭我如何“未雨綢繆”。書中對 TDD 的核心理念——“失敗是成功之母”的解讀,讓我明白瞭寫一個失敗的測試,然後讓它成功的意義。這不僅僅是為瞭驗證代碼的功能,更是為瞭引導代碼的設計方嚮。書中對不同類型的測試(單元測試、集成測試、端到端測試)的界定和實踐,讓我對測試的整體規劃有瞭更清晰的認識。而且,書中還詳細講解瞭如何利用 TDD 來應對各種復雜的 JavaScript 場景,比如處理第三方庫的集成、異步操作的測試、組件的復用等等。讓我印象深刻的是,書中還專門開闢瞭一章來討論如何處理遺留代碼的測試,這對於許多項目來說都是一個實際的痛點。讀完這本書,我感覺自己不再是被代碼牽著鼻子走,而是真正地掌握瞭開發的主動權,我的代碼質量和開發效率都得到瞭顯著的提升。

評分

說實話,我一直覺得 TDD 聽起來很美好,但實際操作起來總感覺像是在給自己增加工作量,尤其是在項目緊、任務重的時候,很容易被“先寫測試”這個步驟勸退。然而,《JavaScript 測試驅動開發》這本書,用一種非常接地氣的方式,徹底打消瞭我這種顧慮。它沒有一開始就拋齣那些高大上的理論,而是從最基礎的“為什麼要做測試”開始,然後逐步深入到“怎麼做測試”。書中對各種常見的 JavaScript 場景,比如 DOM 操作、異步編程、模塊化等等,都提供瞭非常具體的 TDD 實踐案例。我印象最深刻的是書中關於如何編寫“可測試代碼”的部分,它教會瞭我如何設計函數、管理狀態,以及如何解耦,從而讓我的代碼更容易被測試覆蓋。這不僅僅是關於寫測試,更是關於如何寫齣更好的代碼。書中對 Jest 的使用講解也相當到位,從安裝配置到各種高級用法,都講解得非常細緻,讓我能夠很快地掌握這個強大的測試工具。而且,書中還提到瞭很多關於測試的“坑”,比如如何避免脆弱的測試、如何處理副作用等等,這些都是非常寶貴的實戰經驗。讀完這本書,我感覺自己對 TDD 的理解從“聽說過”變成瞭“能上手”,而且在實際項目中,我真的開始嘗試並受益於 TDD 瞭,代碼的質量和穩定性確實有瞭明顯的提升,也減少瞭後期調試的麻煩。

評分

作為一名對代碼質量有著極緻追求的開發者,《JavaScript 測試驅動開發》這本書無疑是一份難得的寶藏。它不僅僅是一本關於測試的書,更是一本關於如何構建高質量、可維護、易於擴展的 JavaScript 應用的書。書中對 TDD 的闡述,已經超越瞭簡單的“寫瞭測試再寫代碼”的錶層含義,而是深入到瞭軟件設計的哲學層麵。它強調的是一種“思考先行”的開發模式,通過在編寫功能代碼之前進行充分的測試設計,迫使我們更深入地思考需求的本質、代碼的邊界條件以及潛在的錯誤處理。書中關於“測試優先”原則的闡述,以及如何通過測試來驅動代碼設計,給我帶來瞭巨大的啓發。我尤其欣賞書中對“重構”的重視,它明確指齣,測試是重構的“安全網”,隻有有瞭充分的測試覆蓋,我們纔能放心地對代碼進行優化和改進,而不用擔心引入新的 bug。書中還討論瞭許多關於測試的“副作用”,比如文檔的生成、代碼覆蓋率的度量等等,這些都讓 TDD 的價值得到瞭更全麵的體現。讀完這本書,我感覺自己不再是簡單地在寫代碼,而是在精心雕琢每一個模塊,每一個函數,讓它們在測試的“審視”下,變得更加堅固和可靠。

評分

拿到《JavaScript測試驅動開發》這本書,真的像是打開瞭一扇通往更可靠、更健壯 JavaScript 開發世界的大門。作為一名長期與 JavaScript 打交道的開發者,我一直深知測試的重要性,但總覺得在實際項目中落地 TDD(測試驅動開發)總是有些磕磕絆絆,不是精力跟不上,就是感覺流程過於繁瑣,影響開發效率。這本書徹底改變瞭我之前的看法。它不是那種泛泛而談的理論指導,而是非常務實地從最基礎的概念講起,用清晰易懂的語言和生動的代碼示例,一步步地引導讀者去理解 TDD 的核心思想:先寫測試,再寫代碼,讓代碼在測試的驅動下成長。書中對測試用例的設計、斷言的編寫、以及如何利用各種測試框架(比如 Jest)來提高效率,都有非常詳盡的講解。我尤其欣賞書中對於“紅-綠-重構”這個經典 TDD 循環的反復強調和實踐,通過大量的實際代碼演練,讓我深刻體會到這個過程是如何幫助我們寫齣更簡潔、更可維護的代碼的。而且,書中還涉及瞭一些更高級的測試技巧,比如樁(stub)和模擬(mock)的應用,這對於測試那些有依賴關係的復雜模塊非常有幫助。讀完這本書,我感覺自己對 JavaScript 的測試理念有瞭質的飛躍,不再害怕寫測試,反而覺得寫測試成瞭一種享受,因為我能看到自己的代碼是如何在測試的“嗬護”下變得越來越完善的。

評分

這本書,絕對是我想推薦給任何想要提升 JavaScript 開發水平的同行的首選。《JavaScript 測試驅動開發》不僅僅是教你寫測試,它更是一種開發哲學的啓濛。它通過反復的實踐,讓我深刻理解瞭“讓代碼自己說話”的意義。在閱讀過程中,我最深的體會是,TDD 並不是一種額外的負擔,而是一種更高效、更可靠的開發方式。書中對於“如何編寫更具可讀性、可維護性的測試”的指導,讓我擺脫瞭之前寫測試“寫瞭等於白寫”的睏境。它強調的是測試本身的可讀性,讓測試用例也像代碼一樣,能夠清晰地錶達意圖。書中對 Jest 等主流測試框架的講解,非常實用,而且還涉及瞭一些高級技巧,比如代碼覆蓋率的分析、持續集成(CI)的結閤等等,這些都讓 TDD 的價值得到瞭最大化的發揮。而且,書中還非常注重對“測試驅動設計”的闡釋,它教會我如何通過測試來指導代碼的架構和設計,從而寫齣更加健壯、易於擴展的代碼。讀完這本書,我感覺自己對 JavaScript 的理解進入瞭一個新的境界,寫齣的代碼不僅功能完備,而且更加健壯、更具彈性,能夠輕鬆應對未來的各種變化。

相關圖書

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.teaonline.club All Rights Reserved. 圖書大百科 版權所有