鐵路是大容量和大眾化的交通運(yùn)輸工具安全運(yùn)輸是鐵路追求的目標(biāo)通常所說的“安全第一”表明安全在鐵路中的地位?!肮收弦话踩?Fail一Safe)”理念的技術(shù)化也源于鐵路。在這些系統(tǒng)中不光要能保證系統(tǒng)在正常情況下的安全運(yùn)行,同時(shí)還必須考慮系統(tǒng)在出現(xiàn)某些不正常的情況下,如何避免出現(xiàn)危及人身安全或大宗財(cái)物損失的事故或減少事故的損失。
目前,在鐵路運(yùn)輸系統(tǒng)中,計(jì)算機(jī)聯(lián)鎖系統(tǒng)已經(jīng)得到了廣泛的應(yīng)用,與以前的繼電聯(lián)鎖相比,計(jì)算機(jī)聯(lián)鎖系統(tǒng)是用軟件實(shí)現(xiàn)原來由繼電邏輯完成的信號(hào)設(shè)備之間的聯(lián)鎖關(guān)系。然而對軟件可靠性的研究和應(yīng)用,并不像硬件那樣成熟,在計(jì)算機(jī)聯(lián)鎖系統(tǒng)中,聯(lián)鎖軟件是執(zhí)行聯(lián)鎖運(yùn)算的核心機(jī)構(gòu),它的失效有可能導(dǎo)致列車的相撞或顛覆等重大事故,因此,如何保障聯(lián)鎖軟件的可靠性也成了開發(fā)計(jì)算機(jī)聯(lián)鎖軟件系統(tǒng)的一項(xiàng)重要課題。
(1)人機(jī)對話層。該層將來自鍵盤、鼠標(biāo)等的操作輸入,送達(dá)聯(lián)鎖微機(jī)。運(yùn)用一機(jī)多屏技術(shù)在多臺(tái)圖形顯示器上顯示整個(gè)站場的表示信息,同時(shí)也可以將站場的動(dòng)態(tài)信息和微機(jī)聯(lián)鎖系統(tǒng)的文字信息通過在控制室增設(shè)的動(dòng)態(tài)模擬屏和LED顯示屏上顯示出來,以方便信號(hào)員觀察。此層預(yù)留多種接口,方便系統(tǒng)功能擴(kuò)容。
(2)聯(lián)鎖運(yùn)算層。聯(lián)鎖微機(jī)是系統(tǒng)的核心部分,通過其上運(yùn)行的聯(lián)鎖軟件實(shí)現(xiàn)操作輸入的判別、聯(lián)鎖信號(hào)分析、邏輯運(yùn)算、控制命令生成及故障診斷等主要任務(wù)。本系統(tǒng)中設(shè)置了2臺(tái)聯(lián)鎖微機(jī),其中一臺(tái)為熱備機(jī),通過共享器切換。聯(lián)鎖運(yùn)算控制模塊的主要功能有:排列進(jìn)路、列車進(jìn)路正常解鎖、調(diào)車進(jìn)路正常解鎖、調(diào)車進(jìn)路中途折返解鎖、取消進(jìn)路、人工解鎖、人工關(guān)閉信號(hào)、重復(fù)開放信號(hào)、辦理引導(dǎo)鎖閉、引導(dǎo)解鎖、取消誤操作信息、單獨(dú)操縱道岔、進(jìn)路故障解鎖、區(qū)段故障解鎖、道岔單獨(dú)鎖閉和道岔單獨(dú)解鎖(如圖1)。
圖1 聯(lián)鎖軟件層次結(jié)構(gòu)圖
(3)執(zhí)行層。主要完成控制命令的輸出和表示信息的輸入。
圖2 黑盒測試
黑盒測試、白盒測試和灰盒測試是很廣泛使用的三類測試方法。黑盒測試又稱功能測試,數(shù)據(jù)驅(qū)動(dòng)測試或基于規(guī)格說明的測試。用這種方法進(jìn)行測試時(shí),被測程序被當(dāng)作打不開的黑盒,因而無法了解其內(nèi)部構(gòu)造。在完全不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性的情況下,測試者只知道該程序輸入和輸出之間的關(guān)系或是程序的功能如圖2所示。它必須依靠能夠反映這一關(guān)系和程序功能的需求規(guī)格說明書考慮確定測試用例,并且推斷測試結(jié)果的正確性,即所依據(jù)的只能是程序的外部特性。黑盒測試(如圖2)方法能夠站在用戶立場上進(jìn)行測試,容易發(fā)現(xiàn)以下類型的錯(cuò)誤:功能不對或遺漏、界面錯(cuò)誤、數(shù)據(jù)結(jié)構(gòu)或外部數(shù)據(jù)庫訪問錯(cuò)誤、性能錯(cuò)誤、初始化和終止錯(cuò)誤等。
但黑盒測試方法有如下主要缺點(diǎn):
①依賴軟件需求規(guī)格說明書的正確性。但我們并不能保證軟件需求規(guī)格說明書是完全正確的。比如,在軟件需求規(guī)格說明書中規(guī)定了多余的功能,或是漏掉了某些功能,這對于黑盒測試來說是完全無能為力的。
②無法測試程序內(nèi)部特定部位。
白盒測試又稱結(jié)構(gòu)測試、邏輯驅(qū)動(dòng)測試或基于程序的測試。采用這一測試方法,測試者可以看到被測試的源程序,可分析程序的內(nèi)部構(gòu)造并且根據(jù)內(nèi)部構(gòu)造設(shè)計(jì)測試用例。白盒測試全面了解程序內(nèi)部邏輯結(jié)構(gòu)、對所有邏輯路徑進(jìn)行測試,它是窮舉路徑測試。在使用這一方案時(shí),測試者必須檢查程序的內(nèi)部結(jié)構(gòu),從檢查程序的邏輯著手,得出測試數(shù)據(jù)。
它的主要優(yōu)點(diǎn)是:
①能夠?qū)Τ绦騼?nèi)部特定部位進(jìn)行覆蓋測試;
②能發(fā)現(xiàn)以下類型的錯(cuò)誤:程序內(nèi)部控制結(jié)構(gòu)不正確、程序內(nèi)部數(shù)據(jù)結(jié)構(gòu)不正確。
白盒測試的主要缺點(diǎn)是:
①只著眼于程序內(nèi)部結(jié)構(gòu),對于在軟件需求規(guī)格說明書中已有明確規(guī)定,但在軟件實(shí)現(xiàn)時(shí)被遺漏的功能,無法檢查出來;
②無法檢驗(yàn)程序的外部特性。
圖3 灰盒測試流程圖
灰盒測試也稱作灰盒分析,是基于對程序內(nèi)部細(xì)節(jié)有限認(rèn)知上的軟件調(diào)試方法。測試者可能知道系統(tǒng)組件之間是如何互相作用的,但缺乏對內(nèi)部程序功能和運(yùn)作的詳細(xì)了解。對于內(nèi)部過程,灰盒測試把程序看作一個(gè)必須從外面進(jìn)行分析的黑盒。由以上定義可以看出:黑盒測試是以用戶的觀點(diǎn),從輸入數(shù)據(jù)與輸出數(shù)據(jù)的對應(yīng)關(guān)系出發(fā)進(jìn)行測試的,也就是根據(jù)程序的外部特性進(jìn)行的測試,完全不涉及程序的內(nèi)部結(jié)構(gòu)很明顯,如果外部特性本身有問題或規(guī)格說明的規(guī)定有誤,用黑盒測試方法發(fā)現(xiàn)不了。另一方面白盒測試完全與之相反,它只根據(jù)程序的內(nèi)部結(jié)構(gòu)進(jìn)行測試,而不考慮外部特性。如果程序結(jié)構(gòu)本身有問題,如程序邏輯有錯(cuò)誤,或是有遺漏,那是無法發(fā)現(xiàn)的。鑒于此,本測試系統(tǒng)選擇將2種方法結(jié)合起來進(jìn)行測試,即灰盒測試。
基于灰盒測試的流程圖如圖3所示。該流程圖可分為如下幾個(gè)環(huán)節(jié)
(1)根據(jù)站場基礎(chǔ)數(shù)據(jù)和測試案例生成錄入模塊生成的站場靜態(tài)數(shù)據(jù),自動(dòng)測試程序加載這些數(shù)據(jù)作為人工操作模擬的依據(jù)。
(2)根據(jù)站場靜態(tài)數(shù)據(jù),模擬人工操作。該部分進(jìn)行的測試內(nèi)容包括:
①道岔聯(lián)鎖測試,在此需要按照道岔在道岔設(shè)備表中的順序依次自動(dòng)生成并加載道岔的測試案例進(jìn)行自動(dòng)測試。道岔的測試項(xiàng)目內(nèi)容包括:道岔單鎖、道岔單解、道岔區(qū)段鎖和道岔引導(dǎo)總鎖。根據(jù)道岔的測試項(xiàng)目內(nèi)容分別進(jìn)行判定評(píng)估,每一個(gè)測試項(xiàng)目都有一個(gè)判定評(píng)估結(jié)果記錄,存儲(chǔ)在文本文件中。
②基本進(jìn)路測試,在此需要按照進(jìn)路在聯(lián)鎖表中的順序依次對每一條進(jìn)路進(jìn)行相關(guān)測試項(xiàng)目的測試,自動(dòng)生成并加載進(jìn)路的測試案例進(jìn)行自動(dòng)測試。根據(jù)基本進(jìn)路的測試項(xiàng)目內(nèi)容分別進(jìn)行判定評(píng)估,每一個(gè)測試項(xiàng)目都有一個(gè)判定評(píng)估結(jié)果記錄,存儲(chǔ)在文本文件中。
③長調(diào)進(jìn)路測試,在此需要按照長調(diào)進(jìn)路在聯(lián)鎖表中的順序依次對每一條長調(diào)進(jìn)路進(jìn)行相關(guān)測試項(xiàng)目的測試,自動(dòng)生成并加載長調(diào)進(jìn)路的測試案例進(jìn)行自動(dòng)測試。根據(jù)長調(diào)進(jìn)路的測試項(xiàng)目內(nèi)容分別進(jìn)行判定評(píng)估,每一個(gè)測試項(xiàng)目都需有一個(gè)判定評(píng)估記錄,存儲(chǔ)在文本文件中。其測試項(xiàng)目的內(nèi)容與基本進(jìn)路的內(nèi)容一樣。
(3)當(dāng)對上、下位機(jī)實(shí)現(xiàn)聯(lián)合測試時(shí),由于該聯(lián)鎖系統(tǒng)是利用串(Com)口進(jìn)行通信的,先通過編寫串口讀函數(shù)從PLC的輸出端口獲取對應(yīng)設(shè)備狀態(tài)的回測狀態(tài),根據(jù)通信接口協(xié)議進(jìn)行分析,可完成系統(tǒng)輸出(PLC輸出)模擬模塊的操作,然后再通過編寫串口寫函數(shù)將模擬系統(tǒng)外部各設(shè)備的狀態(tài)回測寫到PLC位存儲(chǔ)區(qū)M區(qū)對應(yīng)的數(shù)據(jù)區(qū),可完成外部設(shè)備狀態(tài)回測模擬模塊的操作。
軟件測試的目的在于盡可能多的找出錯(cuò)誤.但這就涉及到如何合理的設(shè)計(jì)測試用例,本系統(tǒng)在白盒測試中采用路徑覆蓋法,在黑盒測試中采用了等軟件測試的目的在于盡可能多的找出錯(cuò)誤。但這就涉及到如何合理的設(shè)計(jì)測試用例,本系統(tǒng)在白盒測試中采用路徑覆蓋法,在黑盒測試中采用了等價(jià)類劃分法.。采用了基于灰盒測試方法來完成對計(jì)算機(jī)聯(lián)鎖系統(tǒng)各部分軟件的功能與性能測試。