單一龍,楊志杰,李輝,侯大山,李建雄,郝 建
(1.中國鐵道科學研究院研究生部,北京 100081; 2.中國鐵道科學研究院集團有限公司通信信號研究所,北京 100081)
列車運行監(jiān)控裝置(LKJ)是安裝在機車、動車組上用于保障行車安全、防止列車超速、輔助司機操縱的重要運行監(jiān)控設(shè)備[1-2]。目前國內(nèi)超過2萬臺機車和1千多列運行時速為250 km的動車組裝備了LKJ設(shè)備。LKJ是我國現(xiàn)階段普速鐵路列車運行監(jiān)控系統(tǒng)中的重要組成部分。
隨著我國鐵路行業(yè)技術(shù)的不斷發(fā)展以及鐵路運輸需求的不斷提升,為滿足行車安全的需要,LKJ不斷更新、完善其功能,設(shè)備的仿真測試工作也變得愈加重要,對于測試的整體流程以及效率提出了更高的要求[3-4]。現(xiàn)LKJ設(shè)備測試工作多由測試人員人工完成,存在一些弊端,主要體現(xiàn)在以下方面[5]。
(1)LKJ設(shè)備功能繁多,應用場景復雜,在人工測試中,測試過程需要測試人員全程參與,勞動強度大,效率低下,測試周期長。
(2)人工測試時,測試用例基于黑盒測試方法、依據(jù)LKJ測試規(guī)范進行編寫,編寫難度大,對編寫人員的要求較高,并且由于文字描述過多,導致測試時不同測試人員對于同一條測試用例的理解以及操作可能存在差異,容易影響測試的執(zhí)行及測試結(jié)果的準確性。
(3)不同于列車實際運行,在測試環(huán)境下,信號的觸發(fā)時機難以控制,部分復雜場景人工操作難以實現(xiàn)。
(4)人工測試中,測試結(jié)果需要測試人員實時觀察DMI的顯示信息以及LKJ設(shè)備的反饋輸出,容易出現(xiàn)測試結(jié)果誤判或缺失的情況。
(5)對于LKJ設(shè)備故障問題,難以找尋故障原因。
(6)測試過程難以復現(xiàn),不利于測試用例的積累和固化。
針對以上問題,設(shè)計一種自動測試平臺,采用圖形化方式設(shè)計生成測試用例,降低測試用例設(shè)計難度,基于測試用例自動執(zhí)行技術(shù)以及專家系統(tǒng)的故障分析技術(shù),實現(xiàn)按照LKJ測試既定計劃進行的自動化測試,可有效減少測試人員的工作量,提升測試效率與測試結(jié)果的準確性[6-9]。
自動測試平臺由人機交互單元、信號適配單元以及主控單元組成。各個單元之間通過通信控制接口進行信息交互,實現(xiàn)整個平臺的功能[10]。自動測試平臺架構(gòu)如圖1所示。
圖1 自動測試平臺架構(gòu)
人機交互單元包括外接顯示器和輸入設(shè)備。外接顯示器是自動測試平臺的顯示終端,可實時顯示參數(shù)信息、狀態(tài)信息以及測試執(zhí)行進程;增加輸入設(shè)備便于測試人員人工操作,包括測試用例生成以及執(zhí)行命令的輸入。
信號適配單元負責模擬LKJ設(shè)備實際運行環(huán)境,包括數(shù)字量調(diào)理模塊、模擬量調(diào)理模塊、采集模塊、通信模塊和頻率處理模塊。數(shù)字量調(diào)理模塊可模擬輸出工況、燈顯等數(shù)字信號;模擬量調(diào)理模塊可模擬輸出壓力、軌道電路等模擬信號;采集模塊負責采集實速、里程計等信息;通信模塊具備CAN通信、RS482通信及RS485通信功能,負責與其他模塊進行信息交互;頻率處理模塊具備脈沖和正弦波調(diào)理輸出功能,模擬輸出速度、柴速、原邊電流電壓等信號。
主控單元是自動測試平臺的核心單元,包括執(zhí)行模塊和專家系統(tǒng)。主控單元負責處理各項操作信息,并依據(jù)操作信息調(diào)用測試用例、控制其他單元實現(xiàn)自動測試功能;并可處理LKJ被測設(shè)備反饋信息,依據(jù)測試結(jié)果生成測試報告及故障分析結(jié)果。
測試用例是LKJ設(shè)備測試的基礎(chǔ),其以文檔的形式保存,詳細描述了在特定條件下LKJ設(shè)備的操作輸入以及所對應的期望響應輸出。測試用例的質(zhì)量直接影響測試結(jié)果的準確性以及功能測試的完整性,測試用例的設(shè)計也對整體測試流程有很大影響。一個完整的LKJ測試用例應包含以下內(nèi)容。
(1)測試用例編號。如LKJ-FT-XXX,LKJ代表被測LKJ設(shè)備;FT代表功能測試,XXX為該用例具體編號。
(2)用例描述。需簡單明了,使得測試人員能夠快速了解測試用例的目的,便于測試用例的管理和使用。
(3)起始條件。為測試用例開始執(zhí)行之前所需滿足的條件,如模式、軌道電路制式等。
(4)起始約束條件。為測試用例開始執(zhí)行之前需要滿足的動態(tài)條件,如接口狀態(tài)、變量值等。
(5)測試步驟。為測試用例的細化,詳細描述了測試中每一過程的模式、變量、按鍵操作等。
(6)結(jié)束條件。測試用例結(jié)束時的狀態(tài),如變量值、顯示輸出等。
為方便測試用例生成,提高用例設(shè)計的效率,自動測試平臺采用圖形化方式生成測試用例,編輯界面示意如圖2所示,主要包括控件區(qū)、編輯區(qū)及信息顯示區(qū)。
圖2 測試用例編輯界面示意
控件區(qū)包括參數(shù)設(shè)定、運行場景控件、輸入控件、輸出控件和用例描述。參數(shù)設(shè)定具體包括司機號、列車類型、車次號碼、速度等級、總重、輛數(shù)、計長等基礎(chǔ)信息的設(shè)置;運行場景控件通過解析LKJ存儲的線路數(shù)據(jù)自動生成,用于表達實際線路運行場景;輸入控件表示LKJ從外部獲取或自身設(shè)置的各項參數(shù)信息以及獲取時機,具體包括工況、速度、風壓、柴速、DMI按鍵、公里標、信號機燈型、絕緣節(jié)、制式、距離和時間間隔等;輸出控件表示LKJ的預期響應輸出,具體包括DMI顯示、語音提示、限速、牽引力指令、制動指令等;用例描述由編輯人員編寫,可供測試人員參考。
編輯區(qū)以圖形化的方式展示測試用例的業(yè)務邏輯。編輯區(qū)上方用于顯示運行場景及超速防護曲線信息;編輯區(qū)下方的時間和里程基準軸用于添加控件,用距離或時間間隔表示添加各種控件的時機。
信息顯示區(qū)用于顯示某一時機下所涉及到的具體參數(shù)信息。
通過各種控件的組合,可模擬LKJ設(shè)備在列車運行過程中,從外部獲取或者其自身設(shè)置的用于指導列車運行的信息、司機的操作信息、線路信息、邏輯組合和結(jié)果斷言的完整表達[11]。
在用例編輯時,編輯人員依據(jù)測試需求,首先,在控件區(qū)進行基本參數(shù)的設(shè)定,并選取合適的運行場景控件作為編輯基礎(chǔ)顯示在編輯區(qū),可同時選擇多個運行場景控件組合顯示;其次,選擇輸入控件并設(shè)置合適參數(shù)及屬性,將其放置在編輯區(qū)與基準軸建立聯(lián)系,添加距離或時間間隔等控件調(diào)整觸發(fā)時機;然后,選取輸出控件并設(shè)置合適參數(shù)及屬性,放置在編輯區(qū)中作為預期輸出;最后,填寫用例描述,生成完整用例。
Robot Framework是一種基于Python語言編寫的、支持可擴展關(guān)鍵字驅(qū)動的通用型測試框架,可作為LKJ自動測試平臺中的測試執(zhí)行工具[12]。其模塊化的基本結(jié)構(gòu)如圖3所示。
圖3 Robot Framework基本結(jié)構(gòu)
Test Data:是一種易于編輯的表格形式的測試數(shù)據(jù)。Robot Framework:包含文件解析模塊、內(nèi)置關(guān)鍵字模塊、關(guān)鍵字執(zhí)行模塊、監(jiān)控記錄模塊等,用于啟用測試數(shù)據(jù),執(zhí)行測試用例。Test Libraries:測試庫由兩部分組成,包括自帶測試庫及自定義的可擴展測試庫。Test Tools:應用軟件工具,輔助測試的軟件或設(shè)備。System Under Test:被測產(chǎn)品或系統(tǒng),本文指LKJ設(shè)備。
3.2.1 適應LKJ測試的關(guān)鍵字優(yōu)化模型
為滿足LKJ設(shè)備的自動測試需求,自動測試平臺采用關(guān)鍵字驅(qū)動方式執(zhí)行測試。關(guān)鍵字驅(qū)動方式是數(shù)據(jù)驅(qū)動技術(shù)的擴展。關(guān)鍵字為對測試操作的抽象與封裝,其執(zhí)行順序體現(xiàn)了測試的業(yè)務邏輯。依據(jù)不同的參數(shù)要求設(shè)計關(guān)鍵字,選擇關(guān)鍵字生成數(shù)據(jù)鏈表即可實現(xiàn)業(yè)務流程[13-15]。
傳統(tǒng)的關(guān)鍵字模型創(chuàng)建封裝高級關(guān)鍵字,通過高級關(guān)鍵字映射測試用例,實現(xiàn)復雜功能。但此種模型抽象封裝關(guān)鍵字的級別較低,測試時需要直接調(diào)用底層關(guān)鍵字,針對LKJ測試復雜的功能及其特殊的運行場景,容易出現(xiàn)關(guān)鍵字復用率低和難以擴展等問題。
如圖4可見,優(yōu)化體系擴增出來的譜帶明亮,背景清晰,穩(wěn)定性好。因此,建立的ITS-PCR體系和擴增程序能夠滿足芋螺毒腺的ITS序列研究、芋螺遺傳多樣性分析、親緣關(guān)系鑒定和種質(zhì)資源評價等分子生物學的試驗要求。
對此,引入業(yè)務關(guān)鍵字,在傳統(tǒng)關(guān)鍵字模型的基礎(chǔ)上進行擴展,設(shè)計一種適應LKJ測試的關(guān)鍵字優(yōu)化模型。優(yōu)化模型將業(yè)務關(guān)鍵字創(chuàng)建在測試用例和高級關(guān)鍵字之間,由業(yè)務關(guān)鍵字體現(xiàn)測試用例的功能,二者通過映射機制聯(lián)系起來,使得LKJ的業(yè)務邏輯與基礎(chǔ)關(guān)鍵字分離,提升自動執(zhí)行的效率。關(guān)鍵字優(yōu)化模型如圖4所示。
圖4 適應LKJ測試的關(guān)鍵字優(yōu)化模型
3.2.2 LKJ自動測試流程
基于Robot Framework自動測試框架,采用適應LKJ測試的關(guān)鍵字優(yōu)化模型驅(qū)動,將測試數(shù)據(jù)與關(guān)鍵字獨立存儲并映射聯(lián)系,通過各種關(guān)鍵字及底層代碼的組合調(diào)用,實現(xiàn)測試用例的自動執(zhí)行。
在自動測試實現(xiàn)過程中,首先將測試用例中的業(yè)務邏輯封裝于業(yè)務關(guān)鍵字中,創(chuàng)建保存業(yè)務邏輯關(guān)鍵字庫,并將測試數(shù)據(jù)保存于測試文件中;根據(jù)不同的測試需求,測試人員可設(shè)置不同的執(zhí)行參數(shù),使執(zhí)行模塊有選擇地調(diào)用測試用例;Robot Framework對被調(diào)用的測試用例進行解析,實現(xiàn)測試用例至業(yè)務關(guān)鍵字的映射,并按照業(yè)務邏輯依次調(diào)用通用關(guān)鍵字,通過關(guān)鍵字對應的底層代碼,實現(xiàn)按鍵操作、模擬信號生成等測試流程,并返回關(guān)鍵字執(zhí)行情況和結(jié)果,隨著通用關(guān)鍵字被依次調(diào)用,實現(xiàn)測試用例的自動執(zhí)行。自動執(zhí)行具體流程如圖5所示。
圖5 測試用例自動執(zhí)行流程
專家系統(tǒng)是當前設(shè)備檢測與故障分析領(lǐng)域中一個重要的應用方向,其通過分析人類專家的知識經(jīng)驗,模擬決策過程推理解決復雜問題,知識庫和推理機是其核心組成。知識庫用于存儲專家知識以及實例數(shù)據(jù)并提取其中知識規(guī)則。推理機依據(jù)已知信息匹配知識庫的規(guī)則,給出新的結(jié)論,得到問題求解結(jié)果。LKJ自動測試平臺采用基于知識庫的故障分析專家系統(tǒng),結(jié)合LKJ領(lǐng)域?qū)<医?jīng)驗以及以往測試實例對測試結(jié)果進行分析,對于設(shè)備故障現(xiàn)象給出故障原因。
3.3.1 LKJ故障知識庫構(gòu)建
專家系統(tǒng)通過“知識+推理”的機制實現(xiàn)故障分析過程。結(jié)合領(lǐng)域?qū)<医?jīng)驗以及以往測試實例數(shù)據(jù)結(jié)果,以LKJ防溜功能故障作為頂事件(T),將各級故障原因作為中間事件(M1~M6)及底事件(X1~X10),逐層分析故障原因,構(gòu)建防溜功能故障樹,如圖6所示。
圖6 防溜功能故障樹
表1 防溜功能故障樹代碼含義
為保障故障分析可靠有效,專家系統(tǒng)通過產(chǎn)生式規(guī)則表示法對故障知識進行標識,構(gòu)建知識庫[16-17]。產(chǎn)生式規(guī)則表示法由模式和動作組成,模式為該規(guī)則可用的條件,動作描述應用該規(guī)則時要采取的行動,獲得的結(jié)論或狀態(tài),其基本形式為:if“條件”,then“結(jié)論”。在LKJ自動測試平臺專家系統(tǒng)知識庫的設(shè)計中,將故障現(xiàn)象的原因作為條件,故障現(xiàn)象作為結(jié)論。對應故障樹相關(guān)知識,將下層事件作為條件,與其相對應的上層事件作為結(jié)論,通過此種方式標識知識間的邏輯關(guān)系,實現(xiàn)規(guī)則轉(zhuǎn)化[18-19]。以LKJ管壓防溜故障子樹為例,規(guī)則提取如表2所示。
表2 管壓防溜故障規(guī)則
3.3.2 推理機設(shè)計
在推理機設(shè)計中,依托知識庫規(guī)則知識,選用基于規(guī)則的推理方法。依照自動測試平臺需求,選用基于規(guī)則的正向推理方法,即基于已保存的故障知識及其規(guī)則知識,以故障樹為基礎(chǔ),從故障現(xiàn)象出發(fā),通過持續(xù)匹配其對應規(guī)則的前提條件,最終得到故障原因[20]。
由于LKJ設(shè)備構(gòu)造復雜,功能繁多,產(chǎn)生故障的原因也復雜多變,所以在推理機的設(shè)計中加入沖突消解策略。該策略是指推理機在推理過程中,遇到超過一條可匹配知識規(guī)則時,如何選擇其中最合理規(guī)則的策略。本文采用基于故障概率的沖突消解策略,通過統(tǒng)計以往測試實例,在故障樹知識的基礎(chǔ)上,依據(jù)故障概率設(shè)置優(yōu)先級。當遇到超過一種故障原因的情況,優(yōu)先選取故障概率高的規(guī)則進行匹配,從而提高推理效率和準確性。專家系統(tǒng)推理過程如圖7所示。
圖7 自動測試平臺專家系統(tǒng)推理過程
LKJ自動測試平臺工作流程如圖8所示,具體如下。
圖8 自動測試平臺工作流程
(1)依據(jù)LKJ測試規(guī)范,采用圖形化方法生成測試用例,保存至測試文件中。
(2)創(chuàng)建測試工程,依據(jù)測試需求設(shè)置執(zhí)行參數(shù)。
(3)運行測試,主控單元解析測試文件以及相關(guān)操作命令,自動化驅(qū)動信號適配單元模擬行車環(huán)境,對LKJ設(shè)備功能進行測試,并實時顯示測試進程。
(4)對測試結(jié)果進行分析,對比預期結(jié)果及實際輸出,調(diào)用專家系統(tǒng),生成測試報告并分析故障原因。
基于LKJ-15型列車運行監(jiān)控裝置及實驗室仿真測試環(huán)境搭建自動測試平臺,驗證本文可行性。以LKJ-15設(shè)備在CSM區(qū)控制指令輸出功能測試為例,共需設(shè)計27條用例,均可采用圖形化生成方式實現(xiàn),圖形化用例生成界面如圖9所示。
圖9 圖形化用例生成界面
將Robot Framework自動測試框架部署在仿真測試環(huán)境中,設(shè)置27條用例全部執(zhí)行,執(zhí)行時間約為8 min,測試用時遠低于人工測試。測試數(shù)據(jù)如圖10所示。
圖10 測試數(shù)據(jù)顯示
自動測試平臺采集實際輸出與預期結(jié)果對比,對于結(jié)果不一致的用例,平臺顯示故障現(xiàn)象,并通過專家系統(tǒng)分析故障原因,分析結(jié)果如圖11所示。
圖11 故障分析結(jié)果
驗證可知,本文研究的LKJ自動測試平臺及其關(guān)鍵技術(shù)可有效減少測試工作量,提高效率,并能對于故障現(xiàn)象合理分析給出故障原因,對測試流程的優(yōu)化有一定意義。
采用圖形化測試用例生成技術(shù)設(shè)計生成用例,基于適應LKJ測試的關(guān)鍵字優(yōu)化模型,將Robot Framework自動測試框架和故障分析專家系統(tǒng)融合到測試平臺中,自動執(zhí)行用例并對故障原因進行分析,可實現(xiàn)無人值守的LKJ設(shè)備自動化測試。對比傳統(tǒng)人工測試,LKJ自動測試平臺的設(shè)計研究對于減少測試人員工作量,提高測試效率及準確性具有一定意義。隨著今后測試用例庫的不斷豐富與完善,對于回歸測試效率的提升也將有很大幫助。
后續(xù)將繼續(xù)對本測試平臺及其關(guān)鍵技術(shù)進行研究,主要研究方向如下。(1)測試用例自動生成技術(shù):可進一步提升用例設(shè)計的效率,減少測試人員的工作量。(2)便攜式自動測試平臺:可簡化設(shè)備,方便攜帶,對測試環(huán)境的苛求降低、對測試便攜性的提升有很大意義。