- 軟件測試分析與實踐
- 高熾揚主編
- 4022字
- 2024-03-22 12:19:06
第1章 軟件測試概述
1.1 軟件測試的起源及發(fā)展
軟件測試作為軟件研發(fā)過程中旨在發(fā)現(xiàn)軟件缺陷的一種活動,伴隨著軟件研發(fā)的出現(xiàn)而出現(xiàn),只不過在早期的軟件研發(fā)活動中,軟件產品的總體規(guī)模都比較小,軟件結構也都比較簡單,軟件研發(fā)過程相對比較隨意,沒有嚴格的研發(fā)過程管理手段和要求,所以軟件測試的含義就比較狹窄,基本等同于軟件調試,大部分情況下也是由軟件研發(fā)人員自己完成的,目的是發(fā)現(xiàn)并糾正軟件中存在的各種故障。
在早期的軟件研發(fā)過程中,沒有對軟件測試的專門投入,也沒有獨立的軟件測試人員,軟件測試通常介入得也比較晚,常常是在軟件編碼完成之后進行簡單的驗證而已。直到1957年,軟件測試才逐漸與軟件調試區(qū)別開來,作為一種獨立的活動以發(fā)現(xiàn)軟件缺陷。但是,軟件測試工作由于未受到足夠的重視,通常被視為軟件生命周期中的最后一項活動,加之當時軟件測試技術不夠先進,缺乏有效的測試方法,主要依靠錯誤推測法尋找軟件中的缺陷,因此大量軟件交付后,仍存在很多問題,軟件產品的質量無法保證。
到了 20 世紀 70 年代,這個階段開發(fā)的軟件仍然不復雜,但人們已經開始思考軟件開發(fā)流程的問題了,盡管當時對軟件測試的重視程度依然不夠,對其真正含義也缺乏共識,但軟件測試這一詞條已經頻繁出現(xiàn),一些軟件測試的探索者建議在軟件生命周期的開始階段就根據(jù)軟件需求制定測試計劃,這時也涌現(xiàn)出一批軟件測試的宗師,如Bill Hetzel博士就是其中的領導者。1972年,Bill Hetzel博士在美國的北卡羅來納大學組織了歷史上第一次正式的關于軟件測試的會議。1973年,Bill Hetzel博士首先給出了軟件測試的定義:建立一種信心,認為程序能夠按預期的設想運行(Establish confidence that a program does what it is supposed to do)。1983年,他又將軟件測試的定義修訂為:評價一個程序和系統(tǒng)的特性或能力,并確定它是否能達到預期的結果,軟件測試就是以此為目的的任何行為(Any activities aimed at evaluating an attribute or capability of a program or system)。在他的定義中,“設想”和“預期的結果”其實就是我們現(xiàn)在所說的用戶需求或功能設計。另外,他還把軟件的質量定義為“符合要求”。他的核心觀點就是軟件測試是試圖驗證軟件是能夠正常工作的。
后來,Glenford J.Myers針對軟件測試的定義提出了新的觀點,他認為軟件測試不應該著眼于驗證軟件是能夠正常工作的,相反,應該首先認定軟件是有錯誤的,然后用逆向思維發(fā)現(xiàn)盡可能多的錯誤。他還從人的心理學的角度進行了論證,如果將“驗證軟件是能夠正常工作的”作為測試目的,那么會非常不利于測試人員發(fā)現(xiàn)軟件的錯誤。于是他于1979年提出了軟件測試的定義:測試是為發(fā)現(xiàn)錯誤而執(zhí)行的一個程序或系統(tǒng)的過程(The process of executing a program or system with the intent of finding errors)。這個定義得到了業(yè)界的廣泛認可,經常被引用。Myers提出的“軟件測試的目的是證偽”這一概念推翻了過去“為表明軟件正確而進行測試”的錯誤認識,為軟件測試的發(fā)展指明了方向,軟件測試的理論、方法在之后得到了長足的發(fā)展。
到了20世紀80年代初期,軟件和IT行業(yè)進入了發(fā)展時期,軟件產品的規(guī)模不斷增大,軟件結構日趨復雜,軟件產品的質量越來越重要。相應地,有關軟件測試的基礎理論和實用技術開始逐步形成,人們也開始為軟件研發(fā)過程設計各種流程和管理方法,軟件研發(fā)過程也逐漸由混亂無序向規(guī)范化方向發(fā)展,軟件工程思想得以提出。軟件測試作為軟件工程全生命周期的獨立活動,地位和作用逐漸得到提升。軟件測試的定義也開始有了行業(yè)標準(IEEE/ANSI),1983年,IEEE提出的《IEEE軟件工程標準術語》中給軟件測試下了定義:使用人工或自動的手段來運行或測定某個軟件系統(tǒng)的過程,目的在于檢驗它是否滿足規(guī)定的需求或弄清預期結果與實際結果之間的差別。這個定義明確指出軟件測試的目的是檢驗軟件系統(tǒng)是否滿足規(guī)定的需求。它再也不是一次性的、只是開發(fā)后期的活動,而是與整個開發(fā)流程融合成一體。軟件測試已成為一個專業(yè),需要運用專門的方法和手段,需要專門的人才和專家來承擔。
之后,有關軟件測試的理論、方法和模型得到快速發(fā)展,專門針對軟件測試的相關國際標準開始逐步實施,包括ISO/IEC 9126:1991《軟件產品評估 質量特性及其使用指南綱要》、ISO/IEC 12119:1994《信息技術 軟件包 質量要求和測試》、ISO/IEC 14598:1999《軟件工程 產品評價》等,都極大地推動了軟件測試的發(fā)展。
在我國,軟件測試相比于發(fā)達國家而言,受重視程度一直較低,直到 2000年“千年蟲問題”的出現(xiàn),我國開始逐漸重視軟件測試工作。同時,隨著我國信息化建設的不斷發(fā)展,軟件產業(yè)作為信息產業(yè)的核心,也被國家列入重點發(fā)展計劃。為此,國務院先后頒布了《國務院關于印發(fā)鼓勵軟件產業(yè)和集成電路產業(yè)發(fā)展若干政策的通知》(國發(fā)〔2000〕18號)(簡稱18號文件)、《振興軟件產業(yè)行動綱要(2002年至2005年)》(簡稱47號文件)等文件,推動了軟件產業(yè)政策環(huán)境的不斷改善,軟件產業(yè)進入快速發(fā)展期。
然而,由于軟件質量跟不上軟件產業(yè)發(fā)展的步伐,各種軟件應用問題日益突出,軟件測試作為提升軟件質量的重要手段,逐漸得到相關管理部門的重視和推廣。
為加強行業(yè)軟件質量的管理,我國部分行業(yè)信息化管理部門陸續(xù)出臺了一些行業(yè)性的軟件檢測管理規(guī)范。例如,衛(wèi)生部早在2002年就成立了衛(wèi)生部信息化工作領導小組,編制發(fā)布了《醫(yī)院信息系統(tǒng)基本功能規(guī)范》,以此為基礎,衛(wèi)生部組織了多次商品化醫(yī)院信息系統(tǒng)選型測試工作,推薦優(yōu)秀的軟件產品,供各級醫(yī)院在進行信息化建設時參考。2002 年,教育部為促進教育系統(tǒng)應用管理軟件的規(guī)范化管理,實現(xiàn)教育系統(tǒng)軟件數(shù)據(jù)庫結構、數(shù)據(jù)元格式的一致性,保證各級部門數(shù)據(jù)縱向、橫向交換的順利進行,負責組織編制并發(fā)布了《教育管理信息化標準》,并委托第三方專業(yè)軟件機構按此標準對全國所有學校的教育信息管理軟件進行標準符合性測試。2006 年,國家食品藥品監(jiān)督管理局組織編制了《互聯(lián)網藥品交易服務系統(tǒng)軟件測評大綱》系列標準,規(guī)定只有通過認定的第三方軟件機構的軟件檢測并取得相應的檢測報告后,企業(yè)才可以通過互聯(lián)網進行藥品交易,旨在加強藥品監(jiān)督管理,規(guī)范互聯(lián)網藥品交易服務。2011 年,中國人民銀行發(fā)布《非金融機構支付服務業(yè)務系統(tǒng)檢測認證管理規(guī)定》,明確要求非金融機構在申請支付許可證時,必須進行業(yè)務系統(tǒng)技術標準符合性和安全性檢測認證等。
與此同時,國際上對軟件研發(fā)企業(yè)的過程質量管理也在逐步加強,在ISO9000、能力成熟度模型集成(CMMI)等系列質量管理體系認證中逐步細化了對軟件研發(fā)過程和方法的要求,突出了軟件研發(fā)企業(yè)產品質量測試要求,凸顯了軟件測試對保障軟件質量的重要性。
2005年,在ISO/IEC 9126和ISO/IEC 14598的基礎上,演變出了SQuaRE系列國際標準,包括ISO/IEC 2500n 質量管理分部(ISO/IEC 25000《SQuaRE指南》、ISO/IEC 25001《規(guī)劃和管理》),ISO/IEC 2501n 質量模型分部(ISO/IEC 25010《系統(tǒng)和軟件質量模型》、ISO/IEC 25012《數(shù)據(jù)質量模型》),ISO/IEC 2502n質量測量分部(ISO/IEC 25020《測量參考模型和指南》、ISO/IEC 25021《質量度量元素》、ISO/IEC 25022《使用質量測量》、ISO/IEC 25023《系統(tǒng)和軟件產品質量測量》、ISO/IEC 25024《數(shù)據(jù)質量測量》),ISO/IEC 2503n 質量要求分部(ISO/IEC 25030《質量要求》),ISO/IEC 2504n質量評價分部(ISO/IEC 25040《評價過程》、ISO/IEC 25041《開發(fā)方、需方和獨立評估方的評估指南》、ISO/IEC 25042《評估模塊》、ISO/IEC 25045《易恢復性評估模塊》)和ISO/IEC 25050~25099 擴展的標準和技術報告,并在后續(xù)根據(jù)技術的發(fā)展進行了持續(xù)更新。
2013年在BS 7925和IEEE 1008的基礎上,演變出ISO/IEC/IEEE 29119系列標準,包括 ISO/IEC/IEEE 29119-1:2022《系統(tǒng)與軟件工程 軟件測試 第 1 部分:概念和定義》、ISO/IEC/IEEE 29119-2:2021《系統(tǒng)與軟件工程 軟件測試 第2部分:測試過程》、ISO/IEC/IEEE 29119-3:2021《系統(tǒng)與軟件工程 軟件測試 第3部分:測試文檔》、ISO/IEC/IEEE 29119-4:2021《系統(tǒng)與軟件工程 軟件測試 第4部分:測試技術》,2016年又補充了ISO/IEC/IEEE 29119-5:2016《系統(tǒng)與軟件工程 軟件測試 第5部分:關鍵字驅動測試》,并在后續(xù)擴展了ISO/IEC TR 29119-6:2021《系統(tǒng)與軟件工程 軟件測試 第6部分:在敏捷項目中使用 ISO/IEC/IEEE 29119(所有部分)的指南》、ISO/IEC DTR 29119-8《系統(tǒng)與軟件工程 軟件測試第8部分:基于模型的測試》(發(fā)展中)、ISO/IEC TR 29119-11:2020《系統(tǒng)與軟件工程 軟件測試 第 11 部分:基于人工智能的系統(tǒng)測試指南》、ISO/IEC DTR 29119-13《系統(tǒng)與軟件工程 軟件測試 第13部分:ISO/IEC/IEEE 29119 在生物識別系統(tǒng)測試中的使用指南》(發(fā)展中)。
我國也根據(jù)國際標準的發(fā)展逐步制定了對應的國家標準,包括基于 ISO 25000系列的標準:
GB/T 25000.1—2021《系統(tǒng)與軟件工程 系統(tǒng)與軟件質量要求和評價(SQuaRE) 第1部分:SQuaRE指南》;
GB/T 25000.2—2018《系統(tǒng)與軟件工程 系統(tǒng)與軟件質量要求和評價(SQuaRE) 第2部分:計劃與管理》;
GB/T 25000.10—2016《系統(tǒng)與軟件工程 系統(tǒng)與軟件質量要求和評價(SQuaRE) 第10部分:系統(tǒng)與軟件質量模型》;
GB/T 25000.12—2017《系統(tǒng)與軟件工程 系統(tǒng)與軟件質量要求和評價(SQuaRE) 第12部分:數(shù)據(jù)質量模型》;
GB/T 25000.20—2021《系統(tǒng)與軟件工程 系統(tǒng)與軟件質量要求和評價(SQuaRE) 第 20 部分:質量測量框架》;
GB/T 25000.21—2019《系統(tǒng)與軟件工程 系統(tǒng)與軟件質量要求和評價(SQuaRE) 第21部分:質量測度元素》;
GB/T 25000.22—2019《系統(tǒng)與軟件工程 系統(tǒng)與軟件質量要求和評價(SQuaRE) 第22部分:使用質量測量》;
GB/T 25000.23—2019《系統(tǒng)與軟件工程 系統(tǒng)與軟件質量要求和評價(SQuaRE) 第23部分:系統(tǒng)與軟件產品質量測量》;
GB/T 25000.24—2017《系統(tǒng)與軟件工程 系統(tǒng)與軟件質量要求和評價(SQuaRE) 第24部分:數(shù)據(jù)質量測量》;
GB/T 25000.30—2021《系統(tǒng)與軟件工程 系統(tǒng)與軟件質量要求和評價(SQuaRE) 第30部分:質量需求框架》;
GB/T 25000.40—2018《系統(tǒng)與軟件工程 系統(tǒng)與軟件質量要求和評價(SQuaRE)第40部分:評價過程》;
GB/T 25000.41—2018《系統(tǒng)與軟件工程 系統(tǒng)與軟件質量要求和評價(SQuaRE) 第41部分:開發(fā)方、需方和獨立評價方評價指南》;
GB/T 25000.45—2018《系統(tǒng)與軟件工程 系統(tǒng)與軟件質量要求和評價(SQuaRE) 第45部分:易恢復性的評價模塊》;
GB/T 25000.51—2016《系統(tǒng)與軟件工程 系統(tǒng)與軟件質量要求和評價(SQuaRE) 第 51 部分:就緒可用軟件產品(RUSP)的質量要求和測試細則》;
GB/T 25000.62—2014《軟件工程 軟件產品質量要求與評價(SQuaRE) 易用性測試報告行業(yè)通用格式(CIF)》。
還包括基于ISO/IEC/IEEE 29119的標準:
GB/T 38634.1—2020《系統(tǒng)與軟件工程 軟件測試 第1部分:概念和定義》;
GB/T 38634.2—2020《系統(tǒng)與軟件工程 軟件測試 第2部分:測試過程》;
GB/T 38634.3—2020《系統(tǒng)與軟件工程 軟件測試 第3部分:測試文檔》;
GB/T 38634.4—2020《系統(tǒng)與軟件工程 軟件測試 第4部分:測試技術》。
可以說,目前,國內外各種政策和環(huán)境的變化對推動軟件測試的發(fā)展起到了積極的促進作用,軟件測試在國內外都受到了高度的重視,軟件測試正面臨著前所未有的發(fā)展機遇。
- iOS面試一戰(zhàn)到底
- Java 開發(fā)從入門到精通(第2版)
- 算法精粹:經典計算機科學問題的Java實現(xiàn)
- C語言程序設計基礎與實驗指導
- Python進階編程:編寫更高效、優(yōu)雅的Python代碼
- Magento 2 Development Cookbook
- Ray分布式機器學習:利用Ray進行大模型的數(shù)據(jù)處理、訓練、推理和部署
- 從學徒到高手:汽車電路識圖、故障檢測與維修技能全圖解
- 零基礎學Python數(shù)據(jù)分析(升級版)
- R用戶Python學習指南:數(shù)據(jù)科學方法
- 搞定J2EE:Struts+Spring+Hibernate整合詳解與典型案例
- 21天學通C++(第5版)
- 自學Python:編程基礎、科學計算及數(shù)據(jù)分析(第2版)
- 小程序從0到1:微信全棧工程師一本通
- IBM Cognos TM1 Developer's Certification guide