注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)JAVA及其相關(guān)測(cè)試驅(qū)動(dòng)的JavaScript開(kāi)發(fā):JavaScript敏捷測(cè)試指南

測(cè)試驅(qū)動(dòng)的JavaScript開(kāi)發(fā):JavaScript敏捷測(cè)試指南

測(cè)試驅(qū)動(dòng)的JavaScript開(kāi)發(fā):JavaScript敏捷測(cè)試指南

定 價(jià):¥69.00

作 者: Christian Johansen 著,趙勇 ,程德, 凌杰, 高博 譯
出版社: 機(jī)械工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: J2EE

購(gòu)買(mǎi)這本書(shū)可以去


ISBN: 9787111362746 出版時(shí)間: 2012-02-01 包裝: 平裝
開(kāi)本: ` 頁(yè)數(shù): 375 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  《測(cè)試驅(qū)動(dòng)的JavaScript開(kāi)發(fā)》是一本完整的、基于最佳實(shí)踐的JavaScript測(cè)試指南,同時(shí)又有著測(cè)試驅(qū)動(dòng)開(kāi)發(fā)方法所帶來(lái)的質(zhì)量保證。本書(shū)涵蓋了將最先進(jìn)的自動(dòng)化測(cè)試用于JavaScript開(kāi)發(fā)環(huán)境的方方面面,帶領(lǐng)讀者走過(guò)整個(gè)開(kāi)發(fā)的生命周期,從項(xiàng)目啟動(dòng)到應(yīng)用程序部署。本書(shū)面向的是JavaScript開(kāi)發(fā)人員。無(wú)論您是一位Ruby開(kāi)發(fā)人員,主要關(guān)注Ruby on Rails;或者是一名Java或.NET開(kāi)發(fā)人員,忙于構(gòu)建Web應(yīng)用;又或者是一名前端Web開(kāi)發(fā)人員,以JavaScript、CSS和HTML為首要工具;甚至是一名后端開(kāi)發(fā)人員,對(duì)JavaScript知之甚少,本書(shū)將對(duì)您非常有用。

作者簡(jiǎn)介

  Christian Johansen居住在挪威奧斯陸,就職于當(dāng)?shù)氐腟hortcut AS公司,這是一家專注于開(kāi)源技術(shù)、Web應(yīng)用和移動(dòng)應(yīng)用的軟件企業(yè)。在學(xué)校里,他學(xué)習(xí)了信息學(xué)、數(shù)學(xué)和數(shù)字信息處理。Christian在職業(yè)生涯中,專門(mén)從事Web應(yīng)用程序和前端技術(shù),如JavaScript、CSS和HTML,這些技術(shù)他在HTML 4.01規(guī)格定稿的時(shí)代就充滿激情地參與了。作為一名顧問(wèn),Christian在挪威曾與許多高端的公司合作,包括金融和電信行業(yè)的領(lǐng)頭公司,他在那里開(kāi)發(fā)從小到大的Web應(yīng)用程序,內(nèi)容涉及從普通的CMSbacked電子商務(wù)企業(yè)網(wǎng)站到自助服務(wù)的應(yīng)用程序。最近幾年,Christian一直是一名活躍的博客寫(xiě)手。出于和無(wú)償給予了他如此巨大收獲的社區(qū)相同的分享和貢獻(xiàn)的愿望,Christian參與了相當(dāng)數(shù)量的開(kāi)源項(xiàng)目并為它們做了不少貢獻(xiàn)。參與了多個(gè)JavaScript代碼數(shù)量少到可以忽略不計(jì)的項(xiàng)目之后,Christian感受到了“牛仔風(fēng)格”的開(kāi)發(fā)之痛。為了提高代碼質(zhì)量、開(kāi)發(fā)者的信心,以及修改和維護(hù)代碼的能力,并大大地簡(jiǎn)化這個(gè)過(guò)程,他在過(guò)去的幾年中花費(fèi)了大量的工作和業(yè)余時(shí)間來(lái)研究JavaScript中的單元測(cè)試和測(cè)試驅(qū)動(dòng)開(kāi)發(fā)。作為一個(gè)鐵桿的TDD支持者,同時(shí)又使用傳統(tǒng)的服務(wù)器端的開(kāi)發(fā)語(yǔ)言,那么牛仔風(fēng)格的JavaScript開(kāi)發(fā)手段自然也就呼之欲出了。這種激情的集大成之作,就是你現(xiàn)在你手中的這本書(shū)。

圖書(shū)目錄

譯者序
前言
致謝
關(guān)于作者
第一部分 測(cè)試驅(qū)動(dòng)開(kāi)發(fā)
第1章  自動(dòng)化測(cè)試
1.1  單元測(cè)試
1.1.1  單元測(cè)試框架
1.1.2  JavaScript日期函數(shù)strftime
1.2  斷言
1.3  測(cè)試函數(shù)、用例和套件
1.4  集成測(cè)試
1.5  單元測(cè)試的好處
1.5.1  回歸測(cè)試
1.5.2  重構(gòu)
1.5.3  跨瀏覽器的測(cè)試
1.5.4  其他的一些好處
1.6  單元測(cè)試中的陷阱
1.7  小結(jié)
第2章  測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的過(guò)程
2.1  測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的目的與目標(biāo)
2.1.1  開(kāi)發(fā)順序的顛倒
2.1.2  測(cè)試驅(qū)動(dòng)開(kāi)發(fā)中的設(shè)計(jì)
2.2  過(guò)程
2.2.1  步驟1:編寫(xiě)一個(gè)測(cè)試
2.2.2  步驟2:觀看測(cè)試失敗
2.2.3  步驟3:使測(cè)試通過(guò)
2.2.4  步驟4:重構(gòu)以消除冗余
2.2.5  打肥皂、沖洗、重復(fù)
2.3  讓測(cè)試驅(qū)動(dòng)開(kāi)發(fā)簡(jiǎn)便易行
2.4  測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的好處
2.4.1  有效的代碼
2.4.2  遵循單一職責(zé)原則
2.4.3  強(qiáng)制有意識(shí)的開(kāi)發(fā)
2.4.4  提高生產(chǎn)效率
2.5  小結(jié)
第3章  行業(yè)工具
3.1  xUnit測(cè)試框架
3.1.1  行為驅(qū)動(dòng)開(kāi)發(fā)
3.1.2  持續(xù)集成
3.1.3  異步測(cè)試
3.1.4  xUnit測(cè)試框架的特點(diǎn)
3.1.5  斷言
3.1.6  依賴關(guān)系
3.2  瀏覽器內(nèi)的測(cè)試框架
3.2.1  YUI Test
3.2.2  其他瀏覽器內(nèi)的測(cè)試框架
3.3  無(wú)頭測(cè)試框架
3.3.1  交叉檢查
3.3.2  Rhino與env.js
3.3.3  無(wú)頭測(cè)試框架的缺點(diǎn)
3.4  一個(gè)掌管一切的測(cè)試運(yùn)行器
3.4.1  JsTestDriver是怎樣工作的
3.4.2  JsTestDriver的缺點(diǎn)
3.4.3  安裝
3.4.4  在IDE里使用JsTestDriver
3.4.5  提高命令行效率
3.4.6  斷言
3.5  小結(jié)
第4章  從測(cè)試中學(xué)習(xí)
4.1  用單元測(cè)試探索JavaScript
4.1.1  觀察法編程的缺陷
4.1.2  學(xué)習(xí)測(cè)試的最佳點(diǎn)
4.2  性能測(cè)試
4.2.1  基準(zhǔn)和相對(duì)性能
4.2.2  性能評(píng)測(cè)和定位瓶頸
4.3  小結(jié)
第二部分 開(kāi)發(fā)人員的JavaScript
第5章  函數(shù)
5.1  定義函數(shù)
5.1.1  函數(shù)聲明
5.1.2  函數(shù)表達(dá)式
5.1.3  Function構(gòu)造器
5.2  調(diào)用函數(shù)
5.2.1  arguments對(duì)象
5.2.2  形參和arguments
5.3  作用域和執(zhí)行上下文
5.3.1  執(zhí)行上下文
5.3.2  變量對(duì)象
5.3.3  活動(dòng)對(duì)象
5.3.4  全局對(duì)象
5.3.5  作用域鏈
5.3.6  再訪函數(shù)表達(dá)式
5.4  this關(guān)鍵字
5.4.1  隱式地設(shè)置this
5.4.2  顯式地設(shè)置this
5.4.3  使用原初類(lèi)型當(dāng)做this
5.5  小結(jié)
第6章  函數(shù)和閉包的應(yīng)用
6.1  綁定函數(shù)
6.1.1  this被丟棄:一個(gè)Lightbox的例子
6.1.2  通過(guò)一個(gè)匿名函數(shù)解決this問(wèn)題
6.1.3  Function.prototype.bind
6.1.4  綁定參數(shù)
6.1.5  局部套用
6.2  被立即調(diào)用的匿名函數(shù)
6.2.1  Ad Hoc作用域
6.2.2  命名空間
6.3  狀態(tài)函數(shù)
6.3.1  生成唯一的標(biāo)識(shí)符
6.3.2  迭代器
6.4  記憶
6.5  小結(jié)
第7章  對(duì)象和原型繼承
7.1  對(duì)象和屬性
7.1.1  屬性訪問(wèn)
7.1.2  原型鏈
7.1.3  通過(guò)原型鏈實(shí)現(xiàn)對(duì)象擴(kuò)展
7.1.4  可枚舉屬性
7.1.5  屬性的特性
7.2  使用構(gòu)造器創(chuàng)建對(duì)象
7.2.1  prototype和[[Prototype]]
7.2.2  使用new創(chuàng)建對(duì)象
7.2.3  構(gòu)造器原型
7.2.4  構(gòu)造器的問(wèn)題
7.3  偽經(jīng)典結(jié)構(gòu)的繼承
7.3.1  繼承函數(shù)
7.3.2  訪問(wèn)[[Prototype]]
7.3.3  實(shí)現(xiàn)super
7.4  封裝和信息隱藏
7.4.1  私有方法
7.4.2  私有成員和特權(quán)方法
7.4.3  函數(shù)式繼承
7.5  對(duì)象組合和混搭體
7.5.1  Object.create方法
7.5.2  tddjs.extend方法
7.5.3  混搭體
7.6  小結(jié)
第8章  ECMAScript
8.1  JavaScript不遠(yuǎn)的未來(lái)
8.2  對(duì)象模型的更新
8.2.1  屬性的特性
8.2.2  原型繼承
8.2.3  Getter和Setter
8.2.4  使用屬性的特性
8.2.5  作為屬性標(biāo)識(shí)符的保留關(guān)鍵字
8.3  嚴(yán)格模式
8.3.1  啟用嚴(yán)格模式
8.3.2  嚴(yán)格模式帶來(lái)的改變
8.4  各種新內(nèi)容及改進(jìn)
8.4.1  原生的JSON
8.4.2  Function.prototype.bind
8.4.3  關(guān)于數(shù)組
8.5  小結(jié)
第9章  不唐突的JavaScript
9.1  不唐突的JavaScript的目標(biāo)
9.2  不唐突的JavaScript的規(guī)則
9.2.1  唐突的標(biāo)簽式面板
9.2.2  簡(jiǎn)潔的標(biāo)簽式面板標(biāo)記
9.2.3  TDD和漸進(jìn)增強(qiáng)
9.3  不要做任何假設(shè)
9.3.1  不要假設(shè)只有你一個(gè)人
9.3.2  不要假設(shè)標(biāo)記是正確的
9.3.3  不要假設(shè)所有用戶的需求都一樣
9.3.4  不要假設(shè)支持
9.4  規(guī)則何時(shí)適用
9.5  不唐突的標(biāo)簽式面板的例子
9.5.1  建立測(cè)試
9.5.2  tabController對(duì)象
9.5.3  activateTab方法
9.5.4  使用標(biāo)簽控制器
9.6  小結(jié)
第10章  特性檢測(cè)
10.1  瀏覽器嗅探
10.1.1  用戶代理嗅探
10.1.2  對(duì)象檢測(cè)
10.1.3  瀏覽器嗅探的狀態(tài)
10.2  正確使用對(duì)象檢測(cè)
10.2.1  檢查對(duì)象是否存在
10.2.2  類(lèi)型檢查
10.2.3  原生和宿主對(duì)象
10.2.4  使用測(cè)試樣例
10.2.5  何時(shí)測(cè)試
10.3  特性檢測(cè)DOM事件
10.4  特性檢測(cè)CSS屬性
10.5  跨瀏覽器事件處理例程
10.6  使用特性檢測(cè)
10.6.1  向前進(jìn)
10.6.2  無(wú)法檢測(cè)到的特性
10.7  小結(jié)
第三部分 JavaScript測(cè)試驅(qū)動(dòng)開(kāi)發(fā)實(shí)踐
第11章  觀察者模式
11.1  JavaScript中的觀察者
11.1.1  觀察物庫(kù)
11.1.2  設(shè)置環(huán)境
11.2  添加觀察者
11.2.1  第一個(gè)測(cè)試
11.2.2  重構(gòu)
11.3  檢查觀察者
11.3.1  測(cè)試
11.3.2  重構(gòu)
11.4  通知觀察者
11.4.1  確保觀察者被調(diào)用
11.4.2  傳遞參數(shù)
11.5  錯(cuò)誤處理
11.5.1  添加假的觀察者
11.5.2  有問(wèn)題的觀察者
11.5.3  記錄調(diào)用順序
11.6  觀察任意對(duì)象
11.6.1  讓構(gòu)造器成為過(guò)去式
11.6.2  用對(duì)象來(lái)替換構(gòu)造器
11.6.3  重命名方法
11.7  觀察任意事件
11.7.1  支持observe中的事件
11.7.2  支持notify中的事件
11.8  小結(jié)
第12章  抽象化瀏覽器區(qū)別:Ajax
12.1  以測(cè)試驅(qū)動(dòng)來(lái)開(kāi)發(fā)一個(gè)請(qǐng)求API
12.1.1  發(fā)現(xiàn)瀏覽器的不一致
12.1.2  開(kāi)發(fā)策略
12.1.3  目標(biāo)
12.2  實(shí)現(xiàn)請(qǐng)求接口
12.2.1  項(xiàng)目布局
12.2.2  選擇接口風(fēng)格
12.3  創(chuàng)建一個(gè)XMLHttpRequest對(duì)象
12.3.1  第一個(gè)測(cè)試
12.3.2  XMLHttpRequest背景知識(shí)
12.3.3  實(shí)現(xiàn)tddjs.ajax.create
12.3.4  更強(qiáng)的特性檢測(cè)
12.4  編寫(xiě)Get請(qǐng)求
12.4.1  需要一個(gè)URL
12.4.2  為XMLHttpRequest對(duì)象創(chuàng)建樁
12.4.3  處理狀態(tài)的變化
12.4.4  處理狀態(tài)變化
12.5  使用Ajax API
12.5.1  集成測(cè)試
12.5.2  測(cè)試結(jié)果
12.5.3  微妙的麻煩
12.5.4  本地請(qǐng)求
12.5.5  測(cè)試狀態(tài)
12.6  發(fā)出POST請(qǐng)求
12.6.1  為POST做準(zhǔn)備
12.6.2  發(fā)送數(shù)據(jù)
12.6.3  設(shè)置請(qǐng)求頭信息
12.7  重審請(qǐng)求API
12.8  小結(jié)
第13章  使用Ajax和Comet將數(shù)據(jù)流式化
13.1  數(shù)據(jù)輪詢
13.1.1  項(xiàng)目結(jié)構(gòu)
13.1.2  輪詢器:tddjs.ajax.poller
13.1.3  定時(shí)器測(cè)試
13.1.4  可配置的頭和回調(diào)
13.1.5  單行接口
13.2  Comet
13.2.1  永不消失的框架
13.2.2  流式化XMLHttpRequest
13.2.3  HTML5
13.3  長(zhǎng)輪詢的XMLHttpRequest
13.3.1  實(shí)現(xiàn)長(zhǎng)輪詢支持
13.3.2  避免緩存問(wèn)題
13.3.3  特性檢測(cè)
13.4  Comet客戶端
13.4.1  消息格式
13.4.2  介紹ajax.cometClient
13.4.3  分發(fā)數(shù)據(jù)
13.4.4  添加觀察者
13.4.5  服務(wù)器連接
13.4.6  跟蹤請(qǐng)求和接收到的數(shù)據(jù)
13.4.7  發(fā)布數(shù)據(jù)
13.4.8  特性檢測(cè)
13.5  小結(jié)
第14章  基于Node.js的服務(wù)器端JavaScript
14.1  Node.js運(yùn)行時(shí)環(huán)境
14.1.1  環(huán)境設(shè)置
14.1.2  起點(diǎn)
14.2  控制器
14.2.1  CommonJS規(guī)則模塊
14.2.2  定義模塊:首測(cè)
14.2.3  建立控制器
14.2.4  基于POST方式添加消息
14.2.5  對(duì)請(qǐng)求做出響應(yīng)
14.2.6  將應(yīng)用程序用于實(shí)踐
14.3  域模型和存儲(chǔ)器
14.3.1  創(chuàng)建聊天室
14.3.2  Node中的輸入輸出
14.3.3  添加聊天信息
14.3.4  獲取聊天信息
14.4  Promises
14.4.1  用promise重構(gòu)addMessage方法
14.4.2  使用promise對(duì)象
14.5  事件產(chǎn)生器
14.5.1  讓chatRoom對(duì)象成為一個(gè)事件產(chǎn)生器
14.5.2  等待聊天信息
14.6  回到控制器
14.6.1  完成Post方法
14.6.2  通過(guò)GET方法輸出數(shù)據(jù)流
14.6.3  響應(yīng)頭和響應(yīng)體
14.7  小結(jié)
第15章  TDD與DOM操作:聊天室客戶端程序
15.1  客戶端的藍(lán)圖
15.1.1  目錄結(jié)構(gòu)
15.1.2  選擇方法
15.2  用戶表單
15.2.1  視圖的設(shè)置
15.2.2  處理提交事件
15.2.3  特征測(cè)試
15.3  用Node.js后端使用客戶端
15.4  聊天信息列表
15.4.1  設(shè)置模型
15.4.2  設(shè)置視圖
15.4.3  添加聊天信息
15.4.4  來(lái)自同一用戶的重復(fù)內(nèi)容
15.4.5  特征測(cè)試
15.4.6  動(dòng)手實(shí)驗(yàn)
15.5  聊天信息表單
15.5.1  建立測(cè)試用例
15.5.2  設(shè)置視圖
15.5.3  發(fā)布聊天信息
15.5.4  特征測(cè)試
15.6  聊天室客戶端的最終版本
15.6.1  收尾工作
15.6.2  部署時(shí)的注意事項(xiàng)
15.7  小結(jié)
第四部分 測(cè)試模式
第16章  模擬對(duì)象和創(chuàng)建樁
16.1  測(cè)試替身概述
16.1.1  特技替身
16.1.2  假對(duì)象
16.1.3  啞對(duì)象
16.2  測(cè)試驗(yàn)證
16.2.1  狀態(tài)驗(yàn)證
16.2.2  行為驗(yàn)證
16.2.3  驗(yàn)證策略的作用
16.3  樁
16.3.1  使用樁來(lái)避免不方便的接口
16.3.2  使用樁讓系統(tǒng)通過(guò)特定代碼路徑
16.3.3  使用樁來(lái)制造麻煩
16.4  測(cè)試間諜
16.4.1  測(cè)試間接輸入
16.4.2  檢測(cè)調(diào)用細(xì)節(jié)
16.5  使用樁庫(kù)
16.5.1  創(chuàng)建樁函數(shù)
16.5.2  給方法創(chuàng)建樁
16.5.3  內(nèi)建行為驗(yàn)證
16.5.4  創(chuàng)建樁和Node.js
16.6  模擬對(duì)象
16.6.1  恢復(fù)被模擬的函數(shù)
16.6.2  匿名的模擬對(duì)象
16.6.3  多重期望
16.6.4  對(duì)this值的期望
16.7  模擬對(duì)象還是樁
16.8  小結(jié)
第17章  編寫(xiě)良好的單元測(cè)試
17.1  提高可讀性
17.1.1  清楚地命名測(cè)試以表明意圖
17.1.2  用設(shè)置、應(yīng)用和驗(yàn)證塊對(duì)測(cè)試進(jìn)行結(jié)構(gòu)化
17.1.3  使用更高級(jí)的抽象保持測(cè)試的簡(jiǎn)單性
17.1.4  減少重復(fù),而不是減少明確性
17.2  將測(cè)試作為行為規(guī)范
17.2.1  一次只測(cè)試一種行為
17.2.2  每個(gè)行為只測(cè)試一次
17.2.3  在測(cè)試中隔離行為
17.3  與測(cè)試中的缺陷做斗爭(zhēng)
17.3.1  在測(cè)試通過(guò)之前運(yùn)行它們
17.3.2  首先編寫(xiě)測(cè)試
17.3.3  攪亂和破壞代碼
17.3.4  使用JsLint
17.4  小結(jié)
參考文獻(xiàn)

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)