Bug 數量與軟體品質控制
我日前看了「那些 Bug 是怎麼找來的?」這篇文章,裡面提到用 Bug 數量作為軟體品質的管理指標。管理學有云「可量化者方能管理」,可量化者就是指標項目,諸如一小時的產品生產數量、一天完成的工作項目等等。然而,錯定指標的例子也比比皆是。在軟體工程上,最經典的採用不適當管理指標的案例,就是用「程式行數」來管理工作進度了。就我所知,在理論或實務上,都不是用 Bug 數量作軟體品質管理的指標。此處所說的軟體品質管理,指的是開發過程中的品質管理,交貨時,理論上是無 Bug 的。既然選擇了不適當的指標項目,自然就產生「Bug 多,品質好;Bug 少,還是品質好!」這種無助於管理的結論。
測試案例 (test case) 才是軟體品質管理的適當指標項目,更嚴謹地說是測試案例的完整度。舉個簡單例子,如果某軟體專案需要設計 100 個 class ,那麼就至少需要 101 個測試案例。其中 100 個是以 class 為單元的單元測試案例,以及 1 個整合後的軟體系統測試案例。這樣還只能給 100 分中的 30 分而已。要達到 60 分的合格標準,還要有根據使用案例與活動關係圖設計的單元測試案例,而整個軟體系統也要有處於臨界值狀態的壓力測試案例。測試案例愈完整,則軟體品質愈容易被管理,亦即管理者可以從 xUnit 之類的測試工具的日報表中,看出昨天有哪些 bug 不在今天的報表中。完美情形下,會得到一個收斂的月報表,不會有 bug 忽隱忽現 (前天出現、昨天不見,今天又跑出來) 。
就我個人看法,測試案例的內容,應該由資深的系統分析師、或者是編寫軟體規格需求的人決定。例如當系統分析師決定專案中需要一個使用者輸入介面的視覺化控制項時,就等於決定了這裡需要一個測試案例,當然系統分析師應該要描述這個測試案例的內容。這個工作,要先於 coding ,不能等到開發小組實作時才決定。至於實作測試案例的人員,可以是開發小組本身,也可以是獨立的測試小組。在強調模型驅動開發架構 (MDA) 的 RUP 中,甚至可以在塑模作業時,就同時評估出應該要有多少測試案例。「從用例到測試用例的追蹤」是一篇非常好的文章,很漂亮地說明了如何從 Use Case 決定 Test Case ,從而實現一個有效的軟體品質管理目標。
樂多舊回應