很多測試從業者可能都會有這么個疑問:怎樣才能做好產品測試?對于這個問題,可能是仁者見仁智者見智,沒有放之四海而皆準的標準。在筆者看來,要做好測試管理工作首先得有測試理念,也可以說是產品測試要遵循的一些基本原則,這些原則為各級測試人員提供了總體思路和方向,基于這些原則開展測試工作不會差到哪去,筆者根據多年產品測試工作經驗,總結出的測試基本原則如下:
原則1: 測試是否通過的依據是客戶需求、規格及各種標準
產品測試的目的主要是檢驗開發出來的產品是否滿足客戶的需求、各種標準,產品測試的很多工作,包括產品測試策略、測試方案、測試用例設計都必須以此作為設計輸入,其中需求是客戶化的定性描述,規格是客戶需求的定量描述,標準是產品必須遵循的各種標準,比如行業標準、國標等,產品測試是否通過的判斷依據是客戶需求及規格,或者是產品必須遵循的各種標準及規范,而不是內部的技術要求或限制。
原則2: 完全測試基本不可能,應制定合理的測試策略
產品完全測試是不可能做到的,特別是軟件類測試更是如此,各種輸入條件組合將是一個天文數字,我們不可能進行窮盡測試,所以需要基于客戶需求和規格分析基礎上制定相應的測試策略,在測試策略中要權衡投入/產出比的原則,測試既要充分也不要過分。當滿足一定的測試出口準則時測試就應當終止。
那么在編制產品測試策略時,對測試內容如何進行考慮呢?一般來說要結合客戶需求、質量目標來考慮,每個新產品開發時會確定一個質量目標,這個質量目標是基于客戶需求來定的,以飛機為例,飛機的引擎控制、飛行技術、導航處理等質量要求是最高等級,而飛機上的娛樂措施質量等級相對來說可以降低一個等級,這樣在測試內容深度和廣度上可以差別考慮;另外針對一些系統增強型產品考慮繼承性功能測試策略時,重點要考慮產品新修改的影響分析,可以重點對修改影響比較大的繼承性功能進行測試,而對于其它繼承性功能進行抽測即可。
原則3: 為了減少投入成本,測試應該盡早介入
根據統計表明,在產品開發早期引入的缺陷占產品開發過程中出現所有缺陷數量的50%~60%。此外,IBM的一份研究結果表明,缺陷成本存在放大趨勢。如需求分析階段的一個錯誤可能會導致N個設計錯誤,越是測試后期,為修復缺陷所付出的代價就會越大。因此在產品需求分析和設計階段,測試人員應進行測試需求分析和測試策略制定;在產品功能模塊開發完成時協助開發人員進行自測,產品研發樣機出來測試進行系統測試等,以提高產品質量,降低產品開發成本。
原則4: 由第三方測試團隊進行測試,必要時組織客戶化測試
由于心理因素,人們潛意識都不希望找到自己的錯誤。基于這種思維定勢,人們難于發現自己的錯誤。因此,由獨立測試部門或者第三方測試機構進行產品測試將更客觀、公正,測試活動也會達到更好效果。
第三方或者獨立的測試團隊進行測試的這個原則,并不是認為所有的測試完全由他們來完成。在測試人員進行測試之前開發人員也需要通過自測來發現自己開發過程中的問題,開發人員對自己的工作產品進行認真的測試,這也是開發人員的一個職責之一。
另外有些產品應用場景比較復雜,研發過程中限于測試環境和應用環境的差異性,有些測試內容可能無法很好進行測試,此時要考慮進行客戶化測試,比如在產品經過公司內部嚴格測試后,再找一些關系比較好的客戶,在客戶實際的應用環境中,邀請客戶參與對產品的測試,這樣往往能發現一些深層次的問題,有助于提升產品的質量。
原則5: 根據缺陷的集群性,適時開展專項測試
Pareto(排列圖)原則表明“80%的錯誤集中在20%的產品模塊中”。實際經驗也證明了這一點,通常情況下,大多數的缺陷只是存在測試對象的極小部分。缺陷并不是平均而是集群分布的。因此,測試過程中要充分注意錯誤集群現象,對發現問題較多的模塊,應該引起重點關注,必要時要組織專項分析和測試。
當然要做好測試工作僅僅有一定測試原則還是不夠的,還需要在產品測試流程指引下在產品開發不同階段進行相應的測試活動,確保產品測試工作的充分性、有效性,支撐產品開發整體上按計劃高質量的成功上市。