「質量」這個名詞在許多領域都會被提到,也沒有完全相等與嚴謹的定義。不過在 RUP 所規范的軟件開發領域里,我們認為「質量」應該滿足以下條件:一、產品應該按預定計劃流程完成生產;二、產品應該滿足或超越預定需求;三、前述需求應該可以被預定的方法予以衡量。
「測試」在整個開發流程里所扮演的角色與介入方式。這篇文章要介紹該用什么方法或衡量工具,才能讓產品滿足或超越預定需求。
測試的五個面向
「測試在大多數人的認知中,大概就是測試「軟件產品的功能」罷了,而且由于時間有限,約莫只要把「功能測試」確實做完也就很不錯了。不過,在 RUP 準則里,我們認為合乎「質量」的測試應該做到下述五個面向的工作:分別是功能測試、可靠度測試、效能測試三個基本測試工作,及使用性測試與支持性測試兩個延伸性的測試工作。
· 功能測試 ( Functional testing ):這是最基本的測試。主要目的在于精確檢測系統在各種使用環境( usage scenarios )中的運作與反應行為,驗證產品是否確實符合預定需求。此外,它也包括對系統特性( features )及安全性( security )的測試。
· 可靠度測試 ( Reliability testing ):這是第二個測試面向,目的在檢測系統在預設環境下的運作是否正常與穩定。例如,有些系統會隨著運作時間拉長而產生漸次延遲等各種不正常的現象,測試人員必須找出導致異常的原因,確保系統運作是「完全可靠,不會傾向失誤 ( 包括系統崩潰、響應停擺、占用內存等 ) 情形」。以下是建議進行的檢測工作項目,包括系統結構測試 ( 測試程序代碼的語法及處理程序是否正常、簡潔,而且不會造成延遲或瓶頸 ) 、壓力測試 ( 以嚴酷環境來檢測出系統的運作上限 ) 、競爭測試 ( 同時有兩個以上要求被提出時,系統面對這種競爭要求的真實反應情形 ) 、容量測試 ( 系統處理大量數據的反應行為 ) 等。
· 效能測試 ( Performance testing ):目的在于檢測當系統運作于上述兩個條件 ( 功能與可靠度 ) 的環境下,其面對平均負載與尖峰負載時的真實反應能力。簡言之,就是測試系統的真正效能表現。效能測試包括標竿測試 (benchmark tests) 、負載測試 (load tests) 與效能表現測試 (performance profile tests) 。
上述三種測試面向,是我們認為要完成一項「質量產品」最基本的測試工作。此外,也建議再進行以下兩種測試。 [Page]
· 使用性測試 ( Usability testing ):目的是檢測系統是否可以讓最終使用者覺得方便好用。因此這項測試會從使用者角度出發,評估系統在人類行為、美觀、操作接口、文字說明、輔助與導覽工具、訓練教材等涉及使用者操作行為方面的表現。
· 支持性測試 ( Supportability testing ):為檢測系統是否可以部署在預設的環境,并評估其在被使用時的維護與后續支持能力。此外,這個測試也包括安裝測試 (installation tests) 與環境調校測試 (configuration tests) ,可以檢測系統在什么樣的硬件環境下會運作得更好。
從上述五個面向的測試可以清楚看出, RUP 準則幾乎把所有「設想之內」與「意料之外」的情形與環境都納入測試工作范圍。目的就是要透過一套嚴謹的程序質量 (Process Quality) 規范,確保產品質量 (Product Quality) 。
測試工作相當多樣且復雜,要完全做好并不簡單;訣竅就在于善用工具。
善用工具
大家都清楚善用工具的好處。例如,使用電表而不是自己的手去測量電壓或電流,或是當朋友之間爭論到底誰比較胖,除了找第三者提供「目測答案」,還會利用「體重計」或「脂肪儀」來做精準的量測,如此才能取得有公信力的答案。
上述都是使用工具的范例。同樣的,軟件測試工作也必須運用合適的工具。測試是相當繁瑣復雜、且不容出錯的工作,測試人員需要模擬、檢測、追蹤、報告的各種環境與控制變因之龐雜,其實已經超出人類大腦的想象與運算能力,而且任何一項測試行為都可能因為缺少嚴謹控制的環境或變因而被扭曲,甚至導致完全相反的結果。此時唯有具備精準控制與監視能力,而且不會疲勞、偷懶、發脾氣、生病的科學性與專門工具,才能完全勝任這些工作。
測試的真諦
「合格的測試」才能確保合格的產品,而且也唯有合格的產品才是開發團隊與客戶所冀求的,這就是測試工作的真諦。所以,當你花了一千億美元經費建造一艘航天飛機之后,請不要以一千美元的草率測試方法毀了它。
延伸閱讀
文章來源于領測軟件測試網 http://www.k11sc111.com/