1)軟件測試目的
針對軟件產品開展測試活動之前,首先需要明確本輪測試的主要目的是什麼,然後才能確定測試策略和採用的測試方法,以及可以選擇哪些度量對測試過程和測試對象的質量進行評估。不同的組織和軟件產品、軟件開發和測試階段的不同,需要實現的測試目的是不盡相同的。總體而言,軟件測試的目的主要包括下面四種:
發現缺陷。軟件測試就是爲了發現缺陷而檢查或者執行測試對象的過程。其基本思路是假設測試對象是存在問題的,強調測試人員不斷地設想和思考開發人員可能出現的錯誤,例如:理解的錯誤、不良的習慣等,對測試人員的主觀能動性要求很高。
增強對軟件產品質量的信心。軟件測試就是爲了建立一種信心,確信測試對象能夠按照期望的設想或者結果工作。這裏的期望的設想或者結果指的是用戶需求、軟件需求文檔或者功能設計文檔等軟件工作產品。
爲決策者提供信息。測試過程中可以得到關於測試對象質量和風險的狀態和信息,例如:測試執行的通過率、發現缺陷的趨勢、修改缺陷的趨勢等,這些信息是決策者確定是否可以發佈軟件產品的判斷基礎,並可以幫助他們分析其中存在的風險和收益。
預防缺陷。通過收集和分析測試過程中得到的測試對象質量信息和測試過程的信息,例如:缺陷在不同模塊中的分佈、在不同階段的分佈,以及其中的經驗和教訓,有助於將來的項目中避免重複某些錯誤,從而逐步提高測試的成熟度,達到預防缺陷的目的。
上面簡單講了4中主要的測試目的,需要注意的是它們之間並不是完全獨立和對立的。在實際的測試過程中,應該根據不同組織特點、項目特點、測試階段和測試技術等方面的具體情況,選擇合適的軟件測試 ,或者它們的組合。
2)軟件測試類型
軟件測試不僅僅只是運行測試對象進行相關的檢查活動,也不應該只是軟件開發生命週期的一個階段,軟件測試應該貫穿於整個軟件開發過程。因此,軟件測試包括了靜態測試和動態測試兩部分。
發現測試對象中的缺陷是軟件測試的一個重要目的。缺陷發現和修復的越早,其需要的成本越低;同時,在早期發現和修復缺陷可以防止將缺陷引入到開發的下個階段,從而避免缺陷的“雪崩”效應;另外,儘早發現和修復缺陷也可以對後續的開發活動起到缺陷預防的作用。因此,靜態測試是測試人員在軟件開發生命週期中,特別是早期可以選擇的一個重要測試技術。
除了靜態測試,動態測試也是測試人員在測試過程中需要完成的重要活動。通過選擇和採用合適的測試技術和方法,測試人員不僅可以科學地選擇測試對象的輸入以及輸入組合;也可以不斷提高和改進測試人員的測試效率和測試有效性。圖1是軟件測試類型的架構圖。
圖1 軟件測試類型架構圖
3)什麼是好的測試
儘管不同的測試,其採用的測試目的和採用的測試類型可能不同的,同時測試過程中定義的測試階段、測試活動和測試方法也不盡相同,但是一個良好的測試應該具備下面的特點:
每個開發活動都有測試活動相對應;
每個測試級別都有其特定的測試目的;
與開發活動對應的每個測試級別,都應該進行相應的測試設計和執行;
測試人員應儘早介入測試;
通過風險分析和評估確定測試的重點和優先級,以替代窮盡測試;