1.確認測試標準
為了實現軟件驗證,需要進行壹系列的測試。確認測試也需要制定測試計劃和流程。測試計劃應該規定測試的類型和進度,測試過程定義壹些特殊的測試用例來說明軟件是否符合需求。無論是計劃還是過程,都要重點關註軟件是否滿足合同規定的所有功能和性能,文檔是否完整準確,人機界面等方面(如可移植性、兼容性、錯誤恢復能力、可維護性等)是否令用戶滿意。
有兩種可能性可以確認測試結果。壹個是功能和性能指標滿足軟件需求說明書的要求,用戶可以接受。另壹種是軟件不符合軟件需求的要求,用戶無法接受。在項目的這壹階段,很難在預定的時限內糾正嚴重的錯誤和偏差,因此需要與用戶協商,以找到問題的妥善解決方案。
2.配置審查
驗證測試的另壹個重要部分是配置審查。審查的目的是確保軟件配置完整,分類有序,並包括軟件維護所需的細節。
3.α,β試驗
事實上,軟件開發者不可能完全預見用戶對程序的實際使用情況。例如,用戶可能誤解了命令,或者提供了壹些奇怪的數據組合,或者可能對設計者認為很清楚的輸出信息感到困惑,等等。所以,軟件是否真正符合最終用戶的要求,應該由用戶來檢驗。驗收測試可以是非正式測試,也可以是有計劃的系統測試。有時,驗收測試持續數周甚至數月,錯誤不斷暴露,導致開發的延遲。壹個軟件產品可能有很多用戶,不可能每個用戶都接受。這時候就經常使用壹個叫做α和β測試的過程來發現只有最終用戶才能發現的問題。
Alpha測試是指軟件開發公司組織內部人員模擬各種用戶線對即將推出的軟件產品(稱為alpha版本)進行測試,試圖發現錯誤並加以糾正。alpha測試的關鍵是盡可能真實地模擬軟件產品的實際運行環境和用戶操作,盡量覆蓋所有可能的用戶操作模式。經過alpha測試調整的軟件產品稱為beta版。其次是beta測試,就是軟件開發公司組織各方面的典型用戶在日常工作中實際使用beta版本,並要求用戶報告異常情況,提出批評意見。然後軟件開發公司會對測試版進行修正和改進。
系統測試的基本方法
計算機軟件是基於計算機的系統的重要組成部分。軟件開發完成後,應與系統中的其他組件集成。這時就需要進行壹系列的系統集成和驗證測試。對這些測試的詳細討論已經超出了軟件工程的範圍,這些測試不可能僅僅由軟件開發人員來完成。在系統測試之前,軟件工程師應完成以下任務:
(1)為測試軟件系統的輸入信息設計壹個錯誤處理路徑;
(2)設計測試用例,模擬軟件界面中的錯誤數據和可能出現的錯誤,記錄測試結果,為系統測試提供經驗和幫助;
(3)參與系統測試的規劃和設計,保證軟件測試的合理性。
系統測試應由幾個不同的測試組成,旨在全面運行系統,驗證系統的所有組件是否能在壹個政黨中工作,並完成分配的任務。下面簡要討論幾種類型的系統測試。
1,恢復測試
恢復測試主要檢查系統的容錯能力。當系統出現問題時,能否在指定的時間間隔內糾正錯誤並重啟系統?恢復測試首先要采用各種方法迫使系統失效,然後驗證系統能否盡快恢復。對於自動恢復,有必要驗證重新初始化、檢查點機制、數據恢復和重啟的正確性。對於人工幹預的修復系統,需要估計平均修復時間,以確定其是否在可接受的範圍內。
2.安全試驗
安全測試檢查系統防止非法入侵的能力。在安全測試中,測試人員偽裝成非法入侵者,試圖通過各種方法突破防線。比如①嘗試截取或破譯密碼;(2)定制軟件銷毀系統的保護機制;(三)故意造成系統故障,並在恢復時企圖非法進入的;(4)試圖通過瀏覽非機密數據推斷出所需信息,等等。理論上,只要有足夠的時間和資源,不存在無法訪問的系統。因此,系統安全設計的準則是使非法入侵的成本超過受保護信息的價值。此時,非法入侵者已無利可圖。
3.強度試驗
強度測試檢查程序對異常情況的抵抗力。強度測試總是強制系統在異常的資源配置下運行。比如:①當正常的中斷頻率是每秒壹兩個時,運行壹個每秒產生十個中斷的測試用例;(2)定量提高數據輸入速率,檢查輸入子功能的反映能力;(3)運行需要最大存儲空間(或其他資源)的測試用例;(4)運行測試用例可能導致虛擬內存操作系統崩潰或磁盤數據劇烈抖動等等。
4.特性試驗
對於那些實時和嵌入式系統,即使軟件部分滿足功能要求,也不壹定能滿足性能要求。雖然每壹個測試步驟都包含了來自單元測試的性能測試,但是只有在系統真正集成之後,性能才能在真實環境中得到全面可靠的測試和運行。性能測試的目的就是完成這項任務。性能測試有時與強度測試相結合,這通常需要其他軟件和硬件的支持。