測試用例是測試工作的核心。測試工作是講究投入產出比的工作,這也是測試用例設計的指導思想。
測試用例有度的概念,正如亞里士多德在《倫理學》中討論道德為例:道德意味著過與不及之間的狀態。面向測試用例,網上流傳著這么一句話:“不同的機構會有不同的測試目的;相同的機構也可能有不同測試目的,可能是測試不同區域或是對同一區域的不同層次的測試”
下面就列舉測試用例設計的方方面面,看不同的團隊,不同的測試目的,如何把握測試用例設計之度。
顆粒度:
顆粒度的粗細,有無標準?什么是粗?什么是細?
1、以功能點劃分?
僅僅覆蓋所有的功能性需求為粗?
僅僅正向覆蓋所有的功能需求(功能、性能)為粗?
正向/負向覆蓋所有的功能需求(功能、性能)以及正向覆蓋性能需求為粗?
正向/負向覆蓋所有的需求為細?覆蓋到產品包,涵蓋兼容性、升級、安裝、易用性為細?
2、以STEP劃分?
每條用例有一個STEP為粗,三?五?十為細?以上為細?
以測試設計思路的體現?
只采用正向為粗?只采用正/負向為粗?考慮應用場景為細?考慮業務邏輯為細?
3、以數量級?
百條?千條?萬條?
4、以數據覆蓋?
等價類是粗?窮舉是細?
每個人、每個機構判定測試用例粗細的標準都不一樣,沒有標準的答案。所以測試用例顆粒度的粗細,本身就是一個相對而言的標準。
嘗試用圖示來表示顆粒度粗細的常規概念:

測試用例顆粒度粗、細的特點是什么?
用例設計分析:
粗顆粒度面向宏觀,面向正向的功能點、大的功能模塊和整體性,體現測試用例的設計思路;細顆粒度面向微觀,面對具體的一個個功能點的正向/負向邏輯,體現測試用例的細節和完備性。
面對測試執行人員:
粗顆粒度用例不容易被測試新手執行,因為很多約定成俗的操作、現象,甚至行業術語都不清楚。細顆粒度用例相對較易被測試新手執行。
覆蓋度:
粗顆粒度覆蓋度可能小于細顆粒度用例(粗顆粒度只覆蓋全部正向和部分負向,細顆粒度覆蓋全部正向、負向、其他等);但還有一種可能性,就是粗細用例均覆蓋全面,但是深度不同。類似下雨的降雨量不同,對農作物(產品)的意義不同。
可維護性:
毫無疑問,測試用例和需求的匹配,測試用例本身的維護是大多數團隊的工作難點重點,粗顆粒度便于維護,方便和需求保持高度一致;細顆粒度用例,越細越不容易維護,維護成本過大,特別是需求頻繁變更會導致不可維護。
類似的概念,比如自動化測試環節,GUI不停改變導致的腳本重寫類似。
時間:
粗顆粒度構架和評審的時間較短,適合周期較緊的項目;細顆粒度構建和編寫的時間較長,適合周期寬松或更傾向于質量的項目。
資源:
粗顆粒度占用資源較少(人力、評審、會議室等),適合小團隊或同一團隊多項目模式;細顆粒度占用資源較多,適合大團隊或單一項目模式。
風險:
毫無疑問,粗顆粒度用例的風險是漏測,存在很大概率漏測的風險,依賴于測試人員的個人素質;細顆粒度也存在漏測,不過相對更可能是測試人員自己的想當然跳過用例不執行。
細顆粒度用例最大的風險就是可維護性,或者投入產出比。
