標籤:
軟體測試是伴隨著軟體的產生而產生的。早期的軟體開發過程中,那時軟體規模都很小、複雜程度低,軟體開發的過程混亂無序、相當隨意,測試的含義比較狹窄,開發人員將測試等同於“調試”,目的是糾正軟體中已經知道的故障,常常由開發人員自己完成這部分的工作。對測試的投入極少,測試介入也晚,常常是等到形成代碼,產品已經基本完成時才進行測試 到了上世紀80年代初期,軟體和IT行業進入了大發展,軟體趨向大型化、高複雜度,軟體的品質越來越重要。這個時候,一些軟體測試的基礎理論和實用技術開始形成,並且人們開始為軟體開發設計了各種流程和管理方法,軟體開發的方式也逐漸由混亂無序的開發過程過渡到結構化的開發過程,以結構化分析與設計、結構化評審、結構化程式設計以及結構化測試為特徵。人們還將“品質”的概念融入其中,軟體測試定義發生了改變,測試不單純是一個發現錯誤的過程,而且將測試作為軟體品質保證(SQA)的主要職能,包含軟體品質評價的內容,Bill Hetzel在《軟體測試完全指南》(Complete Guide of Software Testing)一書中指出:“測試是以評價一個程式或者系統屬性為目標的任何一種活動。測試是對軟體品質的度量。”這個定義至今仍被引用。軟體開發人員和測試人員開始坐在一起探討軟體工程和測試問題 軟體測試已有了行業標準(IEEE/ANSI ),1983年IEEE提出的軟體工程術語中給軟體測試下的定義是:“使用人工或自動的手段來運行或測定某個軟體系統的過程,其目的在於檢驗它是否滿足規定的需求或弄清預期結果與實際結果之間的差別”。這個定義明確指出:軟體測試的目的是為了檢驗軟體系統是否滿足需求。它再也不是一個一次性的,而且只是開發後期的活動,而是與整個開發流程融合成一體。軟體測試已成為一個專業,需要運用專門的方法和手段,需要專門人才和專家來承擔。 進入上世紀90年代,軟體行業開始迅猛發展,軟體的規模變的非常大,在一些大型軟體開發過程中,測試活動需要花費大量的時間和成本,而當時測試的手段幾乎完全都是手工測試,測試的效率非常低;並且隨著軟體複雜度的提高,出現了很多通過手工方式無法完成測試的情況,儘管在一些大型軟體的開發過程中,人們嘗試編寫了一些小程式來輔助測試,但是這還是不能滿足大多數軟體項目的統一需要。於是,很多測試實踐者開始嘗試開發商業的測試載入器來支援測試,輔助測試人員完成某一類型或某一領域內的測試工作,而測試載入器逐漸盛行起來。人們普遍意識到,工具不僅僅是有用的,而且要對今天的軟體系統進行充分的測試,工具是必不可少的。測試載入器可以進行部分的測試設計、實現、執行和比較的工作。通過運用測試載入器,可以達到提高測試效率的目的。測試載入器的發展,大大提高了軟體測試的自動化程度,讓測試人員從繁瑣和重複的測試活動中解脫出來,專心從事有意義的測試設計等活動。採用自動比較技術,還可以自動完成測試案例執行結果的判斷,從而避免人工比對存在的疏漏問題。設計良好的自動化測試,在某些情況下可以實現 “ 夜間測試 ” 和 “ 無人測試 ” 。在大多數情況下,軟體測試自動化可以減少開支,增加有限時間內可執行檔測試,在執行相同數量測試時節約測試時間。 而測試載入器的選擇和推廣也越來越受到重視。 在軟體測試載入器平台方面,商業化的軟體測試載入器已經很多,如捕獲/回放工具、Web測試載入器、效能測試工具、測試管理工具、代碼測試載入器等等,這些都有嚴格的著作權限制且價格較為昂貴,但由於價格和著作權的限制無法自由使用,當然,一些軟體測試載入器開發商對於某些測試載入器提供了Beta測試版本以供使用者有限次數使用。幸運的是,在開放源碼社區中也出現了許多軟體測試載入器,已得到廣泛應用且相當成熟和完善。
軟體測試的曆史和發展