鐵路是大容量和大眾化的交通運輸工具安全運輸是鐵路追求的目標通常所說的“安全第一”表明安全在鐵路中的地位。“故障一安全(Fail一Safe)”理念的技術化也源于鐵路。在這些系統中不光要能保證系統在正常情況下的安全運行,同時還必須考慮系統在出現某些不正常的情況下,如何避免出現危及人身安全或大宗財物損失的事故或減少事故的損失。
目前,在鐵路運輸系統中,計算機聯鎖系統已經得到了廣泛的應用,與以前的繼電聯鎖相比,計算機聯鎖系統是用軟件實現原來由繼電邏輯完成的信號設備之間的聯鎖關系。然而對軟件可靠性的研究和應用,并不像硬件那樣成熟,在計算機聯鎖系統中,聯鎖軟件是執行聯鎖運算的核心機構,它的失效有可能導致列車的相撞或顛覆等重大事故,因此,如何保障聯鎖軟件的可靠性也成了開發計算機聯鎖軟件系統的一項重要課題。
(1)人機對話層。該層將來自鍵盤、鼠標等的操作輸入,送達聯鎖微機。運用一機多屏技術在多臺圖形顯示器上顯示整個站場的表示信息,同時也可以將站場的動態信息和微機聯鎖系統的文字信息通過在控制室增設的動態模擬屏和LED顯示屏上顯示出來,以方便信號員觀察。此層預留多種接口,方便系統功能擴容。
(2)聯鎖運算層。聯鎖微機是系統的核心部分,通過其上運行的聯鎖軟件實現操作輸入的判別、聯鎖信號分析、邏輯運算、控制命令生成及故障診斷等主要任務。本系統中設置了2臺聯鎖微機,其中一臺為熱備機,通過共享器切換。聯鎖運算控制模塊的主要功能有:排列進路、列車進路正常解鎖、調車進路正常解鎖、調車進路中途折返解鎖、取消進路、人工解鎖、人工關閉信號、重復開放信號、辦理引導鎖閉、引導解鎖、取消誤操作信息、單獨操縱道岔、進路故障解鎖、區段故障解鎖、道岔單獨鎖閉和道岔單獨解鎖(如圖1)。

圖1 聯鎖軟件層次結構圖
(3)執行層。主要完成控制命令的輸出和表示信息的輸入。

圖2 黑盒測試
黑盒測試、白盒測試和灰盒測試是很廣泛使用的三類測試方法。黑盒測試又稱功能測試,數據驅動測試或基于規格說明的測試。用這種方法進行測試時,被測程序被當作打不開的黑盒,因而無法了解其內部構造。在完全不考慮程序內部結構和內部特性的情況下,測試者只知道該程序輸入和輸出之間的關系或是程序的功能如圖2所示。它必須依靠能夠反映這一關系和程序功能的需求規格說明書考慮確定測試用例,并且推斷測試結果的正確性,即所依據的只能是程序的外部特性。黑盒測試(如圖2)方法能夠站在用戶立場上進行測試,容易發現以下類型的錯誤:功能不對或遺漏、界面錯誤、數據結構或外部數據庫訪問錯誤、性能錯誤、初始化和終止錯誤等。
但黑盒測試方法有如下主要缺點:
①依賴軟件需求規格說明書的正確性。但我們并不能保證軟件需求規格說明書是完全正確的。比如,在軟件需求規格說明書中規定了多余的功能,或是漏掉了某些功能,這對于黑盒測試來說是完全無能為力的。
②無法測試程序內部特定部位。
白盒測試又稱結構測試、邏輯驅動測試或基于程序的測試。采用這一測試方法,測試者可以看到被測試的源程序,可分析程序的內部構造并且根據內部構造設計測試用例。白盒測試全面了解程序內部邏輯結構、對所有邏輯路徑進行測試,它是窮舉路徑測試。在使用這一方案時,測試者必須檢查程序的內部結構,從檢查程序的邏輯著手,得出測試數據。
它的主要優點是:
①能夠對程序內部特定部位進行覆蓋測試;
②能發現以下類型的錯誤:程序內部控制結構不正確、程序內部數據結構不正確。
白盒測試的主要缺點是:
①只著眼于程序內部結構,對于在軟件需求規格說明書中已有明確規定,但在軟件實現時被遺漏的功能,無法檢查出來;
②無法檢驗程序的外部特性。

圖3 灰盒測試流程圖
灰盒測試也稱作灰盒分析,是基于對程序內部細節有限認知上的軟件調試方法。測試者可能知道系統組件之間是如何互相作用的,但缺乏對內部程序功能和運作的詳細了解。對于內部過程,灰盒測試把程序看作一個必須從外面進行分析的黑盒。由以上定義可以看出:黑盒測試是以用戶的觀點,從輸入數據與輸出數據的對應關系出發進行測試的,也就是根據程序的外部特性進行的測試,完全不涉及程序的內部結構很明顯,如果外部特性本身有問題或規格說明的規定有誤,用黑盒測試方法發現不了。另一方面白盒測試完全與之相反,它只根據程序的內部結構進行測試,而不考慮外部特性。如果程序結構本身有問題,如程序邏輯有錯誤,或是有遺漏,那是無法發現的。鑒于此,本測試系統選擇將2種方法結合起來進行測試,即灰盒測試。
基于灰盒測試的流程圖如圖3所示。該流程圖可分為如下幾個環節
(1)根據站場基礎數據和測試案例生成錄入模塊生成的站場靜態數據,自動測試程序加載這些數據作為人工操作模擬的依據。
(2)根據站場靜態數據,模擬人工操作。該部分進行的測試內容包括:
①道岔聯鎖測試,在此需要按照道岔在道岔設備表中的順序依次自動生成并加載道岔的測試案例進行自動測試。道岔的測試項目內容包括:道岔單鎖、道岔單解、道岔區段鎖和道岔引導總鎖。根據道岔的測試項目內容分別進行判定評估,每一個測試項目都有一個判定評估結果記錄,存儲在文本文件中。
②基本進路測試,在此需要按照進路在聯鎖表中的順序依次對每一條進路進行相關測試項目的測試,自動生成并加載進路的測試案例進行自動測試。根據基本進路的測試項目內容分別進行判定評估,每一個測試項目都有一個判定評估結果記錄,存儲在文本文件中。
③長調進路測試,在此需要按照長調進路在聯鎖表中的順序依次對每一條長調進路進行相關測試項目的測試,自動生成并加載長調進路的測試案例進行自動測試。根據長調進路的測試項目內容分別進行判定評估,每一個測試項目都需有一個判定評估記錄,存儲在文本文件中。其測試項目的內容與基本進路的內容一樣。
(3)當對上、下位機實現聯合測試時,由于該聯鎖系統是利用串(Com)口進行通信的,先通過編寫串口讀函數從PLC的輸出端口獲取對應設備狀態的回測狀態,根據通信接口協議進行分析,可完成系統輸出(PLC輸出)模擬模塊的操作,然后再通過編寫串口寫函數將模擬系統外部各設備的狀態回測寫到PLC位存儲區M區對應的數據區,可完成外部設備狀態回測模擬模塊的操作。
軟件測試的目的在于盡可能多的找出錯誤.但這就涉及到如何合理的設計測試用例,本系統在白盒測試中采用路徑覆蓋法,在黑盒測試中采用了等軟件測試的目的在于盡可能多的找出錯誤。但這就涉及到如何合理的設計測試用例,本系統在白盒測試中采用路徑覆蓋法,在黑盒測試中采用了等價類劃分法.。采用了基于灰盒測試方法來完成對計算機聯鎖系統各部分軟件的功能與性能測試。