說到測試用例的設計,我想每個有過測試經歷的測試工程師都會認為很簡單,不就是:按需求或概要設計,得到軟件功能劃分圖,然后據此按每個功能,采用等價類劃分、臨界值、因果圖等方法來設計用例就行了。
但事實上撇開測試數據的設計不談,僅就測試項來說,我們發現,對同一個項目,有經驗的測試人員,在寫用例或測試時總會有更多的測試考慮點,從而發現更多的問題;而有些測試人員測試用例的撰寫卻只有那么三板斧,表面看好象已經把頁面所有信息的測試都考慮到了,實際上卻還是遺漏了大量測試覆蓋點,導致其測試出來的程序總是比較脆弱。
究其原因,我覺得還是測試用例的撰寫水平不到位,更確切地說是測試用例的覆蓋度太低。說實話我認為系統測試用例真正做到100%覆蓋是很難的。難道說按設計中的功能劃分,每個功能都寫到了這個用例就覆蓋完整了?錯,這還遠遠不夠。因為我們知道還有大量的內部處理、轉換、業務邏輯、相互影響的關系等都是需求或設計中所不會點明的。而這些一方面需要靠測試人員對項目本身的了解,另一方面要靠測試人員的經驗,來一一找到這些隱藏點并予以測試,才能真正地保證我們的測試覆蓋度。
所以本文拋開具體的測試數據設計方法,主要從測試覆蓋度的角度來介紹用例設計時,如何才能考慮地更周全,如何才能將隱藏的測試項一一找出,從而使我們的測試更全面更完整。
想法雖然美好,可是畢竟每個測試的項目都是各不相同,針對不同項目我們的經驗也會告訴給我們不同的想法,這些想法通常很感性,很難用嚴密的邏輯理論來把它升華。因此本文的內容仍是很簡陋且不成熟,只是希望能以本文為磚,引起大家的思考,一起來補充完善,以使我們的測試用例設計水平不斷提高。
測試用例的切面設計
所謂測試切面設計,其實就是測試用例大項的劃分。測試用例劃分的經典方法是瀑布模型,也就是從上到下,逐漸細分,大模塊包括小模塊,小模塊包括更小的模塊。但僅僅如此是不夠的,我們還要從更多的角度切入系統,從不同的角度把系統切分成一塊一塊的,來進行測試,從而確保測試大項的完整性。
1、功能點切面
這是最常見的切面,通常我們認為頁面上的一個按鈕就是一個功能點。然后我們可以根據功能的復雜程度,按每個功能;或一個功能點分多頁;或多個功能點合成一頁來進行用例的撰寫。
2、特定切面
除此以外,還有一種特定切面的劃分方法,也是用例撰寫時經常會用到的。所謂的特定切面,就是忽略掉表面上的功能點,而關注測試對象的某一個面。比如我們的內部管理系統提供了銷售錄入導入、注冊錄入導入等功能,從菜單劃分上對應了七八個功能點。但這些功能處理后臺有個共同的處理項就是授權記錄的生成,這時我們就可以把“授權記錄生成”單獨拿出來做一個測試項,而在其它測試項中涉及這一部分的用例就不必再一一撰寫。此外象一些界面共通的操作用例單獨寫成一頁,也是一種特定切面。所以如果說將用例按功能點劃分是一種縱向劃分法,那么特定切面就是從橫向的角度分析所得到的切面。在普通功能點劃分上再根據實際情況設計特定切面,可以使我們的用例閱讀性、理解性、操作性更強。
3、隱含切面
這類用例是最容易被忽略的。它往往不是明顯的某個功能項,可能是功能項后臺的隱含處理,也可能是多個功能項之間的關聯處理,甚至可能是在某種特定情形下的處理。這都需要測試人員通過對軟件的學習了解,來進行挖掘。軟件測試
(1)、后臺功能
常見的如一些定時自動啟動的服務;以及某種特定情況下自動執行的操作等。它們在界面上往往是不體現的,但許多在需求設計中還是會提到,也有一些比較細小的功能可能會被忽略,就需要測試人員根據對項目的了解程度來進行挖掘。所以說一個熟悉項目的和一個不熟悉的測試人員,寫出來的用例就完全是兩個層次的。
文章來源于領測軟件測試網 http://www.kjueaiud.com/