軟體測試的金字塔體系--從1個中心到5個要素
很小的時候就對埃及的金字塔感興趣,不僅是因為它的規模宏偉、結構精密,而且它的興起和演變至今只是一個傳說,成為千古之謎。這其中就有神奇的黃金分割數Φ,其值是個無窮小數,若只取三位小數便是0.618。如用金字塔的高除以底邊長,即1÷1.618
= 0.618。而金字塔許多特徵資料,和13世紀數學家法布蘭斯所提到的奇異數位組合,有許多巧合之處。這些奇異數位組合是1、1、2、3、5、8、13、21、34、55、89、144、233…它們任何兩個連續的比率都接近0.618,如3/5、5/8、34/55、55/89、89/144等。而且金字塔有一個頂點、五個面、八個邊,總數為十三個層面,這些特徵資料也和上述奇異數字非常吻合。
回到軟體測試,也感覺和金字塔有一種神秘的關係,為什麼這樣說呢?且聽下面給您細細闡述。
首先,軟體測試的出發點就是品質,軟體測試的一切工作應該圍繞品質而開展。品質是軟體測試的中心,可以看做是金字塔的頂點,1-1所示。測試的其他部分就是支撐這個頂點的測試人員、測試資源、測試技術和測試流程。因此,構成軟體測試的5個要素就是:品質、人員、技術、資源、流程。
這樣,5個要素構成了5個面,每個面由3個要素構成,代表著軟體測試的工作面。具體是怎樣的工作面?請往下看,自然會越來越清楚。
在這金字塔構成中,還有每兩個要素構成的8條邊,每條邊代表兩個要素之間的關係,如何處理這些關係,也就決定著測試能否獲得成功。基於要素、工作面、要素之間的關係,我們確定了13項軟體測試原則、21個關鍵域。針對軟體測試關鍵域,每個軟體組織可以瞭解自己在這個領域的水平,持續進行改進。最後,列出目前所使用的各種軟體測試方法,並將這些方法應用於軟體測試實際工作之中。所以軟體測試可概括為:
從1個中心到5個要素
品質(quality)是軟體測試的中心,這是毋庸置疑的。測試是品質保證的重要手段之一,測試本身就是為品質服務的。測試能否通過,其檢驗的標準是使用者的需求,也就是品質的標準。所以,在軟體測試的5個要素中,品質是核心,其他4個要素要服務於品質,服從於品質。
如果要問,除了品質,還有什麼是最重要的?那自然是測試人員。人是決定的因素,決定了技術和流程的執行。像軟體開發這樣的智力活動,要強調“以人為本”的管理文化,才能真正發揮每個人的潛力,以最有效方法完成測試工作。
如果繼續追問下去,在軟體測試過程中,哪兩樣東西是我們必須關注的?答案應該是“測試覆蓋率”和“效率(productivity)”。如何保證品質,一個重要的衡量方法就是測試的覆蓋率,包括使用者實際需求的覆蓋率和程式碼涵蓋範圍。在保證品質的前提下,確定任務的優先順序,採取正確的策略和方法,包括自動化測試方法,以高效的方法完成測試。
一而再、再而三,關注了“測試覆蓋率”和“效率”,拿什麼來保證呢?這不外乎三個方面,就是測試人員、測試流程和測試的技術。就人員來說,要從招聘、培訓和考核等各個環節來培育良好的團隊文化,樹立正確的工作態度,強化品質意識,提高團隊的戰鬥力,構建卓越的測試團隊。無論是採用敏捷的測試流程還是傳統的測試流程,一定要結合具體的產品和技術特點,因地制宜,形成適合自己的、有效測試流程。測試技術比較豐富,因而下面各章的討論會很多,從用戶端到伺服器端,從黑箱測試到白盒測試,從靜態測試到動態測試,全力構造一個完整的測試技術體系,使之滿足測試工作的需要。這些內容,可以用圖1-2形象地描述,使我們一目瞭然。
軟體測試的金字塔體系可以基於上一節的描述進行擴充,得到如下結構,更接近於一串神秘的數字。
最後,總結一下軟體測試的5個要素。
1) 品質:軟體品質是軟體測試的目標,也是軟體測試工作的中心,一切從品質出發,也就是一切從客戶需求出發。任何違背品質的東西都是問題,測試就是要找出這些問題。
2) 人員:人是決定的因素,測試人員的態度、素質、能力決定著測試的效果,對測試產品的品質也有很大的影響。測試人員因素包括測試組織圖、角色和責任的定義。
3) 技術:軟體測試技術,包括方法、工具。
4) 資源:主要是指測試環境中所需要的硬體裝置、網路環境,甚至包括測試資料。另外一個重要因素就是測試時間,時間也是測試的資源,但測試人員不能看做資源,每個人的能力千差萬別,不同的測試人員擔任不同的角色,不能相互代替。這也是軟體圖書的經典之作——《人件》[1]的作者反對將人作為資源對待的原因。
5) 流程:從測試計劃和測試案例的建立、評審到測試的執行、報告,設定每個階段的進出標準。
5個工作面
基於軟體測試金字塔的構成,我們好好研究其5個工作面,1-3所示。
圖1-3 軟體測試的5個基本工作面
1)品質-人員-技術:團隊建設,包括人員的招聘、培訓、考核等。
2)品質-人員-資源:成本管理,人員和軟硬體資源都是測試的投入,但同時必須將人和軟硬體資源區別對待,不要將人也作為軟硬體資源那樣處理,否則會帶來較多的問題。
3)品質-技術-流程:技術和流程結合起來就是一種測試架構或測試架構,通過技術,將流程融入系統或工具中,流程的執行才能穩定、有效。技術通過架構固化,技術才能發揮最大效益。
4)品質-流程-資源:基礎設施,構建測試環境,將測試建立在堅固、流程的基礎設施之上。
5)人員-技術-流程-資源:專案管理,在一定的品質標準下,如何平衡這些要素、如何獲得最大的生產力,就是軟體測試專案管理的主要任務。
本文節選自《完美測試:軟體測試系列最佳實務》一書。
圖書詳細資料:http://blog.csdn.net/broadview2006/article/details/7528416
[1]《人件》第1版於1987年出版,第2版於1999年出版,第3版的中文譯本由UML
China組織翻譯,2003年清華大學出版社出版。