軟件測試的心理定勢
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2012/3/22 10:38:05 ] 推薦標(biāo)簽:
岳曉東博士在中國版幸福課《幸福在我心》中,拿出一副達?芬奇的畫作《蒙娜麗莎》讓聽眾觀察畫里面還有什么。有的看出畫里面有一只貓,有的看出畫里面還有一只狗,有的人除了蒙娜麗莎怎么也看不出來畫里面還有什么……如果你看不出有什么動物,休息一會兒,再看這幅畫時,也許能看到了。
這在心理學(xué)上稱為“心理定勢”,指的是一個人看問題一旦形成某種模式后,不再思考了;但是如果暮然回首再回頭看時,會覺得原來不是沒得可為、不能再做什么事了,而是看待問題又有了新的突破。這種心理現(xiàn)象在測試中是普遍存在的。
前一段時間,我和另外幾個人對同一被測對象各自單獨進行了探索性測試。被測對象是Word2007的插入頁碼功能。在1小時的探索中,我測試了插入頁碼在頁面頂端、底端、頁邊距、當(dāng)前位置,以及設(shè)置不同的頁碼格式、刪除頁碼功能,發(fā)現(xiàn)缺陷集中在“在頁面上編輯頁碼格式”( 比如放大頁碼格式的形狀、移動其位置等等)以及對超大文件插入頁碼方面;由于頁碼刪除功能比較簡單,只測試了少許時間,認(rèn)為其風(fēng)險比較低。總體而言,我對這次探索性測試比較滿意。
可是,當(dāng)我觀察另外一個人的探索性測試時,我驚奇地發(fā)現(xiàn),還有這樣一個重要的功能完全不在我的視線范圍之內(nèi):編輯某種頁碼格式的屬性。按如下的操作步驟:插入?頁碼?頁面頂端?普通數(shù)字1?右鍵點擊鼠標(biāo),選擇“編輯屬性……”,則彈出“修改構(gòu)建基塊”的對話框,用戶可以編輯修改此種頁碼格式相關(guān)的屬性。同時我發(fā)現(xiàn),她花費了較多的時間測試“刪除頁碼”的功能,并且發(fā)現(xiàn)了一些問題。為什么會出現(xiàn)如此的差異呢?這些功能和問題為什么我沒有發(fā)現(xiàn)呢?一個直接的原因是,我把注意力集中在每種頁碼格式可能存在的問題上,每次選擇一種頁碼后,直接點擊鼠標(biāo)左鍵,然后急于觀察這種頁碼格式顯示是否正確、當(dāng)我改變其形狀移動其位置后表現(xiàn)是否正確,從來沒有想過點擊鼠標(biāo)右鍵。這么做,好的方面是,我找到一個點后,對這個點的測試會比較深入(Test in Depth);不好的方面是,測試寬度上(Test in Width)容易有所遺漏。
這里面有幾個有趣的點值得深入探討一下。
(1)心理定勢
“總是直接點擊鼠標(biāo)左鍵、從來沒有想過點擊鼠標(biāo)右鍵”,這雖然描述的是我的動作,但是一個人的行為取決于他/她(下文統(tǒng)一用“他”代替了)的思想和意識。
我的心理定勢是:我認(rèn)為插入頁碼的主要功能是“插入各種格式的頁碼”,主要的風(fēng)險也在這里,所以我的注意力也集中在“每種頁碼格式可能存在的問題上”。當(dāng)我把這個集中的點進行了較充分的測試,并且真的發(fā)現(xiàn)了其中的一些問題,并且對這些問題進行了進一步的調(diào)查后,我會認(rèn)為:這次測試還是有些收獲的、差不多可以結(jié)束了、主要的點基本都覆蓋過了、應(yīng)該沒有什么大問題了,對那些可能被遺漏的點(比如“編輯屬性”功能)和那些未知的缺陷(刪除頁碼相關(guān)的缺陷)卻渾然不覺。
當(dāng)然,如果我再進行一輪測試,很有可能會突破前一輪測試的思維定勢,找到新的測試點、找到新的缺陷。所以,從測試的心理定勢我想到的,為了保證更好的測試效果,使不同的測試人員對同一個被測對象展開測試、或者同一個測試人員在不同時間對同一被測對象展開不只一次的測試,是很有必要的。
(2)深度測試與廣度測試
注意,在上面的分析中,我把“并且真的發(fā)現(xiàn)了其中的一些問題”重點強調(diào)了一下。如果我把注意力集中在“每種頁碼格式可能存在的問題上”,卻什么問題也沒有發(fā)現(xiàn),會怎么樣呢?也許,我會懷疑之前自己對風(fēng)險的假設(shè),從而關(guān)注其他值得深入測試的點,也許能發(fā)現(xiàn)上述的測試盲區(qū)。這說明,發(fā)現(xiàn)的缺陷往往會阻止缺陷的發(fā)現(xiàn)。
這句話的意思是,當(dāng)我發(fā)現(xiàn)了一個缺陷,我會花費時間去調(diào)查這個缺陷,它真的是個缺陷嗎?還是我測試過程出現(xiàn)了問題?這個缺陷有可能導(dǎo)致什么問題?到底如何觸發(fā)這個缺陷的?有沒有其他值得進一步挖掘的缺陷?對于一個的測試人員來講,解答這些問題的過程才是真正有趣的測試過程,像一名獵手聞到獵物后開始的一系列追蹤的過程,充滿希望和挑戰(zhàn)!但測試也是充滿矛盾的過程:測試需要這種深入的測試過程,深入的測試才能發(fā)現(xiàn)有價值的缺陷,可是發(fā)現(xiàn)了缺陷會占用你的測試時間、放緩你的測試腳步、“占用”你的測試思維,讓你沒有更多的時間、也無法避免地忽視其他的缺陷,從而導(dǎo)致測試的遺漏,所以總是要在深度測試和廣度測試之間把握一定的平衡。
本文中提到的探索性測試的例子,我更偏向于深度測試,而另外一個人更偏向于廣度測試。如果用那個沿著一條路挖水井的例子做類比,我挖了很多坑,大部分都挖了100米,終找到了4口井;她挖了更多的坑,都不超過50米,找到了2口井。其實,更好地平衡深度測試與廣度測試的話,我們都可以挖掘出更多的更有價值的井。
由深度測試與廣度測試,還可以聯(lián)想到另外一個測試中的矛盾點:你可以相信測試人員提供的對被測對象質(zhì)量的評價,但你又不能完全相信這個評價。深度測試更多與降低風(fēng)險相關(guān),廣度測試更多與增加覆蓋相關(guān)。無論測試人員做到怎樣的平衡,都不能同時做到的深度測試和的廣度測試,也是說,不可能既降低了所有的質(zhì)量風(fēng)險、又覆蓋了所有應(yīng)該覆蓋的東西。我們知道,每個測試人員都是基于他的測試情況給出他對被測系統(tǒng)質(zhì)量的評價。比如,基于我的測試過程,我認(rèn)為Word2007的插入頁碼功能在頁數(shù)較多的大文件插入頁碼時存在質(zhì)量風(fēng)險、系統(tǒng)對不同種類頁碼格式的處理有所不同(我的感覺)因而需要分別測試、對頁碼形狀進行編輯等操作容易引起問題;而另外一名人員經(jīng)過他的測試過程,認(rèn)為Word2007的插入頁碼功能質(zhì)量不錯,只有一些小的GUI界面提示性問題,沒有什么大的問題,無需對每一種頁碼格式進行單獨測試。作為測試管理者,你應(yīng)該相信每一位測試人員提供的質(zhì)量評價,因為這個測試結(jié)論是測試人員基于他的測試過程對質(zhì)量的真實理解,但是你顯然不能盡信這個觀點,因為這個真實的理解并不代表真實的質(zhì)量信息,只是目前測試人員能夠覺察到的質(zhì)量信息(Perceived Quality),你還要去了解這個觀點是在什么樣的測試深度和測試廣度下得出的結(jié)論。
(3)交替思維
怎么樣克服測試的心理定勢、避免測試的盲區(qū)呢?
也許你會說,我不用探索性測試,我用腳本化測試(Scripted Testing,這里對腳本化測試的理解與Cem Kaner在http://www.kaner.com/pdfs/ValueOfChecklists.pdf里對Scripted Testing的描述是一致的)方法,測試前仔細閱讀需求規(guī)格說明書,這樣我可以事先知道一共有多少個點需要測試了,不會遺漏。這樣做其實并不能從根本上解決問題。
首先,需求一旦寫成文檔,是不完整或不足夠細致的需求了。你并不能依賴需求文檔的完整性來避免漏測。而且,算在測試執(zhí)行之前,你已經(jīng)了解了所有的需求,測試的心理定勢以及其他一些因素仍然會致使你漏掉一些缺陷。
其次,如果過于依賴腳本化測試方法,你的測試思路會不知不覺地受文檔描述的影響。我們有另外一個人對插入頁碼功能也進行了測試。與我們的測試過程不同,他先閱讀插入頁碼的幫助,然后再開展測試。結(jié)果,我發(fā)現(xiàn)他的測試過程有很多“受文檔影響的痕跡”。對于文檔中沒有提到的部分,他很少會關(guān)注。比如“對頁碼的形狀進行編輯”、“對過大的文件”來測試等等這樣的操作”;而對于文檔中提到的部分,他會關(guān)注較多,比如幫助中有這么一句話:“您可以將頁碼添加到文檔的頂部、底部或頁邊距。保存在頁眉和頁腳或頁邊距中的信息顯示為灰色,并且不能與文檔正文信息同時進行更改”,很顯然這句話給他留下了深刻的印象,所以他在測試中時不時地會驗證一下頁碼信息和正文信息是否可以同時修改。是的,我這里用的詞是“驗證”,也可以叫“檢查”,可以對應(yīng)到英文的checking,我是說他的測試過程更偏向于checking,而不是testing。關(guān)于checking和testing的區(qū)別,可以參考Michael Bolton的博文,http://www.developsense.com/blog/2009/08/testing-vs-checking/。更偏重于checking的人,測試執(zhí)行時會更傾向于去驗證一下他之前認(rèn)為的一個結(jié)果是否正確;而更偏重于testing的人,測試執(zhí)行時會更多地想發(fā)現(xiàn)一些之前沒有想到的情況、發(fā)現(xiàn)一些新的信息、獲得對真實的系統(tǒng)更深一些的理解。
克服心理定勢、避免測試盲區(qū),可能有很多種方法,比如運用系統(tǒng)性思維(Systems Thinking),散焦思維(Defocused Thinking),交替思維(Alternation Thinking)等,關(guān)于這些概念的更多信息,可以參考James Bach的書《Scerets of a Buccaneer-Scholar》,也可以參考這本書《經(jīng)典思維50法》,里面有不少有趣的例子。限于篇幅,這里只分享一下我對交替思維的理解。
你在測試時,是否有這樣的時候,絞盡腦汁也發(fā)現(xiàn)不了什么問題、缺乏新的測試思路,或者感覺當(dāng)前有點混亂、測試效率很低;或者當(dāng)你讀一本書的時候,讀了一段時間,發(fā)現(xiàn)大腦反應(yīng)有點遲鈍、閱讀效果極差、感覺有點煩躁。這個時候,并不是你不專心高效測試了、不愛讀書了,而是你的大腦給你傳來一個信號:我已經(jīng)接受了太多的信息,請您休息片刻,讓我消化消化,再繼續(xù)工作。此時,是你運用交替思維的時機,你可以做些其他的事情轉(zhuǎn)移當(dāng)前的注意力,比如隨便點擊鼠標(biāo)試試其他的功能、比如整理一下你的測試記錄、或者干脆休息一下。雖然你在休息,但你的大腦并沒有休息,它在消化吸收剛才的信息,當(dāng)你再次開始測試時,你會發(fā)現(xiàn)測試效率提高了、測試思路打開了,往往會有意想不到的收獲。
所以,下次測試的時候,不妨注意一下你是否也存在某種心理定勢?這種心理定勢是如何影響了你的測試效果?你的測試深度與測試廣度又是如何平衡的?有意識地運用一下交替思維、系統(tǒng)性思維等思維方式,讓你的測試更加高效起來!
相關(guān)推薦
相關(guān)產(chǎn)品

最新發(fā)布
性能測試之測試環(huán)境搭建的方法
2020/7/21 15:39:32軟件測試是從什么時候開始被企業(yè)所重視的呢?
2020/7/17 9:09:11Android自動化測試框架有哪些?有什么用途?
2020/7/17 9:03:50什么樣的項目適合做自動化?自動化測試人員應(yīng)具備怎樣的能力?
2020/7/17 8:57:06幾大市面主流性能測試工具測評
2020/7/17 8:52:11RPA機器人能夠快速響應(yīng)企業(yè)需求,是怎么做到的?
2020/7/17 8:48:05Bug可以真正消滅嗎?為什么?
2020/7/17 8:43:03軟件測試基本概念是怎么來的?軟件測試生命周期的形成歷經(jīng)了什么?
2020/7/16 9:11:10