軟體缺陷的產生主要是由軟體產品的特點和開發過程決定的,如軟體的需求經常不夠明確,而且需求變化頻繁,開發人員不太瞭解軟體需求,不清楚應該“做什麼”和“不做什麼”,常常做不合需求的事情,產生的問題最多。同時,軟體競爭非常厲害,技術日新月異,使用新的技術,也容易產生問題。而且對於不少軟體企業,“爭取時間上取勝”常常是其主要市場競爭策略之一,實現新功能、很酷的功能,被認為比品質更為重要,導致排程很緊,需求分析、設計等投入的時間和精力遠遠不夠,也是產生軟體錯誤的主要原因之一。
軟體錯誤產生的原因可能還有其他一些原因,例如,軟體設計文檔不清楚,文檔本身就存在錯誤,導致使用者產生更多的錯誤。還有溝通上的問題、開發人員的態度問題以及專案管理問題等。《微軟開發人員成功之路(之一)》概括為有以下七項主要原因:
- 項目期限的壓力
- 產品的複雜度
- 溝通不良
- 開發人員的疲勞、壓力或受到幹擾
- 缺乏足夠的知識、技能和經驗
- 不瞭解客戶的需求
- 缺乏動力
這些原因,會引起下列主要領域的主要錯誤(缺陷):
- 需求規格說明書(Requirement Specification or Functional Specification )包含錯誤的需求、或漏掉一些需求, 或沒有準確表達客戶所需要的內容;
- 需求規格說明書中有些功能不可能或無法實現的;
- 系統設計(System Design)中的不合理性;
- 程式設計中的錯誤、程式碼中的問題,包括錯誤的演算法、複雜的邏輯等。
若能及早排除軟體開發中的錯誤,有效減少後期工作的麻煩,就可以儘可能的避免付出高昂的代價,從而大大提高系統開發過程的效率。 軟體測試的目標,就是為了更快、更早地將軟體產品或軟體系統中所存在的各種問題找出來,並促進開發各類人員儘快地解決問題,最終及時地向客戶提供一個高品質的軟體產品,使軟體系統更好地滿足使用者的需求,同時滿足軟體組織自身的要求:
1.
使用者的需求
- 能正常使用全部所需要的功能
- 功能強大,而且介面美觀、易用、好用
- 內容健康,有益於生活和工作
- 使用者的資料安全、受保護和相容
- 及時得到新的產品或得到更完美的軟體服務
- 軟體可靠性很高,使用軟體服務沒有時間障礙
2. 軟體企業的需求
- 軟體品質是市場競爭的需要,品質好的軟體是留住客戶的最關鍵的手段之一,軟體企業也必須依靠品質,才能立於不敗之地;
- 高品質的軟體可以大大降低“品質問題產生的成本”,增加公司的盈利;
- 軟體已是國際化的市場,品質是進入國際市場的一個關鍵門坎;
- 容易維護、移植和擴充,以擴大市場或適應環境的變化。
這些要求的滿足,最終體現在軟體產品的品質上:
- 功能性,軟體所實現的功能達到它的設計規範和滿足使用者需求的程度;
- 可用性,對於一個軟體,使用者學習、操作、準備輸入和理解輸出所作努力的程度,如安裝簡單方便、容易使用、介面友好,並能適用於不同特點的使用者,包括對殘疾人、有缺陷的人能提供產品使用的有效途徑或手段;
- 可靠性,使用者使用的根本,在規定的時間和條件下,軟體所能維持其正常的功能操作、效能水平的程度;
- 效能,在指定條件下,用軟體實現某種功能所需的電腦資源(包括記憶體大小、CPU佔用時間等)的有效程度;
- 容量,系統的接受力、容納或吸收的能力、或某項功能的最大量或最大限度,有時需要確定系統的特定需求的所能容納的最大量、所能表現的最大值。如Web系統能承受多少並發使用者訪問、會議系統可以承受的與會人數等;
- 可測量性,系統某些特性可以通過一些量化的資料指標能描述其目前狀態或理想狀態;
可維護性,在一個運行軟體中,當環境改變或軟體發生錯誤時,進行相應修改所做努力的簡易程度;
- 可維護性取決於理解軟體、更改軟體和測試軟體的簡易程度,可維護性與靈活性密切相關。高可維護性對於那些經曆周期性更改的產品或快速開發的產品很重要。
- 相容性,軟體從一個電腦系統或環境移植到另一個系統或環境的容易程度,或者是一個系統和外部條件共同工作的容易程度。相容性表現在多個方面,如系統的軟體和硬體的相容性、軟體的不同版本的系統、資料的相容性;
- 可擴充性,指將來功能增加、系統擴充的難易程度或能力。
預知後事如何,請讀下回分解:第5回 軟體測試所面對的現實
著作權,軟體測試演義
——系列討論的目錄,見: 軟體測試演義——中進階系列(序)