魏 鑫,安鵬偉,趙 菲,高 米
(北京京航計(jì)算通訊研究所,北京 100074)
隨著我國(guó)武器裝備技術(shù)的不斷發(fā)展,嵌入式軟件在武器裝備上的作用越來越重要,軟件的質(zhì)量和可靠性直接影響武器裝備產(chǎn)品的可靠性、實(shí)用性和安全性。因此,在軟件開發(fā)生命周期中進(jìn)行全面的軟件測(cè)試至關(guān)重要。
從國(guó)外發(fā)展?fàn)顩r來看,發(fā)達(dá)國(guó)家的軟件測(cè)試技術(shù)發(fā)展水平較高,已成為獨(dú)立的產(chǎn)業(yè),且在整個(gè)軟件技術(shù)發(fā)展中占有越來越重要的地位。測(cè)試人員的數(shù)量比重在不斷提升,軟件測(cè)試自動(dòng)化水平很高[1]。從國(guó)內(nèi)發(fā)展?fàn)顩r來看,我國(guó)軟件測(cè)試技術(shù)起步比較晚,與發(fā)達(dá)國(guó)家相比,還存在一定的差距,如對(duì)軟件測(cè)試重視度不足、軟件測(cè)試專業(yè)高端技術(shù)人員缺乏、自動(dòng)化測(cè)試水平不高等等。
為了提高軟件質(zhì)量,確保軟件的實(shí)現(xiàn)滿足用戶的需求,尤其是性能、接口等方面,采用黑盒測(cè)試方法開展軟件測(cè)試,成為嵌入式軟件的重要環(huán)節(jié)[2-3]。在軟件測(cè)試過程中,測(cè)試用例的設(shè)計(jì)是最關(guān)鍵的環(huán)節(jié)。本文重點(diǎn)介紹了黑盒測(cè)試技術(shù)的由來、原理、特點(diǎn),從黑盒測(cè)試方面研究軟件測(cè)試的技術(shù)和方法,介紹了運(yùn)用黑盒測(cè)試技術(shù)生成測(cè)試用例的主要方法,并給出該方法在大氣數(shù)據(jù)計(jì)算機(jī)軟件測(cè)試中的應(yīng)用。
黑盒測(cè)試是指把待測(cè)試程序或系統(tǒng)軟件看成一個(gè)黑盒子[4],在不知程序內(nèi)部結(jié)構(gòu)和處理過程的前提下,依靠程序接口進(jìn)行的測(cè)試,從而檢查軟件功能是否滿足軟件規(guī)格說明的要求,程序是否能接收輸入數(shù)據(jù)并產(chǎn)生正確的輸出數(shù)據(jù),并保持外部數(shù)據(jù)的完整性和正確性。因此,黑盒測(cè)試又稱功能測(cè)試或數(shù)據(jù)驅(qū)動(dòng)測(cè)試[5-6]。
黑盒測(cè)試又可稱為從用戶觀點(diǎn)和需求出發(fā)進(jìn)行的測(cè)試,由于黑盒測(cè)試不考慮程序內(nèi)部結(jié)構(gòu),只關(guān)注軟件是否能夠根據(jù)不同輸入給出符合需求規(guī)定的輸出,所以許多高層的測(cè)試(如確認(rèn)測(cè)試、系統(tǒng)測(cè)試、驗(yàn)收測(cè)試)都采用黑盒測(cè)試。
黑盒測(cè)試還包含非功能性測(cè)試,如性能測(cè)試(檢查軟件各項(xiàng)功能的性能是否達(dá)到相應(yīng)的指標(biāo))、強(qiáng)度測(cè)試(檢查軟件在各種極端條件下是否可以正常工作)、安全性測(cè)試等。
黑盒測(cè)試分為靜態(tài)和動(dòng)態(tài)兩種。靜態(tài)黑盒測(cè)試是不運(yùn)行待測(cè)試軟件,只對(duì)軟件需求規(guī)格說明進(jìn)行文檔審查。動(dòng)態(tài)黑盒測(cè)試是運(yùn)行待測(cè)試軟件,檢查其功能的正確性和完整性等。
檢查軟件需求規(guī)格,一方面發(fā)現(xiàn)軟件需求規(guī)格說明中可能存在的問題,另一方面在充分理解軟件需求規(guī)格說明的基礎(chǔ)上,對(duì)軟件輸入進(jìn)行等價(jià)類劃分和邊界值分析,構(gòu)建因果圖、狀態(tài)轉(zhuǎn)換圖以及輸入等,并對(duì)系統(tǒng)進(jìn)行適當(dāng)?shù)腻e(cuò)誤猜測(cè),從而進(jìn)行黑盒測(cè)試。
采用黑盒測(cè)試設(shè)計(jì)測(cè)試用例的主要方法有:等價(jià)類劃分方法、邊界值分析方法、功能分解方法、錯(cuò)誤推測(cè)法和因果圖分析方法等,下面簡(jiǎn)單介紹這幾種測(cè)試方法。
等價(jià)類是指某個(gè)輸入域的集合,在這個(gè)集合中每個(gè)輸入條件都是等效的。等價(jià)類劃分方法是一種典型的黑盒測(cè)試方法,它不考慮程序內(nèi)部結(jié)構(gòu),首先根據(jù)需求規(guī)格說明對(duì)輸入范圍進(jìn)行劃分,把所有可能的輸入數(shù)據(jù)分為若干個(gè)互不相交的子集,稱為等價(jià)類,然后從等價(jià)類中選取代表性的數(shù)據(jù)作為測(cè)試用例進(jìn)行測(cè)試[7]。等價(jià)類中的元素有共同特征,如果用等價(jià)類中一個(gè)元素作為測(cè)試數(shù)據(jù)不能發(fā)現(xiàn)程序中的故障,那么使用集合中的其他元素進(jìn)行測(cè)試也不能發(fā)現(xiàn)故障。
使用等價(jià)類劃分方法設(shè)計(jì)測(cè)試用例,在分析需求規(guī)格說明的基礎(chǔ)上劃分等價(jià)類,列出等價(jià)類表。等價(jià)類劃分有兩類:有效等價(jià)類和無效等價(jià)類。有效等價(jià)類指符合需求規(guī)格說明,合理的輸入數(shù)據(jù)構(gòu)成的集合;無效等價(jià)類指不合理的輸入數(shù)據(jù)所構(gòu)成的集合[8]。設(shè)計(jì)測(cè)試用例時(shí),需要同時(shí)考慮這兩種等價(jià)類。因?yàn)檐浖纫邮蘸侠淼臄?shù)據(jù)輸入,也要能接收非法的數(shù)據(jù)輸入,這樣的測(cè)試才能確保軟件具有更高的可靠性。
邊界值分析方法作為等價(jià)類劃分方法的有效補(bǔ)充,主要針對(duì)各種邊界情況設(shè)計(jì)測(cè)試用例。邊界值分析關(guān)注的是輸入、輸出空間的邊界條件,用以選擇測(cè)試用例。
一些與邊界有關(guān)的數(shù)據(jù)類型,一般有數(shù)值、數(shù)量、速度、位置等。這些數(shù)據(jù)類型可以考慮幾方面特征:最大和最小、最長(zhǎng)和最短、最慢和最快、最高和最低、最近和最遠(yuǎn)等[9]。
邊界測(cè)試只測(cè)試邊界線上的數(shù)據(jù)點(diǎn)是不充分的,一定要考慮臨近邊界的合法數(shù)據(jù),即測(cè)試最后一個(gè)可能合法的數(shù)據(jù),以及剛剛超過邊界的非法數(shù)據(jù)。
錯(cuò)誤猜測(cè)法基于測(cè)試人員的經(jīng)驗(yàn)和直覺來推測(cè)系統(tǒng)軟件可能存在的各種缺陷,是有針對(duì)性地設(shè)計(jì)測(cè)試用例的方法。錯(cuò)誤猜測(cè)法的基本原理是利用直覺和經(jīng)驗(yàn)猜測(cè)出錯(cuò)的可能類型,然后編寫測(cè)試用例腳本來暴露這些缺陷[10]。
因果圖法適用于多種輸入條件組合的測(cè)試方法。因果圖法可彌補(bǔ)邊界值分析法和等價(jià)類劃分法中未對(duì)輸入條件之間的聯(lián)系、相互組合等進(jìn)行驗(yàn)證的情況。
當(dāng)輸入條件存在若干可能的組合時(shí),需對(duì)這些組合加以考慮,證明測(cè)試程序在某種輸入組合的情況下能否完成軟件需求規(guī)格說明規(guī)定的要求。該方法可以幫助測(cè)試人員按照設(shè)計(jì)步驟選擇高效的測(cè)試用例,同時(shí)可以檢查出程序缺陷[11]。
黑盒測(cè)試是發(fā)現(xiàn)軟件缺陷提高軟件質(zhì)量的一種非常有效的方法,通過黑盒測(cè)試能夠驗(yàn)證整個(gè)軟件的功能、性能、安全性等指標(biāo)是否符合軟件需求規(guī)格說明中的要求[12-13]。
大氣數(shù)據(jù)計(jì)算機(jī)屬于大氣數(shù)據(jù)系統(tǒng),通過自身探頭采集大氣總壓、靜壓等,解算得出氣壓高度、空速等大氣參數(shù)。通過外部接口將解算的數(shù)據(jù)發(fā)送給主控計(jì)算機(jī)、慣導(dǎo)等系統(tǒng)并接收主控計(jì)算機(jī)系統(tǒng)發(fā)送的加溫指令等信息,并向采集記錄設(shè)備發(fā)送數(shù)據(jù)信息。
大氣數(shù)據(jù)計(jì)算機(jī)軟件屬于嵌入式軟件,在大氣數(shù)據(jù)計(jì)算機(jī)軟件的黑盒測(cè)試過程中采用上述測(cè)試方法設(shè)計(jì)測(cè)試用例,不僅可以突出重點(diǎn),提高效率,發(fā)現(xiàn)問題,且實(shí)用快捷,能夠縮短測(cè)試周期。
大氣數(shù)據(jù)計(jì)算機(jī)軟件在大氣數(shù)據(jù)計(jì)算機(jī)上運(yùn)行,通過綜合測(cè)試設(shè)備模擬記錄設(shè)備、慣導(dǎo)、主控計(jì)算機(jī)等數(shù)據(jù)信息。壓力測(cè)試儀通過電纜與大氣數(shù)據(jù)計(jì)算機(jī)連接,AC220V和DC28V電源分別給綜合測(cè)試設(shè)備和大氣數(shù)據(jù)計(jì)算機(jī)提供電源,如圖1所示。大氣數(shù)據(jù)計(jì)算機(jī)軟件的配置項(xiàng)測(cè)試環(huán)境主要以其設(shè)計(jì)開發(fā)環(huán)境的硬件和軟件為基礎(chǔ)構(gòu)建,所有測(cè)試組件均根據(jù)測(cè)試用例的要求設(shè)計(jì),以構(gòu)建出接近真實(shí)的軟件運(yùn)行外部環(huán)境。該配置項(xiàng)環(huán)境主要完成功能需求測(cè)試和非功能需求測(cè)試。
上電自檢測(cè)主要采用等價(jià)類劃分的方法設(shè)計(jì)測(cè)試用例。根據(jù)上電自檢測(cè)的功能要求,主要對(duì)傳感器特征數(shù)據(jù)的有效性等各項(xiàng)功能進(jìn)行檢查。選取正常等價(jià)類和無效等價(jià)類的方法對(duì)上電自檢測(cè)進(jìn)行設(shè)計(jì),設(shè)計(jì)6個(gè)測(cè)試用例,具體測(cè)試用例如表1所示。

表1 上電自檢測(cè)采用等價(jià)類劃分方法設(shè)計(jì)用例
又如,大氣數(shù)據(jù)計(jì)算機(jī)軟件對(duì)采集的數(shù)據(jù)進(jìn)行限幅。在驗(yàn)證軟件對(duì)采集和接收的數(shù)據(jù)進(jìn)行限幅時(shí),采用等價(jià)類劃分的方法設(shè)計(jì)用例,根據(jù)限定的幅值,對(duì)采集的數(shù)據(jù)按照有效等價(jià)類和無效等價(jià)類設(shè)計(jì)測(cè)試用例,選取代表性數(shù)據(jù)作為測(cè)試用例,既保證了測(cè)試覆蓋全面,又提高了測(cè)試效率。具體的測(cè)試用例如表2所示。

表2 等價(jià)類劃分法設(shè)計(jì)采集數(shù)據(jù)限幅功能測(cè)試用例
等價(jià)類劃分法是一種科學(xué)有效的方法,該方法將無限的輸入空間簡(jiǎn)化為小規(guī)模的有效集合,避免盲目或隨機(jī)選取輸入數(shù)據(jù)的不完整性和覆蓋的不全面性。在大氣數(shù)據(jù)計(jì)算機(jī)軟件功能測(cè)試和接口測(cè)試中設(shè)計(jì)出完整的測(cè)試用例,減少不必要的測(cè)試用例,大大減少工作量,有效提高測(cè)試效率。
大氣數(shù)據(jù)計(jì)算機(jī)軟件在動(dòng)態(tài)測(cè)試時(shí),有許多數(shù)據(jù)臨界處理需要采用邊界值分析方法進(jìn)行測(cè)試用例設(shè)計(jì)。對(duì)靜壓溫度電壓測(cè)試采用了邊界值分析法,設(shè)計(jì)了至少6個(gè)測(cè)試用例,如表3所示。

表3 邊界值分析方法設(shè)計(jì)用例
在大氣數(shù)據(jù)計(jì)算機(jī)軟件測(cè)試中,涉及數(shù)據(jù)臨界處理的功能測(cè)試,均使用了邊界值分析法,實(shí)際測(cè)試發(fā)現(xiàn),邊界值分析法很容易發(fā)現(xiàn)程序的缺陷,提高了測(cè)試效率和軟件質(zhì)量。
利用錯(cuò)誤推測(cè)法在大氣數(shù)據(jù)計(jì)算機(jī)軟件測(cè)試中設(shè)計(jì)了很多行之有效的測(cè)試用例。例如:對(duì)要求輸入數(shù)字的地方,設(shè)計(jì)輸入字母、空格等的測(cè)試用例;對(duì)只接受正數(shù)的地方,設(shè)計(jì)輸入負(fù)數(shù)的測(cè)試用例;對(duì)要求輸入范圍的數(shù)據(jù),如對(duì)范圍在[-999,999]內(nèi),設(shè)計(jì)特殊數(shù)據(jù)0等的測(cè)試用例;對(duì)經(jīng)緯度數(shù)據(jù)測(cè)試設(shè)計(jì)測(cè)試用例時(shí),設(shè)計(jì)輸入90、180、270等的測(cè)試用例。實(shí)際執(zhí)行上述測(cè)試用例,發(fā)現(xiàn)了不少問題,有的問題還導(dǎo)致了程序異常退出,因此采用錯(cuò)誤推測(cè)法設(shè)計(jì)測(cè)試用例是非常有效的。
采用因果圖方法設(shè)計(jì)用戶界面登錄的測(cè)試用例,有3個(gè)組合項(xiàng),賬號(hào)、密碼、登錄確認(rèn)按鈕。在測(cè)試時(shí),采用因果圖的方法,整理出3個(gè)正常輸入條件和3個(gè)異常輸入條件,進(jìn)而畫出因果圖(見圖2),然后從因果圖導(dǎo)出判定表(見表4),最后從判定表導(dǎo)出測(cè)試用例(見表5)。

1234567原因輸入6~10位自然數(shù)賬號(hào)1100000點(diǎn)擊登錄按鈕1111111輸入6~16密碼(非空、非保留字、非功能鍵、非漢字)1010000輸入<6或>10的賬號(hào)0000101賬號(hào)為空、空格、負(fù)數(shù)、小數(shù)、英文字母、特殊字符、編程中轉(zhuǎn)義字符0000010密碼為空、空格、<6位或>16位、保留字、漢字、功能鍵0000001結(jié)果正確登錄1000000錯(cuò)誤提示0111111

表5 從判定表導(dǎo)出測(cè)試用例
通過黑盒測(cè)試技術(shù)在大氣數(shù)據(jù)計(jì)算機(jī)軟件測(cè)試中的實(shí)踐,總結(jié)出黑盒測(cè)試方法選擇測(cè)試策略如下:
首先,進(jìn)行等價(jià)類劃分,包括輸入條件和輸出條件的等價(jià)類劃分,將無限測(cè)試變成有限測(cè)試,是減少測(cè)試工作量和提高測(cè)試效率最有效的方法。
其次,在任何情況下都必須使用邊界值分析方法,用這種方法設(shè)計(jì)出的測(cè)試用例發(fā)現(xiàn)程序錯(cuò)誤的能力最強(qiáng)。
然后,用錯(cuò)誤推測(cè)法追加一些測(cè)試用例,該方法需要依靠測(cè)試人員的智慧和經(jīng)驗(yàn)。
最后,如果軟件功能中含有輸入條件的組合情況,選用因果圖法和判定表驅(qū)動(dòng)法,以保證覆蓋充分全面。
黑盒測(cè)試不是基于無知的測(cè)試,它意味著產(chǎn)品內(nèi)部知識(shí)在測(cè)試中不起重要作用,重點(diǎn)強(qiáng)調(diào)有關(guān)軟件的用戶和環(huán)境知識(shí),大氣數(shù)據(jù)計(jì)算機(jī)軟件這種嵌入式系統(tǒng)具有很強(qiáng)的專用性和硬件依賴性。本文重點(diǎn)以黑盒測(cè)試技術(shù)的等價(jià)類劃分法、邊界值分析方法和因果圖法為研究?jī)?nèi)容,以大氣數(shù)據(jù)計(jì)算機(jī)軟件作為測(cè)試實(shí)踐,從用戶角度闡述輸入數(shù)據(jù)和輸出數(shù)據(jù)的關(guān)系,驗(yàn)證黑盒測(cè)試技術(shù)方法對(duì)軟件的功能、非功能需求測(cè)試的正確性。技術(shù)研究和測(cè)試結(jié)果表明,采用等價(jià)類劃方法、邊界值分析方法和因果圖法與傳統(tǒng)測(cè)試方法相比,節(jié)省大量人力,提高動(dòng)態(tài)測(cè)試效率,發(fā)現(xiàn)大量軟件缺陷,有效提高了軟件質(zhì)量,具有較好的推廣價(jià)值。