測試數據建模
現在很多軟件應用,都設計成2部分:應用程序Application + 數據庫DB。要對這種類型的應用軟件進行測試,“測試數據”這個概念就非常的關鍵。測試用例中的“前置條件”,基本就是圍繞測試數據來設計的。以淘寶網的測試為例,驗證每個功能點時,最重要的就是準備好各種類型的數據對象,比如:不通信用級別的賣家,不同類目屬性的商品等等。
熟練的測試工程師手里都會保存一批測試數據(比如賬號、商品),并且分類管理,不同場景的測試用例,都會有專門的測試數據來支持。在ta的心里,存在著一套完整的測試設計方案,在工作中也會顯得游刃有余。要達到這種狀態,需要經過一段時間的積累,需要“磨合”。對測試數據的控制力,也是測試工程師的重要能力之一,可惜這種能力很難被識別,被比較。
最近2年,軟件測試工作在逐漸向開發團隊轉移,由以前的測試團隊“全包”,變成了現在的“半包”。很多觀點也認為,開發團隊來做測試工作,有著得天獨厚的優勢,因為開發對應用程序的結構最熟悉,哪里容易出現問題也最清楚。當然也有很多開發表示反對,原因大概有下面幾個:
● 沒時間,能把代碼寫完就不錯了
● 開發工程師沒有測試工程師的那種思維方式
● 測試數據準備起來比較困難
這里的“測試數據問題”是客觀存在的,但不僅僅是這么簡單的一句話可以概括,需要深入分析。我們觀察開發工程師在做測試工作的時候,在測試數據方面會遇到下面幾個問題:
1、對于一些比較復雜的測試場景,搞不清應該構造哪些測試數據對象,最后只好隨便抓一個來測試,只要沒拋異常,就算pass;
2、就算搞清了測試數據的需求,去哪找這些數據,仍然是一個大問題,最后還是隨便抓一個來測試;
3、就算把所有的測試數據都做好,如何根據測試場景隨機應變的使用,如何維護這些數據始終有效,也非常不容易;
分析到這里我們發現,測試工程師對測試數據的控制能力,真的不簡單,開發工程師在工作中一般沒有接受過類似的訓練,所以很容易陷入“測試數據”的泥潭。而且,這個問題跟人的能力有關,不是單純依靠工具能解決的。
關于“測試數據建模”,主要是解決上面的第一個問題:當我們要測試一個功能點,或者一系列場景的時候,需要設計出怎樣的測試數據組合。
我們先假設一個最簡單的場景,這個場景只需要用到1個數據對象:USER,那么這里的測試數據,就是USER的每個屬性的枚舉值:性別、年齡、狀態、等 級,我們用一句話就可以概括一個數據對象,比如:女性user、20歲的user、狀態是已認證的user。測試用例可以這樣寫,但是實際測試時,熟練的 測試工程師并不會分別測試,而是把多種情況組合在一起,比如:20歲的已經認證的女性user。每個人的組合方式都不一樣。有一種算法叫做 “Pairwise Testing”,可以比較科學的組合多個屬性的枚舉值。但是有經驗的測試工程師發現,年齡和性別的邏輯關系很密切,這里的組合需要特別的設計,依靠 Pairwise的基礎設計還遠遠不夠,需要引入業務邏輯的分析。
所以同樣的測試用例,不同的工程師在測試時,花費的時間,得出的結 果,會有很大的不同。僅僅一個數據對象,就會產生這么復雜的情況,那么請設想一下,如果一個場景需要用到5個數據對象,并且它們之間存在復雜的邏輯關系 時,測試工程師需要面臨怎樣的困難局面,我們已經無法用一句話來概括測試數據的具體值。這里“測試數據建模”的概念就自然的引出了,建模的目的,就是我們 可以很容易的描述清楚,復雜場景下的測試數據是怎樣的。
很多工程師習慣用思維導圖來進行測試數據的設計,比如上文那個例子,大家會看到這樣的設計圖:
但是在真實的測試場景中,我們使用的是matrix來組織測試數據,如下:
posted on 2013-01-10 13:41 順其自然EVO 閱讀(225) 評論(0) 編輯 收藏 所屬分類: 測試學習專欄