陳彥霖
四川九州電子科技股份有限公司 四川綿陽 621000
測試終端模擬了軟件需要運行的基本嵌入式硬件環(huán)境,將其作為整個自動化。
圖1 嵌入式軟件自動化測試模型框架
測試執(zhí)行框架的環(huán)境基礎(chǔ)在如圖1所示的QEMU半虛擬仿真環(huán)境基礎(chǔ)上,可以將測試終端細化為兩部分,一是被測軟件部分,二是測試控制部分,兩者之間以共享內(nèi)存區(qū)域作為數(shù)據(jù)交互,從而達到測試的實時性以及穩(wěn)定性。
測試控制中心是EATM框架的核心控制部分,主要對測試用例庫進行管理;對測試用例進行篩選以及分布式任務(wù)調(diào)度;對測試結(jié)果進行檢驗并統(tǒng)計等。測試控制中心采用基于JavaSwing框架技術(shù)開發(fā),具有較強的可移植性。
測試終端和測試控制中心之間采用網(wǎng)絡(luò)通信方式,主要采用可靠的TCP/Socket通信形式,建立端到端的連接,用于測試數(shù)據(jù)的發(fā)送以及測試結(jié)果報告的反饋。該框架結(jié)構(gòu)的優(yōu)點是能充分發(fā)揮分布式架構(gòu)的處理能力,具體表現(xiàn)在以下兩點:
(1)測試終端輕負載在測試控制中心對測試用例進行篩選,對高性能的測試終端分配重要度高、較復雜的測試用例,并且采用多測試終端來減少單個測試終端的測試負荷,極大程度地提高測試的效率[1]。
(2)測試用例協(xié)同處理。對高負載的測試用例可以拆分成多個子任務(wù),并采用一定的調(diào)度規(guī)則調(diào)度協(xié)同多個測試終端處理,可以減少單個測試終端的負荷,在很大程度上增加了并行處理測試數(shù)據(jù)的能力。
用例分發(fā)引擎可以抽象的概括為“分發(fā)-收集”的過程,即將大量的測試數(shù)據(jù)按照一定調(diào)度原則分解成多個子任務(wù),每個子任務(wù)分配給各個終端節(jié)點,最后收集每個測試終端執(zhí)行后的測試結(jié)果。對于每個子任務(wù),可以由一個或者多個終端節(jié)點分工完成,即采用“功能分布”原則。對于給定任務(wù)的調(diào)度分配,描述了分布式測試環(huán)境中的行為信息,提供了描述分布式測試中的測試節(jié)點運行調(diào)度功能,比如不同的測試節(jié)點啟動的先后順序以及它們之間的同步關(guān)系,使框架具有擴展能力。
(1)分發(fā)數(shù)據(jù)格式??蓴U展標記語言(XML)作為當前處理結(jié)構(gòu)化信息的主流工具,具有高擴展性、強移植性以及強可控性等突出優(yōu)點,本文基于XML設(shè)計了測試用例的結(jié)構(gòu)化格式。一個測試用例文件由測試包、測試用例和測試結(jié)果構(gòu)成,以下給出這三者的概念:測試包:所有測試用例的集合,根據(jù)產(chǎn)品的邏輯模塊或者測試模式(功能、性能或壓力)構(gòu)成不同的測試用例集;測試用例:完成一個明確的測試需求所需要的執(zhí)行邏輯以及須給出的過程參數(shù);測試結(jié)果:對一個測試用例最后的測試結(jié)果[2]。
(2)分發(fā)調(diào)度原則。在本文中的系統(tǒng)實時分發(fā)調(diào)度采用靜態(tài)的、不可搶占的分布式調(diào)度原則。在EATM框架中,每個測試終端節(jié)點都是異構(gòu)的,同一時刻每個節(jié)點的性能是不同的。因此根據(jù)各節(jié)點的性能情況給各個測試終端分配不同數(shù)量以及不同“優(yōu)先級”的任務(wù),使得分布式中各節(jié)點負載基本均衡的同時達到效率最優(yōu)。
本文中采用QEMU仿真軟件對運行平臺為ARM架構(gòu)嵌入式軟件進行仿真,例如UAV無人機機載軟件,QEMU仿真軟件是目前較為先進且可開發(fā)源代碼的跨平臺仿真軟件,具有模擬適配度廣、速度快及跨平臺等特性,可以較優(yōu)秀的仿真出基于ARM架構(gòu)的虛擬化環(huán)境。對于各個模塊的仿真:采用TCG動態(tài)二進制翻譯技進行指令的解析翻譯工作實現(xiàn)嵌入式軟件的CPU虛擬化;通過影子內(nèi)存對嵌入式軟件內(nèi)存虛擬化;通過設(shè)備模擬對嵌入式軟件的I/O虛擬化。
經(jīng)過測試,所有的測試用例執(zhí)行結(jié)果99.51%的測試數(shù)據(jù)測試成功,說明絕大部分測試用例成功執(zhí)行且測試結(jié)果與測試期望相一致;失敗測試用例只占0.49%,具體的失敗情況可以再進一步地分析[3]。對39條測試失敗的情況進行詳細地分析,所有失敗的用例均為測試執(zhí)行結(jié)果與期望值不相匹配所致,造成該錯誤原因是給出測試用例不能正確有效地模擬真實環(huán)境中數(shù)據(jù)所致,與EATM框架執(zhí)行無關(guān)[4]。
本文提出的自動化測試框架進行驗證。實驗結(jié)果表明,本框架執(zhí)行方式正確,驗證方法有效。該結(jié)果有助于對嵌入式軟件系統(tǒng)進行自動化測試和分析。今后本人將對進一步提高系統(tǒng)的執(zhí)行能力、優(yōu)化測試用例調(diào)度、完善測試結(jié)果測評等方面開展研究。