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

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

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

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

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

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

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

  在我看來,”測試人員提示“很可能先出現(xiàn)于Web測試。Firefox的插件Firebug已經(jīng)實現(xiàn)頁面元素和DOM樹節(jié)點的雙向映射:用鼠標點擊一個頁面元素上,頁面高亮該元素,DOM窗口高亮該節(jié)點,源代碼窗口高亮相應(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),這是”測試人員提示“的佳舞臺。無論如何,Google都會將Chrome Browser打造成Chrome OS上的佳測試平臺,類似于Selenum的測試工具會以插件的形式植入Chrome Browser,成為Web應(yīng)用和Chorme OS的測試工具。

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

  《自動化軟件測試實施指南》

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

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

  此書的貢獻在于,當你迫不及待地準備一個猛子扎入測試自動化的深海時,它問道:

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

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

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

  哪個測試階段的成本高?

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

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

  這些惱人的問題,毫無樂趣,且難以回答。但是,如果沒有仔細地考慮過它們,測試自動化會直面失敗的風險。

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

  為什么需要測試自動化。

  測試自動化的成本和收益。

  測試自動化失敗的原因。

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

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

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