陳彥霖
四川九州電子科技股份有限公司 四川綿陽(yáng) 621000
測(cè)試終端模擬了軟件需要運(yùn)行的基本嵌入式硬件環(huán)境,將其作為整個(gè)自動(dòng)化。
圖1 嵌入式軟件自動(dòng)化測(cè)試模型框架
測(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)定性。
測(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è)試控制中心采用基于JavaSwing框架技術(shù)開(kāi)發(fā),具有較強(qiáng)的可移植性。
測(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è)試的效率[1]。
(2)測(cè)試用例協(xié)同處理。對(duì)高負(fù)載的測(cè)試用例可以拆分成多個(gè)子任務(wù),并采用一定的調(diào)度規(guī)則調(diào)度協(xié)同多個(gè)測(cè)試終端處理,可以減少單個(gè)測(cè)試終端的負(fù)荷,在很大程度上增加了并行處理測(cè)試數(shù)據(jù)的能力。
用例分發(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ò)展能力。
(1)分發(fā)數(shù)據(jù)格式??蓴U(kuò)展標(biāo)記語(yǔ)言(XML)作為當(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é)果[2]。
(2)分發(fā)調(diào)度原則。在本文中的系統(tǒng)實(shí)時(shí)分發(fā)調(diào)度采用靜態(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)。
本文中采用QEMU仿真軟件對(duì)運(yùn)行平臺(tái)為ARM架構(gòu)嵌入式軟件進(jìn)行仿真,例如UAV無(wú)人機(jī)機(jī)載軟件,QEMU仿真軟件是目前較為先進(jìn)且可開(kāi)發(fā)源代碼的跨平臺(tái)仿真軟件,具有模擬適配度廣、速度快及跨平臺(tái)等特性,可以較優(yōu)秀的仿真出基于ARM架構(gòu)的虛擬化環(huán)境。對(duì)于各個(gè)模塊的仿真:采用TCG動(dòng)態(tài)二進(jìn)制翻譯技進(jìn)行指令的解析翻譯工作實(shí)現(xiàn)嵌入式軟件的CPU虛擬化;通過(guò)影子內(nèi)存對(duì)嵌入式軟件內(nèi)存虛擬化;通過(guò)設(shè)備模擬對(duì)嵌入式軟件的I/O虛擬化。
經(jīng)過(guò)測(cè)試,所有的測(cè)試用例執(zhí)行結(jié)果99.51%的測(cè)試數(shù)據(jù)測(cè)試成功,說(shuō)明絕大部分測(cè)試用例成功執(zhí)行且測(cè)試結(jié)果與測(cè)試期望相一致;失敗測(cè)試用例只占0.49%,具體的失敗情況可以再進(jìn)一步地分析[3]。對(duì)39條測(cè)試失敗的情況進(jìn)行詳細(xì)地分析,所有失敗的用例均為測(cè)試執(zhí)行結(jié)果與期望值不相匹配所致,造成該錯(cuò)誤原因是給出測(cè)試用例不能正確有效地模擬真實(shí)環(huán)境中數(shù)據(jù)所致,與EATM框架執(zhí)行無(wú)關(guān)[4]。
本文提出的自動(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)展研究。