趙 文 文
(中鐵第一勘察設計院集團有限公司,陜西 西安 710043)
高速磁懸浮中央控制子系統具有操作與顯示、列車自動運行、診斷等功能,是列車安全運行的重要保證。系統測試可提早發現系統設計的缺陷并進行有效修復,提高系統現場聯調的效率。因而,測試質量直接決定了中央控制子系統的研發成果和效率,在投入使用前必須進行系統的測試驗證。
而作為測試工作的核心,測試用例的好壞直接影響到測試的效率,Tsai[1]提出了一種適用于數據處理系統的測試用例生成方法,其主要是通過從規格說明中生成測試數據。Hall[2]也對測試用例生成方法進行研究,提出基于Z規格說明進行測試用例的生成。隨著面向對象技術的不斷發展,基于UML模型生成測試用例的方法受到了人們越來越多的關注,主要討論如何選取UML的動態模型如狀態圖、順序圖、活動圖、協作圖來生成符合覆蓋準則要求的測試用例。A.J.Offutt等[3]提出了一種基于UML狀態圖的測試用例生成方法及四種測試覆蓋準則,并開發首個可基于UML自動生成測試用例的工具。季麗麗[4]針對A.J.Offutt提出的UML狀態圖上僅限于布爾類型的轉移條件的局限,進行了表達式方面的擴展。Falk F[5]討論了一種基于UML順序圖進行測試的方法,并介紹了SeDiTeC工具。王林章等[6]基于UML協作圖提出了集成測試用例的生成方法,并依據所設計的模型來生成測試用例。Chris Rudram[7]對UML活動圖的語義及語法進行了擴展,并提出了形式化的活動圖。張楣等[8]設計出一種三級轉換過程,即由UML活動圖模型轉換到測試大綱模型,進而再到測試用例模型。但目前大多研究都是根據單一的某種模型圖,較少分析多種模型圖的組合建模。
高速磁浮運行控制系統是其運行安全的關鍵保障,而對系統進行測試則是系統安全的必要保證。本文基于對被測中央控制子系統功能特征的提取,提出基于UML模型的測試用例生成方法,并將生成的測試用例實例在實驗室測試平臺中全部執行,來實現對中央控制子系統的測試驗證。
驗證系統是否滿足功能需求的所有要求,解決辦法就是對該系統進行功能測試。但是若考慮將系統中的每一個需求都使用測試用例來表達,則會得到數量龐大且有所重復的測試用例,不僅成本巨大,且會降低測試效率。為此,從系統功能需求中提煉精簡后的功能特征是十分必要的。
功能特征即是根據系統功能需求提取的功能實體,是由一組需求歸結而來,針對一個功能特征又可設計多個測試用例。為了確保功能特征的全面性和合法性,功能特征集必須反映所有的功能需求,每一個獨立的功能特征都來自于系統需求。系統需求、功能特征及測試用例三者之間的關系如圖1所示。

首先,分析系統需求中所有要求的功能和屬性,按照特征將其分組,形成一個或多個需求相對應的組合,即需求功能組;其次,對這些需求進行分析、概括、提取,便可得到相應的功能特征。中央控制子系統的功能測試驗證實質上是為了驗證系統是否滿足系統需求規范中的所有功能要求。中央控制子系統的功能特征提取過程如下:
中央控制子系統需求規范→需求功能組→劃分功能實體→細化功能特征→功能特征列表。
基于提出的系統功能特征提取流程,針對中央控制子系統的功能需求,分別對其操作員終端系統、列車自動運行系統和中央診斷系統進行了功能特征的提取,結果如表1所示。
場景技術在測試設計階段可以作為系統建模的依據,其可以描述客戶需求和系統功能,有利于測試用例的設計。中央運控系統的每個子系統都具有各自的功能需求,根據系統功能特征,中央運控系統的運行過程可劃分為若干個相對獨立的場景,每個場景都包含著眾多的操作與信息交互。主要場景包括:系統權限管理,操作員終端系統生成命令操作,操作員終端系統CR命令操作,操作員終端系統視圖顯示,系統協同交互,列車時刻表操作,運行計劃處理,ATO狀態改變,DCS命令運行監控,列車管理,診斷信息操作,列車運行流程等。

表1 功能特征提取結果
對中央控制子系統的運行場景進行建模,不僅可以詳細地描述系統運行過程中的內部狀態變化,而且可以反映系統與外界的信息交互情況,該建模過程是指導測試用例生成的重要依據。本文以中央控制子系統各功能場景為單位進行建模分析,采用UML分別建立用例圖、順序圖、狀態圖和活動圖,全方面表述中央控制子系統的動作時序邏輯。由于篇幅限制,下面就以單分區列車運行流程這一典型場景為例,給出詳細的建模過程,其他場景建模過程與之類似。
1)列車運行流程用例圖(見圖2)。
由圖2可知,單分區列車運行流程用例圖中包含3個參與者,分別為操作員,DCS和VCS。三者之間通過用例來交互信息,完成系統此場景的功能需求。

2)列車運行流程狀態圖見圖3。
列車運行流程狀態圖描述了OTS從初始狀態至車輛完成運行停止這段時間中系統狀態間的轉換情況,如圖3所示。圖3中從OTS初始狀態開始,經歷登錄車輛,預定進路,設置車輛運行,設置停車指令等一系列過程,一步步描述了單分區列車運行流程中OTS的狀態及引起狀態轉移的觸發事件。
3)列車運行流程活動圖見圖4。
列車運行流程活動圖描述了系統從一個活動至另一個活動的流程,主要是強調對象之間的控制關系,如圖4所示。圖4中描述了列車運行流程中從一個活動到另一個活動的控制流,利用活動圖模型可以明確OTS,DCS和VCS之間工作的信息流交互,著重表現的是系統行為。


4)列車運行流程順序圖見圖5。
順序圖用來描述一個用例的行為,其呈現的是一組對象和通過這組對象接收到的消息,強調對象之間消息發送的順序,順序圖僅僅表示了用例的一個具體場景,圖5給出了列車運行流程各命令執行都正常情況下的順序圖。圖5詳細展現了整個列車運行流程中,OTS,DCS和VCS是依照時間順序并且通過彼此交互來完成信息傳遞的過程。

根據建模圖生成測試用例的過程如圖6所示。具體用例生成步驟如下:
1)根據運行子場景選取相應的場景建模圖;
2)依據用例圖,確定該場景相關的外部具體設備;
3)依據狀態圖,計算該場景中最大程度覆蓋所有狀態所必需的測試用例數量;
4)依據活動圖,明確每一個測試用例的測試步驟;
5)依據順序圖,確定每一步測試步驟所涉及的各設備間的信息交互情況;
6)根據設計的測試用例標準格式編寫成具體的測試用例文檔。

中央控制子系統的整個測試用例集的數量非常多,下面就同樣以“單分區列車運行流程”場景為例,詳細解釋使用建模圖來生成測試用例的過程。首先由列車運行流程的用例圖可知,該場景在整個過程中所涉及到的外部參與者主要有操作員、DCS和VCS,即主要由他們來完成測試用例所需要的操作以及觀測測試結果的。然后根據列車運行流程狀態圖,可以詳細地看到OTS在此場景中的狀態變化,由圖3可知,要最大程度的覆蓋其所有狀態,需要5個測試用例。最后根據活動圖和順序圖可以分別得到測試用例的具體操作步驟以及對應的交互信息。以列車運行流程各命令執行都正常的情況為例,其用例設計結果如表2所示。

表2 列車運行流程測試用例
基于提出的方法,本文最終對操作員終端系統設計測試用例85個,對列車自動運行系統設計測試用例68個,對中央診斷系統設計測試用例31個,且設計的測試用例全部通過測試平臺得到執行,基本完全覆蓋了中央控制子系統運行過程中的主要場景,對在測試中發現的錯誤或缺陷通過查找原因、修改代碼等途徑都得到解決,最終達到測試用例通過率100%。
本文提出了基于UML的測試用例生成方法,并在測試平臺中執行生成的測試用例來實現對中央控制子系統的測試驗證,測試結果表明,本文設計生成的測試用例,可充分地模擬運行現場可能出現的各種情況,達到提早發現系統設計錯誤或缺陷并進行有效修復的作用,這樣在現場聯調時就可以顯著提高現場測試效率,有效減少測試時間和測試質量成本,并可為今后高速磁浮中央控制子系統的測試提供一定的理論依據和方法借鑒。