引言
軟件質(zhì)量即業(yè)務(wù)生命。軟件測(cè)試項(xiàng)目已經(jīng)變得比以往任何時(shí)候都復(fù)雜和困難。1979年,Glenford Myers在《The Art of Software Testing》一書中提出“測(cè)試的目的是證偽”這一概念,推翻了過(guò)去“為表明軟件正確而進(jìn)行測(cè)試”的錯(cuò)誤認(rèn)識(shí),為軟件測(cè)試的發(fā)展指出了方向,軟件測(cè)試的理論、方法在之后得到了長(zhǎng)足的發(fā)展。但是,目前中國(guó)許多軟件企業(yè)仍存在著“重開發(fā)、輕測(cè)試”的傾向,從而造成軟件產(chǎn)品的質(zhì)量問(wèn)題日漸突出。因此,如何制定有效的軟件測(cè)試過(guò)程、保障軟件業(yè)的健康化發(fā)展,已成為當(dāng)務(wù)之急。
嵌入式軟件作為軟件家族中重要的分支,在當(dāng)今人民生活和國(guó)防事業(yè)中得到越來(lái)越廣泛的應(yīng)用,由于嵌入式軟件自身軟硬件結(jié)合的復(fù)雜性、其質(zhì)量的重要性,也造就了其軟件測(cè)試的特殊性,那就是在執(zhí)行正常軟件測(cè)試的單元測(cè)試、集成測(cè)試、配置項(xiàng)測(cè)試、系統(tǒng)測(cè)試的過(guò)程中,還要考慮到軟件與硬件的兼容問(wèn)題,即需要進(jìn)行軟、硬件集成測(cè)試。本文將重點(diǎn)研究嵌入式軟件與硬件集成時(shí)的測(cè)試過(guò)程。
根據(jù)筆者在嵌入式軟件測(cè)試工作過(guò)程中的經(jīng)驗(yàn),歸納提出了軟硬件集成測(cè)試過(guò)程,同時(shí)結(jié)合當(dāng)前軟件測(cè)試?yán)碚撉把刂R(shí),把該測(cè)試過(guò)程進(jìn)行重組和改進(jìn),并給出了測(cè)試模型,以期嵌入式軟件與硬件集成測(cè)試過(guò)程能夠在實(shí)際中廣泛應(yīng)用。
1 、嵌入式軟件測(cè)試基本概念
1.1 嵌入式軟件
和普通計(jì)算機(jī)系統(tǒng)一樣,嵌入式系統(tǒng)除了需要硬件結(jié)構(gòu)和配置外,還需要相應(yīng)軟件的支持才能完整地實(shí)現(xiàn)系統(tǒng)的功能。目前,嵌入式系統(tǒng)的軟件體系結(jié)構(gòu)通常都采用以實(shí)時(shí)內(nèi)核為基礎(chǔ)的分層體系結(jié)構(gòu)。組成嵌入式系統(tǒng)的軟件大致可分為如下幾層:
驅(qū)動(dòng)層(硬件抽象層):驅(qū)動(dòng)層是最靠近硬件的一層,它屬于最底層的軟件,直接和硬件打交道,它為操作系統(tǒng)內(nèi)核和應(yīng)用提供使用硬件的接口即驅(qū)動(dòng)的支持。
操作系統(tǒng)層(實(shí)時(shí)內(nèi)核層):該層的主要功能是協(xié)助最頂層的應(yīng)用層更好地進(jìn)行任務(wù)的調(diào)度、消息管理和異常處理等工作,由于該層的支持,特別是實(shí)時(shí)內(nèi)核的作用,大大地減輕了嵌入式軟件開發(fā)人員開發(fā)嵌入式軟件的難度,同時(shí)也縮短了嵌入式軟件的開發(fā)周期。
應(yīng)用軟件實(shí)現(xiàn)支持層:嵌入式應(yīng)用軟件的實(shí)現(xiàn)需要編程語(yǔ)言的支持。目前,應(yīng)用于嵌入式軟件編程語(yǔ)言主要有面向過(guò)程的語(yǔ)言C和面向?qū)ο蟮木幊陶Z(yǔ)言C++、ADA等,應(yīng)用這些語(yǔ)言開發(fā)的應(yīng)用程序在嵌入式系統(tǒng)中運(yùn)行時(shí)都需要相應(yīng)的編譯器或解釋器的支持,轉(zhuǎn)換成相應(yīng)的機(jī)器碼,才能在嵌入式系統(tǒng)中實(shí)現(xiàn)應(yīng)用程序?qū)?yīng)的功能。
應(yīng)用層:應(yīng)用層軟件主要由多個(gè)相對(duì)獨(dú)立的應(yīng)用任務(wù)組成,每個(gè)應(yīng)用任務(wù)完成特定的工作,如計(jì)算任務(wù)和通信任務(wù)等,各個(gè)任務(wù)的運(yùn)行由操作系統(tǒng)進(jìn)行調(diào)度。
1.2 測(cè)試用語(yǔ)
嵌入式軟件(Embedded Software):嵌入式計(jì)算機(jī)系統(tǒng)中的軟件,其與硬件聯(lián)系緊密,并且通常要求強(qiáng)實(shí)時(shí)性。
測(cè)試環(huán)境(TeST EnvirONment):執(zhí)行測(cè)試程序所需要的硬件平臺(tái)和軟件資源構(gòu)成的環(huán)境。
測(cè)試用例(Test Case):為測(cè)試項(xiàng)規(guī)定輸入、預(yù)期結(jié)果和一組執(zhí)行條件的文檔。
測(cè)試程序(Test Procedure):執(zhí)行測(cè)試用例的程序形式,其執(zhí)行需要相應(yīng)測(cè)試環(huán)境的支持。
問(wèn)題描述報(bào)告(Problem DescripTIon Report):對(duì)軟件測(cè)試過(guò)程中發(fā)現(xiàn)問(wèn)題的簡(jiǎn)要描述。
更改的判定條件覆蓋(Modified Condition/Decision Coverage, MC/DC):對(duì)設(shè)計(jì)足夠多的測(cè)試用例,使得判定中每個(gè)條件的所有可能結(jié)果至少出現(xiàn)一次,每個(gè)判定本身的所有可能結(jié)果也至少出現(xiàn)一次,每個(gè)入口點(diǎn)和出口點(diǎn)至少要喚醒一次,并且每個(gè)條件都顯示能單獨(dú)影響判定結(jié)果。
圖1 嵌入式軟件軟硬件集成測(cè)試過(guò)程
2 、 軟硬件集成測(cè)試過(guò)程
軟硬件集成測(cè)試應(yīng)該在嵌入式軟件集成測(cè)試完成的基礎(chǔ)上進(jìn)行。此時(shí)軟件已按照功能模塊組裝成子系統(tǒng),為了有效驗(yàn)證該子系統(tǒng)軟件與硬件功能的協(xié)調(diào)性,保證軟件在特定的硬件平臺(tái)上能夠按照設(shè)計(jì)的要求進(jìn)行工作,完成其要求的功能、性能指標(biāo),就必須進(jìn)行嵌入式軟件的軟硬件集成測(cè)試。
2.1 嵌入式軟件測(cè)試過(guò)程
軟件開發(fā)人員在開發(fā)過(guò)程中,一般遵循如下步驟:
① 系統(tǒng)軟硬件功能劃分,形成軟、硬件研制任務(wù)書。
② 系統(tǒng)軟件需求分析。
③ 系統(tǒng)軟件概要設(shè)計(jì)。
④ 系統(tǒng)軟件詳細(xì)設(shè)計(jì)。
⑤ 軟件編碼。
測(cè)試人員恰恰以相反的步驟實(shí)現(xiàn)測(cè)試過(guò)程:
① 單元測(cè)試。軟件單元測(cè)試的目的是檢測(cè)程序模塊是否符合《詳細(xì)設(shè)計(jì)說(shuō)明書》的要求。通常會(huì)采用白盒測(cè)試技術(shù),如基于路徑覆蓋原理等。
② 集成測(cè)試(配置項(xiàng)測(cè)試)。軟件集成測(cè)試的目的是檢測(cè)程序是否符合《概要設(shè)計(jì)說(shuō)明書》的要求。通常采用黑盒測(cè)試技術(shù),但有時(shí)為了確保主要控制路徑的覆蓋測(cè)試,也會(huì)采用一定的白盒測(cè)試技術(shù)。
③ 軟硬件集成測(cè)試。軟硬件集成測(cè)試的目的是為了檢測(cè)系統(tǒng)劃分軟硬件功能后,在軟件集成測(cè)試完成的基礎(chǔ)上,測(cè)試模塊軟件在硬件平臺(tái)上的運(yùn)行情況,主要是對(duì)嵌入式軟件的實(shí)時(shí)性、嵌入性及功能性能指標(biāo)的測(cè)試。
④ 系統(tǒng)測(cè)試。關(guān)注所設(shè)計(jì)的系統(tǒng),在模塊與模塊集成之后構(gòu)成完整系統(tǒng)時(shí)所表現(xiàn)出的質(zhì)量指標(biāo),包括正確性、可擴(kuò)性等。
⑤ 確認(rèn)測(cè)試。針對(duì)確認(rèn)標(biāo)準(zhǔn)的測(cè)試。確認(rèn)標(biāo)準(zhǔn)由需求分析產(chǎn)生,所以實(shí)際上就是指規(guī)格化的需求,通常采用黑盒測(cè)試技術(shù)。
2.2 軟硬件集成測(cè)試過(guò)程
由圖1可以看到,軟硬件集成測(cè)試主要是在軟件集成測(cè)試完成后,形成獨(dú)立的配置項(xiàng),加載到相應(yīng)的硬件平臺(tái)上進(jìn)行測(cè)試,以確定軟硬件是否能夠協(xié)同工作,實(shí)現(xiàn)系統(tǒng)既定的功能。
具體分為以下幾個(gè)步驟:
① 系統(tǒng)測(cè)試組負(fù)責(zé)與系統(tǒng)工程組共同完成制定《軟硬件集成測(cè)試計(jì)劃》和《軟硬件集成測(cè)試計(jì)劃測(cè)試說(shuō)明》的編寫。
② 按軟件*審管理辦法,對(duì)《軟硬件集成測(cè)試計(jì)劃》和《軟硬件集成測(cè)試說(shuō)明》進(jìn)行同行*審。
③ 根據(jù)*審意見(jiàn),對(duì)《軟硬件集成測(cè)試計(jì)劃》和《軟硬件集成測(cè)試說(shuō)明》修改完善,履行審批手續(xù)后歸檔、入庫(kù)。
④ 系統(tǒng)測(cè)試組按《軟硬件集成測(cè)試計(jì)劃》、《軟硬件集成測(cè)試說(shuō)明》,實(shí)施軟硬件集成測(cè)試。
⑤ 系統(tǒng)工程組組織軟件、硬件項(xiàng)目組協(xié)助確定和定位軟件中存在的缺陷和錯(cuò)誤。
⑥ 軟件工程組對(duì)發(fā)現(xiàn)的軟件缺陷和錯(cuò)誤進(jìn)行確認(rèn)和更改。
⑦ 測(cè)試人員對(duì)更改后的軟件配置項(xiàng)進(jìn)行回歸測(cè)試。
⑧ 軟件設(shè)計(jì)人員將通過(guò)回歸測(cè)試的軟件入庫(kù)。
⑨ 測(cè)試人員編制測(cè)試報(bào)告。
2.3 軟硬件集成測(cè)試模型
綜上所述,嵌入式軟件的軟硬件集成測(cè)試過(guò)程主要是在需求規(guī)格說(shuō)明完成的情況下,結(jié)合通用的標(biāo)準(zhǔn)、規(guī)范以及接口控制文件,與軟件設(shè)計(jì)同步,編寫軟硬件集成測(cè)試的《測(cè)試的計(jì)劃》和《測(cè)試的說(shuō)明》,經(jīng)過(guò)*審后,把被測(cè)試軟件加載到目標(biāo)機(jī)上運(yùn)行,以檢測(cè)嵌入式軟件與硬件配合完成系統(tǒng)功能、性能的質(zhì)量。軟硬件集成測(cè)試模型如圖2所示。
圖2 軟硬件集成測(cè)試模型
3 、 過(guò)程的可行性驗(yàn)證
為驗(yàn)證上述過(guò)程的可行性及測(cè)試模型的有效性,某嵌入式軟件開發(fā)項(xiàng)目組在開發(fā)過(guò)程中按照此過(guò)程及模型進(jìn)行了軟硬件集成測(cè)試。
3.1 軟硬件集成測(cè)試硬件平臺(tái)
① 目標(biāo)機(jī)處理器:ARM核LPC2294單片機(jī)。
② 目標(biāo)機(jī)外圍接口:ARINC429,RS422,離散量、模擬量等。
③ 目標(biāo)機(jī)調(diào)試接口:JTAGH并口,RS232串口。
④ 宿主機(jī)調(diào)試環(huán)境:ADS1.2開發(fā)平臺(tái)。
⑤ 宿主機(jī)平臺(tái):PC機(jī)(Windows XP系統(tǒng))、并口、RS232串口。
3.2 軟硬件集成測(cè)試過(guò)程
① 目標(biāo)機(jī)上電、宿主機(jī)打開調(diào)試環(huán)境。
② 加載經(jīng)過(guò)集成測(cè)試的嵌入式軟件到目標(biāo)機(jī),并啟動(dòng)運(yùn)行軟件。
③ 根據(jù)*審?fù)瓿傻臏y(cè)試說(shuō)明及測(cè)試計(jì)劃進(jìn)行軟硬件集成測(cè)試。
④ 根據(jù)測(cè)試結(jié)果編寫測(cè)試報(bào)告。
3.3 測(cè)試
結(jié)論根據(jù)上述測(cè)試過(guò)程測(cè)試完成的軟件,在交付使用后,至今只收到用戶的3份輕微級(jí)缺陷報(bào)告,比沒(méi)有經(jīng)過(guò)軟硬件集成測(cè)試即進(jìn)行系統(tǒng)測(cè)試的軟件,質(zhì)量有較大提高,節(jié)省了大量的缺陷修正時(shí)間,提高了企業(yè)效益。
4、結(jié)論
軟硬件集成測(cè)試是保證嵌入式軟件質(zhì)量的關(guān)鍵一步,嵌入式軟件測(cè)試已成為目前嵌入式應(yīng)用領(lǐng)域的重要研究方向。從國(guó)內(nèi)外對(duì)嵌入式軟件測(cè)試的研究中,可以發(fā)現(xiàn)其大多著重關(guān)注嵌入式軟件的調(diào)試工作,而鮮見(jiàn)系統(tǒng)的對(duì)軟硬件集成測(cè)試的研究。隨著嵌入式軟件規(guī)模應(yīng)用的加大、質(zhì)量保證要求的提高,對(duì)嵌入式軟件的測(cè)試要求顯然已經(jīng)不能停留于僅僅通過(guò)調(diào)試就可以了,必然需要有更加全面的、系統(tǒng)化的測(cè)試過(guò)程。論文根據(jù)軟硬件集成測(cè)試方面的經(jīng)驗(yàn),總結(jié)提出了軟硬件集成測(cè)試的流程及模型,希望能夠?qū)η度胧杰浖y(cè)試的研究提供幫助。