段寧璐,李皓飛,何 祥,鄒 凡,張 珍
(陜西汽車集團(tuán)有限責(zé)任公司技術(shù)中心,陜西 西安 710200)
由于嵌入式系統(tǒng)發(fā)展快速,嵌入式軟件復(fù)雜程度越來越高,接口種類越來越多,迭代開發(fā)過程中需求變更頻繁。當(dāng)接口信號的參數(shù)隨應(yīng)用場景的變化而變化時(shí),傳統(tǒng)的模型接口測試需要測試人員根據(jù)測試模型和軟件詳細(xì)設(shè)計(jì)文檔將接口信息進(jìn)行一一比對,自動(dòng)化程度低,檢查效率低,耗費(fèi)大量時(shí)間精力。同時(shí)測試過程存在各種不規(guī)范操作,無法有效對接口測試數(shù)據(jù)進(jìn)行統(tǒng)計(jì)、檢查和分析。模型接口是被測軟件與外部設(shè)備和環(huán)境進(jìn)行數(shù)據(jù)交互的橋梁,是系統(tǒng)對外體現(xiàn)功能和性能的關(guān)鍵部件。如何保證模型中接口的質(zhì)量關(guān)系到整個(gè)軟件的正常發(fā)布。因此,本文針對模型中的接口檢測設(shè)計(jì)了一種可實(shí)現(xiàn)自動(dòng)化測試的方法。
Simulink中自帶的Model Advisor靜態(tài)模型檢查器,能夠根據(jù)已經(jīng)設(shè)計(jì)的測試規(guī)則進(jìn)行檢查,并且能夠進(jìn)行部分錯(cuò)誤的修改。在汽車電子及相關(guān)基于MBD開發(fā)的嵌入式項(xiàng)目中有著重要作用。自帶的檢查規(guī)則中,包含MAAB這種行業(yè)廣泛應(yīng)用的規(guī)則,隨著項(xiàng)目進(jìn)程的積累,后續(xù)需要開發(fā)一套屬于自己的建模規(guī)則和體系。針對自己的建模規(guī)則和體系需要設(shè)計(jì)一套對應(yīng)的檢測規(guī)則,其中對于模型接口信號和功能設(shè)計(jì)文檔接口的檢測更需要統(tǒng)一化、自動(dòng)化[1]。因此本文設(shè)計(jì)一種基于Simulink模型的接口自動(dòng)化測試方法。
正確性是指功能文檔表中的接口信息均按照設(shè)計(jì)的測試規(guī)則進(jìn)行測試。正確性的檢測項(xiàng)如下:
(1)接口名稱只能包含數(shù)字、字母、下劃線;
(2)接口名稱首字符不能為數(shù)字或者下劃線;
(3)接口名稱不能超過31個(gè)字符;
(4)接口名稱不能出現(xiàn)空格和回車;
(5)接口數(shù)據(jù)最小值大于等于定義的數(shù)據(jù)類型下限;
(6)接口數(shù)據(jù)最大值小于等于定義的數(shù)據(jù)類型上限;
(7)接口名稱中第一個(gè)字符必須是大寫字母。
一致性是指模型接口信息表和文檔接口信息表中對同一個(gè)信號進(jìn)行對比測試。當(dāng)對比的同一信號的同一屬性存在二義性時(shí),按照功能設(shè)計(jì)文檔的接口信息為標(biāo)準(zhǔn)進(jìn)行判斷。一致性的檢測項(xiàng)如下:
(1)接口信號名稱一致;
(2)接口信號的數(shù)據(jù)類型一致;
(3)接口信號的采樣時(shí)間保持一致;
(4)若為常量接口,默認(rèn)值是否保持一致;
(5)若為標(biāo)定參數(shù),標(biāo)定范圍包含于信號類型取值范圍內(nèi)。
整車的功能規(guī)范文檔包括整車功能需求、接口信息、功能設(shè)計(jì)等要素。本文從功能規(guī)范文檔中提取接口信息,按照1.1中的測試規(guī)則對接口信息進(jìn)行測試,輸出測試報(bào)告。
功能規(guī)范中需要提取的屬性為:信號名稱、采樣時(shí)間、數(shù)據(jù)類型、最小值和最大值。最終按照表1的模板 從功能規(guī)范文檔中提取模型輸入輸出接口信息,并將其存入文檔接口信息表中。
表1 文檔接口信息表
針對文檔接口信息表的單表測試只需驗(yàn)證其正確性。即按照1.1中設(shè)計(jì)的測試規(guī)則進(jìn)行測試。
設(shè)計(jì)的系統(tǒng)UI界面,可以自動(dòng)導(dǎo)入文檔接口信息表1。使用 regexp()函數(shù),設(shè)計(jì)測試規(guī)則的正則表達(dá)式,對文檔接口信息進(jìn)行測試[2]。測試過程中,如果出現(xiàn)不符合正確性測試規(guī)則的信號,將彈出對話框進(jìn)行提示。如圖1所示。
圖1 錯(cuò)誤信息提示
點(diǎn)擊“確定”按鈕,可繼續(xù)對功能文檔接口信息表中的其他信號進(jìn)行測試。
測試結(jié)束以后,會(huì)自動(dòng)生成對應(yīng)的測試報(bào)告,報(bào)告中包含錯(cuò)誤項(xiàng)和其他。如下圖2所示:
圖2 功能文檔接口測試報(bào)告
本文設(shè)計(jì)的接口自動(dòng)化測試系統(tǒng)均是以Simulink模型為基礎(chǔ)進(jìn)行開發(fā)的。所以需要從模型中提取接口信息的相關(guān)參數(shù)[3]。其中,所述的相關(guān)參數(shù)信息包括:接口名稱、接口數(shù)據(jù)類型、接口數(shù)據(jù)采樣時(shí)間、接口數(shù)據(jù)最小值、接口數(shù)據(jù)最大值,Matlab中使用find_system()函數(shù)提取模型接口信息。使用GUI工具設(shè)計(jì)便于人機(jī)交互的系統(tǒng)UI界面,并將模型的接口信息導(dǎo)入到模型接口信息表中[4]。如下圖3所示:
圖3 模型接口檢測UI界面
當(dāng)提取文檔接口信息和模型接口信息后,接口的一致性按照功能文檔接口信息表為依據(jù),需要根據(jù)1.2定義的一致性測試規(guī)則和文本比較算法進(jìn)行測試。對比測試按照以下情況進(jìn)行:
(1)文檔接口信息表和模型接口信息表中一致的信息,在測試記錄中“測試結(jié)果”列以“關(guān)閉”形式進(jìn)行記錄;
(2)文檔接口信息表和模型接口信息表中不一致的信息,在測試結(jié)果中“測試結(jié)果”列以“打開”形式進(jìn)行記錄;
(3)文檔接口信息表中存在的信息,模型接口信息表不存在,使用空格代替模型接口信息表的內(nèi)容,并以“Not Exist”進(jìn)行記錄,在測試結(jié)果中以“打開”形式進(jìn)行記錄。如下圖4所示:
圖4 接口對比測試報(bào)告
(4)以餅狀圖形式統(tǒng)計(jì)兩表中接口信息“一致”“不一致”“不存在”的數(shù)量,直觀反映測試統(tǒng)計(jì)結(jié)果,便于測試人員記錄和反饋。如下圖5所示:
圖5 測試統(tǒng)計(jì)結(jié)果
本文設(shè)計(jì)一種基于模型接口實(shí)現(xiàn)的自動(dòng)化測試方法,該方法包括:(1)從軟件詳細(xì)設(shè)計(jì)文檔中提取接口信息存儲(chǔ)于文檔接口信息表中;(2)加載模型文件獲取接口信息存儲(chǔ)于模型接口信息表中;(3)將文檔與模型接口信息表中的同一接口參數(shù)分別按照指定的測試規(guī)則進(jìn)行識別、測試,以圖表形式輸出測試結(jié)果;(4)使用文本比較算法,實(shí)現(xiàn)文檔信息接口表和模型接口信息表的對比校驗(yàn),以數(shù)字結(jié)合圖表的形式輸出測試報(bào)告[5]。接口的自動(dòng)化測試方法適用于包含輸入輸出接口的模型,保證接口數(shù)據(jù)的正確性、完整性,增強(qiáng)測試的自動(dòng)化程度,優(yōu)化軟件測試效率,提高軟件質(zhì)量。