專案的測試策略描述測試作業的一般方法和目標。其中包括要解決的測試階段(單元、整合及系統)及要執行的測試類型(功能、效能、負載、壓力)。
策略定義:
-
使用的測試技術和工具。
-
採用的測試完成準則和成功準則。例如,準則可能允許軟體在成功執行 95% 的測試案例時進入驗收測試。另一項準則是程式碼涵蓋率。在安全第一的系統中,此準則可能規定測試必須涵蓋 100% 的程式碼。
-
特殊考量會影響資源需求或具有排程含意,例如:
-
測試對外部系統的所有介面
-
模擬實體損壞或安全性威脅
有些組織已定義公司測試策略,在此情況下,只要按照規定在您的特定專案上套用這些策略即可。
規劃測試作業時應該考量的最重要層面如下:
-
您目前在哪一次反覆活動中及此反覆活動的目標為何?
-
您正在執行什麼測試階段(單元測試、整合測試、系統測試)?您有可能在一次反覆中完成所有測試階段。
現在,隨著您目前在前述測試層面中的哪一個層面,請注意測試作業的特性將有何變化。有許多特性可查看,例如所需的資源和花費的時間,但在此強調什麼對於定義測試策略而言最重要,例如:
-
測試類型(功能、壓力、容量、效能、可用性、分佈等)
-
使用的評估準則(以程式碼為基礎的測試涵蓋率、以需求為基礎的測試涵蓋率、問題數、平均失效時間等)
-
使用的測試技術(手動和自動)
測試類型如何分佈在測試週期內,沒有一定的共通型樣。您應該根據反覆次數、反覆規模及您測試的專案種類,著重於不同的測試類型。
系統測試階段很強調要確定您涵蓋所有可測的需求,這些需求以一組測試案例來表達。這表示您的完成準則將著重於以需求為基礎的測試涵蓋率。在整合和單元測試階段,您會發現以程式碼為基礎的測試涵蓋率比完成準則更適合。下圖顯示隨著您展開新的軟體反覆活動,這兩種測試涵蓋率測量基準值的使用情形將有何變化。
-
測試計劃應該為單元測試、整合測試及系統測試定義幾組完成準則。
-
您可能為個別的反覆活動定義不同的完成準則。
在您的專案上,請儘可能將測試工作自動化,尤其是對於反覆執行的測試類型(迴歸測試)。切記,建立和維護自動化測試需要耗費成本和資源。每一個專案總是會有一些手動測試。下圖顯示您可能在何時及什麼測試階段執行手動測試。
範例
下列表格顯示何時確定不同類型的測試,並示範可定義的完成準則。第一個表格顯示「典型的」MIS 專案。
反覆測試
|
系統測試
|
整合測試
|
單元測試
|
反覆 1
|
所有使用案例的自動化效能測試。
· 已執行所有事先規劃的測試。
· 已解決所有嚴重性 1 的問題。
· 已重新執行所有規劃的測試,沒有發現新的嚴重性 1 的問題。
|
無
|
非正式測試
|
反覆 2
|
在所有新的使用案例上的自動化效能和功能測試,以及前述各項的迴歸測試。
· 已執行所有事先規劃的測試。
· 已解決所有嚴重性 1 和 2 的問題。
· 已重新執行所有規劃的測試,沒有發現新的嚴重性 1 或 2 的問題。
|
無
|
非正式測試
|
反覆 3
|
在所有新的使用案例上的自動化功能和負面測試,以及前述各項的迴歸測試;95% 的測試案例必須及格。
· 已執行所有事先規劃的測試。
· 已找出所有嚴重性 1、2 及 3 的問題。
|
自動化測試,70% 的程式碼涵蓋率。
|
非正式測試
|
反覆 4
|
在所有使用案例上的自動化功能和負面測試、所有未自動化部份的手動測試,以及前述各項的迴歸測試。100% 的測試案例必須及格。
· 已執行所有事先規劃的測試。
· 已解決所有嚴重性 1、2 及 3 的問題。
· 已重新執行所有規劃的測試,沒有發現新的嚴重性 1 或 2 的問題。
|
自動化測試,80% 的程式碼涵蓋率。
|
非正式測試
|
第二個表格顯示在典型的安全第一系統上採用的測試類型和完成準則。
反覆測試
|
系統測試
|
整合測試
|
單元測試
|
反覆 1
|
所有使用案例的自動化效能測試;100% 的測試案例涵蓋率。
· 已執行所有事先規劃的測試。
· 已解決所有嚴重性 1 的問題。
· 已重新執行所有規劃的測試,沒有發現任何新的問題。
|
無
|
無
|
反覆 2
|
所有使用案例的自動化效能、功能及負面測試;100% 的測試案例涵蓋率。
· 已執行所有事先規劃的測試。
· 已解決所有嚴重性 1 或 2 的問題。
· 已重新執行所有規劃的測試,沒有發現任何新的問題。
|
自動化效能測試
|
非正式測試
|
反覆 3
|
所有使用案例的自動化效能、功能、負面用途及文件測試;100% 的測試案例涵蓋率。
· 已執行所有事先規劃的測試。
· 已解決所有嚴重性 1、2 及 3 的問題。
· 已重新執行所有規劃的測試,沒有發現任何新的問題。
|
自動化效能測試和前述各項的迴歸測試。
|
自動化測試,70% 的程式碼涵蓋率
|
反覆 4
|
所有使用案例的自動化效能、功能、負面用途及文件測試;100% 的測試案例涵蓋率。
· 已執行所有事先規劃的測試。
· 已解決所有嚴重性 1、2 及 3 的問題。
· 已重新執行所有規劃的測試,沒有發現任何問題。
|
自動化效能測試和前述各項的迴歸測試
|
自動化測試,80% 的程式碼涵蓋率
|
|