柏文琦
(湖南省計量檢測研究院,長沙 410014)
隨著信息科學(xué)的快速發(fā)展,特別是計算機技術(shù)在各行各業(yè)逐漸得到普遍的應(yīng)用。在現(xiàn)代社會中,人們在生活、勞動、科研及教育等眾多領(lǐng)域都引入了計算機軟件,且對其的依賴性越來越強。同樣,在現(xiàn)代計量檢測工作中,計算機技術(shù)與很多計量儀器的結(jié)合,開辟了全新的、先進(jìn)的工作方法和研究領(lǐng)域。在實際的計量工作中,計算機軟件已經(jīng)成為一種智能的、自動化的計量儀器。然而,由于軟件是由人來設(shè)計開發(fā)的,其實際功能不可能完美無缺,一些人為的錯誤或疏忽不可避免,導(dǎo)致計算機軟件在實際的應(yīng)用中可能會出現(xiàn)這樣或那樣的錯誤,給生產(chǎn)生活造成不必要的麻煩,甚至是無可挽回的經(jīng)濟損失。因此,在軟件投入使用之前應(yīng)對其進(jìn)行認(rèn)真、科學(xué)和全面的測試,盡早發(fā)現(xiàn)軟件中的缺陷,并采取措施對其進(jìn)行改進(jìn),避免將軟件的錯誤帶入實際的生產(chǎn)、生活中。通常來講,在軟件開發(fā)的總開銷中,軟件測試開銷將達(dá)到30%~50%,若再加上軟件投入使用后,由于軟件本身的缺陷而導(dǎo)致的軟件維護(hù)開銷,軟件開發(fā)將會有40%以上的成本和時間要花費在軟件測試上,在一些極端的情況下,軟件測試的費用甚至?xí)鲕浖_發(fā)其他步驟費用總和的若干倍。由此可見,軟件測試在軟件開發(fā)過程中具有非常更重要作用,特別是將計算機軟件應(yīng)用于計量測試這樣對準(zhǔn)確度要求較高的量化工作領(lǐng)域時,軟件測試的地位就顯得更為重要了。
在計量工作中,科學(xué)儀器具有非常重要的作用,通常一流的科學(xué)研究往往都依賴于一流的科學(xué)儀器。隨著計算機科學(xué)技術(shù)的快速發(fā)展,人們已經(jīng)逐漸接受這樣的一個事實:“計算機軟件就是儀器、就是設(shè)備”[3]。從儀器操作人員的角度來看,所有的操作過程直接接觸的不再是傳感器、電流、電壓等客觀物體或參數(shù),而是變成了觸摸屏、選擇菜單、按鈕等事先由軟件設(shè)置好的程序,以前計量測試過程中所用到的傳感器、電橋等都被封裝在軟件的背后,使操作人員無需也無法知道傳感器的反饋電壓是多少等等這類信息,軟件自動的將這類信息轉(zhuǎn)換成我們能讀得懂的形式展現(xiàn),軟件就像外衣一樣包裹著儀器。
近年來,隨著計算機技術(shù)的應(yīng)用領(lǐng)域不斷拓寬,軟件應(yīng)用規(guī)模的不斷擴大及復(fù)雜性的不斷增加,ISO、ANSI及IEEE等眾多關(guān)于軟件測試和質(zhì)量控制的國際標(biāo)準(zhǔn)相繼問世,使軟件測試和軟件質(zhì)量得到了廣泛的關(guān)注。人們逐漸意識到軟件測試不單單是發(fā)現(xiàn)錯誤,還應(yīng)包括對軟件質(zhì)量的評價,是保證軟件質(zhì)量的重要手段。2004年,IEC和ISO的第一聯(lián)合技術(shù)委員會在軟件工程標(biāo)準(zhǔn)術(shù)語中將“軟件測試”定義為:是為標(biāo)識軟件問題及缺陷,評價并改進(jìn)軟件質(zhì)量而進(jìn)行的活動。即軟件測試并不僅僅是單純找出軟件系統(tǒng)的錯誤,還要包括對缺陷的評價以及如何改進(jìn),因此測試是一個貫穿于軟件開發(fā)過程始終的、科學(xué)的質(zhì)量控制過程。
傳統(tǒng)計量測試是對某個系統(tǒng)進(jìn)行測定,判斷其性能是否滿足需求,或者確定實際結(jié)果與預(yù)期結(jié)果之間的差別,與軟件測試技術(shù)的主要區(qū)別在于測量的對象不同。因此,軟件測試是傳統(tǒng)計量測試的拓展與延伸,是現(xiàn)代計量技術(shù)的重要分支。計算機技術(shù)與傳統(tǒng)計量測試技術(shù)的交叉融合構(gòu)成了現(xiàn)代軟件測試技術(shù)的基礎(chǔ)。
由于軟件開發(fā)各個階段工作的復(fù)雜性與多樣性,及各階段工作人員間工作的配合關(guān)系,使得開發(fā)的每個階段都可能有錯誤產(chǎn)生。因此軟件測試不是軟件開發(fā)過程中的某個獨立的階段,而是貫穿于軟件開發(fā)各個階段的一個過程,應(yīng)堅持在各個階段進(jìn)行詳細(xì)的測試及技術(shù)評審,盡早發(fā)現(xiàn)并預(yù)防錯誤。軟件測試的W模型能夠具體地表現(xiàn)出軟件測試與軟件開發(fā)的同步性,如圖1所示。
完整的測試用例包括測試的輸入數(shù)據(jù)和這些輸入數(shù)據(jù)所對應(yīng)的預(yù)期輸出結(jié)果。在設(shè)計測試用例時,還應(yīng)考慮其合理及不合理的輸入條件。在軟件設(shè)計的合理范圍內(nèi)能夠驗證軟件的輸入條件是合理輸入條件;在軟件設(shè)計的合理范圍之外的、臨界的、異常的輸入條件是不合理輸入條件。用不合理的輸入條件對軟件進(jìn)行測試能夠檢測軟件的完整性及容錯能力,常常會比合理輸入條件發(fā)現(xiàn)更多、更全面的錯誤。
圖1 軟件測試的W模型
由于在軟件開發(fā)中,可能會由于對問題的說明不清或表達(dá)有歧義而引起誤解,導(dǎo)致錯誤,這種情況一般開發(fā)人員自己很難發(fā)現(xiàn)。另外從心理角度來講,開發(fā)人員一般都不希望自己的程序會出錯。因此,軟件測試工作一般應(yīng)由開發(fā)組成員以外的工作人員來完成,這樣會更有效、更客觀。
軟件測試方法可以分為靜態(tài)測試和動態(tài)測試兩大類。
3.1.1靜態(tài)測試
靜態(tài)測試主要是對被測軟件進(jìn)行特性分析,要是手動測試,采用不在計算機上運行被測試的軟件的其他手段達(dá)到測試目的。靜態(tài)測試能夠有效地發(fā)現(xiàn)軟件中30%~70%的編碼錯誤和邏輯錯誤。
3.1.2動態(tài)測試
動態(tài)測試需要在計算機上運行被測試軟件,通過輸入相應(yīng)的測試用例,判定執(zhí)行結(jié)果的合理性,對被測軟件的可靠性、有效性及正確性進(jìn)行判斷。動態(tài)測試包括“白盒”測試和“黑盒”測試2種方法。
1)“白盒”測試主要從細(xì)節(jié)出發(fā)進(jìn)行測試,為檢查被測軟件的分支及循環(huán)的有效性,為每條邏輯路徑分別設(shè)計測試用例。一般選用最有效,即產(chǎn)生錯誤的可能性最大的路徑進(jìn)行測試,因此,在“白盒”測試中,合理地設(shè)計測試用例是至關(guān)重要的。
2)“黑盒”測試主要從整體出發(fā),在軟件界面上進(jìn)行軟件測試,并不考慮軟件的處理過程及內(nèi)部結(jié)構(gòu)。其作用是判斷被測軟件的功能是否具有可操作性及有效性,即軟件是否能夠正確接收數(shù)據(jù),并輸出合理的結(jié)果等。
在實際進(jìn)行軟件測試時,應(yīng)在不同階段為找出不同類型的錯誤而合理地選用“白盒”測試和“黑盒”測試,二者應(yīng)相互補充,而不能相互替代。
此外,根據(jù)測試的自動化程度,還可將軟件測試分為自動測試和手動測試。軟件測試最初都是手動進(jìn)行的,隨著軟件規(guī)模的不斷增加,自動測試逐漸凸顯出其優(yōu)越性,而漸漸被廣泛認(rèn)可。軟件自動測試效率高、開銷低、還能完成手工測試難以實現(xiàn)的測試。
軟件測試過程一般包括以下4步:單元測試、組裝測試、確認(rèn)測試及系統(tǒng)測試,圖2給出了簡單的測試流程圖。
圖2 軟件測試流程圖
3.2.1單元測試
單元測試是根據(jù)設(shè)計要求,對被測軟件的每個功能對應(yīng)的獨立程序塊進(jìn)行測試,通過對各個單元進(jìn)行檢查,判斷該功能能否滿足設(shè)計需求。一般在某一程序模塊的編程完成后,直接由程序員進(jìn)行相應(yīng)的單元測試,往往采用“白盒”測試的方法對程序內(nèi)部結(jié)構(gòu)進(jìn)行檢查,重點發(fā)現(xiàn)代碼的編寫錯誤,并加以解決。
3.2.2組裝測試
單元測試成功完成后,在將若干程序模塊組裝成系統(tǒng)時,對各模塊間的接口及通訊進(jìn)行的檢查稱為組裝測試。一般有兩種方法:增式和非增式方法。把待測試的模塊組裝到已測好的模塊組上進(jìn)行測試的方法為增式方法;把所有已通過單元測試的模塊組合成整個系統(tǒng),然后再對該系統(tǒng)進(jìn)行統(tǒng)一測試的方法為非增式方法。一般在基本完成了軟件開發(fā)編碼工作后,由負(fù)責(zé)不同模塊的開發(fā)人員一起完成組裝測試。
3.2.3確認(rèn)測試
確認(rèn)測試也可稱為有效性測試,主要用來驗證軟件的配置是否合理、軟件功能是否完善以及性能是否滿足用戶的所有需求。系統(tǒng)測試通常根據(jù)軟件需求說明書,通過黑盒測試法進(jìn)行測試,在實際測試過程中,將通過確認(rèn)測試的軟件與支持軟件的數(shù)據(jù)、計算機硬件、外設(shè)及相關(guān)人員等結(jié)合在一起,通過實際運行對整個系統(tǒng)進(jìn)行測試。通常應(yīng)有最終用戶代表進(jìn)行實際的系統(tǒng)測試。
現(xiàn)代計量技術(shù)及計算機技術(shù)的發(fā)展與應(yīng)用,使得軟件測試技術(shù)越來越廣泛地應(yīng)用到生產(chǎn)生活的各個方面。但在我國的計量領(lǐng)域,軟件測試技術(shù)的發(fā)展還很落后,這就需要相關(guān)工作者認(rèn)真研究、努力創(chuàng)新,爭取為計量工作及軟件測試工作開拓出新的局面。
[1]薛賽男,趙偉.軟件測試技術(shù)——計量測試技術(shù)的新領(lǐng)域[J].計量技術(shù),2003(5)
[2]廚煜,周國慶,奚文駿.軟件測試技術(shù)概述[J].中國測試技術(shù),2005,3(3)
[3]黃俊.淺談具有計量特色的軟件測試人才培養(yǎng)[J].計算機教育,2008,18:070
[4]聶長海.關(guān)于軟件測試的幾點思考[J].計算機科學(xué)2011.02(11)
[5]薛沖沖,陳堅.軟件測試研究[J].計算機系統(tǒng)應(yīng)用.2011(2)
[6]張云崗,劉春茂.軟件測試技術(shù)淺析[J].技術(shù)與市場.2011(2)