国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于LKJ軟件測(cè)試用例自動(dòng)生成的技術(shù)研究

2019-07-29 06:01李冠軍楊清祥白鴻鈞
關(guān)鍵詞:測(cè)試用例建模自動(dòng)

李冠軍,楊清祥,白鴻鈞

(河南思維軌道交通技術(shù)研究院有限公司,鄭州 450001)

列車運(yùn)行監(jiān)控裝置(LKJ)車載控制軟件涉及列車行車安全,因此在每次軟件變更后都必須進(jìn)行嚴(yán)格測(cè)試,以保證軟件控制的安全性、可靠性[1]。在LKJ軟件升級(jí)過程中,軟件測(cè)試工作一直占據(jù)著很大的比重。雖然目前已逐漸使用LKJ軟件自動(dòng)化仿真測(cè)試系統(tǒng)代替部分人工測(cè)試的工作,但其測(cè)試用例的編輯和維護(hù)仍需人工手動(dòng)完成,需耗費(fèi)較多的人力,且效率較低。因此,為了盡可能的提高效率及自動(dòng)化程度,充分發(fā)揮LKJ軟件自動(dòng)化仿真測(cè)試系統(tǒng)的優(yōu)勢(shì),除對(duì)測(cè)試腳本的編寫方法進(jìn)行優(yōu)化外,亟待有更安全、可靠的LKJ軟件測(cè)試用例自動(dòng)生成解決方案。

1 LKJ軟件測(cè)試用例生成概述

1.1 測(cè)試用例生成方法

由于LKJ軟件控制功能復(fù)雜且牽涉外部接口參數(shù)較多,在編寫LKJ軟件測(cè)試用例時(shí),需要根據(jù)軟件控制功能將不同的控制參數(shù)和外部接口等進(jìn)行排列組合來形成不同的測(cè)試用例。測(cè)試LKJ軟件的一個(gè)控制功能往往需要幾十條甚至上百條LKJ軟件測(cè)試用例,才能實(shí)現(xiàn)對(duì)控制功能的完整覆蓋。目前LKJ軟件自動(dòng)化仿真測(cè)試系統(tǒng)提供的LKJ軟件測(cè)試用例編寫方式有腳本語言編輯、人工錄制測(cè)試用例和圖形化編輯3 種方式。

(1)腳本語言編輯方式是指采用測(cè)試腳本語言編輯生成自動(dòng)測(cè)試腳本[2]。該方法對(duì)測(cè)試用例編寫人員的業(yè)務(wù)水平和腳本語言運(yùn)用水平要求較高,且編輯工作量較大,一般適用于功能相對(duì)簡(jiǎn)單的壓力測(cè)試和重復(fù)性的性能測(cè)試等方面。對(duì)于邏輯復(fù)雜的軟件功能測(cè)試,由于測(cè)試腳本的編輯及維護(hù)工作量非常巨大,使用該方式無法體現(xiàn)自動(dòng)化測(cè)試的優(yōu)越性。

(2)人工錄制測(cè)試用例方式是指在人工操作LKJ設(shè)備時(shí),系統(tǒng)對(duì)設(shè)備操作過程、LKJ輸出關(guān)鍵信息和LKJ控制結(jié)果等信息進(jìn)行詳實(shí)記錄,并從一次或多次人工操作記錄中提煉信息,自動(dòng)生成LKJ軟件測(cè)試用例初稿,再由人工對(duì)初稿進(jìn)行修改。該方式以人工操作為范例,由于個(gè)人操作習(xí)慣及業(yè)務(wù)水平不同,可能會(huì)輸出與預(yù)期不符的結(jié)果,導(dǎo)致測(cè)試用例偏離實(shí)際,且生成的測(cè)試用例腳本維護(hù)工作量大,只適用于特殊場(chǎng)景的重復(fù)測(cè)試。

(3)圖形化編輯方式僅需要通過拖動(dòng)圖形完成一系列組合即可編輯測(cè)試用例,對(duì)測(cè)試用例編輯人員的腳本語言運(yùn)用水平?jīng)]有太高要求。此方法可顯著提高LKJ軟件測(cè)試用例的編輯效率,簡(jiǎn)化LKJ軟件測(cè)試用例維護(hù)工作。但由于LKJ軟件測(cè)試用例整體數(shù)量龐大,用例編輯及維護(hù)仍需要大量人力,不能發(fā)揮LKJ軟件自動(dòng)化仿真測(cè)試系統(tǒng)的優(yōu)點(diǎn)。

1.2 測(cè)試用例自動(dòng)生成技術(shù)

測(cè)試用例的自動(dòng)生成技術(shù)是實(shí)現(xiàn)LKJ軟件的自動(dòng)化測(cè)試的關(guān)鍵一環(huán)。目前測(cè)試用例自動(dòng)生成的方法,幾乎都離不開選取接口參數(shù)[3]和創(chuàng)建測(cè)試模型[4]。通常采用的測(cè)試模型有有限狀態(tài)機(jī)(FSM,F(xiàn)inite State Machine)和擴(kuò)展有限狀態(tài)機(jī)(EFSM ,Extended Finite State Machine)[5]等。在列車控制領(lǐng)域,已嘗試采用UML2.0活動(dòng)圖的方式自動(dòng)生成測(cè)試用例[6-8]。

本文通過圖形化建模的方式,將復(fù)雜的LKJ功能進(jìn)行拆分并采用簡(jiǎn)單的圖形控件進(jìn)行建模,自動(dòng)生成測(cè)試用例,從而提高測(cè)試用例編寫效率和質(zhì)量。

2 方案設(shè)計(jì)

鑒于LKJ軟件的特點(diǎn)及目前LKJ軟件測(cè)試用例編制困難的現(xiàn)狀,本文主要結(jié)合圖形建模技術(shù),對(duì)通過模型自動(dòng)生成LKJ軟件測(cè)試用例的方法展開研究,并從測(cè)試模型框架、測(cè)試用例模塊劃分、接口參數(shù)選取及取值設(shè)計(jì)、接口參數(shù)組合設(shè)計(jì)及測(cè)試用例自動(dòng)生成方法5方面入手,詳細(xì)介紹基于LKJ軟件自動(dòng)化仿真測(cè)試系統(tǒng)的測(cè)試用例自動(dòng)生成方案。

2.1 測(cè)試模型框架

在對(duì)LKJ軟件進(jìn)行測(cè)試前,應(yīng)先根據(jù)LKJ軟件控制功能建立相應(yīng)的LKJ軟件功能測(cè)試模型,依據(jù)該模型對(duì)接口參數(shù)采用遍歷的算法自動(dòng)生成一系列測(cè)試用例,其中,接口參數(shù)選取及接口參數(shù)組合序列的形成是關(guān)鍵。LKJ軟件功能測(cè)試模型主要包括測(cè)試環(huán)境、接口參數(shù)、圖形建模3部分。

測(cè)試環(huán)境主要指測(cè)試用例進(jìn)入的前置條件及測(cè)試用例運(yùn)行的必備資源,如司機(jī)設(shè)定信息、LKJ基礎(chǔ)數(shù)據(jù)等;接口參數(shù)指影響測(cè)試結(jié)果的關(guān)鍵信息,主要體現(xiàn)在圖形建模的判斷節(jié)點(diǎn)及各分支中,每種參數(shù)可存在2個(gè)及以上的參數(shù)值。圖形建模指根據(jù)接口參數(shù)之間的邏輯關(guān)系進(jìn)行模型繪制。

不同控制功能有不同的測(cè)試環(huán)境,不在本文討論范圍之內(nèi),暫不展開討論。

2.2 測(cè)試用例模塊劃分

由于LKJ軟件功能復(fù)雜、接口參數(shù)多樣,若每個(gè)功能僅設(shè)計(jì)一個(gè)測(cè)試用例,則會(huì)造成測(cè)試用例接口參數(shù)過多、邏輯分支龐大,很難實(shí)現(xiàn)測(cè)試用例的自動(dòng)生成。因此,首先應(yīng)對(duì)LKJ軟件功能進(jìn)行分解,細(xì)分成一個(gè)個(gè)相對(duì)獨(dú)立的功能模塊,然后對(duì)每個(gè)功能模塊再進(jìn)行多次分解,分解成能進(jìn)行獨(dú)立測(cè)試的最小測(cè)試單元,如圖1所示。

圖1 LKJ軟件測(cè)試用例模塊劃分示意圖

為避免遺漏,用例模塊劃分采用自頂向下逐層分解的原則,先畫出整體框架,再逐層細(xì)化。具體劃分步驟如下。

(1)根據(jù)運(yùn)行場(chǎng)景或LKJ控制模式進(jìn)行劃分,場(chǎng)景劃分方式主要依據(jù)運(yùn)用場(chǎng)景,例如:庫內(nèi)、調(diào)車、自動(dòng)閉塞站內(nèi)運(yùn)行、自動(dòng)閉塞區(qū)間運(yùn)行等;LKJ控制模式劃分方式主要依據(jù)LKJ控制功能的模式,例如:待機(jī)、降級(jí)、段內(nèi)走行、調(diào)車、通常、重載模式、無防冒、隨時(shí)停車等。本文選取第2種劃分方式。

(2) 梳理各控制模式的所有控制功能,例如:通常模式下的走停走、特殊前行、綠色許可證行車、過機(jī)校正、警惕、手信號(hào)引導(dǎo)等。對(duì)上述控制功能再向下逐層分解,如走停走可以分為停車再開和過機(jī)再走,其中過機(jī)再走又可向下分解為過機(jī)后信號(hào)開放和過機(jī)后信號(hào)關(guān)閉,直到不能再向下分解為止。

(3) 依據(jù)控制功能的最小單元進(jìn)行測(cè)試用例模塊劃分,分解出的測(cè)試用例模塊應(yīng)能單獨(dú)進(jìn)行測(cè)試,且輸入?yún)?shù)相對(duì)較少。如停車再開控制功能可以分解成停車期間、起車至機(jī)車越過信號(hào)機(jī)等測(cè)試單元模塊。

(4) 將每個(gè)測(cè)試單元?jiǎng)澐殖蛇M(jìn)入(啟動(dòng))條件、控制過程、退出(解除)條件等3部分,每部分為一個(gè)獨(dú)立的測(cè)試用例模塊。

2.3 測(cè)試用例接口參數(shù)選取及取值設(shè)計(jì)

測(cè)試用例接口參數(shù)直接關(guān)系到被測(cè)LKJ軟件功能的覆蓋度,是影響測(cè)試結(jié)果的關(guān)鍵參數(shù),但接口參數(shù)過多不利于參數(shù)組合設(shè)計(jì),所以應(yīng)當(dāng)根據(jù)不同測(cè)試用例模塊的實(shí)際需求選擇適合的接口參數(shù),LKJ測(cè)試用例模塊常用的接口參數(shù)有速度、列車管壓力、信號(hào)機(jī)類型、信號(hào)機(jī)標(biāo)志、信號(hào)制式、機(jī)車信號(hào)、距離、列車類型、機(jī)車類型等。

測(cè)試用例接口參數(shù)分為有限集參數(shù)和無限集參數(shù)兩種,有限集參數(shù)可以通過枚舉來表示,無限集參數(shù)一般為數(shù)值型參數(shù),通常采用等價(jià)或邊界取值轉(zhuǎn)換為有限集參數(shù)。

(1)有限集參數(shù)取值可根據(jù)測(cè)試需要選取典型值。信號(hào)機(jī)類型、信號(hào)機(jī)標(biāo)識(shí)、信號(hào)制式、機(jī)車信號(hào)、列車類型等為枚舉型接口參數(shù),例如:信號(hào)機(jī)類型取值包括預(yù)告、2預(yù)告、通過、容許、進(jìn)站、進(jìn)出站、出站等。

(2)速度、限速、距離等無限集參數(shù)取值盡量按等價(jià)類和邊界值方法轉(zhuǎn)換為有限的離散數(shù)值集合。例如LKJ控制中要求距離小于70 m,則測(cè)試用例中可設(shè)置距離為69 m和70 m兩個(gè)邊界值。

2.4 接口參數(shù)組合序列設(shè)計(jì)

接口參數(shù)選擇完成后,運(yùn)用圖形化方式編輯測(cè)試環(huán)境,并基于圖形建模的方式為接口參數(shù)建立測(cè)試場(chǎng)景流程圖;系統(tǒng)依據(jù)測(cè)試場(chǎng)景流程圖自動(dòng)生成一系列的測(cè)試用例接口參數(shù)組合序列[9],每個(gè)接口參數(shù)組合序列可生成一個(gè)測(cè)試用例,并通過對(duì)接口參數(shù)組合序列的篩選及對(duì)測(cè)試預(yù)期(測(cè)試斷言)的設(shè)置,形成本測(cè)試用例的接口參數(shù)組合序列表。

以LKJ軟件的貨車特殊前行功能進(jìn)入條件[10]為例,介紹測(cè)試用例的接口參數(shù)組合序列表的形成的過程。

貨車特殊前行功能主要解決貨物列車在非貨車靠標(biāo)停車?yán)щy車站尾部拉過標(biāo)的問題,貨車特殊前行功能進(jìn)入條件如下:

(1)貨物列車;

(2)機(jī)車停在LKJ車載數(shù)據(jù)預(yù)先設(shè)置為非貨車靠標(biāo)停車?yán)щy車站的站內(nèi),且列車頭部與出站信號(hào)機(jī)距離小于70 m;

(3)機(jī)車信號(hào)為停車信號(hào)或LKJ邏輯判斷為停車信號(hào);

(4)機(jī)車運(yùn)行速度為0 km/h;

(5)司機(jī)按規(guī)定方法操作,輸入LKJ的前行距離值不超過100 m。

對(duì)貨車特殊前行功能進(jìn)入條件進(jìn)行梳理,形成如表1所示的7種接口參數(shù)。

表1 貨車特殊前行進(jìn)入條件接口參數(shù)表

從表1可以看出,接口參數(shù)為7個(gè),接口參數(shù)各有2個(gè)取值,若需要覆蓋所有接口參數(shù)的取值,則生成的接口參數(shù)組合序列數(shù)量應(yīng)為128(27)個(gè)。若接口參數(shù)個(gè)數(shù)及取值再增加,則接口參數(shù)組合序列將會(huì)成倍或成指數(shù)級(jí)增加。例如:信號(hào)類型參數(shù)個(gè)數(shù)增加到10個(gè)、列車類型參數(shù)個(gè)數(shù)增加到12個(gè),則生成3 840個(gè)接口參數(shù)組合序列,也就是可以生成3 840 個(gè)測(cè)試用例。

因此,對(duì)于LKJ軟件自動(dòng)化仿真測(cè)試系統(tǒng)需要構(gòu)建一個(gè)測(cè)試模型,將接口參數(shù)通過程序流程圖的方式進(jìn)行建模,形成一個(gè)完整的測(cè)試場(chǎng)景,提高測(cè)試效率。貨車特殊前行進(jìn)入條件的測(cè)試場(chǎng)景建模如圖2所示。

自動(dòng)生成測(cè)試用例技術(shù)目前尚不能解決測(cè)試失效的自動(dòng)辨識(shí)問題,無法自動(dòng)生成斷言,需在流程圖中人工設(shè)置斷言,在自動(dòng)分解生成接口參數(shù)組合序列后,需人工對(duì)接口參數(shù)組合序列進(jìn)行全面性和正確性檢查,最終形成完整的接口參數(shù)組合序列集。

圖2 貨車特殊前行進(jìn)入條件測(cè)試場(chǎng)景流程圖

流程圖編輯采用預(yù)先定義的圖形控件,通過對(duì)圖形控件拖拽及對(duì)控件的屬性和參數(shù)進(jìn)行設(shè)置的方式完成序列集的制定,主要包括以下幾類圖形控件:

(1)開始/結(jié)束:定義流程圖的入口和出口;

(2)判斷:通過對(duì)參數(shù)的判斷來控制分支方向;

(3)箭頭:各個(gè)參數(shù)和步驟的連接關(guān)系;

(4)斷言:對(duì)測(cè)試結(jié)果進(jìn)行檢查的測(cè)試斷言項(xiàng)。

軟件自動(dòng)生成的接口參數(shù)序列數(shù)量受內(nèi)部判斷及分支的影響,通過遍歷算法對(duì)活動(dòng)圖進(jìn)行路徑搜索,人工調(diào)整后形成如表2所示的貨車特殊前行進(jìn)入條件測(cè)試接口參數(shù)組合序列表。

由表2可知,貨車特殊前行進(jìn)入條件的接口參數(shù)組合序列僅有8個(gè),僅需8個(gè)測(cè)試用例已能完成所有路徑的覆蓋,相對(duì)于128條用例來說已顯著縮減,極大的提高自動(dòng)化測(cè)試效率。

以上示例未將所有接口參數(shù)及判斷邏輯全部展開,僅用于對(duì)方案的演示和說明,實(shí)際應(yīng)用中接口參數(shù)及并發(fā)路徑會(huì)更多,對(duì)多并發(fā)路徑可采用取典型值法或?qū)⒍嗖l(fā)路徑分支繼續(xù)拆分成若干個(gè)單獨(dú)的測(cè)試模塊。

表2 測(cè)試用例接口參數(shù)組合序列表

2.5 測(cè)試用例生成

將上述生成的接口參數(shù)組合序列中各組參數(shù)依次傳入測(cè)試模塊接口中,即可自動(dòng)生成LKJ軟件測(cè)試用例集合。

3 結(jié)束語

通過對(duì)測(cè)試用例模塊采用程序流程圖方式建模并自動(dòng)生成測(cè)試用例的方法,顯著縮減無效測(cè)試用例,提高了LKJ軟件測(cè)試用例編制效率。且能對(duì)未測(cè)試的路徑和狀態(tài)組合進(jìn)行查漏,有利于測(cè)試環(huán)境的復(fù)用。如果發(fā)生軟件功能模塊修改,只需修改軟件測(cè)試環(huán)境、接口參數(shù)和測(cè)試狀態(tài)圖即可重新生成所有用例,提高了測(cè)試用例的可維護(hù)性,節(jié)省了人工編制用例的時(shí)間。與LKJ軟件自動(dòng)化仿真測(cè)試系統(tǒng)相結(jié)合,可顯著提高測(cè)試效率、測(cè)試覆蓋率及LKJ軟件測(cè)試的自動(dòng)化程度。

該方案已在新一代LKJ軟件仿真測(cè)試系統(tǒng)中試用,在一般測(cè)試場(chǎng)景中能夠很好的滿足系統(tǒng)自動(dòng)生成用例的需求,有效提高了測(cè)試用例編輯效率。但是由于測(cè)試場(chǎng)景的復(fù)雜性,往往在自動(dòng)測(cè)試用例編輯過程中需要人工干預(yù)和修正,如何驗(yàn)證生成用例模型正確性及測(cè)試覆蓋的完整性將是測(cè)試用例自動(dòng)生成技術(shù)未來的研究重點(diǎn)之一。

猜你喜歡
測(cè)試用例建模自動(dòng)
測(cè)試用例自動(dòng)生成技術(shù)綜述
回歸測(cè)試中測(cè)試用例優(yōu)化技術(shù)研究與探索
聯(lián)想等效,拓展建模——以“帶電小球在等效場(chǎng)中做圓周運(yùn)動(dòng)”為例
基于SmartUnit的安全通信系統(tǒng)單元測(cè)試用例自動(dòng)生成
自動(dòng)捕盜機(jī)
求距求值方程建模
基于PSS/E的風(fēng)電場(chǎng)建模與動(dòng)態(tài)分析
讓小鴨子自動(dòng)轉(zhuǎn)身
自動(dòng)搖擺的“蹺蹺板”
關(guān)于自動(dòng)駕駛