對于大型項目,軟件測試的執行,除了需要很好的測試范圍分析、測試計劃制定和測試資源的分配與組織之外,還是有一個容易被大家忽視的策略問題。
對于大多數應用項目(非國防、載入飛船上天、凈室工程等),我們都知道,測試不是為了證明所有的功能能正常工作,恰恰相反,測試就是為了找出那些不能正常工作、不一致性的問題,也就是說,測試的一般工作就是發現缺陷 (detect bug),當然這些缺陷包括需求分析、設計等的缺陷,不僅僅是程序中的運行。測試的啟動和項目啟動是同時發生的,測試的重要工作是在測試用例的設計,這是隨后測試執行的基礎。同時,我們應該承認,測試的主要工作是在測試的執行,當自動化測試工具在功能測試中發揮作用比較困難時,測試執行的工作量還是很大的。
如何更早地發現缺陷又不增加風險?測試的本質是什么,發現缺陷還是風險評估?如何引導大家向著一個目標——產品及時高質量發布努力?
1. 首先就要向測試人員灌輸一個概念——“測試的一般工作就是發現缺陷 (detect bug)”,達成共識,這是很重要。這樣,測試人員,就知道什么是自己真正的工作。這一點,不僅在測試執行時發揮作用,而且在設計測試用例時更能發揮作用。
2. 測試執行階段可以劃分為兩個子階段,前一個階段的目的非常清楚,就是發現缺陷,督促大家就是找出缺陷。測試用例的執行,應該是幫助我們更快地發現缺陷,而不是成為“發現缺陷”的障礙——使發現缺陷的能力降低。從理論上說,如果缺陷都找出來了,質量也就有保證了。所以在這一階段,要不顧風險,就是發現缺陷,這樣不僅對開發團隊也非常有利,能盡早地修正大部分缺陷;對測試有利,測試效率高,后面的回歸測試也會穩定,信心更充分。
3. 在代碼凍結或產品發布前的稍后的子階段,目的是減少風險,增加測試的覆蓋度,這時測試的效率會低一些,以損失部分測試效率以極大降低風險、獲得更高質量的收益。
4. 在前一階段,測試用例的執行速度要低一些,測試人員多思考,多做些ad-hoc 測試,這樣又幫助提高測試用例的質量,從而對隨后的回歸測試提供了更有力的保障。
?5. 測試執行要進行有效監控,包括測試執行效率(缺陷數/KTC, KTC = 1000 test cases)、Bug歷史情況和發展趨勢等。根據獲得的數據,必要時對測試范圍、測試重點等進行調整,包括對測試人員的調整、互換模塊等手段,提高測試覆蓋度,降低風險
6. 測試總是是有風險的,正是始終存在的風險,使之測試更具有藝術性。
原文轉自:http://www.anti-gravitydesign.com