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

?

鐵路信號軟件單元測試研究

2020-03-13 12:24:58
鐵路計算機(jī)應(yīng)用 2020年2期
關(guān)鍵詞:黑盒單元測試鐵路信號

凌 珊

(西南交通大學(xué) 信息與科學(xué)技術(shù)學(xué)院,成都 611756)

隨著我國鐵路的快速發(fā)展,鐵路旅客發(fā)送量及旅客周轉(zhuǎn)量逐年增加,保證鐵路運(yùn)輸安全、提高運(yùn)輸效率越來越成為鐵路系統(tǒng)關(guān)注的話題。鐵路信號軟件控制信號基礎(chǔ)設(shè)備動作并實(shí)現(xiàn)邏輯檢查,其穩(wěn)定性及可靠性對于保證鐵路安全運(yùn)輸起著重要的作用。在軟件投入使用之前,需要對軟件進(jìn)行一系列的測試,單元測試作為最早、最基本的環(huán)節(jié),不僅是軟件可靠性與穩(wěn)定性保證的關(guān)鍵因素,更是保證軟件質(zhì)量的有效手段?,F(xiàn)階段,對于鐵路信號軟件單元測試,大多存在測試不完整、不規(guī)范等缺點(diǎn),如文獻(xiàn)[1]僅介紹了計算機(jī)聯(lián)鎖軟件的黑盒測試。而鐵路信號系統(tǒng)安全度等級嚴(yán)苛,其軟件質(zhì)量要求高,在對其進(jìn)行單元測試階段,更應(yīng)按照規(guī)定進(jìn)行更加細(xì)致完整的驗(yàn)證,以保證鐵路信號軟件的可靠性,進(jìn)一步提升鐵路信號系統(tǒng)的安全性。

1 單元測試概述

1.1 單元測試原理

軟件的單元測試就是針對軟件最小組成單元進(jìn)行正確性檢驗(yàn)的測試工作,它的測試對象可以是一個模塊、一個類甚至是一個函數(shù)[2]。測試人員依據(jù)軟件源程序和軟件設(shè)計規(guī)格說明書,了解函數(shù)的輸入、輸出范圍限制,以及代碼邏輯原理,以測試的方式來分析軟件編碼是否正確,確定軟件接口、單元功能是否與軟件設(shè)計規(guī)格說明書要求一致[3]。

對于較為復(fù)雜的軟件,通過運(yùn)行單元測試,可以直接測試各個功能的正確性,而無需啟動整個系統(tǒng),能夠較早地發(fā)現(xiàn)編碼問題并迅速定位問題所在位置,及時修改,降低整體開發(fā)時間,減少后期維護(hù)成本,有效提高軟件代碼質(zhì)量。因此,單元測試是復(fù)雜軟件測試中必不可少的一部分。

1.2 單元測試方法

軟件單元測試主要分為靜態(tài)分析和動態(tài)測試兩種方法,其中,動態(tài)測試又可分為白盒測試和黑盒測試[4]。

1.2.1 靜態(tài)分析

靜態(tài)分析是一種不執(zhí)行代碼本身而獲得其信息的技術(shù),其目的是根據(jù)代碼標(biāo)準(zhǔn)進(jìn)行質(zhì)量監(jiān)控[5]。依靠人工檢查或者專用的工具分析,檢查軟件源代碼在邏輯、語法中所存在的錯誤。在整個檢查過程中,可以覆蓋所有程序代碼,而不會破壞代碼本身。靜態(tài)分析的度量指標(biāo)有邏輯代碼行數(shù)、圈復(fù)雜度、扇入數(shù)、扇出數(shù)等。

白盒測試是基于軟件內(nèi)部設(shè)計和程序?qū)崿F(xiàn)的測試方法,顧名思義,白盒,能夠看見內(nèi)部,這是一種“身處其中”的測試機(jī)制。整個測試過程中,不僅僅關(guān)注輸入與輸出的結(jié)果是否正確,還可以知曉軟件內(nèi)部程序是如何處理的[6]。白盒測試的主要方法有:數(shù)據(jù)流法、控制流法、邏輯覆蓋分析法等。

1.2.3 黑盒測試

黑盒測試也稱為功能性測試,從字面上理解,就是把軟件單元的所有功能和邏輯接口放入一個黑盒子中,在無法得知內(nèi)部邏輯走向與程序結(jié)構(gòu)時,根據(jù)預(yù)設(shè)的程序進(jìn)行測試[7],驗(yàn)證軟件功能的正確性。在測試過程中,黑盒測試只關(guān)注輸入、輸出,若輸入一個測試數(shù)據(jù),其輸出結(jié)果是正確的,則認(rèn)為該功能正確,而不考慮軟件內(nèi)部的計算處理過程,是一種“置身事外”的數(shù)據(jù)驅(qū)動測試。黑盒測試的主要方法有邊界值分析法、等價類劃分法、場景法和因果圖法等。

2 鐵路信號軟件單元測試概述

2.1 鐵路信號軟件單元測試基本要求

目前,在鐵路信號領(lǐng)域,鐵路信號軟件測試的標(biāo)準(zhǔn)規(guī)范主要參考MISRA-C:2004 (Guidelines for the use of the C language in critical systems)[8]和ISO 29119-3(軟件測試國際標(biāo)準(zhǔn))[9]等文件,對鐵路信號軟件的單元測試需要根據(jù)軟件詳細(xì)設(shè)計規(guī)格說明書、軟件需求規(guī)格說明書、軟件測試規(guī)格說明書等;選取適當(dāng)?shù)姆椒▽浖男阅堋①|(zhì)量等方面進(jìn)行測試,以檢驗(yàn)該軟件是否符合軟件需求規(guī)格說明書的需求,盡可能及早地發(fā)現(xiàn)軟件缺陷[10]。

鐵路信號軟件單元測試一般應(yīng)滿足以下要求:

(1)保證軟件的行為和性能滿足對應(yīng)測試規(guī)格的要求;

(2)流通方向及流量。主要流通方向?yàn)橹貞c主城區(qū),同時涵蓋周邊的涪陵、南川等區(qū)縣,仔豬外調(diào)還包括湖南、廣東等省市。

(2)軟件測試應(yīng)遵循先靜態(tài)再動態(tài)的測試原則;

(3)測試用例應(yīng)包含輸入、輸出兩部分,能驗(yàn)證函數(shù)的正確性;

(4)測試用例使用等價類方式時,應(yīng)包括有效等價類和無效等價類,最佳用例應(yīng)覆蓋所有有效等價類和無效等價類;

(5)測試通過準(zhǔn)則為:BUG數(shù)等于0;

(6)對于錯誤較多的函數(shù),應(yīng)進(jìn)行多次測試;

(7)分支覆蓋率覆應(yīng)達(dá)到100%,對于部分高覆蓋率較難實(shí)現(xiàn)的函數(shù),可以使用邊界值和等價類或輸入分割測試,用較少測試用例實(shí)現(xiàn)足夠的覆蓋;

(8)組合條件覆蓋率應(yīng)達(dá)到100%,特殊情況下,組合覆蓋率不能達(dá)到100%,應(yīng)經(jīng)過人工驗(yàn)證代碼,并給出合理解釋和說明。

2.2 鐵路信號軟件單元測試方法步驟

本文選擇C++test軟件作為單元測試的工具,分為以下3步完成軟件的單元測試:

(1)基于C++test的軟件靜態(tài)分析;

(2)基于邊界值和等價類的黑盒測試;

(3)基于覆蓋率分析的白盒測試。

3 鐵路信號軟件單元測試典例應(yīng)用

本文以鐵路信號軟件區(qū)間綜合監(jiān)控系統(tǒng)軟件為例,進(jìn)行單元測試研究。

3.1 基于C++test的軟件靜態(tài)分析

采用工具及人工檢查相結(jié)合的方式,通過C++test進(jìn)行代碼質(zhì)量度量、控制流、數(shù)據(jù)流和編碼規(guī)則檢查,通過人工方式對編碼規(guī)范符合性、代碼與詳細(xì)設(shè)計一致性進(jìn)行分析,檢查過程如圖1所示。

結(jié)合C++test制定靜態(tài)分析檢查單作為檢查依據(jù),檢查單部分內(nèi)容見表1。根據(jù)檢查單確定檢查內(nèi)容是否可通過軟件檢查,如果不能,則采用人工走查方式進(jìn)行檢查;如果可以,則進(jìn)行軟件分析,采用C++test軟件,得到靜態(tài)分析報告,若報告無誤,則完成軟件分析部分,若有誤,則須人工核查錯誤項(xiàng),確認(rèn)無誤后修改軟件靜態(tài)分析約束,抑制該檢查項(xiàng),并再次進(jìn)行軟件分析,直到得到正確分析報告。

表1 靜態(tài)分析檢查單

3.2 基于邊界值和等價類的黑盒測試

等價類劃分是把程序輸入數(shù)據(jù)均劃分為無數(shù)個等價類,從中選取具有代表性的作為測試用例數(shù)據(jù);而邊界值分析則是對等價類分析的補(bǔ)充,使得整個黑盒測試更具完整性。選取區(qū)間綜合監(jiān)控系統(tǒng)軟件中處理區(qū)間占用邏輯函數(shù)fn_ProcSectOcupLogic為例,分4步完成黑盒測試。

(1)明確函數(shù)代碼結(jié)構(gòu)中所包含的輸入、輸出變量,以及輸入輸出邊界值,劃分等價類。fn_ProcSectOcupLogic函數(shù)中包含區(qū)間當(dāng)前運(yùn)行方向、功能啟用標(biāo)志等9個輸入,在劃分等價類時需注意增加無效等價類,以保證測試數(shù)據(jù)更加充分。

例如,判斷區(qū)間運(yùn)行方向是正向還是反向,其測試數(shù)據(jù)應(yīng)取“0xaa”“0x55” “0x5a”,其中,“0xaa”表示區(qū)間正向,“0x55” 表示區(qū)間反向,這2種類型的數(shù)據(jù)即為有效等價類,而“0x5a”則是無法判斷區(qū)間方向的數(shù)據(jù),此為無效等價類數(shù)據(jù)。

(2)建立測試用例,在區(qū)間綜合監(jiān)控系統(tǒng)單元測試中,由于函數(shù)輸入輸出值較多,采用C++Test軟件自帶的測試用例生成功能,容易造成部分測試用例缺失,所以在軟件中建立外部數(shù)據(jù)源,手動建立數(shù)據(jù)源測試用例。

(3)在新建的Excel表格中添加測試用例數(shù)據(jù)。同時,對函數(shù)內(nèi)部調(diào)用的其他函數(shù)進(jìn)行打樁處理,生成樁函數(shù),替代原函數(shù)的功能,使得單元測試過程中能將被測功能與外部依賴隔離。

例如,在fn_ProcSectOcupLogic函數(shù)中調(diào)用了改方延遲函數(shù)fn_SOLGFDelayTime,此時,建立樁函數(shù)fn_SOLGFDelayTime,使測試過程中直接返回樁函數(shù)值為外部數(shù)據(jù)源,如圖2所示,而無需調(diào)用原函數(shù),提高了測試效率。在進(jìn)行打樁處理時需要注意樁函數(shù)的返回值類型,內(nèi)部調(diào)用函數(shù)的返回值類型應(yīng)與其保持一致。

(4)根據(jù)程序的邏輯對外部數(shù)據(jù)源和樁函數(shù)輸入取值進(jìn)行修改,使其滿足測試需求,在樁函數(shù)與測試用例都無誤后,進(jìn)行測試。

3.3 基于覆蓋率分析的白盒測試

進(jìn)行白盒測試,通過分析區(qū)間綜合監(jiān)控系統(tǒng)軟件模塊內(nèi)部的路徑執(zhí)行情況、邏輯分支,選用覆蓋率分析的方法,該軟件要求語句、判定、簡單條件和修正條件判定(MC/DC)4種覆蓋率均達(dá)到100%。

基于以上黑盒測試,在C++Test軟件工具菜單中選擇“Parasoft”>“顯示圖示”>“覆蓋率”,根據(jù)覆蓋要求查看模塊的4種覆蓋率情況。對于覆蓋率不能達(dá)到100%要求的函數(shù),可點(diǎn)擊相應(yīng)的源碼,查看未覆蓋的原因,這樣不僅能有效地提高測試質(zhì)量,還能避免設(shè)計無效用例。如圖3所示,選擇MC/DC覆蓋后,紅色表示未覆蓋語句,并顯示未覆蓋條件。

將圖3語句描述為if((A)||((B)&& (C)))形式,A、B、C分別對應(yīng)3個條件語句,用0和1分別表示假和真。分析語句,其判定結(jié)果如表2所示。

要實(shí)現(xiàn)MC/DC覆蓋,其測試用例取值應(yīng)滿足每個條件都曾獨(dú)立地影響判斷結(jié)果至少1次,對于該語句,應(yīng)同時滿足以下2個條件:

表2 語句判定結(jié)果分析

(1)當(dāng)A對判斷結(jié)果起作用,則B&&C判定結(jié)果為假,即應(yīng)滿足A為1或0,B&&C保持為0。當(dāng)A為1且B&&C為0時,包含3種可能,分別對應(yīng)表2中情況1、2、3,測試時任選1種添加測試用例;當(dāng)A為0且B&&C為0時,同樣包含3種可能,對應(yīng)表2中情況5、6、7,測試時與前面同理。

(2)當(dāng)B&&C對判斷結(jié)果起作用,則A判定結(jié)果為假,即應(yīng)滿足B&&C為1或0,A保持為0。當(dāng)B&&C為1且A為0時,對應(yīng)表2中情況8;當(dāng)B&&C為0且A為0時,對應(yīng)表2中情況4。

由圖3中未覆蓋條件可知,其未滿足上述條件(2)中B&&C為1的情況,此時,根據(jù)未覆蓋的值添加相應(yīng)的測試用例,即可滿足測試覆蓋率的要求,最終覆蓋結(jié)果如圖4所示,覆蓋率如圖5所示。

4 結(jié)束語

現(xiàn)階段,在軟件測試領(lǐng)域,單元測試工作已得到越來越多的重視,但常常由于項(xiàng)目時間短、經(jīng)費(fèi)不足等原因?qū)е萝浖卧獪y試工作擱置,所以明白軟件單元測試的重要性,使用有效的單元測試方法,對保證鐵路信號軟件的質(zhì)量具有重要的現(xiàn)實(shí)意義。基于此,本文結(jié)合理論實(shí)踐,研究了鐵路信號軟件單元測試方法,并選取典型函數(shù)進(jìn)行分析,可有效發(fā)現(xiàn)軟件開發(fā)過程中存在的缺陷,及時改正,從而保證鐵路信號軟件的穩(wěn)定性與可靠性。

猜你喜歡
黑盒單元測試鐵路信號
一種基于局部平均有限差分的黑盒對抗攻擊方法
渝貴鐵路信號系統(tǒng)聯(lián)調(diào)聯(lián)試的思考與建議
鐵路信號設(shè)備維修管理信息系統(tǒng)設(shè)計與開發(fā)
雷擊對鐵路信號系統(tǒng)的影響探討
既有鐵路信號改造工程實(shí)施與研究
一年級上冊第五單元測試
一年級上冊一、二單元測試
第五單元測試卷
第六單元測試卷
无极县| 鄱阳县| 普安县| 都匀市| 永春县| 武邑县| 紫金县| 无棣县| 尤溪县| 泸溪县| 葫芦岛市| 清苑县| 仙游县| 潜江市| 渝北区| 天镇县| 鹤峰县| 商城县| 贵港市| 富源县| 彭阳县| 历史| 宽城| 班玛县| 汉沽区| 沧州市| 宁远县| 南投县| 兴义市| 长治市| 福安市| 宁强县| 通辽市| 普兰县| 滁州市| 华蓥市| 华池县| 恩施市| 龙海市| 九台市| 满洲里市|