徐建華,張 瑞,張 弛
(卡斯柯信號(hào)有限公司,北京 100070)
為確保行車安全,鐵路信號(hào)控制系統(tǒng)在現(xiàn)場(chǎng)開通運(yùn)行之前都會(huì)依據(jù)技術(shù)規(guī)范、需求等制定測(cè)試場(chǎng)景,測(cè)試用例執(zhí)行測(cè)試。信號(hào)產(chǎn)品的測(cè)試工作量大,需要投入的人力多,耗時(shí)高,測(cè)試過程中又常有一些重復(fù)性的測(cè)試操作,而且人工測(cè)試又可能出現(xiàn)疏忽,導(dǎo)致漏測(cè)、錯(cuò)測(cè)等問題,為提高測(cè)試效率,保障測(cè)試質(zhì)量,開發(fā)對(duì)應(yīng)的自動(dòng)化測(cè)試軟件,實(shí)現(xiàn)對(duì)鐵路信號(hào)產(chǎn)品或項(xiàng)目數(shù)據(jù)的自動(dòng)測(cè)試是鐵路信號(hào)產(chǎn)品的一項(xiàng)重要工作。對(duì)于鐵路信號(hào)項(xiàng)目大量的數(shù)據(jù)與大量測(cè)試用例,使用自動(dòng)測(cè)試軟件替代人工進(jìn)行測(cè)試,自動(dòng)測(cè)試軟件如何控制整個(gè)過程,完成自動(dòng)測(cè)試,簡(jiǎn)要分析如下。
自動(dòng)測(cè)試軟件也屬于自動(dòng)控制系統(tǒng),只是更側(cè)重于軟件。在自動(dòng)控制原理中有兩個(gè)基礎(chǔ)概念,即開環(huán)控制與閉環(huán)控制(閉環(huán)控制也稱為反饋控制),對(duì)應(yīng)兩類不同的控制方式。
開環(huán)控制:無反饋信息的系統(tǒng)控制方式。
閉環(huán)控制:有反饋信息的系統(tǒng)控制方式。作為被控的輸出量以一定方式返回到作為控制的輸入端,并對(duì)輸入端施加控制影響的一種控制關(guān)系,如圖1模型所示。
圖1 閉環(huán)控制結(jié)構(gòu)Fig.1 Closed-loop control structure
自動(dòng)控制原理的這兩個(gè)概念同樣適用于軟件自動(dòng)測(cè)試,下文結(jié)合開環(huán)控制與閉環(huán)控制的概念,舉例討論自動(dòng)測(cè)試軟件的兩種實(shí)現(xiàn)方式:通過時(shí)間軸控制與通過狀態(tài)機(jī)控制的自動(dòng)測(cè)試過程。
時(shí)間軸控制的自動(dòng)測(cè)試過程,是按照事先指定的一系列的時(shí)刻自動(dòng)地給被測(cè)軟件輸入不同的數(shù)據(jù)或操作,從而達(dá)到代替人工觸發(fā)輸入的測(cè)試過程。
一個(gè)常見的測(cè)試用例如圖2所示。
圖2 測(cè)試用例模板Fig.2 Test case template table
對(duì)于時(shí)間軸控制的自動(dòng)測(cè)試軟件,會(huì)在Time1時(shí)刻自動(dòng)完成操作1或輸入數(shù)據(jù)1給被測(cè)軟件,在Time2時(shí)刻自動(dòng)完成操作2或輸入數(shù)據(jù)2給被測(cè)軟件。在測(cè)試中,經(jīng)常用到這種實(shí)現(xiàn)方式的自動(dòng)測(cè)試軟件。在確保指定時(shí)刻可成功輸入數(shù)據(jù)與操作給被測(cè)軟件的情況下,可通過日志或回放方式,確認(rèn)數(shù)據(jù)與操作是否成功輸入給被測(cè)軟件的情況下,這是一種常見且有效可行的測(cè)試方式。
例如,在列控中心測(cè)試的過程中,有這樣的測(cè)試用例:排列接發(fā)車進(jìn)路、下發(fā)限速,然后檢查列控中心發(fā)給LEU的報(bào)文是否正確。按照上述內(nèi)容整理成測(cè)試用例,如圖3所示。
圖3 測(cè)試用例示例Fig.3 An example of test case
對(duì)于自動(dòng)測(cè)試來說,需要讓自動(dòng)測(cè)試軟件知道在哪個(gè)時(shí)刻發(fā)送出數(shù)據(jù)或操作,可以制作包含時(shí)間的輸入文件提供給自動(dòng)測(cè)試軟件,例如可寫成如圖4所示的形式。
圖4 自動(dòng)測(cè)試輸入示例Fig.4 An example of automatic test input
按照上述輸入文件,則在時(shí)間刻度為150,進(jìn)路號(hào)為1的進(jìn)路自動(dòng)輸入給被測(cè)對(duì)象列控中心,時(shí)間刻度為350,臨時(shí)限速命令自動(dòng)輸入給被測(cè)對(duì)象列控中心,從而代替測(cè)試人員手動(dòng)在模擬CBI上點(diǎn)擊進(jìn)路,在模擬TSRS上觸發(fā)限速命令。當(dāng)需要執(zhí)行多個(gè)測(cè)試用例時(shí),則自動(dòng)測(cè)試軟件只需要獲得多個(gè)類似的輸入并順序執(zhí)行即可。
但是,這種實(shí)現(xiàn)方式也有其不足之處:1)需要在自動(dòng)測(cè)試前通過計(jì)算或者依賴經(jīng)驗(yàn)預(yù)估各輸入數(shù)據(jù)與操作的觸發(fā)時(shí)刻,但是預(yù)估的觸發(fā)時(shí)刻可能不合理、不正確,尤其當(dāng)操作稍復(fù)雜時(shí),可能不易預(yù)估計(jì)算。而且,如果依賴人工在輸入文件中填寫輸入量的時(shí)間值,這本身就是一個(gè)很大的工作量。例如,在TCC項(xiàng)目數(shù)據(jù)測(cè)試中有大量重復(fù)性的辦理進(jìn)路與下發(fā)限速,如果人工制作這樣的輸入文件,將是巨大的工作量,而且過多過大的輸入文件也不易維護(hù)。2)自動(dòng)測(cè)試過程中未確認(rèn)輸入數(shù)據(jù)或操作是否成功輸入給被測(cè)試軟件。如果輸入操作和數(shù)據(jù)給被測(cè)對(duì)象的過程失敗,則后續(xù)將預(yù)期結(jié)果與實(shí)際結(jié)果進(jìn)行對(duì)比就沒有意義。例如,上例自動(dòng)測(cè)試過程中沒有考慮進(jìn)路號(hào)與臨時(shí)限速命令是否收到成功輸入給列控中心,如果自動(dòng)測(cè)試軟件沒有確認(rèn)是否成功的將進(jìn)路號(hào)與臨時(shí)限速輸入給列控中心,則將預(yù)期報(bào)文與實(shí)際報(bào)文進(jìn)行自動(dòng)對(duì)比的結(jié)果就不可信。
為避免上述實(shí)現(xiàn)方式的問題,可考慮一種基于狀態(tài)機(jī)的閉環(huán)控制實(shí)現(xiàn)方式。下文還以上述測(cè)試用例為例來說明該實(shí)現(xiàn)方式。該測(cè)試用例的閉環(huán)控制的自動(dòng)測(cè)試過程如圖5所示。
圖5 閉環(huán)控制的自動(dòng)測(cè)試過程Fig.5 Closed-loop controlled automatic test process
與上述時(shí)間軸控制的方式相比較,狀態(tài)機(jī)控制的自動(dòng)測(cè)試過程增加了反饋環(huán)節(jié),可以根據(jù)反饋情況影響輸入,軟件可以動(dòng)態(tài)的確定后續(xù)測(cè)試步驟是否執(zhí)行、執(zhí)行時(shí)刻等。也就是說,可以根據(jù)測(cè)試用例的執(zhí)行狀態(tài),動(dòng)態(tài)的決定后續(xù)的執(zhí)行步驟??梢詫y(cè)試用例的測(cè)試過程分為n個(gè)狀態(tài),狀態(tài)個(gè)數(shù)與測(cè)試步驟數(shù)不一定是一一對(duì)應(yīng)的關(guān)系,如圖6所示。
狀態(tài)機(jī)是一種常見的軟件設(shè)計(jì)模式,對(duì)于該測(cè)試用例,可以繪制自動(dòng)測(cè)試過程的狀態(tài),如圖7所示。
圖7 狀態(tài)轉(zhuǎn)換Fig.7 State transition diagram
這種方式不需要在輸入文件中確定輸入數(shù)據(jù)的時(shí)刻,而是根據(jù)測(cè)試用例的執(zhí)行狀態(tài)以及被測(cè)對(duì)象的反饋情況動(dòng)態(tài)觸發(fā)執(zhí)行各步驟;而且當(dāng)某個(gè)測(cè)試步驟執(zhí)行不成功,且后續(xù)步驟沒必要執(zhí)行時(shí),可根據(jù)測(cè)試狀態(tài)跳過后續(xù)測(cè)試步驟轉(zhuǎn)至結(jié)束。
上述兩種自動(dòng)測(cè)試過程控制方式各有其優(yōu)點(diǎn),對(duì)于狀態(tài)機(jī)控制的自動(dòng)測(cè)試過程,適用于測(cè)試步驟比較復(fù)雜或交互實(shí)時(shí)性要求較高的測(cè)試用例等,且可適用于測(cè)試大量重復(fù)性的數(shù)據(jù)與操作;對(duì)于時(shí)間軸控制的方式,使用人員可以通過在輸入文件中編輯時(shí)間、數(shù)據(jù)、關(guān)鍵字等組合成各不同的測(cè)試步驟,具備可靈活的生成測(cè)試用例等優(yōu)點(diǎn)。兩種方式在自動(dòng)測(cè)試軟件開發(fā)中均有應(yīng)用。
自動(dòng)測(cè)試過程控制方式是實(shí)現(xiàn)產(chǎn)品自動(dòng)化測(cè)試過程中需解決的眾多問題中的重要技術(shù)問題之一,本文舉例闡述了兩種常見的自動(dòng)測(cè)試過程控制方式,對(duì)于實(shí)現(xiàn)鐵路信號(hào)產(chǎn)品的自動(dòng)測(cè)試有重要的借鑒意義。上述兩種自動(dòng)測(cè)試過程控制方式在鐵路列控產(chǎn)品測(cè)試中均有成功應(yīng)用,為保障鐵路安全運(yùn)行起了重要作用。