當(dāng)軟件測(cè)試的熱點(diǎn)漸漸轉(zhuǎn)向測(cè)試自動(dòng)化,當(dāng)越來(lái)越多的測(cè)試人員談?wù)摪缀袦y(cè)試、測(cè)試編程、測(cè)試腳本時(shí),測(cè)試專家James A. Whittaker旗幟鮮明地捍衛(wèi)手工測(cè)試(manual testing),探討如何用探索式測(cè)試(exploratory testing)來(lái)應(yīng)對(duì)嚴(yán)峻的現(xiàn)實(shí)挑戰(zhàn)。

  作者以“漫游”為隱喻,提出了以漫游測(cè)試(touring testing)為核心的探索式測(cè)試方法。

  第3章“局部探索式測(cè)試法”介紹了如何測(cè)試軟件的局部:一個(gè)組件或模塊。

  第4章“全局探索式測(cè)試法”介紹了如何測(cè)試軟件的功用(capacity):以測(cè)試意圖為核心,將應(yīng)用程序的多個(gè)特性和功能組合起來(lái)進(jìn)行測(cè)試。這一章是全書的核心,作者提出一系列漫游測(cè)試方法,并組成了方法譜系(catalog)。作者為每一種方法起了獨(dú)特的名字,并分門別類的討論,其效果類似于Martin Fowler在《重構(gòu)》中對(duì)重構(gòu)手法的組織。

  第5章分享了5個(gè)微軟測(cè)試團(tuán)隊(duì)對(duì)于漫游測(cè)試的技術(shù)報(bào)告,以生動(dòng)的筆觸、豐富的素材證明了積極的手工測(cè)試依然是軟件測(cè)試不可或缺的關(guān)鍵。

  在第8章,作者對(duì)未來(lái)的軟件測(cè)試進(jìn)行了展望,非常有啟發(fā)性。有些內(nèi)容看似天馬行空,實(shí)際上已經(jīng)漸漸出現(xiàn)在現(xiàn)實(shí)的軟件測(cè)試中。例如,Visual Studio 2010中代碼覆蓋率與測(cè)試用例的映射、手工測(cè)試的全程“錄像”(作者曾經(jīng)是Visual Studio Test Edition的架構(gòu)師,相信他為此貢獻(xiàn)良多)、正在出現(xiàn)的基于云計(jì)算的測(cè)試服務(wù)商。

  在展望未來(lái)時(shí),作者提出了“測(cè)試人員提示”的構(gòu)想。游戲“魔獸世界”有許多小屏幕、地圖、道具列表、其他玩家的消息,玩家利用這些信息能夠在超級(jí)殘酷的游戲世界中生存。與此相似,“測(cè)試人員提示”是是測(cè)試者的“游戲地圖”:把光標(biāo)移動(dòng)到控件上,旁邊的小窗口可以顯示源代碼、代碼變更歷史、缺陷修復(fù)歷史、其他測(cè)試者已運(yùn)行的用例等信息。有了它,測(cè)試者能夠更自如地探索軟件、展開(kāi)攻擊。

  在我看來(lái),”測(cè)試人員提示“很可能先出現(xiàn)于Web測(cè)試。Firefox的插件Firebug已經(jīng)實(shí)現(xiàn)頁(yè)面元素和DOM樹(shù)節(jié)點(diǎn)的雙向映射:用鼠標(biāo)點(diǎn)擊一個(gè)頁(yè)面元素上,頁(yè)面高亮該元素,DOM窗口高亮該節(jié)點(diǎn),源代碼窗口高亮相應(yīng)代碼。一旦能定位到源代碼,那么從源碼管理系統(tǒng)獲得其變更記錄、從Bug管理系統(tǒng)獲得其缺陷歷史、從測(cè)試管理系統(tǒng)獲得其測(cè)試用例,是相對(duì)容易的任務(wù)。James目前在Google任職,似乎正在將相關(guān)理念引入Chrome OS。對(duì)于Web OS,所有的應(yīng)用程序都是用HTML和Javascript構(gòu)建的Web程序(其軟件棧是Web-app/Chrome-Browser/Chrome-OS),這是”測(cè)試人員提示“的佳舞臺(tái)。無(wú)論如何,Google都會(huì)將Chrome Browser打造成Chrome OS上的佳測(cè)試平臺(tái),類似于Selenum的測(cè)試工具會(huì)以插件的形式植入Chrome Browser,成為Web應(yīng)用和Chorme OS的測(cè)試工具。

  書的后1/3是作者的博客匯編。許多文章頗具見(jiàn)底,其中一篇引用了Tony Hoare爵士的名句,頗令人深思:軟件測(cè)試的真正價(jià)值并不體現(xiàn)在代碼中找出了多少缺陷,而是發(fā)現(xiàn)設(shè)計(jì)和編程人員解決問(wèn)題方法上的局限、思路中的狹隘和技能方面的不足。這也許在暗示,是作者的持續(xù)思考和反復(fù)實(shí)踐,使他能夠提出漫游測(cè)試這種切合軟件測(cè)試本質(zhì)的方法吧。

  《自動(dòng)化軟件測(cè)試實(shí)施指南》

  Amazon上的一條書評(píng)是“Strong on theory and planning, weak on practical implementation”,很好的概括了此書的優(yōu)缺點(diǎn)。

  此書在附錄中介紹了一批典型的開(kāi)源工具:JUnit、bugzilla/' target='_blank'>Bugzilla、Subversion等,但是并沒(méi)有介紹具體的測(cè)試實(shí)現(xiàn)技術(shù),例如編寫測(cè)試腳本、構(gòu)造測(cè)試斷言、生成測(cè)試數(shù)據(jù)等。如果你需要第一線的測(cè)試開(kāi)發(fā)手冊(cè),這本書不能滿足你的需求。

  此書的貢獻(xiàn)在于,當(dāng)你迫不及待地準(zhǔn)備一個(gè)猛子扎入測(cè)試自動(dòng)化的深海時(shí),它問(wèn)道:

  降低什么類型的軟件缺陷重要?

  哪套測(cè)試活動(dòng)、測(cè)試技術(shù)已經(jīng)被證明對(duì)于發(fā)現(xiàn)這類測(cè)試重要?

  有哪些關(guān)鍵測(cè)試需要不斷地重復(fù)或頻繁運(yùn)行?

  哪個(gè)測(cè)試階段的成本高?

  哪些測(cè)試的附加值高并且要執(zhí)行?

  是那些投入多的測(cè)試在創(chuàng)造多的價(jià)值么?

  這些惱人的問(wèn)題,毫無(wú)樂(lè)趣,且難以回答。但是,如果沒(méi)有仔細(xì)地考慮過(guò)它們,測(cè)試自動(dòng)化會(huì)直面失敗的風(fēng)險(xiǎn)。

  這本書的目標(biāo)讀者是大規(guī)模測(cè)試自動(dòng)化的領(lǐng)導(dǎo)和骨干。它所定義的測(cè)試自動(dòng)化是:以改進(jìn)軟件測(cè)試生命周期的效率和有效性為目標(biāo),貫穿整個(gè)周期的軟件技術(shù)實(shí)施。其內(nèi)容涵蓋:

  為什么需要測(cè)試自動(dòng)化。

  測(cè)試自動(dòng)化的成本和收益。

  測(cè)試自動(dòng)化失敗的原因。

  測(cè)試自動(dòng)化的生命周期:獲取自動(dòng)化需求、確定自動(dòng)化策略、開(kāi)發(fā)自動(dòng)化測(cè)試框架、跟蹤度量以評(píng)估自動(dòng)化測(cè)試效果、完善實(shí)施過(guò)程、培養(yǎng)所需人才。

  作為測(cè)試組織的負(fù)責(zé)人,仔細(xì)地思考其中的問(wèn)題,謹(jǐn)慎的實(shí)踐,方能提升測(cè)試組的整體效率,優(yōu)化整個(gè)軟件開(kāi)發(fā)過(guò)程。

  據(jù)我觀察,大多數(shù)測(cè)試自動(dòng)化的中文圖書聚焦于具體的自動(dòng)化技術(shù),在組織、戰(zhàn)略層面的思考較少。測(cè)試自動(dòng)化往往是錄制、回放、腳本、框架的代名詞,而沒(méi)有從測(cè)試生命周期的角度涵蓋需求、測(cè)試、匯報(bào)、度量與優(yōu)化。此書在高層策略上分享了一些專家經(jīng)驗(yàn),值得思考、借鑒。