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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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