我發現,許多測試人員和測試經理將測試自動化等同于測試用例自動化執行。在他們的詞匯中,“自動化”是“測試自動化”的縮寫,而“測試自動化”就是自動地運行被測試對象、檢查測試結果并生成測試報告。
如果僅僅運行計算機可執行的測試用例就可以保證軟件質量,那么測試人員的生活將輕松許多。但是,在絕大多數項目中,測試者都必須完成一系列任務來提供優質的測試服務。
以上幻燈片來自Doug Hoffman和Cem Kaner的報告“Exploratory Test Automation”。他們列舉了典型的測試任務,并強調這只是測試人員日常工作的一部分。
分析產品和它的風險
開發測試策略
設計測試用例
執行測試用例(測試用例的首次運行通常是手動執行)
評估測試結果(包括錯誤分析和調試)
管理測試環境
測試結果管理與追蹤
回歸測試
測試用例自動執行對回歸測試很有幫助,但是對其他活動支持有限。為了更好地測試,測試者需要放寬測試自動化的視野,在測試全程合理地利用計算機的強大能力。
如果自動化能促成測試使命的完成,就利用自動化。評估利用自動化是否成功的標準,是看它多大程度上幫助測試人員完成自己的使命。(摘自《軟件測試經驗與教訓》第5章“測試自動化”)
在探索式測試中,探索式測試自動化(exploratory test automation)是幫助測試人員完成探索式測試使命的開發與測試活動。Doug和Cem認為:
探索式測試自動化是計算機輔助測試,它支持學習被測試軟件質量的新信息。
Exploratory test automation is computer-assisted testing that supports learning of new information about the quality of the software under test.
分析他們的描述,可知探索式測試自動化的要點。
探索式測試自動化強調計算機輔助(computer-assisted),而不是自動化測試(automated testing)。它的目標是人盡其才(自由發揮測試者的智能),物盡其用(充分利用計算機的性能)。
探索式測試自動化的一個重要目標是學習。我在“探索式測試:探索是為了學習”中提到,軟件測試是一個持續學習并實踐的過程,而探索式測試支持更有效的學習和實踐。測試自動化也應該堅持這一方向。
學習的目的是獲得新知。測試專家Rex Black 在《Pragmatic Software Testing》提到了一條測試設計原則,很有啟發性:“你應該設計測試用例以便你能從每個測試用例中學習到一些你還不知道的東西。當你從測試中學到了什么時,你應該感到高興”。
下圖是一個探索式測試自動化的實例。它是我開發的測試工具,以圖形化的方式來展示指定時間段中所有任務(Job)的耗時:橫軸是時間軸,每一個矩形對應一個任務,矩形越寬說明任務耗時越長,相同顏色的矩形對應同一種任務。
通過該工具,我可以立即理解被測試系統在產品環境或測試環境的工作負載。在特定時間窗口中,執行了哪些任務,哪些任務耗時最長,哪些任務數目最多,哪類任務在并發執行,哪類任務在串行執行,哪些時段系統繁忙,哪些時段系統空閑——這些信息界皆一目了然。雖然該工具不執行任何測試,但是它可以幫助我分析被測試系統,發掘可能的性能風險,為測試策略選擇提供信息。
著名的Web調試工具Fiddler也體現了探索式測試自動化的思想。其作者Eric Lawrence在IEBlog上描述了它的誕生:
在我加入Internet Explorer團隊之前,我工作于Microsoft Office Online網站。當處理大規模流量時,我們面臨一些性能挑戰,它們迫使我深入挖掘HTTP性能的深入細節。我的努力最終產生兩個成果:Microsoft Fiddler和網絡性能優化的最佳實踐的文檔。
Before I joined the Internet Explorer team, I worked on the Microsoft Office Online website. Handling massive amounts of traffic, we faced some performance challenges that forced me to dig into the guts of HTTP performance. The output of that effort was twofold: Microsoft Fiddler, and documentation of some best practices for web performance optimization.
可見Fiddler的原始需求是性能測試的結果分析和問題調試。為了更好地理解系統(包括服務器、客戶端、網絡、HTTP協議),更快速地定位問題,Eric用Fiddler捕獲網絡通訊的細節,并以友好的方式顯示。當工具完成了枯燥、瑣碎、繁雜、海量的任務,開發者能夠利用他們的頭腦去解決來自現實世界的難題。
在結束本文之前,我想再回顧一下我的觀點。
情景(context)是非常重要的。要依據當前情景,選擇合適的測試任務。要根據測試任務,思考合適的測試自動化方法。
測試自動化不但包括自動執行測試用例,還包括計算機輔助的測試分析、手工測試、錯誤調試等活動。
學習是軟件測試的核心活動之一。測試自動化應該更好地支持測試學習。
原文轉自:http://www.cnblogs.com/liangshi/archive/2011/01/20/1939802.html