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