對于測試人員,軟件測試是一個(gè)持續學(xué)習并實(shí)踐的過(guò)程。他需要學(xué)習的內容可能包括:
行業(yè)知識:為什么需要這個(gè)軟件?軟件如何幫助使用它的人和團體去獲得行業(yè)優(yōu)勢?
用戶(hù)角色:目標用戶(hù)是誰(shuí)?他們有什么特點(diǎn),有什么期望?軟件如何幫助他們去獲得個(gè)人成就?
軟件產(chǎn)品:產(chǎn)品是一種解決方案。它解決了行業(yè)和用戶(hù)所面臨的問(wèn)題嗎?
計算平臺:只有深刻理解軟件所依賴(lài)的計算平臺(如操作系統、中間件、網(wǎng)絡(luò )協(xié)議等),才能更好地測試。
開(kāi)發(fā)技能:理解項目所使用的具體技術(shù),知曉典型的技術(shù)缺陷,具備測試開(kāi)發(fā)能力。
測試方法:針對當前項目,選擇合適的測試方法,并能夠熟練地應用。
程序缺陷:研究當前(和相關(guān))項目的缺陷,提煉錯誤模式(Pattern),制定緩解或預防方案。
開(kāi)發(fā)團隊:語(yǔ)境(context)決定策略和實(shí)踐。在一起工作的人,是所有項目語(yǔ)境中最重要的組成部分。
測試者不需要在項目之初就掌握所有知識,他可以通過(guò)每天的工作去逐步理解用戶(hù)、項目、技術(shù)和團隊。更重要的是,他要在每天的工作中實(shí)踐所學(xué)內容:規劃測試方案,創(chuàng )建并執行測試用例,分析測試結果,編寫(xiě)測試報告。實(shí)踐就是練習,是“學(xué)”的自然延伸。知行合一才構成“學(xué)習”的完整內核。
如果學(xué)習非常重要,那么如何才能高效地學(xué)習呢?敏捷大師Andy Hunt在《Pragmatic Thinking and Learning》中指出“一種高效的學(xué)習環(huán)境應該允許你安全地做三件事情:探索、創(chuàng )造和應用”。
探索就是在陌生的環(huán)境中玩(play)。你需要自由地探索才能學(xué)習。我們不僅僅接受信息,而是親自探索和構建思維模型。
玩引入了一種新奇的感覺(jué),也就是樂(lè )趣。用一種好玩的方式學(xué)習新資料或者解決問(wèn)題,可以讓這個(gè)過(guò)程變得更讓人享受,也讓學(xué)習變得更容易。為了更好地學(xué)習,請更好的玩。
你需要自由地創(chuàng )造——不介意自己的創(chuàng )造沒(méi)有成功。通過(guò)構造來(lái)學(xué)習,而不是通過(guò)學(xué)習來(lái)構造。(這是“原型”、“曳光彈”、持續集成等方法獲得成功的原因之一)
你需要在日常實(shí)踐中應用到你學(xué)到的東西。你持續使用和實(shí)踐的技能會(huì )(在腦皮層競爭中)占據統治地位,大腦會(huì )為它們提供更多方便。
這種探索應該相對沒(méi)有風(fēng)險,因為你肯定不想因擔心害怕而止住探索的腳步。(安全有助于)更好地利用反饋,讓失敗也變得有意義。
雖然Andy討論的是廣義的學(xué)習與探索,但是他的話(huà)解釋了探索式測試的成功之道。正如Cem Kaner所言:
探索式測試強調測試者的自由和責任,為了持續優(yōu)化其工作的價(jià)值,將測試相關(guān)學(xué)習、測試設計、測試執行和測試結果解讀,作為相互支持的活動(dòng),在整個(gè)項目過(guò)程中并行地執行。
Exploratory software testing emphasizes the personal freedom and responsibility of the individual tester to continually optimize the value of her work, by treating test-related learning, test design, test execution and test result interpretation as mutually supportive activities that run in parallel throughout the project.
探索式測試在本質(zhì)上鼓勵測試人員去自由地探索、創(chuàng )造和應用。
《軟件測試經(jīng)驗與教訓》:“探索是帶著(zhù)使命在某個(gè)空間中有目的的漫游,但沒(méi)有預先確定的路線(xiàn)。探索包括不斷學(xué)習和實(shí)踐”。
在探索式測試中,測試者創(chuàng )造出一切有助于學(xué)習和實(shí)踐的數據和工具。它們包括輸入數據、結果檢查腳本、數據分析報告、業(yè)務(wù)流程圖表等。
探索式測試者持續應用他所學(xué)到的知識。所謂“學(xué)而時(shí)習之,不亦說(shuō)乎”,探索式測試將學(xué)習與應用作為相互支持的活動(dòng)逐步展開(kāi),為測試者的知識提升提供了平滑的學(xué)習曲線(xiàn)。
探索式測試是一項富有智力挑戰的活動(dòng),充滿(mǎn)了樂(lè )趣。如果你沒(méi)有感到智力的快感,那么一定是哪里做錯了。
此外,Andy也指出,為了鼓勵自由的探索,我們需要“安全的”環(huán)境。
測試者應該擁有獨立且隔離的測試環(huán)境,他的測試活動(dòng)所照成的破壞性后果不會(huì )影響團隊的其他成員。
當測試者破壞了他的測試環(huán)境,他可以快速地創(chuàng )建新測試環(huán)境。虛擬化技術(shù)可以提供多樣的軟、硬件和網(wǎng)絡(luò )配置。版本管理系統、自動(dòng)化構建和全自動(dòng)安裝有助于部署特定版本的軟件。
在測試中使用產(chǎn)品數據甚至產(chǎn)品系統是有很有幫助的。這時(shí),應該將測試環(huán)境置于某種沙箱(sand-box)中,使測試導致的產(chǎn)品崩潰或數據損壞不會(huì )被沙箱以外的系統所感知。
測試環(huán)境中內建豐富的開(kāi)發(fā)、測試、調試、監控工具。它們是探索所必需的指南針、GPS、電筒、繩索、背包和帳篷。有經(jīng)驗的探險家不會(huì )空手上路。
最后,值得強調的是,所謂“探索”和“學(xué)習”都是隱喻(metaphor)。它們是指南針,不是規程手冊。Steve McConnell在《代碼大全》中用了整整第2章來(lái)討論“用隱喻來(lái)更充分地理解軟件開(kāi)發(fā)”,很值得一讀。通過(guò)豐富的案例和分析,他很好地論述了隱喻的威力和范圍:
與其說(shuō)一個(gè)軟件隱喻是一張路線(xiàn)圖,還不如說(shuō)它是一盞探照燈。它不會(huì )告訴你到哪里去尋找答案,而是告訴你該如何尋找答案。隱喻的作用更像啟發(fā)性方法,而不是算法。
A software metaphor is more like a searchlight than a road map. It doesn't tell you where to find the answer; it tells you how to look for it. A metaphor serves more as a heuristic than it does as an algorithm.
原文轉自:http://www.cnblogs.com/liangshi/archive/2011/01/16/1936689.html