国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

嵌入式軟件仿真測(cè)試環(huán)境實(shí)時(shí)腳本技術(shù)的研究

2014-03-28 09:41:40周漢清
關(guān)鍵詞:測(cè)試環(huán)境測(cè)系統(tǒng)嵌入式軟件

周漢清 劉 暢

(中航工業(yè)綜合技術(shù)研究所,北京 100028)

航空裝備對(duì)嵌入式軟件的質(zhì)量要求不斷提高,各種自動(dòng)化嵌入式軟件仿真測(cè)試環(huán)境不斷涌現(xiàn)。目前,這些測(cè)試環(huán)境被廣泛采用,成為國(guó)內(nèi)外公認(rèn)的有效的軟件測(cè)試手段,對(duì)于發(fā)現(xiàn)軟件缺陷及提高軟件質(zhì)量起到非常關(guān)鍵的作用。由于測(cè)試腳本能夠描述復(fù)雜的測(cè)試場(chǎng)景使得測(cè)試更加充分,進(jìn)而提高測(cè)試質(zhì)量,在仿真測(cè)試環(huán)境中,利用測(cè)試腳本來(lái)描述測(cè)試用例的輸入,并通過(guò)仿真測(cè)試環(huán)境中的腳本解釋器來(lái)執(zhí)行測(cè)試用例是一種有效的測(cè)試方法。但機(jī)載嵌入式軟件硬實(shí)時(shí)性的特點(diǎn)對(duì)測(cè)試腳本提出實(shí)時(shí)性的要求,為了獲得準(zhǔn)確的測(cè)試結(jié)果,在實(shí)際測(cè)試過(guò)程中,需要精確地在某一時(shí)刻注入測(cè)試激勵(lì),并在特定的時(shí)刻觀察被測(cè)系統(tǒng)的響應(yīng)判斷執(zhí)行結(jié)果是否正確。測(cè)試激勵(lì)和結(jié)果查看通常都需要精確地在某一時(shí)刻進(jìn)行,否則無(wú)法獲得準(zhǔn)確的測(cè)試結(jié)果。在構(gòu)造嵌入式軟件仿真測(cè)試環(huán)境時(shí),實(shí)現(xiàn)激勵(lì)數(shù)據(jù)的實(shí)時(shí)控制和測(cè)試結(jié)果數(shù)據(jù)的實(shí)時(shí)收集成為業(yè)界的一大難題。為此,本文提出并實(shí)現(xiàn)了一種實(shí)時(shí)腳本技術(shù),實(shí)現(xiàn)了測(cè)試過(guò)程中激勵(lì)數(shù)據(jù)的實(shí)時(shí)控制和結(jié)果數(shù)據(jù)的實(shí)時(shí)收集,以滿足機(jī)載嵌入式軟件實(shí)時(shí)性的測(cè)試要求。

1 嵌入式軟件可靠性仿真測(cè)試環(huán)境SATE

本文中,實(shí)時(shí)腳本是基于嵌入式軟件可靠性仿真測(cè)試環(huán)境SATE(Software Automation Testing Environment)實(shí)現(xiàn)的。SATE為嵌入式軟件可靠性測(cè)試提供了一個(gè)從測(cè)試用例編輯、仿真模型開發(fā)、接口配置集成,到測(cè)試用例激勵(lì)、測(cè)試數(shù)據(jù)收集、仿真模型和測(cè)試腳本的運(yùn)行管理、接口驅(qū)動(dòng)管理,再到測(cè)試數(shù)據(jù)管理分析的全過(guò)程解決方案。能夠滿足嵌入式軟件對(duì)嵌入特性、接口特性、實(shí)時(shí)特性以及交聯(lián)特性的要求。

測(cè)試環(huán)境采用了目前國(guó)內(nèi)外較成熟產(chǎn)品GESTE[1]、ADS2[2]等的體系結(jié)構(gòu)。如圖1所示。測(cè)試環(huán)境分為測(cè)試主控機(jī)和實(shí)時(shí)處理機(jī)兩部分,其中測(cè)試主控機(jī)主要完成測(cè)試用例、仿真模型、腳本的編輯和加載,測(cè)試過(guò)程的控制,以及測(cè)試結(jié)果的顯示與分析等。實(shí)時(shí)處理機(jī)通過(guò)真實(shí)總線與被測(cè)系統(tǒng)連接,實(shí)現(xiàn)對(duì)被測(cè)系統(tǒng)的系統(tǒng)交聯(lián)模型的仿真。執(zhí)行時(shí)實(shí)時(shí)處理機(jī)接收主控機(jī)下傳的測(cè)試數(shù)據(jù)并進(jìn)行加工,完成向被測(cè)系統(tǒng)施加測(cè)試激勵(lì)的功能。此外,實(shí)時(shí)處理機(jī)還要完成測(cè)試結(jié)果數(shù)據(jù)的收集任務(wù)。

圖1 SATE軟件體系結(jié)構(gòu)

接下來(lái),我們討論實(shí)時(shí)腳本在SATE中所處的位置以及實(shí)時(shí)腳本與SATE其他模塊之間的關(guān)系。從圖1中可以看出,測(cè)試主控機(jī)上的腳本編輯器和實(shí)時(shí)處理機(jī)上的腳本解釋器協(xié)同實(shí)現(xiàn)了SATE的實(shí)時(shí)腳本功能。測(cè)試人員通過(guò)測(cè)試主控機(jī)的腳本編輯器編寫腳本并進(jìn)行語(yǔ)法檢查。測(cè)試開始后,測(cè)試腳本通過(guò)TCP/IP下發(fā)到實(shí)時(shí)處理機(jī)。實(shí)時(shí)處理機(jī)中的腳本解釋器在任務(wù)調(diào)度模塊的驅(qū)動(dòng)下對(duì)腳本進(jìn)行解釋,并將解釋完的測(cè)試激勵(lì)數(shù)據(jù)通過(guò)接口驅(qū)動(dòng)管理模塊下發(fā)到被測(cè)系統(tǒng),同時(shí)解釋器接收被測(cè)系統(tǒng)的反饋結(jié)果,并根據(jù)結(jié)果執(zhí)行相應(yīng)的腳本邏輯。

2 實(shí)時(shí)腳本的設(shè)計(jì)與實(shí)現(xiàn)

由于實(shí)時(shí)處理機(jī)中的腳本解釋器是經(jīng)過(guò)深度定制的,是腳本的實(shí)際執(zhí)行機(jī)構(gòu)。主控機(jī)中的腳本編輯器中的語(yǔ)法檢查規(guī)則需要根據(jù)實(shí)時(shí)處理機(jī)中的腳本解釋器確定。因此,本文首先闡述實(shí)時(shí)處理機(jī)中腳本解釋器的實(shí)現(xiàn)方案。

2.1 腳本解釋器

實(shí)時(shí)處理機(jī)中腳本解釋器構(gòu)造主要包括腳本解釋器移植、解釋器裁剪、解釋器的擴(kuò)展和嵌入3個(gè)主要過(guò)程。

2.1.1 腳本解釋器移植

在SATE中,實(shí)時(shí)處理機(jī)是一臺(tái)加載VxWorks實(shí)時(shí)操作系統(tǒng)的工控機(jī),而目前Python腳本解釋器無(wú)法直接在VxWorks中進(jìn)行,這就需要進(jìn)行腳本解釋器移植。目標(biāo)是獲得一個(gè)能夠在VxWorks系統(tǒng)上運(yùn)行的Python解釋器。

在SATE中,我們將Linux系統(tǒng)版本的Python解釋器移植到VxWorks 5.5系統(tǒng)中。具體的移植方法參見[3]。由于Python解釋器采用C語(yǔ)言實(shí)現(xiàn)。移植主要工作是系統(tǒng)函數(shù)替換,將Python解釋器中相關(guān)的Linux系統(tǒng)調(diào)用函數(shù)替換成VxWorks中的系統(tǒng)調(diào)用函數(shù)。

2.1.2 腳本解釋器裁剪

進(jìn)行腳本解釋器裁剪的原因主要有以下兩方面,一是在上述移植的過(guò)程中,解釋器中有些系統(tǒng)調(diào)用在VxWorks中并不存在,無(wú)法進(jìn)行相應(yīng)的名稱替換。對(duì)于這類系統(tǒng)調(diào)用,在移植的過(guò)程中進(jìn)行裁剪刪除。第二個(gè)原因是,我們移植的目標(biāo)系統(tǒng)是一個(gè)嵌入式系統(tǒng),系統(tǒng)資源十分稀缺。由于Python腳本解釋器結(jié)構(gòu)復(fù)雜、功能龐大,使用時(shí)所占用大量的系統(tǒng)資源,因而在移植過(guò)程中,對(duì)于執(zhí)行測(cè)試腳本無(wú)關(guān)的模塊,例如網(wǎng)絡(luò)模塊、圖形用戶編程模塊、Web模塊、數(shù)據(jù)庫(kù)模塊等也進(jìn)行裁剪刪除。裁剪后的腳本解釋器既滿足了執(zhí)行測(cè)試腳本的要求,同時(shí)結(jié)構(gòu)簡(jiǎn)單緊湊、占用更少系統(tǒng)資源,具有很高的運(yùn)行效率。

2.1.3 腳本解釋器擴(kuò)展和嵌入

經(jīng)過(guò)上述兩步,我們獲得了一個(gè)運(yùn)行在VxWorks上的Python腳本解釋器。但是為了能夠執(zhí)行測(cè)試主控機(jī)中的測(cè)試腳本,還需要這個(gè)解釋器跟實(shí)時(shí)處理機(jī)中的其他模塊相互協(xié)作。腳本解釋器擴(kuò)展和嵌入就是建立協(xié)作的過(guò)程。

由于實(shí)時(shí)處理機(jī)中其他模塊都采用C語(yǔ)言實(shí)現(xiàn),所以擴(kuò)展和嵌入就是集成C語(yǔ)言和Python語(yǔ)言。擴(kuò)展是指用C語(yǔ)言實(shí)現(xiàn)Python的擴(kuò)展模塊,然后從Python中調(diào)用這些模塊的功能。嵌入是指將Python解釋器嵌入到C語(yǔ)言編寫的應(yīng)用程序中,使應(yīng)用程序可以解釋執(zhí)行Python語(yǔ)言編寫的測(cè)試腳本。擴(kuò)展和嵌入都是通過(guò)Python的C語(yǔ)言應(yīng)用程序編程接口來(lái)進(jìn)行,由此形成的結(jié)構(gòu)如圖2所示。

圖2 Python擴(kuò)展和嵌入結(jié)構(gòu)

由于嵌入實(shí)現(xiàn)比較簡(jiǎn)單,下面主要介紹擴(kuò)展的實(shí)現(xiàn)方式,擴(kuò)展主要是在Python腳本解釋器的基礎(chǔ)上加入針對(duì)實(shí)時(shí)嵌入式軟件測(cè)試特性的描述,包括測(cè)試激勵(lì)、測(cè)試反饋和任務(wù)調(diào)度。

1)測(cè)試激勵(lì)

在SATE中,被測(cè)系統(tǒng)只與接口驅(qū)動(dòng)管理模塊進(jìn)行數(shù)據(jù)交互,實(shí)時(shí)腳本對(duì)被測(cè)系統(tǒng)的測(cè)試激勵(lì)通過(guò)接口驅(qū)動(dòng)管理模塊進(jìn)行施加。本文采用的擴(kuò)展方式對(duì)SATE中的接口驅(qū)動(dòng)管理模塊函數(shù)進(jìn)行封裝,測(cè)試腳本可以通過(guò)擴(kuò)展模塊提供的方法來(lái)設(shè)置激勵(lì)數(shù)據(jù)的值。最終通過(guò)接口驅(qū)動(dòng)管理模塊發(fā)送給被測(cè)系統(tǒng)。實(shí)現(xiàn)后的代碼示例如下:

2)測(cè)試反饋

實(shí)時(shí)腳本獲取被測(cè)系統(tǒng)的反饋數(shù)據(jù)也是通過(guò)接口驅(qū)動(dòng)管理模塊完成,接口驅(qū)動(dòng)管理模塊按照接口協(xié)議接收并保存被測(cè)系統(tǒng)的反饋數(shù)據(jù)。測(cè)試腳本通過(guò)擴(kuò)展的方法來(lái)獲取相應(yīng)反饋數(shù)據(jù)的值。實(shí)現(xiàn)后的代碼示例如下:

3)任務(wù)調(diào)度

測(cè)試腳本承載的測(cè)試行為被封裝成一個(gè)個(gè)獨(dú)立的測(cè)試任務(wù),測(cè)試任務(wù)分為兩種,一種是周期型任務(wù),另一種是事件型任務(wù)。周期型任務(wù)是在測(cè)試執(zhí)行過(guò)程中按規(guī)定周期重復(fù)運(yùn)行。事件型任務(wù)是在指定時(shí)間到達(dá)時(shí)執(zhí)行一次。無(wú)論周期型任務(wù)和事件型任務(wù),都需要接收任務(wù)調(diào)度模塊的統(tǒng)一調(diào)度,這就需要實(shí)現(xiàn)一個(gè)擴(kuò)展的注冊(cè)函數(shù),將腳本任務(wù)注冊(cè)到任務(wù)調(diào)度模塊中。注冊(cè)函數(shù)主要將任務(wù)的類型、執(zhí)行時(shí)間以及周期等信息注冊(cè)到任務(wù)調(diào)度模塊的任務(wù)列表。測(cè)試開始后,任務(wù)調(diào)度模塊根據(jù)任務(wù)的時(shí)間特性自動(dòng)調(diào)用測(cè)試腳本函數(shù)。實(shí)現(xiàn)后的代碼示例如下:

2.2 腳本編輯器

腳本編輯器提供了友好的人機(jī)界面進(jìn)行腳本開發(fā)。包含了常規(guī)代碼編輯器中的腳本編輯、腳本自動(dòng)補(bǔ)全、代碼折疊、語(yǔ)法高亮、代碼注釋、字體放大縮小、換膚,顯示代碼行號(hào)等功能。由于Python語(yǔ)言是解釋執(zhí)行,在執(zhí)行過(guò)程中如果遇到語(yǔ)法錯(cuò)誤,解釋器能夠自動(dòng)停止程序運(yùn)行并給出錯(cuò)誤提示,因而現(xiàn)有的商業(yè)Python腳本編輯器中不包含語(yǔ)法檢查功能。但在SATE中,腳本的編輯和執(zhí)行分布在兩個(gè)不同的平臺(tái)。腳本解釋器執(zhí)行腳本時(shí),測(cè)試過(guò)程已經(jīng)開始。如果此時(shí)遇到腳本語(yǔ)法錯(cuò)誤,測(cè)試過(guò)程將被中止,此前已經(jīng)得到的測(cè)試步驟需要在修改腳本完成后重新執(zhí)行,最終造成測(cè)試執(zhí)行效率低下。因而,在測(cè)試執(zhí)行之前對(duì)腳本進(jìn)行語(yǔ)法檢查是十分必要的。

在腳本編輯器中單獨(dú)實(shí)現(xiàn)語(yǔ)法檢查器工作量非常大,需要很高的開發(fā)維護(hù)成本。為此,本文提出一種實(shí)現(xiàn)腳本語(yǔ)法檢查的方法,這種方法的主要思路是通過(guò)在腳本編輯器中內(nèi)嵌一個(gè)特殊的腳本解釋器,在測(cè)試過(guò)程開始前,先利用該解釋器模擬運(yùn)行腳本并給出語(yǔ)法檢查的結(jié)果。這就使我們?cè)跍y(cè)試執(zhí)行開始前就能獲得一個(gè)可以正確執(zhí)行的腳本。

圖3 語(yǔ)法檢查腳本解釋器與執(zhí)行腳本解釋器的關(guān)系

實(shí)現(xiàn)語(yǔ)法檢查工作的重點(diǎn)是在測(cè)試主控機(jī)上的腳本編輯器中實(shí)現(xiàn)一個(gè)語(yǔ)法檢查用的腳本解釋器。上文已經(jīng)介紹了實(shí)時(shí)處理機(jī)中的腳本解釋器的實(shí)現(xiàn)方案。該解釋器是測(cè)試腳本的實(shí)際運(yùn)行機(jī)構(gòu),是腳本編輯器中語(yǔ)法檢查規(guī)則建立的依據(jù)。如圖3所示,圖中左側(cè)是實(shí)時(shí)處理機(jī)中腳本解釋器的實(shí)現(xiàn)過(guò)程,右側(cè)是測(cè)試主控機(jī)上腳本編輯器中用于語(yǔ)法檢查的腳本解釋器的實(shí)現(xiàn)過(guò)程。標(biāo)準(zhǔn)的腳本解釋器可以直接在測(cè)試主控機(jī)中運(yùn)行,因而無(wú)需腳本移植過(guò)程。除此之外,構(gòu)造過(guò)程與實(shí)時(shí)處理機(jī)中的腳本解釋器一致。

將語(yǔ)法檢查用的腳本解釋器內(nèi)嵌到腳本編輯器中,實(shí)現(xiàn)了語(yǔ)法檢查的功能。由于解釋器的構(gòu)造方式與實(shí)時(shí)處理機(jī)中的相同,因而,兩個(gè)解釋器的支持的語(yǔ)法結(jié)構(gòu)、語(yǔ)法檢查判斷準(zhǔn)則都完全一致。最終實(shí)現(xiàn)了在測(cè)試主控機(jī)的腳本編輯器中進(jìn)行語(yǔ)法檢查,在實(shí)時(shí)處理機(jī)中的腳本解釋器中運(yùn)行腳本的目的。

3 應(yīng)用實(shí)例

最后,我們使用嵌入式軟件仿真測(cè)試環(huán)境SATE對(duì)“飛機(jī)襟縫翼伺服控制模擬系統(tǒng)軟件”進(jìn)行可靠性測(cè)試,測(cè)試腳本采用Python腳本進(jìn)行編寫。測(cè)試概況如表1所示。

表1 工程案例項(xiàng)目概況

下面介紹兩個(gè)典型的測(cè)試用例。

3.1 輸入信號(hào)消抖能力測(cè)試

驗(yàn)證目標(biāo):測(cè)試軟件對(duì)輸入信號(hào)確認(rèn)功能(信號(hào)保持300ms確認(rèn)有效,否則保持原狀態(tài))實(shí)現(xiàn)的正確性。

驗(yàn)證方法:通過(guò)實(shí)時(shí)測(cè)試腳本,控制輸入信號(hào)持續(xù)的時(shí)間。

圖4 輸入信號(hào)消抖能力測(cè)試結(jié)果

測(cè)試結(jié)果如圖4所示。驗(yàn)證結(jié)論:人工測(cè)試時(shí)無(wú)法精確到ms級(jí),因而無(wú)法完成此項(xiàng)功能的測(cè)試過(guò)程,無(wú)法找出軟件缺陷。仿真環(huán)境中實(shí)時(shí)測(cè)試腳本可以精確有效模擬軟件輸入信號(hào)持續(xù)時(shí)間,發(fā)現(xiàn)了軟件存在的缺陷,從而充分驗(yàn)證軟件數(shù)據(jù)處理是否滿足要求。

3.2 極端異常條件下系統(tǒng)響應(yīng)測(cè)試

驗(yàn)證目標(biāo):測(cè)試機(jī)翼在轉(zhuǎn)動(dòng)中突遇強(qiáng)大的氣流壓力迫使機(jī)翼突然變向轉(zhuǎn)動(dòng)時(shí)軟件的響應(yīng)是否正確。

驗(yàn)證方法:通過(guò)實(shí)時(shí)測(cè)試腳本,通過(guò)腳本模擬飛機(jī)異常環(huán)境條件,施加異常測(cè)試激勵(lì)數(shù)據(jù)給被測(cè)系統(tǒng)。

測(cè)試結(jié)果如圖5所示。

圖5 極端異常條件下系統(tǒng)響應(yīng)測(cè)試結(jié)果

驗(yàn)證結(jié)論:仿真環(huán)境可以準(zhǔn)確模擬飛機(jī)異常環(huán)境條件,從而充分驗(yàn)證在異常條件下軟件的處理能力是否滿足要求。

4 總結(jié)

本文在嵌入式軟件仿真測(cè)試環(huán)境SATE中設(shè)計(jì)并實(shí)現(xiàn)了一種實(shí)時(shí)Python腳本技術(shù),通過(guò)測(cè)試實(shí)例證明,采用實(shí)時(shí)腳本技術(shù)的SATE能夠完成各種復(fù)雜測(cè)試場(chǎng)景的描述,具有很強(qiáng)的測(cè)試描述能力。通過(guò)使用CodeTest進(jìn)行性能測(cè)試,測(cè)試腳本的定時(shí)精度可達(dá)1ms,能夠充分滿足機(jī)載嵌入式軟件測(cè)試的要求。綜上所述,本文設(shè)計(jì)并實(shí)現(xiàn)的實(shí)時(shí)腳本技術(shù)具有很好的推廣應(yīng)用價(jià)值。

[1] 鐘德明,劉斌,阮鐮. 嵌入式軟件仿真測(cè)試環(huán)境軟件體系結(jié)構(gòu)研究[J]. 北京航空航天大學(xué)學(xué)報(bào),2005,31(10):1130-1134.

[2] ADS2:Avionics development system 2 generation[EB/ OL]. www.techsat.com,2004.

[3] Raskin S.How To port Python To VxWorks[EB/ OL].https://mail.python.org/pipermail/pythonlist/1999-May/003929.html.

猜你喜歡
測(cè)試環(huán)境測(cè)系統(tǒng)嵌入式軟件
全數(shù)字仿真測(cè)試環(huán)境在航天軟件測(cè)試中的應(yīng)用研究
雷達(dá)航跡處理測(cè)試環(huán)境構(gòu)建方法研究
科技視界(2019年10期)2019-09-02 03:22:27
網(wǎng)絡(luò)設(shè)備自動(dòng)化測(cè)試設(shè)計(jì)與實(shí)現(xiàn)
實(shí)時(shí)嵌入式軟件的測(cè)試技術(shù)
全景相機(jī)遙控器嵌入式軟件V1.0 相關(guān)操作分析
電子制作(2017年17期)2017-12-18 06:40:56
防洪非工程措施設(shè)計(jì)實(shí)例——嘉興市水文巡測(cè)系統(tǒng)項(xiàng)目設(shè)計(jì)
電快速瞬變脈沖群對(duì)核測(cè)系統(tǒng)的影響及對(duì)策
基于Eclipse的航天嵌入式軟件集成開發(fā)環(huán)境設(shè)計(jì)與實(shí)現(xiàn)
航天嵌入式軟件浮點(diǎn)運(yùn)算誤差分析與控制
基于廣域量測(cè)系統(tǒng)的電力系統(tǒng)綜合負(fù)荷辨識(shí)模型的研究
江西省| 六盘水市| 土默特右旗| 晋江市| 晴隆县| 乌拉特前旗| 黄大仙区| 黎川县| 海林市| 图木舒克市| 安阳市| 平泉县| 镇远县| 盐池县| 济源市| 宾川县| 克拉玛依市| 万安县| 陆丰市| 大荔县| 潞西市| 万宁市| 安阳市| 卓资县| 巨鹿县| 大荔县| 长沙市| 鹰潭市| 霸州市| 高陵县| 襄樊市| 南宫市| 墨竹工卡县| 龙陵县| 高邑县| 龙口市| 贡觉县| 贡山| 汾阳市| 介休市| 巴林右旗|