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