明確參考輸入
第一,做好測試用例設計,需要首先明確它有哪些參考輸入。以我為例,我是做系統測試的,因此測試對象的需求規格說明是最主要的測試設計參考。但是實際面臨的問題是需求常常不完善,因此純粹依賴于需求規格說明肯定是不全面的。根據我的經驗,下面的這些輸入也應該經常考慮:用戶需求、開發文檔、標準與規范、測試經驗知識庫等。
測試經驗知識庫是測試人員以前做類似項目的測試經驗、收集與分析的缺陷類型分類等,都是開展測試用例設計的基礎。例如,我們的測試用例模板中的測試類型定義,除了參考 ISO 9126 質量模型,其中的重要輸入就是以前項目的測試經驗和缺陷分類分析。
關注功能之間的交互
第二做好測試用例的關鍵,做好測試用例設計,除了考慮被測對象功能之外,也需要關注被測功能與其他功能模塊之間的交互。由于每個測試人員負責各自的功能模塊,往往會導致整個測試對象不同功能模塊之間的接口、相互作用和耦合等分析不夠充分,而這些是影響測試對象質量的重要因素。例如,在我們當前的項目中,通用的交互測試點有主備倒換、內存使用、內存泄漏、CPU使用、數據備份/恢復、版本升級、系統重啟等
采用合適的設計技術與方法
第三,有了測試用例設計的輸入與交互分析之后,采用合適的測試用例設計技術與方法,有助于做好測試用例的分析。根據《軟件測試設計》中提出的“問題驅動的軟件測試設計”觀點做好測試用例的關鍵,可以從下面四個方面考慮進行測試設計,以解決測試設計中面臨的問題。
1.挑戰 1:被測對象的邏輯組合和輸入數據的組合是非常龐大的,而窮盡測試是不可能的。經典測試設計中的一些技術與方法,在保證測試覆蓋率與質量的情況下,對減少測試用例的數目是非常有效的。例如,在項目測試中引入了“組合測試”技術。
2.挑戰 2:軟件產品的不同利益相關者對產品的質量要求是不一樣的,如何滿足他們各自的質量要求?基于質量特性的測試設計有助于我們選擇合適的質量特性。測試設計中要求 100%的測試類型覆蓋率,可以更好地滿足不同利益相關者對質量的不同要求。
3.挑戰 3:測試時間與資源總是非常有限的,如何平衡測試時間、成本與質量之間的關系是每個測試人員都需要考慮的。基于風險的測試設計可以幫助我們有效地解決這個問題。例如,先給模塊確定測試優先級,然后分析每個模塊存在的主要風險,并按照不同風險級別開展測試設計活動,以盡快盡早發現嚴重程度高的缺陷。
4.挑戰 4:測試人員面對的需求經常是不完善的、經常變更的。除了前面提到的完善測試用例設計的參考輸入之外,基于經驗的測試設計也可以幫助測試人員在這種情況下做得更好。例如,根據以前發現的缺陷和用戶現場反饋的缺陷,進行缺陷分類分析和評估。另一個策略是更多地采用探索性測試,更好地發揮測試人員的主觀能動性與分析能力。
做好評審
第四,在測試用例設計過程中,發揮團隊的力量分析和評審測試點,其得到的效率和有效性會更好。例如,通過在測試分析與設計過程中應用思維導圖工具,幫助我們拓寬測試思路,增加測試條目。測試團隊的放射性思維可以很好地幫助我們提升測試用例設計的效率和有效性。
測試用例的顆粒度沒有嚴格的標準,我的觀點是只要它們滿足測試目的,符合產品特點、開發特點和測試過程等要求,有助于我們更好地發現缺陷和開展測試活動,測試用例的顆粒度就是合適的。