999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

LKJ自動化測試腳本定義及生成技術研究

2019-09-12 07:09:40白鴻鈞張明凱李冠軍楊清祥
鐵路通信信號工程技術 2019年8期
關鍵詞:信號

白鴻鈞,張明凱,李冠軍,楊清祥

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

列車運行監控裝置(LKJ)是中國鐵路用于防止列車冒進信號、運行超速事故和輔助司機提高操縱能力的重要行車設備。LKJ 車載設備內的嵌入式軟件是實現列車運行控制的靈魂,其運行結果的正確與否,直接關系到列車的運行安全。車載控制軟件邏輯正確性測試一直是LKJ 系統生產廠家的重要工作。業內對LKJ 車載控制軟件的測試方法進行了廣泛探索,一般采用手工測試和自動化測試兩種方式進行測試。

手工測試難以實現待測軟件邏輯的全覆蓋,工作量大,花費時間長,且測試結果受限于測試工程師的專業知識。針對手工測試存在的問題,LKJ 生產廠家[1-3]及其他列控系統或設備生產廠家[4]對自動化測試方法進行了探索。實踐證明,給通用的腳本語言增加LKJ 業務邏輯相關的關鍵字形成專用的腳本語言,以此專用腳本語言來定義測試用例,解釋執行測試用例驅動硬件設備發送信號和采集LKJ 的反饋數據,判斷是否符合預期,是可行的技術路線。

筆者參與研發的LKJ 自動化模擬仿真測試系統(Automatic Simulation and Test System,ASTS)在Python 語言基礎上定義了專用于LKJ測試的腳本語言,采用圖形編輯和手動錄制的方式形成了系列、規模化的腳本庫,成功運用于LKJ 功能、性能的自動化測試。

1 腳本語言定義

測試用例需要以某種編程語言來體現,編程語言的選擇是系統成功的關鍵。在選定語言的基礎上,增加LKJ 業務邏輯相關的語言特征和底層支持函數庫,形成應用于LKJ 特定測試場景的腳本語言。LKJ 相關的業務邏輯判斷在腳本語言中實現,腳本語言調用底層支持函數,底層支持函數驅動硬件,產生信號,獲取LKJ 反饋,判斷反饋結果是否符合預期,從而判定LKJ 軟件工作是否正常。

1.1 腳本語言的選用

自動化測試的場景是:測試工程師編輯生成測試用例后發送到仿真測試平臺,仿真平臺執行測試用例,驅動硬件設備,產生各種信號,獲取LKJ 反饋,比較LKJ 反饋是否符合預期,從而判斷LKJ車載控制軟件邏輯是否正確。測試中可能需要調整測試用例,考慮到測試工程師熟悉LKJ 業務,但不一定具備編程能力的情形,不能要求測試工程師按照軟件開發的思路來編輯測試用例,編譯后生成執行。測試用例依托的腳本語言必須具備動態執行、高效率兩個特性,并且測試用例必須能夠可視化呈現,因此,采用以下設計原則選擇腳本語言。

1)考慮到腳本的可擴充性要求,應采用業內通用的腳本語言。

2)應采用動態語言。動態語言在執行時動態加載,不需要預先編譯。

3)語言性能應滿足時效性要求。

通過對Python 語言特征的分析以及Python 混合編程的特點分析[5-6],確定Python 語言滿足以上要求,選用Python 作為測試用例的腳本語言。

1.2 腳本定義

在Python 語言的基礎上,增加LKJ 業務邏輯相關的關鍵字,比如設定列車運行速度、檢查線路限速數值、獲取LKJ 輸出信息等,生成了ASTS 腳本語言。新增的關鍵字解釋執行時調用底層的C++函數庫[7-9],實現業務邏輯。ASTS 腳本語言對Python 的擴充包括以下5 個方面。

1.2.1 設定LKJ測試所需的輸入信號

設定LKJ 測試所需的輸入信號,包括開關量信號和模擬量信號,為LKJ 提供外部信號條件,比如設定各路速度的速度值、各路壓力信號的管壓值、列車手柄狀態、機車信號等。另外,還定義了具備內置業務邏輯的關鍵字,比如跟蹤速度函數,可以持續跟蹤LKJ 限速的變化,自動調整輸入速度信號數值,使得速度貼近限速運行,直到滿足某個條件時退出速度跟蹤。

1.2.2 設定LKJ運行狀態

設定LKJ 運行狀態,可以改變LKJ 的運行控制參數和設備自身狀態,使LKJ 處于測試所需的工作狀態,測試能夠啟動和持續進行。比如校正LKJ的時間,設定司機發車參數(發車的車站號、運行線路、目的車站等),設定列車的檢修參數(計算列車速度所需的機車輪徑、速度傳感器每周脈沖數等),對LKJ 各插件單元的嵌入式軟件進行版本更新。

1.2.3 獲取LKJ反饋信息

仿真測試系統能夠接入LKJ 內部總線,偵聽總線數據,獲取系統內部通信數據;也可以采集屏幕顯示器(DMI)視頻顯示和音頻輸出,通過圖像識別和音頻識別,獲取視頻音頻信息。腳本語言定義了相關的關鍵字,以實現獲取LKJ 信息反饋的功能。

DMI 圖像識別通過圖像二值化、字符串定位與剪裁、字符分割、字符識別等4 個過程識別字符點陣,采用“點陣對比”方式與標準字庫中的字符點陣進行對比,識別出圖像中的字符。

DMI 音頻識別基于快速傅里葉變換(FFT)預先建立標準語音文件的識別特征庫,采集到某段語音后分析該語音的聲音特征,與識別特征庫中的語音特征進行匹配,采用“最大可能性”原則,判定為哪一條標準語音。

1.2.4 測試結果判斷

以斷言Assert 的方式進行測試結果判斷,判斷LKJ 的信息輸出和動作輸出是否符合預期。

1.2.5 測試進度控制

定義了多種測試進度控制關鍵字,比如以動態延時(ASTS_Delay)和測試過程掛起的方式控制腳本的執行進度,保證測試過程滿足業務邏輯要求,也可以使測試過程暫停和繼續,實現“斷點續測”。

1.3 腳本文件結構

腳本文件是結構化的,由文件頭和文件體組成。文件頭定義了文件的名稱、功能等,文件體是操作要素的序列和期望結果。

1.3.1 文件頭

文件頭是腳本描述,描述腳本的種類、編制人等。文件頭包括以下要素。

1)腳本名稱(#ASTS_Script_Name):用關鍵字說明腳本的功能,例如:特殊前行模式測試。

2)腳本種類(#ASTS_Script_Type):基本用例/測試實例/測試序列。

3)腳本ID(#ASTS_Script_ID):ID 由業務種類+ 序號組成。業務種類包括LKJ 種類(LKJ2000、LKJ-15S)、設備種類(主機、顯示器、其他設備)、測試種類(區分控制模式)和測試種類細分等。當業務種類無法區分復雜或重復業務時,以序號做區分。

4)功能簡述(#ASTS_Script_Func):簡單說明腳本的功能。

5)當前版本(#ASTS_Script_Version):該腳本的版本號。

6)發布日期(#ASTS_Script_ReleaseDate)。7)初創人(#ASTS_Script_Author)。

8)來源(#ASTS_Script_Creater):人工編制或手工測試錄制。

9)腳本運行所要求的LKJ 軟件版本(#ASTS_Script_LKJ_Version):LKJ 軟件、LKJ 控制條件版本號。

10) 腳本運行所要求的LKJ 數據版本(#ASTS_Script_LKJ_Data_Version):LKJ 數據版本號。

11)其他:包含腳本解釋所需的Package 列表等,用于腳本解釋器引入package。

以上1 ~10 項要素以Python 腳本注釋的方式存在。

1.3.2 文件體

文件體由一系列功能相關的操作要素和測試結果判斷組成。操作要素內容包括動作名稱、動作參數等,比如 “設定速度輸出數值80 km/h”。腳本例子如下。

pdll.ASTS_SetTestProgress(1,20) //設置測試進度

pdll.ASTS_TimeOut=5000 //設置超時值pdll.ASTS_InitTimeOut() //初始化超時計數

while(pdll.ASTS_CheckTimeOut()

pdll.ASTS_SetKey(1) //發送按鍵

pdll.ASTS_Delay(100) //延時100 ms

pdll.ASTS_SetAllGangya(800,600,0,500,500,500) //設置列車管壓

pdll.ASTS_SetGongKuang(1,0,1,0,1,1,1,1) //設置手柄信號

pdll.ASTS_SetJtcXinHao(2,1,3) //設置機車信號

pdll.ASTS_SetSudu(5,0,1) //設置速度

pdll.ASTS_SetFollowSudu(-1,361,-1,-1,5) //設置跟隨速度信號

while(pdll.ASTS_CheckTimeOut()

if(pdll.ASTS_GetLKJFlag(1,7) == 21 or pdll.ASTS_GetLKJFlag(2,7) == 21): //采集LKJ反饋信息

pdll.ASTS_Assert(1) //保存測試結果

else:

pdll.ASTS_Assert(0) 保存測試結果

pdll.ASTS_Delay(1)

pdll.ASTS_Delay(1)

2 腳本語言生成

測試腳本可以由測試人員在文本編輯軟件中直接輸入語句來生成,也可以通過圖形拖拽方式生成。在實際測試工作中,測試人員習慣先進行手動測試,記錄下自己的測試過程,之后將測試過程轉化為腳本,經合并拼接后錄入到系統。

2.1 測試腳本的圖形化編輯

ASTS 將腳本功能或語句抽象為圖形控件,每個圖形控件內置特定的業務邏輯。編輯測試腳本時,根據業務功能,選定相應的圖形控件,按順序拖動到編輯區,設定控件屬性,即可生成測試腳本。圖形化編輯可視化強,智能化程度高,大大減輕了腳本編輯的工作量。

2.2 手動測試錄制腳本

在實際測試工作中,測試人員經常先進行手動測試,手動測試過程通過才能轉化為自動測試用例。手動測試過程記錄智能轉換為測試用例腳本,將會在很大程度上減少測試人員的工作量。

通過對用戶手動測試過程的分析和提煉,ASTS實現了自動記錄測試人員的手動測試過程,并轉化為測試腳本的軟件方法。

如圖1 所示,手工錄制腳本的過程如下。

1)記錄用戶的工作環境描述,形成文本塊T1

記錄用戶的登錄名稱和時間。通過特定的軟件通信協議讀取當前設備的硬件版本和軟件版本。由用戶指定本次手動測試的主要目的。

2)由用戶指定需要跟蹤的LKJ 反饋項目

腳本文件中的期望結果是判斷腳本執行是否成功的標志,非常重要。實際測試中,LKJ 反饋輸出具有很強的時效性,如果讓用戶在測試中選擇確定輸出項目的話,可能會錯過時機,從而記錄下錯誤的反饋輸出結果。手工錄制腳本前,在軟件界面中由用戶點擊選擇要跟蹤的LKJ 反饋輸出項目,比如跟蹤“緊急制動輸出狀態”。形成文本塊T3,T3 的形式如“跟蹤:緊急制動輸出狀態”。

圖1 手工錄制腳本的流程Fig.1 Manual scripts record process

3)記錄用戶的點擊操作過程

用戶點擊“開始錄制腳本”啟動手動測試,系統記錄用戶的手動測試過程(包括設定項目、項目數值和相對開始的時間),形成文本塊T2。比如記錄下某用戶的操作過程的文本塊T2:

設定速度,速度值=0 km/h,操作時間=0 s;

設定信號燈,綠燈,操作時間=5 s;

設計開車參數,設定司機號=1234,時間=8 s;

設定速度,速度=20 km/h,操作時間=58 s;

設定速度,速度=40 km/h,操作時間=80 s;

設定信號:信號=紅燈,操作時間=103 s;

4)獲取跟蹤結果

用戶點擊“獲取跟蹤結果”,系統自動讀取當前被測試系統的反饋結果,并與指定的輸出結果跟蹤項目進行匹配,修訂文本塊T3。比如此時T3 內容為“緊急制動輸出狀態=輸出”。

5)腳本規范化

對文本塊T2 進行規范化處理,規范化處理的目的是將操作過程映射到操作元素。過程如下。

對每一步操作內容,遍歷操作要素描述庫,查找對應的操作要素。比如“設定速度”的要素類型為2。

根據操作要素類型,確定操作內容是否完整,如果不完整,則補充默認值。比如操作過程的第3步“設定開車參數”,用戶沒有設定發車車站號,則系統自動取默認值。

將文本塊T1、T2、T3 進行組合,形成腳本文件。

此時生成了完整的描述性文本文件,文件中的元素基本與腳本一一對應,可以很容易地轉換為腳本。生成的描述性文本如下所示。

文件頭:用于測試紅燈停車模式的腳本,運行于LKJ-15S 中,要求軟件版本為V1.0.1,自身版本V1.0,由張三錄制,錄制時間2018 年7 月27 日。

操作元素序列如下。

設定速度參數:要素類型=2,操作時間=0 s,速度值=0 km/h;

設定信號燈:要素類型=3,操作時間=5 s,信號=綠燈;

設計開車參數:要素類型=1,操作時間=8 s,設定司機號=1234,設定發車車站號=25;

設定速度:操作要素=2,操作時間=58 s,速度=20 km/h;

設定速度:操作要素=2,操作時間=80 s,速度=40 km/h;

設定信號:操作要素=3,操作時間=103 s,信號=紅燈。

期待輸出:緊急制動輸出=輸出。

3 結論

ASTS 應用于LKJ 的自動化測試,實踐表明,測試腳本的設計合理,動態解釋執行靈活,且執行效率高。腳本的圖形化生成方式、手工錄制生成方式大大減輕了測試工程師的工作量,學習曲線平滑,測試工程師的工作經驗很容易地轉化為系統的測試用例。

進一步,自定義的腳本語言可以根據應用需求,方便地擴展到其他自動化設備的測試場景,具有很大的應用前景。

猜你喜歡
信號
信號
鴨綠江(2021年35期)2021-04-19 12:24:18
完形填空二則
7個信號,警惕寶寶要感冒
媽媽寶寶(2019年10期)2019-10-26 02:45:34
孩子停止長個的信號
《鐵道通信信號》訂閱單
基于FPGA的多功能信號發生器的設計
電子制作(2018年11期)2018-08-04 03:25:42
基于Arduino的聯鎖信號控制接口研究
《鐵道通信信號》訂閱單
基于LabVIEW的力加載信號采集與PID控制
Kisspeptin/GPR54信號通路促使性早熟形成的作用觀察
主站蜘蛛池模板: 久久精品国产999大香线焦| 日本不卡在线| 婷婷激情亚洲| 国产精品久久久精品三级| 国产99免费视频| 91精品视频网站| 国内精品久久久久鸭| 久久精品国产精品一区二区| 日本欧美中文字幕精品亚洲| 最新国产网站| 97视频精品全国免费观看| 干中文字幕| 99在线视频免费| 日韩在线播放中文字幕| 国产在线91在线电影| 91久久国产综合精品| 亚洲成a∧人片在线观看无码| 在线人成精品免费视频| 欧美一区二区人人喊爽| 小说 亚洲 无码 精品| 日韩 欧美 小说 综合网 另类| 无码中文AⅤ在线观看| 国产精品青青| 中文字幕精品一区二区三区视频 | 日本福利视频网站| 国产精品自在在线午夜| 欧美α片免费观看| 波多野结衣一二三| 欧美亚洲一区二区三区导航| 欧美午夜理伦三级在线观看| 国产成人1024精品| 2020国产免费久久精品99| 国产成人在线无码免费视频| 欧美精品成人一区二区视频一| 国产又爽又黄无遮挡免费观看| 二级毛片免费观看全程| 色欲色欲久久综合网| 青青草91视频| 久久96热在精品国产高清| 日韩天堂网| 久久成人免费| 狠狠躁天天躁夜夜躁婷婷| 夜精品a一区二区三区| 漂亮人妻被中出中文字幕久久| 婷婷伊人久久| 国产在线观看99| 国产一区二区免费播放| 欧洲欧美人成免费全部视频| 国产真实乱子伦精品视手机观看| 欧美日韩久久综合| 91久久天天躁狠狠躁夜夜| 成年女人a毛片免费视频| 在线观看网站国产| 97成人在线观看| 久久无码av一区二区三区| 国产成人成人一区二区| 日韩午夜伦| 午夜无码一区二区三区| 色精品视频| 色九九视频| 欧美福利在线观看| 国产精品播放| 久久人人爽人人爽人人片aV东京热| 欧美精品1区2区| 网友自拍视频精品区| 国产精品无码久久久久久| 91精品啪在线观看国产| 国产性爱网站| 99re热精品视频国产免费| 日本不卡在线| 在线观看国产一区二区三区99| 亚洲成网777777国产精品| 成人国产精品2021| av天堂最新版在线| 久久久久久国产精品mv| 国产不卡在线看| 亚洲 日韩 激情 无码 中出| 亚洲黄色高清| 国产一级片网址| 国产超薄肉色丝袜网站| 一级毛片视频免费| 国产精品对白刺激|