陳 佐,張懷相,方景龍
(杭州電子科技大學(xué) 計(jì)算機(jī)學(xué)院,浙江 杭州 310018)
在軟件測(cè)試的過(guò)程中,存在著許多重復(fù)的、非創(chuàng)造性的工作,在這樣的背景下,自動(dòng)化測(cè)試系統(tǒng)(automated testing system,ATS)[1]以其節(jié)省人工、縮短測(cè)試時(shí)間、提高測(cè)試效率以及增強(qiáng)測(cè)試穩(wěn)定性等優(yōu)點(diǎn)在軟件測(cè)試方面越來(lái)越受到人們的關(guān)注。
本文對(duì)嵌入式軟件自動(dòng)化測(cè)試技術(shù)進(jìn)行相關(guān)的研究,設(shè)計(jì)了一個(gè)高性能的嵌入式測(cè)試系統(tǒng),它提供了一個(gè)受控制的、確定的虛擬環(huán)境模擬平臺(tái),軟件測(cè)試人員能夠在這個(gè)平臺(tái)上進(jìn)行軟件的自動(dòng)化測(cè)試、軟件結(jié)構(gòu)體系驗(yàn)證及軟件功能可靠性驗(yàn)證等各種技術(shù)指標(biāo)檢驗(yàn),提高了嵌入式系統(tǒng)的測(cè)試效率,優(yōu)化了嵌入式軟件的設(shè)計(jì),降低系統(tǒng)設(shè)計(jì)成本。
主要貢獻(xiàn)可總結(jié)如下:①定義了一系列測(cè)試調(diào)度原則,優(yōu)化分布式資源調(diào)度;②設(shè)計(jì)了一個(gè)自動(dòng)化執(zhí)行引擎,對(duì)測(cè)試用例進(jìn)行高效率的測(cè)試執(zhí)行;③構(gòu)建了一個(gè)受控制的,確定性的虛擬仿真環(huán)境,以支持嵌入式軟件運(yùn)行環(huán)境;④以典型的無(wú)人機(jī)嵌入式軟件為實(shí)例,驗(yàn)證嵌入式軟件自動(dòng)化執(zhí)行框架的實(shí)用性、可靠性以及高效性。
本文提出一種基于虛擬仿真環(huán)境的嵌入式軟件自動(dòng)化測(cè)試模型(embedded software automatic test model,EATM),它集成了數(shù)據(jù)驅(qū)動(dòng)測(cè)試架構(gòu)、測(cè)試庫(kù)架構(gòu)以及分布式測(cè)試架構(gòu)等的優(yōu)點(diǎn),以虛擬仿真技術(shù)構(gòu)建測(cè)試環(huán)境,以用例庫(kù)的形式統(tǒng)一管理測(cè)試用例,以測(cè)試用例作為數(shù)據(jù)驅(qū)動(dòng)測(cè)試程序,并以分布式架構(gòu)管理用例調(diào)度與數(shù)據(jù)分發(fā)。
EATM框架如圖1所示,屬于典型的分布式測(cè)試架構(gòu),具體可以分為兩大組成部分:
(1)測(cè)試終端
測(cè)試終端模擬了軟件需要運(yùn)行的基本嵌入式硬件環(huán)境,將其作為整個(gè)自動(dòng)化測(cè)試執(zhí)行框架的環(huán)境基礎(chǔ)。在如圖1所示的QEMU半虛擬仿真環(huán)境基礎(chǔ)上,可以將測(cè)試終端細(xì)化為兩部分,一是被測(cè)軟件部分,二是測(cè)試控制部分,兩者之間以共享內(nèi)存區(qū)域作為數(shù)據(jù)交互,從而達(dá)到測(cè)試的實(shí)時(shí)性以及穩(wěn)定性。
(2)測(cè)試控制中心
測(cè)試控制中心是EATM框架的核心控制部分,主要對(duì)測(cè)試用例庫(kù)進(jìn)行管理;對(duì)測(cè)試用例進(jìn)行篩選以及分布式任務(wù)調(diào)度;對(duì)測(cè)試結(jié)果進(jìn)行檢驗(yàn)并統(tǒng)計(jì)等。測(cè)試控制中心采用基于Java Swing框架技術(shù)開(kāi)發(fā),具有較強(qiáng)的可移植性。
圖1 嵌入式軟件自動(dòng)化測(cè)試模型框架
測(cè)試終端和測(cè)試控制中心之間采用網(wǎng)絡(luò)通信方式,主要采用可靠的TCP/Socket通信形式,建立端到端的連接,用于測(cè)試數(shù)據(jù)的發(fā)送以及測(cè)試結(jié)果報(bào)告的反饋。
該框架結(jié)構(gòu)的優(yōu)點(diǎn)是能充分發(fā)揮分布式架構(gòu)的處理能力,具體表現(xiàn)在以下兩點(diǎn):
(1)測(cè)試終端輕負(fù)載
在測(cè)試控制中心對(duì)測(cè)試用例進(jìn)行篩選,對(duì)高性能的測(cè)試終端分配重要度高、較復(fù)雜的測(cè)試用例,并且采用多測(cè)試終端來(lái)減少單個(gè)測(cè)試終端的測(cè)試負(fù)荷,極大程度地提高測(cè)試的效率。
(2)測(cè)試用例協(xié)同處理
對(duì)高負(fù)載的測(cè)試用例可以拆分成多個(gè)子任務(wù),并采用一定的調(diào)度規(guī)則調(diào)度協(xié)同多個(gè)測(cè)試終端處理,可以減少單個(gè)測(cè)試終端的負(fù)荷,在很大程度上增加了并行處理測(cè)試數(shù)據(jù)的能力。
整個(gè)EATM框架主要分為4個(gè)部分:測(cè)試用例分發(fā)引擎、測(cè)試用例封裝引擎、測(cè)試用例執(zhí)行引擎以及虛擬仿真引擎。
如圖2所示,測(cè)試用例分發(fā)引擎主要以測(cè)試用例為數(shù)據(jù)流,從本地測(cè)試用例庫(kù)中按照分發(fā)調(diào)度規(guī)則進(jìn)行篩選以及分發(fā);測(cè)試用例封裝引擎主要將網(wǎng)絡(luò)傳輸?shù)臏y(cè)試用例進(jìn)行實(shí)例化操作,并將實(shí)例結(jié)果存儲(chǔ)在本地測(cè)試用例庫(kù);測(cè)試用例執(zhí)行引擎主要以測(cè)試實(shí)例為數(shù)據(jù)來(lái)驅(qū)動(dòng)整個(gè)自動(dòng)化測(cè)試執(zhí)行器,以完成對(duì)測(cè)試用例的測(cè)試執(zhí)行并最終生成測(cè)試報(bào)告;虛擬仿真引擎主要搭建了整個(gè)自動(dòng)化測(cè)試執(zhí)行的必要軟件環(huán)境。
圖2 EATM框架
用例分發(fā)引擎可以抽象的概括為“分發(fā)-收集”的過(guò)程,即將大量的測(cè)試數(shù)據(jù)按照一定調(diào)度原則分解成多個(gè)子任務(wù),每個(gè)子任務(wù)分配給各個(gè)終端節(jié)點(diǎn),最后收集每個(gè)測(cè)試終端執(zhí)行后的測(cè)試結(jié)果。對(duì)于每個(gè)子任務(wù),可以由一個(gè)或者多個(gè)終端節(jié)點(diǎn)分工完成,即采用“功能分布”原則。對(duì)于給定任務(wù)的調(diào)度分配,描述了分布式測(cè)試環(huán)境中的行為信息,提供了描述分布式測(cè)試中的測(cè)試節(jié)點(diǎn)運(yùn)行調(diào)度功能,比如不同的測(cè)試節(jié)點(diǎn)啟動(dòng)的先后順序以及它們之間的同步關(guān)系,使框架具有擴(kuò)展能力。
2.1.1 分發(fā)數(shù)據(jù)格式
可擴(kuò)展標(biāo)記語(yǔ)言(XML)[2]作為當(dāng)前處理結(jié)構(gòu)化信息的主流工具,具有高擴(kuò)展性、強(qiáng)移植性以及強(qiáng)可控性等突出優(yōu)點(diǎn),本文基于XML設(shè)計(jì)了測(cè)試用例的結(jié)構(gòu)化格式。
一個(gè)測(cè)試用例文件由測(cè)試包、測(cè)試用例和測(cè)試結(jié)果構(gòu)成,以下給出這三者的概念:①測(cè)試包:所有測(cè)試用例的集合,根據(jù)產(chǎn)品的邏輯模塊或者測(cè)試模式(功能、性能或壓力)構(gòu)成不同的測(cè)試用例集;②測(cè)試用例:完成一個(gè)明確的測(cè)試需求所需要的執(zhí)行邏輯以及須給出的過(guò)程參數(shù);③測(cè)試結(jié)果:對(duì)一個(gè)測(cè)試用例最后的測(cè)試結(jié)果。用XML表示總體結(jié)構(gòu)如圖3所示。
圖3 測(cè)試數(shù)據(jù)XML結(jié)構(gòu)
定義1 測(cè)試數(shù)據(jù):一個(gè)測(cè)試數(shù)據(jù)格式可以表示為
TestCase=
(1)Testsuite={Testsuite|Testsuite表示某個(gè)模式下的所有測(cè)試用例集合|model表示當(dāng)前測(cè)試數(shù)據(jù)使用的測(cè)試模式}
(2)Testcase={Testcase|Testcase表示測(cè)試用例集合中的一條測(cè)試用例}
(3)Process={Process|Process用來(lái)表示一條測(cè)試用例中的某個(gè)激勵(lì)}
(4)Operation={Operation|Operation表示激勵(lì)名稱}
(5)Input={Input|Input表示激勵(lì)參數(shù)名稱以及具體數(shù)值}
2.1.2 分發(fā)調(diào)度原則
在本文中的系統(tǒng)實(shí)時(shí)分發(fā)調(diào)度[3]采用靜態(tài)的、不可搶占的分布式調(diào)度原則。在EATM框架中,每個(gè)測(cè)試終端節(jié)點(diǎn)都是異構(gòu)的,同一時(shí)刻每個(gè)節(jié)點(diǎn)的性能是不同的。因此根據(jù)各節(jié)點(diǎn)的性能情況給各個(gè)測(cè)試終端分配不同數(shù)量以及不同“優(yōu)先級(jí)”的任務(wù),使得分布式中各節(jié)點(diǎn)負(fù)載基本均衡的同時(shí)達(dá)到效率最優(yōu)。分發(fā)調(diào)度流程如圖4所示。
圖4中的“測(cè)試用例篩選引擎①”,根據(jù)測(cè)試用例類型和賭輪盤算法[4]將測(cè)試用例全集劃分成多批次初級(jí)測(cè)試用例。
圖4 分發(fā)調(diào)度流程
輸入:軟件系統(tǒng)的測(cè)試用例全集T
輸出:初級(jí)測(cè)試用例t的集合FTestCaseList
(1)通過(guò)數(shù)據(jù)庫(kù)連接池獲取構(gòu)建的測(cè)試用例數(shù)據(jù)庫(kù),取出測(cè)試用例全集T,并將每一條數(shù)據(jù)存儲(chǔ)在AllTestCaseList集合中,遍歷AllTestCaseList;
(2)構(gòu)建List集合tf,tp,tt分別代表3種類型的分類子集;
(3)獲對(duì)取第i個(gè)測(cè)試用例數(shù)據(jù),通過(guò)測(cè)試數(shù)據(jù)的Testsuite屬性來(lái)決定應(yīng)該被劃分到哪一個(gè)分類子集中;
(4)遍歷完成所有測(cè)試用例后,對(duì)應(yīng)的分類子集t全部構(gòu)造完成,對(duì)應(yīng)的分類子集規(guī)模大小為nf,np,nt;
(5)構(gòu)建測(cè)試用例集合List,從tf,tp,tt這3個(gè)分類子集中根據(jù)賭輪盤算法選擇一測(cè)試用例tk,將tk從原分類子集中移除并加入List,直到List的規(guī)模為(nf+np+nt)/3。
(6)構(gòu)建FTestCaseList集合,并將List加入,遞歸第(5)步直到分類子集均為空。
圖4中的“測(cè)試用例篩選引擎②”,根據(jù)測(cè)試用例的完整性以及復(fù)雜性評(píng)價(jià)測(cè)試用例,并對(duì)初始測(cè)試用例按優(yōu)先級(jí)篩選,形成最終的“任務(wù)”。
定義4 測(cè)試用例優(yōu)先級(jí):測(cè)試用例優(yōu)先級(jí)是根據(jù)測(cè)試用例需求的完整性以及復(fù)雜性為標(biāo)準(zhǔn)進(jìn)行量化,根據(jù)以上給出測(cè)試用例描述的兩個(gè)因素,可以量化的表示第i個(gè)測(cè)試用例的優(yōu)先級(jí)值為
輸入:初級(jí)測(cè)試用例t的集合FTestCaseList
輸出:初級(jí)測(cè)試用例t對(duì)應(yīng)的任務(wù)子集合task
(1)讀取初級(jí)用例t的集合FTestCaseList,依次遍歷;
(2)獲取第i個(gè)初級(jí)測(cè)試用例集ti,對(duì)集合中每條測(cè)試用例Ti進(jìn)行優(yōu)先級(jí)評(píng)價(jià)記為Vi,并以此為關(guān)鍵字,以將測(cè)試用例Ti為值存儲(chǔ)在PriorityMap中;
(3)當(dāng)對(duì)初級(jí)測(cè)試用例均進(jìn)行完優(yōu)先級(jí)評(píng)價(jià)后,Prio-rityMap進(jìn)行降序排序。
(4)按照優(yōu)先級(jí)越高越優(yōu)先挑選的原則,對(duì)初級(jí)測(cè)試用例t進(jìn)行任務(wù)子集合的篩選,形成任務(wù)子集合task。
測(cè)試用例通過(guò)分發(fā)引擎處理,以“任務(wù)”的形式被分發(fā)到各個(gè)分布式終端。在各個(gè)測(cè)試終端,框架將所有收到的“任務(wù)”存儲(chǔ)在用例庫(kù)中,并對(duì)其進(jìn)行封裝操作,將其實(shí)例化后的測(cè)試用例實(shí)體保存在終端的本地測(cè)試用例庫(kù)中,以作為用例執(zhí)行引擎的輸入數(shù)據(jù)。
測(cè)試用例封裝具體過(guò)程如下:
輸入:測(cè)試用例的XML文件集合TCList
輸出:測(cè)試用例實(shí)例集合TestCaseList
(1)讀取系統(tǒng)構(gòu)建測(cè)試用例的XML文件集合TCList
(2)獲取第i個(gè)測(cè)試用例,創(chuàng)建TestCase對(duì)象并設(shè)置用例ID屬性為i;
(3)創(chuàng)建Process對(duì)象,根據(jù)測(cè)試用例的XML數(shù)據(jù)格式對(duì)第i個(gè)測(cè)試用例中Process相關(guān)屬性對(duì)象信息進(jìn)行解析并封裝到Process對(duì)象,最后將Process對(duì)象放入ProcessList
(4)重復(fù)(3)直到第i個(gè)測(cè)試用例中所有Process相關(guān)屬性對(duì)象信息都被解析完成;
(5)將當(dāng)前的ProcessList
(6)獲取第i個(gè)測(cè)試用例的ExeStatus屬性,并賦值給TestCase的ExeStatus屬性;
(7)對(duì)TestCase進(jìn)行實(shí)體驗(yàn)證,若屬于完整測(cè)試用例,則存儲(chǔ)到TestCaseList
(8)遍歷完成集合TCList中所有測(cè)試用例后,將得到所有封裝后的測(cè)試用例實(shí)體都保存到TestCaseList之中,若該集合不為空則返回,否則拋出文件處理異常。
在整個(gè)EATM框架中,以實(shí)例化后的測(cè)試用例庫(kù)作為數(shù)據(jù)源,以插樁[5]處理方式對(duì)數(shù)據(jù)進(jìn)行重定向,以任務(wù)調(diào)度機(jī)制來(lái)驅(qū)動(dòng)測(cè)試終端平臺(tái)上的嵌入式程序執(zhí)行。
在整個(gè)測(cè)試過(guò)程中,測(cè)試用例執(zhí)行引擎對(duì)任務(wù)的劃分已經(jīng)確定測(cè)試實(shí)體類的調(diào)度方式,即以上層模型對(duì)下層進(jìn)行輪詢檢測(cè)的模式來(lái)有序地調(diào)度各個(gè)模型用例。對(duì)測(cè)試用例執(zhí)行引擎通過(guò)插樁操作,不僅能夠動(dòng)態(tài)的重定向測(cè)試數(shù)據(jù),而且能夠?qū)崟r(shí)地記錄測(cè)試過(guò)程中的執(zhí)行情況,起到了對(duì)測(cè)試進(jìn)行動(dòng)態(tài)跟蹤作用,提高了測(cè)試過(guò)程的自動(dòng)化測(cè)試水平。
整個(gè)測(cè)試執(zhí)行引擎的執(zhí)行流程如圖5所示,其中圖5(b)是圖5(a)中測(cè)試用例執(zhí)行子流程的擴(kuò)展描述,整體測(cè)試用例執(zhí)行具體過(guò)程如下:
輸入:測(cè)試用例實(shí)例集合TestCaseList
輸出:測(cè)試用例執(zhí)行結(jié)果集合TestCaseResultList
(1)啟動(dòng);
(2)初始化程序環(huán)境;
(3)任務(wù)調(diào)度隊(duì)列初始化,其功能是不斷觸發(fā)測(cè)試用例的執(zhí)行,每次觸發(fā)相當(dāng)于執(zhí)行一條測(cè)試用例,即一條完整的程序執(zhí)行路徑;
(4)判斷測(cè)試用例緩沖區(qū)中是否還有測(cè)試用例未執(zhí)行,否則轉(zhuǎn)到(16);
(5)通過(guò)用例ID來(lái)從TestCaseList中獲取用例,并將該用例設(shè)置為此次循環(huán)的當(dāng)前測(cè)試用例;
(6)測(cè)試用例執(zhí)行子流程執(zhí)行開(kāi)始,調(diào)用首激勵(lì);
(7)判斷激勵(lì)鏈表中是否還有未執(zhí)行的激勵(lì),否則跳轉(zhuǎn)到(14);
(8)激勵(lì)是否有參數(shù),否則跳轉(zhuǎn)到(10);
(9)激勵(lì)參數(shù)重定向,即從當(dāng)前測(cè)試用例鏈表中獲取當(dāng)前激勵(lì)的參數(shù)數(shù)值;
(10)激勵(lì)執(zhí)行起始插樁記錄;
(11)激勵(lì)調(diào)用執(zhí)行;
(12)該激勵(lì)是否調(diào)用其它激勵(lì),是則跳轉(zhuǎn)到(8);
(13)激勵(lì)結(jié)束插樁以及當(dāng)前激勵(lì)狀態(tài)回寫,跳轉(zhuǎn)到(7);
(14)測(cè)試用例執(zhí)行子流程執(zhí)行結(jié)束;
(15)測(cè)試用例ID自增,跳轉(zhuǎn)到(4);
(16)結(jié)束。
圖5 測(cè)試用例執(zhí)行流程
嵌入式軟件被定義為嵌入在硬件中的操作系統(tǒng)和開(kāi)發(fā)工具軟件,其中硬件平臺(tái)具有多樣性是嵌入式系統(tǒng)的主要特點(diǎn)。對(duì)于嵌入式軟件需要特定的硬件平臺(tái)是阻礙開(kāi)發(fā)與測(cè)試的主要因素,而仿真軟件則通過(guò)軟件模擬形成一個(gè)具有基本完整硬件系統(tǒng)功能的、相對(duì)封閉的隔離環(huán)境,并且能夠保證在半虛擬化[6]環(huán)境下計(jì)算的安全性,該特性能夠有效地彌補(bǔ)嵌入式軟件開(kāi)發(fā)測(cè)試中受平臺(tái)限制的弊端。
目前主要的指令級(jí)仿真軟件有以下幾款:QEMU[7]、國(guó)內(nèi)清華大學(xué)研發(fā)的Skyeye以及Realboard仿真軟件平臺(tái)[8]。本文中采用QEMU仿真軟件對(duì)運(yùn)行平臺(tái)為ARM架構(gòu)嵌入式軟件進(jìn)行仿真,例如UAV(unmanned aerial vehicle)無(wú)人機(jī)機(jī)載軟件,QEMU仿真軟件是目前較為先進(jìn)且可開(kāi)發(fā)源代碼的跨平臺(tái)仿真軟件,具有模擬適配度廣、速度快及跨平臺(tái)等特性,可以較優(yōu)秀的仿真出基ARM架構(gòu)的虛擬化環(huán)境。
對(duì)于各個(gè)模塊的仿真,如圖6所示:采用TCG(tiny code generator)動(dòng)態(tài)二進(jìn)制翻譯技術(shù)[9]進(jìn)行指令的解析翻譯工作實(shí)現(xiàn)嵌入式軟件的CPU虛擬化;通過(guò)影子內(nèi)存[10]對(duì)嵌入式軟件內(nèi)存虛擬化;通過(guò)設(shè)備模擬對(duì)嵌入式軟件的I/O虛擬化。
圖6 QEMU嵌入式環(huán)境虛擬化結(jié)構(gòu)
由于完整UAV系統(tǒng)龐大而復(fù)雜,本文通過(guò)精簡(jiǎn)無(wú)人機(jī)飛控系統(tǒng),選取飛控系統(tǒng)中無(wú)人機(jī)某幾個(gè)功能模塊來(lái)對(duì)本文提出的自動(dòng)化測(cè)試框架進(jìn)行驗(yàn)證。該模塊包含以下功能以及主要描述:操作員打開(kāi)open按鈕;無(wú)人機(jī)通過(guò)獲取電機(jī)狀態(tài)、電量的值、位姿信息以及飛行模式等來(lái)驗(yàn)證在給定飛行條件無(wú)人機(jī)位姿調(diào)控能力。
通過(guò)UML以及狀態(tài)機(jī)的方式求解得到測(cè)試用例,將測(cè)試序列實(shí)例化求解得到的結(jié)果進(jìn)行組合,生成測(cè)試用例數(shù)據(jù)庫(kù),共產(chǎn)生了7974條測(cè)試用例,作為自動(dòng)化測(cè)試框架的主要數(shù)據(jù)輸入。測(cè)試用例庫(kù)中數(shù)據(jù)通過(guò)EATM框架調(diào)度、分發(fā)和執(zhí)行后,結(jié)果數(shù)據(jù)被收集到測(cè)試控制中心,測(cè)試控制中心最終測(cè)試結(jié)果的統(tǒng)計(jì)并且可視化。
經(jīng)過(guò)測(cè)試用例所有的測(cè)試用例執(zhí)行結(jié)果見(jiàn)表1:99.51%的測(cè)試數(shù)據(jù)測(cè)試成功,說(shuō)明絕大部分測(cè)試用例成功執(zhí)行且測(cè)試結(jié)果與測(cè)試期望相一致;失敗測(cè)試用例只占0.49%,具體的失敗情況可以再進(jìn)一步地分析。對(duì)39條測(cè)試失敗的情況進(jìn)行詳細(xì)地分析,如表2所示,所有失敗的用例均為測(cè)試執(zhí)行結(jié)果與期望值不相匹配所致,造成該錯(cuò)誤原因是給出測(cè)試用例不能正確有效地模擬真實(shí)環(huán)境中數(shù)據(jù)所致,與EATM框架執(zhí)行無(wú)關(guān)。
表1 測(cè)試結(jié)果統(tǒng)計(jì)
表2 出錯(cuò)結(jié)果統(tǒng)計(jì)
對(duì)于表1中成功的測(cè)試用例,按照需求中的描述進(jìn)行更具體的結(jié)果統(tǒng)計(jì),更加直觀地展現(xiàn)測(cè)試效果。如圖7所示,量化指標(biāo)為無(wú)人機(jī)的最大飛行高度,即擁有相同電池容量的多架無(wú)人機(jī),分別在不同的風(fēng)速級(jí)別下進(jìn)行垂直爬升操作過(guò)程中,當(dāng)無(wú)人機(jī)的電量被消耗到0%時(shí)無(wú)人機(jī)所處的高度。
圖7 各個(gè)風(fēng)速下最大高度柱狀圖
在測(cè)試過(guò)程中對(duì)所給的大規(guī)模測(cè)試用例,EATM框架可以有效地進(jìn)行測(cè)試,并且在表2所示的出錯(cuò)測(cè)試用例中不存在由于框架自身錯(cuò)誤而影響測(cè)試的情況,驗(yàn)證了EATM框架對(duì)嵌入式軟件的自動(dòng)化測(cè)試具有較好的穩(wěn)定性。根據(jù)圖7中所指定量化指標(biāo)的數(shù)據(jù)值對(duì)比,可得到在該實(shí)驗(yàn)中測(cè)試結(jié)果與期望數(shù)據(jù)值基本保持一致,有效地驗(yàn)證了本文提出的EATM框架對(duì)嵌入式軟件的自動(dòng)化測(cè)試完全切實(shí)可行,具備較高的實(shí)用性。
本文提出了一種嵌入式軟件的自動(dòng)化測(cè)試方法,通過(guò)半虛擬化技術(shù)仿真嵌入式軟件運(yùn)行環(huán)境,構(gòu)造分布式調(diào)度算法,并且設(shè)計(jì)相應(yīng)的自動(dòng)化執(zhí)行引擎,對(duì)大量的測(cè)試用例進(jìn)行測(cè)試,提升嵌入式軟件測(cè)試的高效性。最后以簡(jiǎn)化開(kāi)源無(wú)人機(jī)飛控系統(tǒng)的一個(gè)單元模塊為實(shí)例,以通過(guò)模型產(chǎn)生的測(cè)試用例為數(shù)據(jù),應(yīng)用本文提出的自動(dòng)化測(cè)試框架進(jìn)行驗(yàn)證。實(shí)驗(yàn)結(jié)果表明,本框架執(zhí)行方式正確,驗(yàn)證方法有效。該結(jié)果有助于對(duì)嵌入式軟件系統(tǒng)進(jìn)行自動(dòng)化測(cè)試和分析。今后本人將對(duì)進(jìn)一步提高系統(tǒng)的執(zhí)行能力、優(yōu)化測(cè)試用例調(diào)度、完善測(cè)試結(jié)果測(cè)評(píng)等方面開(kāi)展研究。