基于腳本的嵌入式軟件仿真及測(cè)試一體化平臺(tái)的構(gòu)建方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明屬于自動(dòng)化測(cè)試領(lǐng)域,是針對(duì)飛行器機(jī)載嵌入式軟件的自動(dòng)化測(cè)試技術(shù),涉及一種基于腳本的嵌入式軟件仿真及測(cè)試一體化平臺(tái)的構(gòu)建方法。
【背景技術(shù)】
[0002]機(jī)載嵌入式系統(tǒng)復(fù)雜性的提高對(duì)裝備軟件的質(zhì)量提出了更高的要求。在機(jī)載設(shè)備中,復(fù)雜任務(wù)通常需要多個(gè)設(shè)備交互合作完成。這就要求研制單位在開發(fā)測(cè)試過(guò)程中需要連接其他廠商的設(shè)備進(jìn)行調(diào)試,導(dǎo)致資源協(xié)調(diào)周期冗長(zhǎng)、項(xiàng)目進(jìn)度無(wú)法得到保證。為了解決這一問(wèn)題,出現(xiàn)了很多仿真工具平臺(tái),如Matlab,SCADE,Rhapsody等。開發(fā)人員借助這類工具實(shí)現(xiàn)了用仿真模型模擬外部交聯(lián)設(shè)備,避免了多單位之間設(shè)備協(xié)調(diào)問(wèn)題。
[0003]針對(duì)軟件測(cè)試,目前型號(hào)研制過(guò)程中測(cè)試用例大多采用測(cè)試腳本的方式進(jìn)行描述,測(cè)試腳本的引入可以減少測(cè)試人員的工作量,提高軟件測(cè)試的可維護(hù)性以及測(cè)試的可重復(fù)性。嵌入式軟件自動(dòng)化測(cè)試領(lǐng)域有很多的測(cè)試腳本實(shí)現(xiàn)方案。如中國(guó)航空綜合技術(shù)研究所研發(fā)的基于Python的實(shí)時(shí)腳本語(yǔ)言、北京航空航天大學(xué)研發(fā)的ESSTSL腳本語(yǔ)言、電子科技大學(xué)研發(fā)的CATScript腳本語(yǔ)言等。
[0004]但在研制一線仍然存在以下問(wèn)題,一是傳統(tǒng)的仿真工具平臺(tái)使用門檻高,模型建立及校驗(yàn)周期長(zhǎng)。二是采用傳統(tǒng)的仿真工具平臺(tái)進(jìn)行仿真時(shí),需要完成整個(gè)建模過(guò)程,其他單位積累的C/C++語(yǔ)言編寫的模型庫(kù)無(wú)法復(fù)用。三是目前的仿真及測(cè)試平臺(tái)中由于采用不同的技術(shù)方案,測(cè)試和仿真過(guò)程相互隔離,導(dǎo)致測(cè)試腳本只能獲取被測(cè)設(shè)備運(yùn)行信息,無(wú)法獲取與之交聯(lián)的仿真模型的運(yùn)行信息,因此,無(wú)法構(gòu)建復(fù)雜場(chǎng)景的測(cè)試用例,測(cè)試不夠充分。此外,由于測(cè)試腳本無(wú)法探測(cè)仿真模型在運(yùn)行過(guò)程中的狀態(tài)。導(dǎo)致最終測(cè)試用例不通過(guò)時(shí),無(wú)法確定是仿真模型的問(wèn)題還是被測(cè)設(shè)備自身的問(wèn)題。
[0005]綜上所述,傳統(tǒng)的仿真和測(cè)試平臺(tái)無(wú)法滿足易用性、可復(fù)用性以及測(cè)試全面性的要求,因此,研究和實(shí)現(xiàn)一種解決上述問(wèn)題的仿真及測(cè)試一體化平臺(tái)具有重大的意義和緊迫性。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的是針對(duì)上述方法存在的問(wèn)題,提出一種基于腳本的嵌入式軟件仿真及測(cè)試一體化平臺(tái)的構(gòu)建方法,該方法的實(shí)現(xiàn)是基于主控機(jī)和實(shí)時(shí)處理機(jī)架構(gòu)的嵌入式軟件仿真測(cè)試環(huán)境,其中主控機(jī)是運(yùn)行Windows系統(tǒng)的PC機(jī),而實(shí)時(shí)處理機(jī)是運(yùn)行VxWorks系統(tǒng)的工控機(jī),
[0007]主控機(jī)部分,構(gòu)建腳本開發(fā)模塊及異常檢測(cè)的模塊,包括三個(gè)步驟:
[0008]步驟一、構(gòu)建腳本開發(fā)模塊,實(shí)現(xiàn)一個(gè)具備仿真模型導(dǎo)入功能的集成開發(fā)環(huán)境,用于開發(fā)測(cè)試用例腳本和仿真模型腳本;
[0009]首先在Visual Stud1開發(fā)環(huán)境中導(dǎo)入SintillaNet窗體控件,然后基于該控件提供的API接口實(shí)現(xiàn)腳本編輯、腳本自動(dòng)補(bǔ)全、代碼折疊、語(yǔ)法高亮、代碼注釋功能,然后,使用混合編程技術(shù)實(shí)現(xiàn)模型導(dǎo)入功能,實(shí)現(xiàn)在腳本中調(diào)用C/C++語(yǔ)言編寫的仿真模型;
[0010]步驟二、構(gòu)建異常檢測(cè)模塊,包括腳本解釋器和語(yǔ)義檢查模塊,
[0011]對(duì)Python標(biāo)準(zhǔn)解釋器進(jìn)行仿真和測(cè)試擴(kuò)展獲得一個(gè)用于語(yǔ)法檢查的腳本解釋器,仿真擴(kuò)展包括擴(kuò)展數(shù)據(jù)發(fā)送、數(shù)據(jù)接收以及任務(wù)注冊(cè)的接口,測(cè)試擴(kuò)展包括擴(kuò)展測(cè)試激勵(lì)、測(cè)試反饋和任務(wù)注冊(cè)的接口,通過(guò)掃描腳本中的仿真及測(cè)試接口參數(shù)的有效性,實(shí)現(xiàn)語(yǔ)義檢查;
[0012]步驟三、集成腳本開發(fā)模塊與異常檢測(cè)模塊,將異常檢測(cè)模塊鏈接到腳本開發(fā)模塊中;
[0013]實(shí)時(shí)處理機(jī)部分,采用Tornado開發(fā)環(huán)境構(gòu)建總線驅(qū)動(dòng)模塊、任務(wù)注冊(cè)及調(diào)度模塊以及實(shí)時(shí)腳本解釋器,并在運(yùn)行前加載到實(shí)時(shí)處理機(jī),具體包括以下三個(gè)步驟:
[0014]步驟一、采用總線、數(shù)據(jù)幀和幀變量的組織方式構(gòu)建總線驅(qū)動(dòng)模塊;
[0015]首先,根據(jù)總線通信協(xié)議為每條總線設(shè)置通信參數(shù),調(diào)用實(shí)時(shí)處理機(jī)板卡驅(qū)動(dòng)提供的API實(shí)現(xiàn)數(shù)據(jù)收發(fā);其次,將實(shí)時(shí)處理機(jī)與被測(cè)設(shè)備之間通信的數(shù)據(jù)以數(shù)據(jù)幀和幀變量的形式進(jìn)行組織,并建立數(shù)據(jù)幀與總線的映射關(guān)系;最后,以數(shù)據(jù)幀為單位構(gòu)建通信任務(wù),在運(yùn)行前將通信任務(wù)添加到任務(wù)注冊(cè)及調(diào)度模塊的任務(wù)容器中;
[0016]步驟二、構(gòu)建任務(wù)注冊(cè)及調(diào)度模塊,
[0017]使用鏈表和數(shù)組實(shí)現(xiàn)容納任務(wù)的容器,并提供一個(gè)仿真任務(wù)、測(cè)試任務(wù)以及通信任務(wù)注冊(cè)的接口,接下來(lái),實(shí)現(xiàn)任務(wù)調(diào)度算法,按照任務(wù)的周期和運(yùn)行時(shí)間對(duì)任務(wù)進(jìn)行調(diào)度;
[0018]步驟三、采用移植的方式在實(shí)時(shí)處理機(jī)中構(gòu)建一個(gè)實(shí)時(shí)腳本解釋器,解釋執(zhí)行仿真模型腳本和測(cè)試用例腳本;
[0019]對(duì)于仿真部分,數(shù)據(jù)發(fā)送、數(shù)據(jù)接收接口在實(shí)現(xiàn)時(shí),調(diào)用總線驅(qū)動(dòng)模塊的功能實(shí)現(xiàn)與被測(cè)設(shè)備之間的信息交互;任務(wù)注冊(cè)接口實(shí)現(xiàn)時(shí),將仿真模型任務(wù)添加到任務(wù)注冊(cè)及調(diào)度模塊的任務(wù)容器中;對(duì)于測(cè)試部分,測(cè)試激勵(lì)接口在實(shí)現(xiàn)時(shí)調(diào)用總線驅(qū)動(dòng)模塊向被測(cè)設(shè)備發(fā)送測(cè)試指令;測(cè)試反饋接口在實(shí)現(xiàn)時(shí)調(diào)用總線驅(qū)動(dòng)模塊接收被測(cè)設(shè)備的實(shí)際測(cè)試結(jié)果;任務(wù)注冊(cè)接口在實(shí)現(xiàn)時(shí),將測(cè)試任務(wù)添加到任務(wù)注冊(cè)及調(diào)度模塊的任務(wù)容器中;
[0020]所述一體化平臺(tái)中的仿真模型和測(cè)試用例均采用腳本語(yǔ)言進(jìn)行描述;
[0021]所述主控機(jī)和實(shí)時(shí)處理機(jī)中的兩個(gè)解釋器對(duì)腳本語(yǔ)言的語(yǔ)法支持能力一致;
[0022]所述主控機(jī)部分步驟二中在擴(kuò)展任務(wù)注冊(cè)接口時(shí),注冊(cè)任務(wù)包括仿真任務(wù)、測(cè)試任務(wù)以及總線通信任務(wù)三種,其中,每種任務(wù)都包括周期型和事件型兩種類型,且能夠指定任務(wù)的起止時(shí)間;
[0023]所述實(shí)時(shí)處理機(jī)中,仿真模型腳本和測(cè)試用例腳本的執(zhí)行均通過(guò)實(shí)時(shí)腳本解釋器,仿真模型和測(cè)試用例可以通過(guò)腳本解釋器建立信息交互。
[0024]主控機(jī)部分步驟二中的異常檢測(cè)模塊不僅包括腳本語(yǔ)法檢查,還包括仿真及測(cè)試相關(guān)的語(yǔ)義檢查。
[0025]實(shí)時(shí)處理機(jī)中,實(shí)時(shí)腳本解釋器的是通過(guò)移植的方式構(gòu)建,在移植的過(guò)程中,刪除了與仿真和測(cè)試無(wú)關(guān)的模塊。
[0026]在實(shí)時(shí)處理機(jī)中構(gòu)建實(shí)時(shí)腳本解釋器時(shí),將腳本解釋器與系統(tǒng)映像模塊分離。
[0027]本發(fā)明具有的優(yōu)點(diǎn)和有益效果,
[0028]本發(fā)明的實(shí)現(xiàn)是基于實(shí)時(shí)處理機(jī)和主控機(jī)的架構(gòu)。在主控機(jī)上,測(cè)試用例和仿真模型采用測(cè)試腳本進(jìn)行描述,并進(jìn)行異常檢測(cè),經(jīng)檢測(cè)無(wú)誤的腳本下發(fā)到實(shí)時(shí)處理機(jī)中。在實(shí)時(shí)處理機(jī)中,基于腳本實(shí)現(xiàn)了對(duì)被測(cè)設(shè)備的外部交聯(lián)設(shè)備和測(cè)試設(shè)備的模擬。其中,仿真模型腳本模擬外部交聯(lián)設(shè)備,測(cè)試用例腳本模擬測(cè)試設(shè)備。仿真模型和腳本和測(cè)試用例腳本都通過(guò)實(shí)時(shí)腳本解釋器完成解析,并將所有的仿真和測(cè)試任務(wù)添加到任務(wù)注冊(cè)及調(diào)度模塊中,最后通過(guò)總線驅(qū)動(dòng)模塊實(shí)現(xiàn)與被測(cè)設(shè)備的交互。最終,基于腳本構(gòu)建了一個(gè)嵌入式軟件仿真及測(cè)試的一體化平臺(tái),滿足了嵌入式系統(tǒng)研制過(guò)程中仿真及測(cè)試的要求,大大降低了仿真及測(cè)試的成本,具有很好的通用性。本發(fā)明的優(yōu)點(diǎn)與積極效果還在于,
[0029](I)本發(fā)明中仿真及測(cè)試均采用腳本進(jìn)行描述,并通過(guò)腳本解釋器解析運(yùn)行,最終由任務(wù)注冊(cè)及調(diào)度模塊統(tǒng)一管理,避免不同技術(shù)造成的仿真和測(cè)試相互隔離問(wèn)題,便于更好的描述復(fù)雜的測(cè)試場(chǎng)景,測(cè)試用例覆蓋更加全面,測(cè)試結(jié)果更加真實(shí)準(zhǔn)確。
[0030](2)本發(fā)明中仿真模型采用腳本描述,使用人員無(wú)需學(xué)習(xí)復(fù)雜的建模工具,通過(guò)編寫簡(jiǎn)單的腳本即可建立仿真模型,降低了使用門檻。此外,腳本開發(fā)模塊中的模型導(dǎo)入功能,能夠復(fù)用C/C++語(yǔ)言編寫的模型庫(kù),大大縮短了仿真模型建立的時(shí)間。
[0031](3)本發(fā)明中的腳本模塊被劃分成兩部分在不同的平臺(tái)實(shí)現(xiàn)。腳本開發(fā)模塊和異常檢測(cè)在非實(shí)時(shí)的主控機(jī)中實(shí)現(xiàn),提供良好的腳本開發(fā)體驗(yàn)和異常檢測(cè)機(jī)制,實(shí)現(xiàn)了在仿真和測(cè)試執(zhí)行前對(duì)腳本進(jìn)行全面的異常檢測(cè),有效的解決了由腳本異常導(dǎo)致的仿真及測(cè)試中斷問(wèn)題。實(shí)時(shí)腳本解釋器在實(shí)時(shí)處理機(jī)中實(shí)現(xiàn),使構(gòu)建的仿真模型腳本和測(cè)試用例腳本在執(zhí)行時(shí)具備實(shí)時(shí)特性,仿真腳本所承載的數(shù)據(jù)收發(fā)以及測(cè)試腳本所承載的測(cè)試激勵(lì)和結(jié)果收集的時(shí)間可以精確到lms,提高了仿真和測(cè)試的精度和準(zhǔn)確性。
[0032](4)本發(fā)明在實(shí)時(shí)處理機(jī)中構(gòu)建實(shí)時(shí)腳本解釋器時(shí),將腳本解釋器與系統(tǒng)映像模塊分離,便于啟動(dòng)時(shí)按需加載,提高了加載速度、減少資源占用。
[0033](5)本發(fā)明在實(shí)時(shí)處理機(jī)中采用移植的方式構(gòu)建實(shí)時(shí)腳本解釋器,降低了構(gòu)建成本,構(gòu)建的實(shí)時(shí)腳本具有很好的穩(wěn)定性和通用性。
[0034](6)本發(fā)明提出的實(shí)時(shí)嵌入式測(cè)試腳本的構(gòu)建方法具有普適性,適用于所有基于實(shí)時(shí)處理機(jī)和主控機(jī)架構(gòu)的測(cè)試環(huán)境,可利用該方法在不同實(shí)時(shí)平臺(tái)上構(gòu)建不同的測(cè)試腳本。
【附圖說(shuō)明】
[0035]圖1是本發(fā)明的示意圖;