周金萍
摘 要 隨著軟件產(chǎn)業(yè)的快速發(fā)展,人們對軟件質(zhì)量的要求標準也日益增加。由于,軟件是一種對開發(fā)者智力依賴程度很高的產(chǎn)品,這也決定了存在缺陷和漏洞是軟件的自然屬性。因此,軟件測試應運而生并日趨成熟。軟件測試作為保證軟件質(zhì)量的一門學科,應該貫穿于軟件生命周期的各個階段。本文主要介紹了軟件測試的發(fā)展歷程、軟件測試的主要目的及方法、以及測試評估的相關概念。
關鍵詞 軟件測試 軟件生命周期 軟件測試評估
中圖分類號:TP311 文獻標識碼:A
0前言
自從IBM 360操作系統(tǒng)開發(fā)的失敗以來,軟件危機便進入人們的視野并備受關注。如今,在軟件產(chǎn)業(yè)化發(fā)展的大趨勢下,人們對軟件的質(zhì)量、成本和開發(fā)進度的要求也越來越高,質(zhì)量控制的含義已經(jīng)超越了傳統(tǒng)意義上的軟件測試的要求及規(guī)范。傳統(tǒng)的軟件測試大多是基于代碼運行的,并且常常是在軟件開發(fā)的后期才開始進行的。但大量研究表明,設計活動引入的錯誤占軟件開發(fā)過程中出現(xiàn)的所有錯誤數(shù)量的50%~65%,因此,越來越多的聲音呼吁,要求有一個貫穿于軟件開發(fā)各個階段的軟件測試過程。
1軟件測試的發(fā)展歷程
按照時間劃分可以把軟件測試的發(fā)展史劃分為5個階段,這五個階段分別是面向調(diào)試、面向證明、面向查錯、面向評估以及面向預防的測試。1956年之前是面向調(diào)試的測試,是軟件測試的第一個階段。早期的開發(fā)過程中,由于軟件規(guī)模小,軟件測試是為了糾正軟件的故障等同于軟件調(diào)試。那時進行軟件測試較晚,測試工作一般是由開發(fā)人員進行;面向證明的測試從1957年開始到1978年結(jié)束,是軟件測試的第二個階段。此時軟件測試作為一種獨立、客觀地查找軟件缺陷的活動,與調(diào)試區(qū)分開來。但是該階段的軟件測試雖然作為一門獨立的學科,仍處于作為軟件開發(fā)的輔助方法的萌芽階段;軟件測試的第三階段是從1979年開始到1982年結(jié)束,稱為面向查錯的測試。在這一時期,軟件人員設計和開發(fā)程序的邏輯越來越嚴密,不僅要考慮程序正常狀態(tài)下的運行情況,也要考慮程序在各種錯誤操作和數(shù)據(jù)下的承受能力,軟件測試促進了程序質(zhì)量的提高。但是這一階段對于軟件測試的理解并不太成熟,往往過分強調(diào)找到軟件中的錯誤;軟件測試的第四階段,即面向評估的測試,從1983年開始到1987年結(jié)束,該階段的測試是面向評估的測試。在這一時期,軟件測試不僅得到了蓬勃發(fā)展,而且軟件測試的目的變得客觀成熟;1988年至今,是軟件測試的第五個階段,即面向預防的測試。這一階段測試是為了度量和提高軟件的質(zhì)量,對軟件進行工程設計、實施和維護的整個生命周期過程。軟件測試技術的研究取得了很大的突破,不僅出現(xiàn)了很多測試模型,而且也出現(xiàn)了很多商業(yè)化的測試工具。
2軟件測試的理論基礎
2.1軟件測試的定義
軟件測試是在軟件生命周期內(nèi)運用技術手段保證軟件質(zhì)量的一門學科。其主要內(nèi)容包括軟件驗證技術、軟件確認技術和軟件測試管理技術這三大部分。軟件測試是根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)精心設計一批測試用例(即輸入數(shù)據(jù)及其預期的輸出結(jié)果),并利用這些測試用例運行程序以及發(fā)現(xiàn)錯誤的過程,即執(zhí)行測試步驟。
2.2軟件測試的目的
(1)測試是為了證明程序有錯,而不是證明程序無錯。
(2)一個好的測試用例在于它能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤。
(3)一個成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯誤的測試。
2.3軟件測試的主要方法
隨著軟件測試技術的日臻成熟,軟件測試方法與技術已經(jīng)發(fā)展得較為完善,現(xiàn)今軟件測試的方法很多,以下主要介紹幾種常用的軟件測試方法。
靜態(tài)測試不對代碼進行運行,而是借助專業(yè)的軟件測試工具評審軟件文檔或程序,度量靜態(tài)復雜度,通過分析或檢查源程序的文法、結(jié)構(gòu)、過程、接口等來檢查程序的正確性,借以發(fā)現(xiàn)程序的不足之處,降低程序出現(xiàn)錯誤的概率。靜態(tài)測試包括代碼審查、靜態(tài)結(jié)構(gòu)分析、代碼質(zhì)量度量等。
動態(tài)測試是通過人工或使用工具運行被測程序,檢查運行結(jié)果與預期結(jié)果的差異,并分析運行效率和健壯性等性能。該方法有三部分組成:構(gòu)造測試實例、執(zhí)行程序、分析程序的輸出結(jié)果。
黑盒測試是在軟件的功能知道的前提下,通過測試來檢測每個功能是否正常使用,是一種驗證性方法。測試的過程中程序的內(nèi)部是不可見的,在完全不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性的情況下,測試者在程序接口進行測試,只檢查程序功能是否按照需求規(guī)格說明書的規(guī)定正常使用,程序是否能適當?shù)亟邮蛰斎霐?shù)據(jù)而產(chǎn)生正確的輸出信息,并且保持外部信息的完整性。
白盒測試又稱為結(jié)構(gòu)測試,與黑盒測試不同,它是在知道產(chǎn)品的內(nèi)部工作過程,檢測產(chǎn)品內(nèi)部動作是否按照規(guī)格說明書的規(guī)定正常運行、按照程序內(nèi)部的結(jié)構(gòu)測試程序,檢驗程序中的每條通路是否都能按預定的要求正確工作。白盒測試的主要方法有邏輯驅(qū)動、路徑測試等,主要用于軟件驗證。
灰盒測試介于黑盒測試和白盒測試之間,主要用于測試各個組件之間的邏輯關系是否正確,重點在于測試程序的處理能力和健壯性,相對黑盒測試和白盒測試而言,投入的時間較少,維護量也較小。
3軟件測試的評估
軟件測試評估是在測試結(jié)束后對整個測試過程與產(chǎn)品進行評估的過程,主要包括對于測試工作的總結(jié)、缺陷數(shù)據(jù)的分析及測試過程的評估。
由圖1可知,加入了測試評估的測試過程能形成一個完整的測試反饋系統(tǒng),由此可見測試評估非常的重要。軟件測試評估是對軟件測試工作整體進展狀況的監(jiān)督和評價,是保證測試完整性和有效性的重要工作。軟件測試評估貫穿于軟件測試的整個過程,軟件測試評估的方法主要包括覆蓋評估和質(zhì)量評估。
覆蓋評估是對測試完全程度的評估,其建立在測試覆蓋的基礎之上,這通常與測試的定義相關,與完成計劃的程度相關。在測試的過程中,一些關于發(fā)現(xiàn)測試缺陷本身狀態(tài)的評估會展現(xiàn)出來,除此之外隨著測試工作的推進,測試完成的量會越來越多,所有這些與缺陷相關的測試評估稱為測試質(zhì)量評估。質(zhì)量評估是對測試軟件的整體質(zhì)量狀況的評估,其建立在對測試的過程中發(fā)現(xiàn)的軟件缺陷的分析和修復基礎之上。它不斷監(jiān)控軟件測試過程中總結(jié)出來的中間結(jié)果,然后通過對這些中間結(jié)果的分析又反過來對軟件測試的過程進行指導。
4結(jié)語
雖然在近年來,中國的軟件產(chǎn)業(yè)得到了飛速地發(fā)展,但國內(nèi)很少開發(fā)出世界范圍內(nèi)通用的軟件,且開發(fā)出的軟件在性能和質(zhì)量上也無法和國外大公司開發(fā)的產(chǎn)品相比較。軟件測試作為軟件開發(fā)過程中的一個重要環(huán)節(jié),長期以來一直滯后于中國軟件產(chǎn)業(yè)的發(fā)展。軟件測試作為一種保障軟件質(zhì)量的一種技術,應該貫穿于軟件生命周期的整個過程,通過嚴格的軟件測試可以將軟件中的錯誤減少到可以接受的程度,從而提高軟件的質(zhì)量。
參考文獻
[1] 秦航,楊強.軟件質(zhì)量保證與測試[M].北京:清華大學出版社,2012(1).
[2] 黃武,洪玫,楊秋輝,余靜.軟件測試與維護基礎教程[M].北京:機械工業(yè)出版社,2011(12).
[3] 陳衛(wèi)衛(wèi).軟件測試[M].西安:西安電子科技大學出版社,2011(12).