近來,常在軟件測試俱樂部里,跟一眾測試精英討論問題。Kerry說,你開源工具用過不少,不如寫篇博客,讓大家也少走些彎路。我應下來時,還不到十一,如今竟已是十一的最后一天,所以抓緊寫點,省得又成了個大坑。
定義
動筆前,猶豫好久。想來想去,所有工具都只是為了解決一個問題,或是一時的問題。但只有一個東西,從頭到尾,一直在用。那就是如何理解被測系統,找到測試點子。我盜用《the little black book of test design》中的說法(讀書筆記,點我),稱其為測試模型。借用其定義如下,測試模型:盡可能列出可能發生的錯誤,或導致客戶不滿意之處,按照發生概率與嚴重程度排序,自上而下的進行排查,即為測試。而幫助測試人員進行更好的規劃與理解這一行為的抽象,即為測試模型。
JW圈圈模型
我們先來看James Whittaker的JW圈圈模型(因為原圖中模型為圓環套圓環,有此得名)。
為了理解圈圈模型,我們先要介紹一下背景。發明者James Whittaker在發明此模型時,正在微軟進行Office的測試工作。因此,JW圈圈模型并未涉及到太過復雜的系統框架,或性能因素。而只是從單用戶,單一系統,單機出發,遍歷了四大影響該被測系統的因素。即:
用戶(行為:包括輸入)
存儲(如輸出)
操作系統(資源)
第三方庫(依賴性)。
試舉一例:也已windows上的軟件freemind為例,在freemind的插入圖片選項中,要求用戶輸入該圖片的路徑,即:用戶與存儲。測試點子包括:輸入一個存儲設備存在的圖片;不存在的圖片;網絡存儲設備的路徑。大家可以嘗試填寫一個http://*/.jpg, freemind沒辦法處理此請求,而導致卡死。
JB啟發式模型
接下來,為James Bach的JB啟發式模型(原文為heuristic):
為了理解JB啟發式模型,我們依然先來了解一下JB的背景。高中畢業后輟學,自學軟件與編程,21歲任Apple最年輕的軟件測試經理,而后跟Cem Kaner,Michael Bolton一起,搞軟件測試培訓與咨詢。鄙視一切認證,鄙視一切教條,幾乎所有的東西都自成體系。通過對JB的了解,我推斷他是一個思維過分活躍與發散的人,很難從他的文章中尋找出一根明確的主線。也許就是這樣的人,才能找到大家找不到的Bug吧。
啟發式模型中,提到了一點,時間。這是我測試以來最常忽略的一個因素。以測試Chrome中內嵌的flash播放器為例。我們測試了:
點擊播放按鈕,進行播放;
點擊暫停按鈕,視頻暫停;
再點擊播放,視頻繼續。
問題來了,如果你點擊暫停,超過1小時,flash播放器會卡死,從而導致Chrome當前標簽卡死;firefox更過分,整個瀏覽器卡死。這個問題嚴重了吧,我們測試登錄,輸入用戶名,輸入密碼,正確的,錯誤的,測了一大推。好了,問題來了,輸入用戶名,停半小時,再輸入密碼,登錄失敗。以為自己已經將所有測試可能性考慮過的同志們,傻眼了吧。
RBRA模型
接下來為Rex Black的風險分析模型(Rex Black's Risk Analysis)。
我對RB知之甚少,只知道他從事多年軟件培訓與咨詢工作,著有《Pragmatic software testing》一書,是ISTQB(國際軟件測試認證組織)的核心成員??碦B的書時,正是我正進行系統測試,總管一個由三個項目合成起來的系統??梢詼y的地方太多,從哪里下手?如何排列優先級?測到哪里為止?這些問題,在讀到RB的風險模型后,都一一獲得了解答。
以我所作的系統測試為例:風險分析教會我先定義風險,按照風險排列優先級與測試時長。因此:我定義如下風險:
低風險:代碼改動(包括缺陷修復與新功能)
中風險:所有低風險中,需要與其他模塊交互之處
高風險:所有中風險中,會影響到大量用戶之處
以此為標準,排列所有用戶故事,每個高風險故事分配3小時,中風險故事分配1小時,低風險0.5小時。當系統測試結束時,我們只覆蓋了高、中風險,而低風險則完全沒有覆蓋。但發現的每一個問題,都是必須要修復,否則便可能影響大量用戶的問題。比起之前,RBRA模型產生的覆蓋更有針對性。就算本次系統測試并不成功,發布后用戶問題過多,我們又可以將這些問題分類,定義為高風險,以期下次去覆蓋。
我的RP人品模型
為了便于記憶,我將RBRA模型稍加改動,便成了現今的人品模型。人品模型按照相關人(或角色)來劃分,將RBRA中原有的風險,分配到各個角色下。即:由人及其需要出發,分析風險。
例如:
在測試用戶界面時,
普通用戶用鼠標,
Geek則喜歡使用快捷鍵,
孩子喜歡亂點亂畫,
老年人則可能會將字體放到很大,
當用戶群體擴大到相當時,更要考慮某些方面有殘疾的人士(如:紅綠色盲等)
在測試功能時,也要考慮性格因素。如:
粗心的管理員可能忘記備份,
對于命令不熟悉的管理員可能誤刪配置文件等等。
人品模型的好處是它是自由的,發散的,何時何地都可以使用的。不需要死記硬背,不需要打印列表,三五個人,一塊白板,一只記號筆,即可提問。如:
要是老板來用,他肯定會如何如何吧。
要是我爸來用,他肯定連什么都找不到吧。
要是讓我那粗心的小師弟用,他會如何如何吧。
要是我那geek師兄,一定會如何如何hack吧。