軟件的缺陷難以根除,但軟件的質量是可以改進的。加強軟件測試是控制和提高軟件質量的一個行之有效辦法。目前軟件的質量問題幾乎都可以歸咎為測試階段沒有發現該問題。當然,事實上我們難以想象測試階段可以發現所有的質量問題。這實際上是一個悖論,委屈了軟件測試工程師和軟件產商。眾所周知,在別的行業,質量檢驗沒有這樣復雜,如燈泡質量的檢驗。如果檢驗員按照規定的抽樣辦法去檢驗燈泡,并判定該批次產品合格,那么消費者、市場就會認可這一檢驗結果。單個消費者碰巧遇到一個不合格產品,那只是小概率事件或仍處于公認的可接受的范圍。沒有人去責怪檢驗員或檢驗方法。如果商家判為合格的產品超過了公認的可接受范圍,那么只有這兩種可能:
(1)商家采用了非標準的測試程序,商家將負法律責任;
(2)測試程序本身需要改進,一般情況下,這時肯定不是一個商家的產品有問題而是很多商家的產品會有問題。針對軟件產品,目前還沒有一種公認的標準測試程序。針對同一類型的產品,不同的人可能會采用大相徑庭的測試方法,即使采用同樣的測試方法,不同的人還可能得出不同的測試結論,同一人前后兩次測試結果也可能不一致。
軟件市場呼喚一種公認的標準測試程序和方法用于測試軟件質量。一旦有了這樣的程序,人們的注意力將集中到如何改進這個程序而不會怪罪具體的測試工程師或軟件廠商。如果沒有這個程序,一旦軟件出現故障,我們就理直氣壯的認為測試不當,而軟件廠商將首當其沖,測試程序的責任反而微乎其微了。
本文將討論當前普遍采用的不恰當的測試方法所帶來的危害,尤其是經濟學意義上的危害。
一、不當測試的表現和后果
軟件測試存在缺陷是指軟件開發者和用戶在測試時花費的成本比更有效的測試方法更高。由此看來,幾乎所有的測試都存在缺陷。在本文中,軟件測試存在缺陷又稱之為不當測試。
1.1 不當測試的表現
測試的不當性體現在如下四個方面:
(1) 集成和互操作性測試
各種應用需集成在一塊,以免產生信息孤島。應用的集成是一個復雜和不確定的過程。集成工作有可能占到系統實現的1/3的成本(Booker,1999)。企業應用集成(EAI)的費用一般占到企業信息技術預算的30%,這個比例將上升到56%(Booker,1999)。據估計,1998年全球信息技術費用約為2700億美圓,則EAI的費用按30%估算約為810億美圓。
在集成測試階段,軟件開發者嚴重依賴互操作性測試;ゲ僮餍詼y試同樣非常困難。舉例來說,A應用和B應用可以互操作,B應用和C應用也能互操作,但并不能保證A應用和C應用也能互操作(NIST,1997),即互操作性不能相互傳遞,也不是完全等價的關系。
(2) 測試代碼的自動生成
開發合適的測試代碼比開發受測產品需要花費更多的時間和精力。該研究領域已成為IT前沿的焦點。我們相信,格式化語言將在測試代碼的自動生成中發揮巨大的作用。
(3) 缺乏一種精確的辦法以判定產品軟件產品的質量等級:合格、不合格、優良、優秀。
軟件行業里一個棘手的問題是決定測試何時可以結束、決定測試是否已經足夠了。這需要對軟件質量的確定性作出更精確的定義。由于對“足夠”的定義存在分歧,這個問題越來越嚴重了。一些數學方法有望在這一領域得到更廣泛的應用。
商業軟件開發者一般使用下述方法來判定軟件元素是否足夠完善:
◆ 足夠百分比的測試用例成功通過測試;
◆ 需執行代碼覆蓋測試;
◆ 軟件缺陷被劃分成不同類別,從而能分析每個類別里軟件缺陷的數目和缺陷的發展趨勢。
◆ 完成Beta測試后,允許產品上線運行。軟件開發者可以分析上線運行的問題的嚴重性和發展趨勢。
◆ 在給定的時間段,如果軟件缺陷數目穩定并低于約定的“閥值”,則認為該軟件已經足夠完善了。
(4) 缺乏可行的性能和質量度量標準
開發性能測試程序同樣耗資巨大。硬件廠商測試時通常會選擇流行的軟件環境或大型軟件系統。對于軟件廠商來說,反之亦然。這樣,小而新或不夠流行的軟件被軟件廠商或硬件廠商選擇做性能測試的機會就較少。
1.2 不當測試的后果
大家知道,如果測試的方法、工具不科學、不合理,那么測試的結果就不可信,從而會引起嚴重的后果,如把合格的產品判為不合格,或者把不合格的產品判定為合格。軟件測試也一樣。不當測試的后果包括四個方面:
◆ 由于質量差導致軟件某項或全部功能/性能失敗;
◆ 增加了軟件開發成本;
◆ 使軟件產品推向市場的時間滯后;
◆ 增加了市場交易成本。
1.2.1 軟件失敗
美國商業部國家標準技術研究所(NIST)的研究表明,近幾年來,美國航空業飽受軟件缺陷的影響,損失達數十億美圓(見表1)。最著名的事件是美國火星探測器失蹤歸因于度量衡的不統一。軟件缺陷還使軟件制造商蒙受信譽和經濟損失。最近,歸咎于軟件測試不充分的法律訴訟也在增加。
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/