1.1.什麼是測試
軟件系統是生活中不可或缺的一部分,包括從商業應用(比如銀行系統)到消費產品(比如汽車)的各個領域。然而,很多人都有過這樣的經歷:軟件並沒有按照預期進行工作。不能正常工作的軟件會導致許多問題,包括資金、時間和商業聲譽的損失,甚至是傷害或死亡。軟件測試是評估軟件質量和降低軟件運行中出現失效風險的一種方式。
對測試的常見誤解是,它只包含了運行測試,即執行軟件和檢查結果。軟件測試是一個包含了許多不同活動的過程;測試執行(包含檢查結果)只是這些活動之一。測試過程還包括諸如測試計劃、測試分析、測試設計、測試實施、報告測試進度和結果,以及評估測試對象的質量等活動。
有些測試確實涉及到被測組件或系統的執行,這種測試稱爲動態測試。不涉及運行被測組件或系統的測試,稱爲靜態測試。所以,測試還包括評審工作產品,例如需求、用戶故事和源代碼。
另一個關於測試的常見誤解是,它完全關注於需求、用戶故事或其他規格說明的驗證。雖然測試確實涉及檢查系統是否滿足指定的需求,但它也包含確認,即檢查系統在其運行的環境中是否滿足用戶和其他干係人的需求。
測試活動在不同的生命週期中的組織和實施是不同的。
1.1.1.典型的測試目標
對於給定的任何項目,其測試目標可以包括
- 評估工作產品,例如需求、用戶故事、設計和代碼
- 驗證是否實現了所有指定的需求
- 確認測試對象是否完成,並按照用戶和其他干係人期望那樣的工作
- 建立對被測對象質量級別的信心
- 預防缺陷
- 發現失效和缺陷
- 爲干係人提供足夠的信息以允許他們做出明智的決策,特別是關於測試對象的質量級別
- 降低軟件質量不足帶來的風險(例如運行軟件時,發現了之前未發現的失效)
- 遵守合同、法律或法規要求或標準,和或驗證測試對象是否符合這些要求或標準
根據被測試組件或系統的環境、測試級別和軟件開發生命週期模型的不同,測試目標會有所變化。不同包括:
- 在組件測試時,儘可能多的發現失效,以便儘早識別和修復潛在的缺陷可能是其一個目標。而另一個目標可能是增加組件測試時的代碼覆蓋率。
- 在驗收測試時,確認系統能夠按照預期工作並且滿足用戶需求可能是其一個目標。而另一個測試目標可能是爲干係人提供關於在給定時間發佈系統的風險信息。
1.1.2.測試與調試
測試和調試是兩個不同的概念。執行測試可以發現由於軟件缺陷引起的失效。而調試是發現、 分析和修復這些缺陷的開發活動。隨後的確認測試檢查修復活動是否解決了缺陷。有的時候,測試員負責開始及最終的確認測試,而開發人員則負責調試及相關的組件測試。然而,在敏捷開發和其他的一些軟件生命開發週期中,測試員也可能會參與調試和組件測試。