趙 文 文
(中鐵第一勘察設(shè)計(jì)院集團(tuán)有限公司,陜西 西安 710043)
高速磁懸浮中央控制子系統(tǒng)具有操作與顯示、列車自動(dòng)運(yùn)行、診斷等功能,是列車安全運(yùn)行的重要保證。系統(tǒng)測(cè)試可提早發(fā)現(xiàn)系統(tǒng)設(shè)計(jì)的缺陷并進(jìn)行有效修復(fù),提高系統(tǒng)現(xiàn)場(chǎng)聯(lián)調(diào)的效率。因而,測(cè)試質(zhì)量直接決定了中央控制子系統(tǒng)的研發(fā)成果和效率,在投入使用前必須進(jìn)行系統(tǒng)的測(cè)試驗(yàn)證。
而作為測(cè)試工作的核心,測(cè)試用例的好壞直接影響到測(cè)試的效率,Tsai[1]提出了一種適用于數(shù)據(jù)處理系統(tǒng)的測(cè)試用例生成方法,其主要是通過從規(guī)格說明中生成測(cè)試數(shù)據(jù)。Hall[2]也對(duì)測(cè)試用例生成方法進(jìn)行研究,提出基于Z規(guī)格說明進(jìn)行測(cè)試用例的生成。隨著面向?qū)ο蠹夹g(shù)的不斷發(fā)展,基于UML模型生成測(cè)試用例的方法受到了人們?cè)絹碓蕉嗟年P(guān)注,主要討論如何選取UML的動(dòng)態(tài)模型如狀態(tài)圖、順序圖、活動(dòng)圖、協(xié)作圖來生成符合覆蓋準(zhǔn)則要求的測(cè)試用例。A.J.Offutt等[3]提出了一種基于UML狀態(tài)圖的測(cè)試用例生成方法及四種測(cè)試覆蓋準(zhǔn)則,并開發(fā)首個(gè)可基于UML自動(dòng)生成測(cè)試用例的工具。季麗麗[4]針對(duì)A.J.Offutt提出的UML狀態(tài)圖上僅限于布爾類型的轉(zhuǎn)移條件的局限,進(jìn)行了表達(dá)式方面的擴(kuò)展。Falk F[5]討論了一種基于UML順序圖進(jìn)行測(cè)試的方法,并介紹了SeDiTeC工具。王林章等[6]基于UML協(xié)作圖提出了集成測(cè)試用例的生成方法,并依據(jù)所設(shè)計(jì)的模型來生成測(cè)試用例。Chris Rudram[7]對(duì)UML活動(dòng)圖的語義及語法進(jìn)行了擴(kuò)展,并提出了形式化的活動(dòng)圖。張楣等[8]設(shè)計(jì)出一種三級(jí)轉(zhuǎn)換過程,即由UML活動(dòng)圖模型轉(zhuǎn)換到測(cè)試大綱模型,進(jìn)而再到測(cè)試用例模型。但目前大多研究都是根據(jù)單一的某種模型圖,較少分析多種模型圖的組合建模。
高速磁浮運(yùn)行控制系統(tǒng)是其運(yùn)行安全的關(guān)鍵保障,而對(duì)系統(tǒng)進(jìn)行測(cè)試則是系統(tǒng)安全的必要保證。本文基于對(duì)被測(cè)中央控制子系統(tǒng)功能特征的提取,提出基于UML模型的測(cè)試用例生成方法,并將生成的測(cè)試用例實(shí)例在實(shí)驗(yàn)室測(cè)試平臺(tái)中全部執(zhí)行,來實(shí)現(xiàn)對(duì)中央控制子系統(tǒng)的測(cè)試驗(yàn)證。
驗(yàn)證系統(tǒng)是否滿足功能需求的所有要求,解決辦法就是對(duì)該系統(tǒng)進(jìn)行功能測(cè)試。但是若考慮將系統(tǒng)中的每一個(gè)需求都使用測(cè)試用例來表達(dá),則會(huì)得到數(shù)量龐大且有所重復(fù)的測(cè)試用例,不僅成本巨大,且會(huì)降低測(cè)試效率。為此,從系統(tǒng)功能需求中提煉精簡(jiǎn)后的功能特征是十分必要的。
功能特征即是根據(jù)系統(tǒng)功能需求提取的功能實(shí)體,是由一組需求歸結(jié)而來,針對(duì)一個(gè)功能特征又可設(shè)計(jì)多個(gè)測(cè)試用例。為了確保功能特征的全面性和合法性,功能特征集必須反映所有的功能需求,每一個(gè)獨(dú)立的功能特征都來自于系統(tǒng)需求。系統(tǒng)需求、功能特征及測(cè)試用例三者之間的關(guān)系如圖1所示。
首先,分析系統(tǒng)需求中所有要求的功能和屬性,按照特征將其分組,形成一個(gè)或多個(gè)需求相對(duì)應(yīng)的組合,即需求功能組;其次,對(duì)這些需求進(jìn)行分析、概括、提取,便可得到相應(yīng)的功能特征。中央控制子系統(tǒng)的功能測(cè)試驗(yàn)證實(shí)質(zhì)上是為了驗(yàn)證系統(tǒng)是否滿足系統(tǒng)需求規(guī)范中的所有功能要求。中央控制子系統(tǒng)的功能特征提取過程如下:
中央控制子系統(tǒng)需求規(guī)范→需求功能組→劃分功能實(shí)體→細(xì)化功能特征→功能特征列表。
基于提出的系統(tǒng)功能特征提取流程,針對(duì)中央控制子系統(tǒng)的功能需求,分別對(duì)其操作員終端系統(tǒng)、列車自動(dòng)運(yùn)行系統(tǒng)和中央診斷系統(tǒng)進(jìn)行了功能特征的提取,結(jié)果如表1所示。
場(chǎng)景技術(shù)在測(cè)試設(shè)計(jì)階段可以作為系統(tǒng)建模的依據(jù),其可以描述客戶需求和系統(tǒng)功能,有利于測(cè)試用例的設(shè)計(jì)。中央運(yùn)控系統(tǒng)的每個(gè)子系統(tǒng)都具有各自的功能需求,根據(jù)系統(tǒng)功能特征,中央運(yùn)控系統(tǒng)的運(yùn)行過程可劃分為若干個(gè)相對(duì)獨(dú)立的場(chǎng)景,每個(gè)場(chǎng)景都包含著眾多的操作與信息交互。主要場(chǎng)景包括:系統(tǒng)權(quán)限管理,操作員終端系統(tǒng)生成命令操作,操作員終端系統(tǒng)CR命令操作,操作員終端系統(tǒng)視圖顯示,系統(tǒng)協(xié)同交互,列車時(shí)刻表操作,運(yùn)行計(jì)劃處理,ATO狀態(tài)改變,DCS命令運(yùn)行監(jiān)控,列車管理,診斷信息操作,列車運(yùn)行流程等。
表1 功能特征提取結(jié)果
對(duì)中央控制子系統(tǒng)的運(yùn)行場(chǎng)景進(jìn)行建模,不僅可以詳細(xì)地描述系統(tǒng)運(yùn)行過程中的內(nèi)部狀態(tài)變化,而且可以反映系統(tǒng)與外界的信息交互情況,該建模過程是指導(dǎo)測(cè)試用例生成的重要依據(jù)。本文以中央控制子系統(tǒng)各功能場(chǎng)景為單位進(jìn)行建模分析,采用UML分別建立用例圖、順序圖、狀態(tài)圖和活動(dòng)圖,全方面表述中央控制子系統(tǒng)的動(dòng)作時(shí)序邏輯。由于篇幅限制,下面就以單分區(qū)列車運(yùn)行流程這一典型場(chǎng)景為例,給出詳細(xì)的建模過程,其他場(chǎng)景建模過程與之類似。
1)列車運(yùn)行流程用例圖(見圖2)。
由圖2可知,單分區(qū)列車運(yùn)行流程用例圖中包含3個(gè)參與者,分別為操作員,DCS和VCS。三者之間通過用例來交互信息,完成系統(tǒng)此場(chǎng)景的功能需求。
2)列車運(yùn)行流程狀態(tài)圖見圖3。
列車運(yùn)行流程狀態(tài)圖描述了OTS從初始狀態(tài)至車輛完成運(yùn)行停止這段時(shí)間中系統(tǒng)狀態(tài)間的轉(zhuǎn)換情況,如圖3所示。圖3中從OTS初始狀態(tài)開始,經(jīng)歷登錄車輛,預(yù)定進(jìn)路,設(shè)置車輛運(yùn)行,設(shè)置停車指令等一系列過程,一步步描述了單分區(qū)列車運(yùn)行流程中OTS的狀態(tài)及引起狀態(tài)轉(zhuǎn)移的觸發(fā)事件。
3)列車運(yùn)行流程活動(dòng)圖見圖4。
列車運(yùn)行流程活動(dòng)圖描述了系統(tǒng)從一個(gè)活動(dòng)至另一個(gè)活動(dòng)的流程,主要是強(qiáng)調(diào)對(duì)象之間的控制關(guān)系,如圖4所示。圖4中描述了列車運(yùn)行流程中從一個(gè)活動(dòng)到另一個(gè)活動(dòng)的控制流,利用活動(dòng)圖模型可以明確OTS,DCS和VCS之間工作的信息流交互,著重表現(xiàn)的是系統(tǒng)行為。
4)列車運(yùn)行流程順序圖見圖5。
順序圖用來描述一個(gè)用例的行為,其呈現(xiàn)的是一組對(duì)象和通過這組對(duì)象接收到的消息,強(qiáng)調(diào)對(duì)象之間消息發(fā)送的順序,順序圖僅僅表示了用例的一個(gè)具體場(chǎng)景,圖5給出了列車運(yùn)行流程各命令執(zhí)行都正常情況下的順序圖。圖5詳細(xì)展現(xiàn)了整個(gè)列車運(yùn)行流程中,OTS,DCS和VCS是依照時(shí)間順序并且通過彼此交互來完成信息傳遞的過程。
根據(jù)建模圖生成測(cè)試用例的過程如圖6所示。具體用例生成步驟如下:
1)根據(jù)運(yùn)行子場(chǎng)景選取相應(yīng)的場(chǎng)景建模圖;
2)依據(jù)用例圖,確定該場(chǎng)景相關(guān)的外部具體設(shè)備;
3)依據(jù)狀態(tài)圖,計(jì)算該場(chǎng)景中最大程度覆蓋所有狀態(tài)所必需的測(cè)試用例數(shù)量;
4)依據(jù)活動(dòng)圖,明確每一個(gè)測(cè)試用例的測(cè)試步驟;
5)依據(jù)順序圖,確定每一步測(cè)試步驟所涉及的各設(shè)備間的信息交互情況;
6)根據(jù)設(shè)計(jì)的測(cè)試用例標(biāo)準(zhǔn)格式編寫成具體的測(cè)試用例文檔。
中央控制子系統(tǒng)的整個(gè)測(cè)試用例集的數(shù)量非常多,下面就同樣以“單分區(qū)列車運(yùn)行流程”場(chǎng)景為例,詳細(xì)解釋使用建模圖來生成測(cè)試用例的過程。首先由列車運(yùn)行流程的用例圖可知,該場(chǎng)景在整個(gè)過程中所涉及到的外部參與者主要有操作員、DCS和VCS,即主要由他們來完成測(cè)試用例所需要的操作以及觀測(cè)測(cè)試結(jié)果的。然后根據(jù)列車運(yùn)行流程狀態(tài)圖,可以詳細(xì)地看到OTS在此場(chǎng)景中的狀態(tài)變化,由圖3可知,要最大程度的覆蓋其所有狀態(tài),需要5個(gè)測(cè)試用例。最后根據(jù)活動(dòng)圖和順序圖可以分別得到測(cè)試用例的具體操作步驟以及對(duì)應(yīng)的交互信息。以列車運(yùn)行流程各命令執(zhí)行都正常的情況為例,其用例設(shè)計(jì)結(jié)果如表2所示。
表2 列車運(yùn)行流程測(cè)試用例
基于提出的方法,本文最終對(duì)操作員終端系統(tǒng)設(shè)計(jì)測(cè)試用例85個(gè),對(duì)列車自動(dòng)運(yùn)行系統(tǒng)設(shè)計(jì)測(cè)試用例68個(gè),對(duì)中央診斷系統(tǒng)設(shè)計(jì)測(cè)試用例31個(gè),且設(shè)計(jì)的測(cè)試用例全部通過測(cè)試平臺(tái)得到執(zhí)行,基本完全覆蓋了中央控制子系統(tǒng)運(yùn)行過程中的主要場(chǎng)景,對(duì)在測(cè)試中發(fā)現(xiàn)的錯(cuò)誤或缺陷通過查找原因、修改代碼等途徑都得到解決,最終達(dá)到測(cè)試用例通過率100%。
本文提出了基于UML的測(cè)試用例生成方法,并在測(cè)試平臺(tái)中執(zhí)行生成的測(cè)試用例來實(shí)現(xiàn)對(duì)中央控制子系統(tǒng)的測(cè)試驗(yàn)證,測(cè)試結(jié)果表明,本文設(shè)計(jì)生成的測(cè)試用例,可充分地模擬運(yùn)行現(xiàn)場(chǎng)可能出現(xiàn)的各種情況,達(dá)到提早發(fā)現(xiàn)系統(tǒng)設(shè)計(jì)錯(cuò)誤或缺陷并進(jìn)行有效修復(fù)的作用,這樣在現(xiàn)場(chǎng)聯(lián)調(diào)時(shí)就可以顯著提高現(xiàn)場(chǎng)測(cè)試效率,有效減少測(cè)試時(shí)間和測(cè)試質(zhì)量成本,并可為今后高速磁浮中央控制子系統(tǒng)的測(cè)試提供一定的理論依據(jù)和方法借鑒。