件可靠性測試方法在對軟件因長期使用軟件性能下降,甚至完全失效這種嚴重影響軟件可靠性的測試存在不足的現狀,通過對軟件自身特性以及軟件可靠性估算面臨問題的深入分析和研究,結合傳統的軟件可靠性測試方法,提出了基于操作剖面的軟件可靠性壓力測試思想和操作剖面、壓力測試點相互結合、互為補充的軟件可靠性測試方法,并給出了軟件可靠性測試新方法實施的技術途徑。該思想與方法既是對傳統軟件可靠性測試方法的一個大膽探索,也是對軟件可靠性測試方法的一個有益補充。
關鍵詞:軟件缺陷;軟件可靠性;壓力測試;
0、引言
軟件在計算機發展的不同階段有不同的認識。計算機發展的初期,硬件在計算機應用中起決定作用,而軟件,即程序,甚至是機器指令程序或匯編程序,是處于從屬地位的。軟件開發是以個體手工的方式進行,設計是人的智力行為,軟件質量完全取決于個人的智力和編程技巧。隨著計算機的發展,人們認識到軟件使得計算機的計算能力大大提高,應用能力大大增強。于是在開發計算機應用系統時,硬件和軟件同時考慮,而且開始編制應用支撐程序,如操作系統、數據庫等。這時的生產方式是以小作坊的形式進行。到了后來,社會的各種應用需要對計算機提出了更高和更特別的要求,很多大型軟件系統開發的工作量高達數千人年,指令數百萬條或更多,如美國宇航飛船的軟件系統有4000萬條語句。而今,計算機的應用面越來越廣,應用規模越來越大,應用過程越來越復雜,軟件在計算機系統中的比重越來越大,軟件成本在總成本中的比重正在逐年上升,而且這種趨勢還在增加。這時人們感到傳統的軟件生產方式已不適應計算機發展的需要,需要把工程學的基本原理和方法引入到軟件開發過程中,即軟件工程思想。
事實上,無論計算機技術如何發展,計算機中的軟件是人通過智力勞動產生的,其軟件產品是人的思維結果,是一個邏輯部件,而不是一個物理部件。軟件開發水平很大程度上取決于軟件人員的教育、訓練和經驗的積累。由此軟件具有與硬件或傳統工業產品不同的特點:
(1)軟件是一種邏輯實體,具有抽象性,人們必須通過觀察、分析、思考、判斷,才能了解它的功能、性能等特性;
(2)軟件沒有明顯的制造過程,一旦研制開發成功,就可以大量拷貝同一內容的副本。所以對軟件的質量控制,必須在軟件開發方面下工夫;
(3)軟件在使用過程中,沒有磨損、老化的問題,但為了適應硬件、環境以及需求的變化而進行修改,這些修改常常會引入錯誤,導致軟件失效率升高,軟件質量降低。如果修改成本太高,質量風險太大,軟件就會被拋棄;
(4)軟件對硬件和環境有著不同程度的依賴性,由此帶來了軟件移植的問題;
(5)軟件的開發至今尚未完全擺脫手工作坊式的開發方式,生產效率低。這對復雜軟件,特別是今后會更加復雜的軟件帶來了是否能夠控制其復雜性和時效性的問題;
(6)軟件開發需要投入大量、高強度的腦力勞動,成本非常高,風險也大?,F在軟件的開銷已大大超過了硬件的開銷;
(7)許多軟件的開發和運行涉及機構、體制和管理方式等問題,還會涉及到人們的觀念和心理。這些人的因素,常常成為軟件開發的困難所在,直接影響到項目的成敗。
基于上述軟件的特性,美國國防部中大量的軟件系統其可靠性得不到保證,幾乎沒有不存在錯誤的軟件系統。盡管人們在軟件開發過程中采用各種軟件工程方法,應用各種軟件測試技術,但他們只能盡量發現錯誤、減少錯誤,卻不可能徹底消除錯誤,無法實現真正意義上的無錯軟件,百分之百的可靠。
現今計算機硬件技術的發展,使得在計算機系統中的硬件可靠性越來越高,而軟件可靠性的問題變得日益突出。在一些關鍵的應用領域,如航空、航天等,對軟件可靠性的要求尤為重要。如在銀行等服務性行業,其軟件系統的可靠性也直接關系到自身的聲譽和生存發展競爭能力。由于軟件中存在缺陷、錯誤和故障使軟件失效很有可能造成巨大的損失或慘重的災難。研究結果表明:由于軟件開發出現問題引起的系統失效與由于硬件設計或使用引起的失效之比是10:1。由此可見,軟件在計算機系統中占有絕對重要的地位。于是,人們借鑒硬件可靠性理論,提出了“軟件可靠性”概念,不再追求軟件無錯,而以統計的觀點去判斷軟件滿足用戶使用要求的程度。
1、軟件可靠性
軟件可靠性借鑒了硬件可靠性的概念,即軟件按規定的條件,在規定的時間內運行而不發生故障的能力。軟件可靠性與硬件可靠性不同的是:軟件可靠性不但與軟件中存在的缺陷有關,而且與系統輸入和系統使用有關。
從定義上看,評價或測試一個軟件的可靠性,最主要的是要確定系統怎樣輸入、如何使用一整套的方法和策略。另一方面,軟件可靠性是軟件質量特性中重要的固有特性和關鍵因素,軟件可靠性反映了用戶的質量觀點。而軟件的故障是由于軟件的質量存在問題——即它固有的缺陷導致錯誤,進而使系統的輸出不滿足預定的要求,造成系統的故障。所謂按規定的條件主要是指軟件的運行(使用)環境,它涉及軟件運行所需要的一切支持系統及有關的因素。如支持硬件、網絡、操作系統及其它支持軟件、輸入數據、操作規程等。
盡管當前的軟件可靠性定義借用了硬件可靠性的定義,但事實上軟件可靠性因軟件的特性它與硬件可靠性相比較是有很大的差別的,如:
(1) 硬件有老化損耗現象,硬件失效是物理故障,是器件物理變化的必然結果。軟件不發生變化,沒有磨損現象,但軟件由于長期使用軟件性能下降,甚至完全失效的故障也是有的。例如,無休止的線程、無釋放的文件鎖閉、數據污染、存儲空間的徹底分裂與積聚差錯等;
(2) 硬件可靠性的決定因素是時間,受設計、生產、運用的所有過程影響,軟件可靠性的決定因素是與輸入數據有關的軟件差錯,是輸入數據和程序內部狀態的函數,更多地決定于人;
原文轉自:http://www.spasvo.com/news/html/2013624103915.html