SWTBOK測試實踐系列(1) -- 測試在項眼下期的評審投入劃算嗎?
測試策略:靜態測試還是動態測試?
[對話場景]
成功公布某個軟件版本號之後,項目團隊召開了項目的經驗教訓總結大會。在會議期間,項目經理小項和測試經理小測進行了例如以下的對話:
小項:“小測,我們的項目時間壓力非常大。測試運行是我們的關鍵路徑,測試團隊能否夠在測試運行階段投入很多其它的人力和物力?”限定時間和人力資源同等條件。
小測:“啊!假如添加我們的測試運行時間,在整個周期不變的情況下。我們就須要壓縮前期的學習和評審投入的時間和工作量,是嗎?”
小項:“是的,你看是否可行?”
小測:“……”
[場景分析]
上述場景中,項目經理小項希望測試經理小測在眼下的人力和時間情況下。通過壓縮前期的學習和評審時間,來添加測試運行的時間。但從項目的成本和產品質量角度而言。這並非一個有效的手段。
測試應該貫穿於整個軟件開發生命周期,而不只關註在測試運行階段,這已經成為了軟件測試的一個基本原則。
評審作為靜態測試的一種有效手段(靜態分析也是常見的一種靜態測試手段。在本文中以評審作為解說的對象),它能夠有效的減少成本和提高質量,應該成為每一個項目參與人員的共識。
假如能夠通過量化的方式闡述評審的重要意義。不僅能夠有效的回答項目經理小項的問題,並且能夠更加有效的開展軟件測試的各個測試活動。本文以通用的V模型作為樣例。量化分析評審是怎樣提高質量和減少成本的。
通用V模型有需求規格說明、系統功能設計、系統技術設計、組件規格說明、編碼、組件測試、集成測試、系統測試和驗收測試等階段組成。圖1是量化評審在減少成本和提高質量方面的模型圖。
當中的概念部分能夠覺得直接來自用戶的要求和需求。而用戶使用現場指的是產品公布給用戶之後在實際環境中使用。
圖1 量化評審作用的模型圖
圖中的每一個圖例的解釋和含義。請參考圖2。
圖2 圖例說明
依據圖1能夠看出評審和動態測試是用來發現和移除缺陷的兩個主要測試活動:評審主要應用於軟件開發的早期階段(在V模型的左邊),而動態測試應用於測試對象能夠執行之後的階段(在V模型的右邊)。圖1至少體現了兩個軟件測試的實踐經驗:
1)首先。缺陷的放大效應(即缺陷的雪崩效應)。
2)其次,缺陷發現和修復的成本隨著開發階段的演進而高速的上升;
雖然圖1中提供的缺陷放大系數和缺陷在不同階段的修復成本,並不一定適合不同的組織和項目,可是,作為案例分析評審在減少成本和提高質量的原理是適合的。以下首先對圖中的一些基本概念和數字進行描寫敘述:
l 靜態測試主要指的是評審活動,動態測試包含了4個測試級別;
l 不同階段的缺陷修復的成本分布,依次為1、2、5、10、15、22、50、100和500。
l 不同階段引入的缺陷數目,以及缺陷數目的放大系數。
當中左邊的放大系數為1.5。而右邊為1。而缺陷的移除率,為了簡單起見。左邊和右邊都定義為50%;
圖中的方框內的數字分別表示為:
(1)左上角為上個階段遺漏的缺陷數目。在V模型的右邊。通常缺陷數目會是缺陷放大效應之後的數目;
(2)左下角為為本階段引入的缺陷數目。在需求和設計階段,缺陷存在於規格說明中。在實現階段。缺陷來自於代碼中。而測試階段,缺陷主要來自缺陷的改動之後引入;
(3)右上角為本階段的缺陷移除率(以%表示)。
(4)右下角為本階段移除缺陷之後剩余的缺陷數目;
通過在軟件開發生命周期的早期開展評審活動,在項目早期發現和修復缺陷,將能夠大大的減少成本。減少成本不僅是因為早期發現和修復缺陷的成本,比在後期發現和修復的成本低。而且也能夠更好的預防缺陷的雪崩效應,即減少前期的缺陷遺留到興許的階段。
下表通過數據和計算的方式,來分析通過評審的引入是怎樣減少成本的。
表1 開展評審怎樣減少成本和提高質量
階段 |
開展評審活動 |
沒有評審活動 |
||||
總的缺陷 |
移除缺陷 |
成本 |
總的缺陷 |
移除缺陷 |
成本 |
|
需求規格說明 |
100 |
50 |
50 |
100 |
0 |
0 |
系統功能設計 |
195 |
97 |
194 |
270 |
0 |
0 |
系統技術設計 |
297 |
148 |
740 |
555 |
0 |
0 |
組件規格說明 |
424 |
211 |
2110 |
1033 |
0 |
0 |
編碼 |
618 |
308 |
4620 |
1849 |
0 |
0 |
組件測試 |
329 |
164 |
3608 |
2793 |
1397 |
30724 |
集成測試 |
185 |
92 |
4600 |
1417 |
708 |
35414 |
系統測試 |
113 |
56 |
5600 |
728 |
364 |
36414 |
驗收測試 |
77 |
38 |
19000 |
384 |
192 |
96035 |
部署 |
39 |
|
|
192 |
|
|
Total |
|
|
40522 |
|
|
198588 |
從上表中。能夠清楚的看到:在軟件開發生命周期的每一個階段開展評審活動,並在測試階段相同開展動態測試活動。其花費的總成本是40522。而假如僅僅在測試階段開展動態測試活動,而沒有在早期進行評審活動,其花費的總成本是198588。兩者數據進行比較,能夠發現開展評審活動之後減少的成本是很可觀的。當然前期投入評審也是須要成本的,因此在採用評審作為主要靜態測試手段的時候,測試策略須要平衡評審成本和收益。實現靜態測試和動態測試的動態平衡。
開展評審活動能夠非常好的提高產品質量,也是非常明顯的。在軟件開發生命周期的早期開展評審活動,其遺留到客戶現場的缺陷數目是39個,而沒有開展評審活動,其遺留到客戶現場的缺陷數目是192個。也就是說,通過在軟件開發生命周期的早期進行評審活動,能夠使得遺留到客戶現場的缺陷數目大大減少,從而提高產品的質量。
SWTBOK測試實踐系列(1) -- 測試在項眼下期的評審投入劃算嗎?