吳立金,韓新宇,張 凱,唐龍利
(中國船舶工業(yè)綜合技術(shù)經(jīng)濟(jì)研究院,北京 100081)
一種非侵入的GUI自動化測試系統(tǒng)設(shè)計
吳立金,韓新宇,張 凱,唐龍利
(中國船舶工業(yè)綜合技術(shù)經(jīng)濟(jì)研究院,北京 100081)
針對嵌入式GUI軟件自動化測試,提出一種非侵入的GUI自動化測試系統(tǒng)設(shè)計方案,能夠使用Python格式的測試腳本靈活描述測試用例的執(zhí)行步驟,能夠自動化執(zhí)行測試腳本;系統(tǒng)將人機(jī)交互步驟轉(zhuǎn)成鼠標(biāo)鍵盤模擬設(shè)備的控制命令,實現(xiàn)對被測軟件鼠標(biāo)鍵盤的控制,從而輸入需要的人機(jī)交互信息,實現(xiàn)測試用例的自動執(zhí)行;同時以不干擾被測系統(tǒng)為原則,直接采集被測系統(tǒng)輸出到顯示器中的視頻數(shù)據(jù),通過對圖像數(shù)據(jù)的處理進(jìn)行圖像對比、圖像查找和文字識別,根據(jù)測試用例預(yù)期輸出自動判斷用例的執(zhí)行結(jié)果;該測試系統(tǒng)解決了嵌入式軟件GUI自動化測試的難題,提高了測試效率。
嵌入式;圖形用戶界面;自動化測試;測試腳本
目前,普通GUI測試框架常常需要與被測軟件運(yùn)行在同一系統(tǒng),對資源消耗巨大,不適合嵌入式軟件輕型、占用資源少、高性能、高可靠性、便于移植等特點(diǎn)。如何針對嵌入式軟件GUI,開展自動化測試,在自動化測試領(lǐng)域中是一項技術(shù)難點(diǎn)。為此,本文設(shè)計了一種新型嵌入式GUI自動化測試系統(tǒng),不涉及對代碼的修改,同時完成對嵌入式運(yùn)行過程的實時跟蹤,能夠?qū)崿F(xiàn)無侵入式的進(jìn)行嵌入式GUI自動化測試,避免了現(xiàn)存嵌入式GUI自動化測試技術(shù)的瓶頸。
本測試系統(tǒng)綜合應(yīng)用了GUI信息捕獲、圖像識別、人機(jī)交互以及測試自動控制等技術(shù)。1)GUI信息捕獲、圖像識別、人機(jī)交互解決的問題往往不是軟件測試,而是其他領(lǐng)域,本系統(tǒng)創(chuàng)造性的將其應(yīng)用到嵌入式軟件GUI自動化仿真測試技術(shù);2)人機(jī)交互上,設(shè)計了一種鼠標(biāo)鍵盤通用模擬設(shè)備,同時模擬USB鼠標(biāo)、USB鍵盤和PS/2鼠標(biāo)、PS/2鍵盤;3)將圖像識別領(lǐng)域中的OCR、快速模板匹配算法封裝成適用于GUI測試領(lǐng)域中的文字識別函數(shù)、圖像對比函數(shù)、圖像查找函數(shù),用于測試結(jié)果判斷,進(jìn)行應(yīng)用創(chuàng)新。本文從功能設(shè)計、硬件設(shè)計、軟件架構(gòu)設(shè)計、軟件界面設(shè)計、業(yè)務(wù)流程設(shè)計等方面對提出的一種非侵入的GUI自動化測試系統(tǒng)進(jìn)行描述。
測試工程管理功能包括:
1)測試工程的新建,測試工程提供相應(yīng)的描述;
2)測試工程的保存,測試工程保存在MySQL數(shù)據(jù)庫中;
3)測試工程的刪除,將測試工程從MySQL數(shù)據(jù)庫中刪除,相關(guān)的其他內(nèi)容也隨之刪除;
4)一個測試工程中可以包含多個被測設(shè)備,能夠添加和刪除設(shè)備;
5)測試工程管理的內(nèi)容包括被測設(shè)備、測試腳本、調(diào)度腳本、以及測試結(jié)果。
圖像信息管理系統(tǒng)主要實現(xiàn)以一定周期的頻率對視頻采集系統(tǒng)提供的視頻信息進(jìn)行圖像截取和存儲管理,為圖像信息識別提供數(shù)據(jù)源,同時保證測試過程的歷史證據(jù)。其主要功能有:
1.2.1 圖像信息采集
1)圖像的主要來源是嵌入式軟件視頻采集系統(tǒng),保存圖像的格式可由用戶選擇,包括jpg和bmp,用戶可以根據(jù)需要自行選擇;
2)能夠通過與嵌入式軟件視頻采集系統(tǒng)的接口直接將實時采集的圖像信息添加到本系統(tǒng);
3)能夠通過與嵌入式軟件視頻采集系統(tǒng)的接口預(yù)覽當(dāng)前采集的圖像;
4)從視頻采集卡采集圖像添加到本系統(tǒng),并自動命名,名稱由項目和時間標(biāo)簽信息構(gòu)成;
5)從嵌入式軟件視頻采集系統(tǒng)接口采集并添加到本系統(tǒng)的圖像可在添加過程中修改名稱;
6)能夠?qū)σ曨l采集實時顯示進(jìn)行控制,包括開始、停止;
7)對視頻采集頻率為20幀/秒采集頻率的設(shè)置;
8)視頻采集輸入接口支持VGA和DVI視頻的采集。
1.2.2 圖像保存
1)將截取的圖像保存到數(shù)據(jù)庫中作為基準(zhǔn)圖像;
2)支持從本地文件夾導(dǎo)入圖像;
3)從本地導(dǎo)入的圖像自動以原始文件名命名;
4)添加到本系統(tǒng)的文件在本系統(tǒng)的命名必須唯一;
5)添加圖像自動命名時出現(xiàn)文件名重復(fù)則自動提示修改文件名。
1.2.3 圖像信息瀏覽
1)能夠通過與數(shù)據(jù)庫接口瀏覽所采集的歷史圖像;
2)能夠瀏覽添加到本系統(tǒng)的所有圖像;
3)瀏覽圖像時以文件名稱為列表;
4)瀏覽圖像時能夠生成圖像信息預(yù)覽;
5)瀏覽圖像可在新視圖中打開該圖像進(jìn)行詳細(xì)瀏覽或修改。
1.2.4 圖像刪除
1)支持圖像的刪除;
2)能夠?qū)D像進(jìn)行批量刪除。
本系統(tǒng)中測試用例以Python腳本形式表示。測試用例轉(zhuǎn)換主要是把按體系文件或國軍標(biāo)要求編寫的測試用例通過一定的規(guī)則轉(zhuǎn)換成本系統(tǒng)能夠識別的Python腳本。
1.3.1 測試腳本管理需求
1)能夠新建和刪除測試腳本;
2)能夠?qū)y試腳本重命名測試腳本;
3)能夠支持對腳本的說明;
4)支持對腳本的復(fù)制,復(fù)制后的腳本以“復(fù)件”+“原名稱”命名,腳本包含原內(nèi)容;
5)支持測試腳本與調(diào)度腳本兩種腳本,調(diào)度腳本將每個測試腳本視為一個對象,在調(diào)度腳本中run一個腳本,相應(yīng)的腳本便運(yùn)行。
1.3.2 腳本函數(shù)自動生成
1)對基準(zhǔn)圖像拖拉鼠標(biāo)選中需要識別的區(qū)域,獲取區(qū)域位置,選擇的生成函數(shù),會自動生成圖像對比函數(shù),圖像查找函數(shù)以及OCR函數(shù);
2)在實時采集的圖像中,自動獲取鼠標(biāo)的位置的像素坐標(biāo),點(diǎn)擊鼠標(biāo),自動生成鼠標(biāo)移動與點(diǎn)擊的函數(shù)。
1.3.3 文本編輯
1)文本編輯,支持復(fù)制、粘貼、剪切、刪除、撤銷功能,行定位腳本編輯環(huán)境可顯式的顯示出腳本行號;支持添加/刪除斷點(diǎn);
2)支持設(shè)置關(guān)鍵字亮顯;
3)支持單行和多行注釋以及自動縮進(jìn);
4)在腳本編輯界面,每當(dāng)按下“.”鍵,自動出現(xiàn)關(guān)鍵字索引列表,給出相應(yīng)的關(guān)鍵字函數(shù),函數(shù)后面有相應(yīng)的注釋,根據(jù)注釋在函數(shù)中輸入測試數(shù)據(jù)參數(shù),是利用腳本關(guān)鍵字的自動輸入;
5)支持腳本的調(diào)度編輯。
解析腳本的關(guān)鍵字和參數(shù),將解析的關(guān)鍵和參數(shù)傳遞給腳本的驅(qū)動。協(xié)同管理視頻信息采集系統(tǒng)、圖像信息管理系統(tǒng)、圖像信息特征識別系統(tǒng)和鍵盤鼠標(biāo)模擬系統(tǒng)的工作,將控制命令下發(fā)到各個系統(tǒng)中。人機(jī)交互命令發(fā)送到鍵盤鼠標(biāo)模擬系統(tǒng)中,由鍵盤鼠標(biāo)模擬系統(tǒng)對被測件進(jìn)行人機(jī)交互輸入。功能包括:執(zhí)行某個腳本;等待指定的時間;保存結(jié)果到數(shù)據(jù)庫;支持添加斷點(diǎn)與刪除斷點(diǎn)以及調(diào)試功能。
其中,鍵盤和鼠標(biāo)指令執(zhí)行由鍵盤鼠標(biāo)模擬模塊提供支持,圖像比對、字符識別等相關(guān)指令由圖像信息特征識別模塊提供支持。
鍵盤和鼠標(biāo)模擬系統(tǒng)主要模擬鍵盤和鼠標(biāo)與計算機(jī)系統(tǒng)交互的信息,將GUI測試執(zhí)行管理系統(tǒng)發(fā)出的人機(jī)交互指令轉(zhuǎn)換成被測軟件的鼠標(biāo)鍵盤控制信號輸出,控制被測件的鼠標(biāo)、鍵盤人機(jī)交互操作,包括USB和PS2兩種形式。具體功能包括:
1)鼠標(biāo)控制:在執(zhí)行測試用例時,根據(jù)人機(jī)交互需要,GUI 測試執(zhí)行管理系統(tǒng)將鼠標(biāo)控制命令下發(fā)到鍵盤鼠標(biāo)模擬系統(tǒng),由模擬系統(tǒng)功能對該命令進(jìn)行解析實現(xiàn)對被測軟件鼠標(biāo)的控制。
(1)鼠標(biāo)左右鍵按下或彈起;
(2)鼠標(biāo)移動到某一像素坐標(biāo);
(3)鼠標(biāo)相對移動,先橫向移動,在縱向移動;
(4)鼠標(biāo)左右鍵點(diǎn)擊。
2)鍵盤控制:在執(zhí)行測試用例時,根據(jù)人機(jī)交互需要,GUI 測試執(zhí)行管理系統(tǒng)將需要向被測件輸入的信息內(nèi)容和位置信息發(fā)送到鍵盤鼠標(biāo)模擬系統(tǒng),由模擬系統(tǒng)解析后輸入到被測件界面的相應(yīng)位置。
圖像信息特征識別系統(tǒng)主要實現(xiàn)對嵌入式軟件人機(jī)交互界面上的顏色、字符等信息進(jìn)行識別的功能。主要功能有:
1)圖像比對:能夠?qū)崟r地比較視頻中的各幀圖像,確定出變化的圖像,并將其進(jìn)行標(biāo)記存儲,用戶可以設(shè)置圖像變化的閾值。圖像比對的實時性應(yīng)與視頻采集的實時性相同。
2)圖像查找:能夠在圖像中查找目標(biāo)圖像,包括目標(biāo)圖像的模糊查找,即忽略目標(biāo)圖像大小,僅通過紋理信息查找。目標(biāo)圖像必須為矩形區(qū)域,支持在指定區(qū)域查找目標(biāo)區(qū)域。支持多個目標(biāo)圖像的同時搜索,即除了給出目標(biāo)圖像,還需要描述目標(biāo)圖像之間的位置關(guān)系再進(jìn)行查找。
3)文字識別:能夠?qū)η度胧杰浖藱C(jī)交互界面上顯示的信息包括數(shù)字字符等進(jìn)行識別將識別出的結(jié)果保存到本地。
(1)支持圖像數(shù)字識別功能;
(2)支持圖像英文識別功能;
(3)支持BMP圖片格式;
(4)支持用戶指定區(qū)域的文字識別。
測試結(jié)果比對和判斷主要是根據(jù)圖像信息識別系統(tǒng)的輸出結(jié)果,將該輸出結(jié)果進(jìn)行記錄,同時與測試用例的預(yù)期輸出進(jìn)行比較,判斷執(zhí)行結(jié)果是否通過。需求包含如下:
1)腳本執(zhí)行時每個步驟的運(yùn)行狀態(tài)信息;
2)OCR文字識別后的對比信息;
3)圖像比較的信息,包括圖像對比、圖像查找信息等;
4)一個測試腳本的測試結(jié)果以“腳本名稱”+“時間”方式命名;
5)測試結(jié)果信息支持重命名和刪除操作。
腳本執(zhí)行時每個步驟的運(yùn)行狀態(tài)信息在腳本執(zhí)行時實時顯示,OCR文字對比,圖像對比以及其他信息通過測試結(jié)果管理進(jìn)行顯示。
硬件由以下幾部分組成:
1)GUI自動化測試計算機(jī) 1臺,使用windowsXP系統(tǒng),部署MySQL數(shù)據(jù)庫和一體化的嵌入式軟件GUI自動化測試平臺軟件。
2)視頻分屏器1臺,將被測件顯示的視頻進(jìn)行分頻。
3)視頻采集卡1套,支持VGA和DVI兩種制式視頻格式,VGA或DVI端連接分屏器,USB端連接測試主機(jī),驅(qū)動裝在主機(jī)上。
4)鍵盤鼠標(biāo)模擬設(shè)備1套,裝在GUI自動化測試計算機(jī)PCI插槽內(nèi),連接被測件,包含USB和PS2兩種制式,一路USB鍵盤模擬和一路USB鼠標(biāo)模擬;一路PS2鍵盤模擬和一路PS2鼠標(biāo)模擬。根據(jù)被測件選用一種制式即可。
5)設(shè)備外殼,將各硬件組成一體化的設(shè)備平臺。
嵌入式軟件GUI自動化仿真測試原理樣機(jī)的外部接口主要是和被測件的接口,傳輸?shù)男畔?nèi)容包括測試數(shù)據(jù)、鼠標(biāo)控制信息和鍵盤控制信息,如圖1所示。
1)視頻信息采集接口,通過視頻分配,采用VGA接口形式與分頻器相連,通過USB接口與嵌入式軟件GUI自動化仿真測試原理樣機(jī)相連。該接口將被測系統(tǒng)的視頻信息截取圖像到仿真測試原理樣機(jī)中;
2)鼠標(biāo)控制接口,包括PS2、USB兩種,能夠模擬鼠標(biāo)信號激勵,模擬鼠標(biāo)左右鍵點(diǎn)擊、鼠標(biāo)移動到某位置,鼠標(biāo)相對移動操作。
3)鍵盤控制接口,包括USB和PS2兩種接口。模擬鍵盤信號激勵,能夠發(fā)送大小寫字母信號、數(shù)字信號、Shift/Alt/Ctrl等功能按鍵。
軟件架構(gòu)設(shè)計如圖2所示。
業(yè)務(wù)層主要面向測試任務(wù),包括測試用例轉(zhuǎn)換、測試驅(qū)動執(zhí)行與過程管理、測試結(jié)果收集分析等,其調(diào)用了以下各層模塊的功能。
3.1.1 人機(jī)交互界面測試執(zhí)行管理系統(tǒng)
主要實現(xiàn)人機(jī)交互界面測試用例的轉(zhuǎn)換、視頻輸出的判斷、測試用例執(zhí)行控制以及測試執(zhí)行結(jié)果的對比判斷。采用Python語言進(jìn)行指令解析實現(xiàn)視頻輸出信息的判斷和測試用例的執(zhí)行控制。包括以下7個模塊:
1)測試環(huán)境配置:允許測試人員對測試環(huán)境進(jìn)行配置,主要是對嵌入式軟件設(shè)備的輸入輸出設(shè)備進(jìn)行配置和選擇;
2)測試用例建模:建立GUI測試用例模型,包括測試用例數(shù)據(jù)模型和GUI測試用例行為模型。根據(jù)文檔化的嵌入式軟件GUI測試用例,轉(zhuǎn)換為模型化的測試用例;
3)測試用例轉(zhuǎn)換:根據(jù)測試用例模型,建立測試用例模型元素與Python腳本元素的對應(yīng)關(guān)系,將測試用例腳本化,形成Python測試腳本;
4)測試管理執(zhí)行:根據(jù)嵌入式軟件GUI測試需求,建立測試用例執(zhí)行序列,通過解析Python測試腳本,自動驅(qū)動測試用例執(zhí)行;
5)測試數(shù)據(jù)收集:在GUI測試用例腳本執(zhí)行中,根據(jù)腳本中測試數(shù)據(jù)收集要求,自動進(jìn)行測試數(shù)據(jù)收集,并存入數(shù)據(jù)庫;
6)測試日志記錄:在GUI測試用例腳本執(zhí)行中,自動記錄測試中關(guān)鍵流程中的執(zhí)行信息,為用戶了解測試執(zhí)行情況。
7)測試結(jié)果判定:將測試用例執(zhí)行中收集的測試用例步驟中的實際輸出和預(yù)期輸出進(jìn)行比較,通過執(zhí)行Python腳本中的判斷語句判斷結(jié)果正確性。
3.1.2 圖像信息管理系統(tǒng)
主要實現(xiàn)對視頻采集的視頻信息進(jìn)行圖像抓取和存取管理,為圖像信息識別提供數(shù)據(jù)源,同時保證測試過程的歷史數(shù)據(jù)。
核心層主要為測試任務(wù)提供核心功能。為測試執(zhí)行提供功能支持。主要包括視頻信息的采集、圖像信息的識別(圖像對比、圖像查找、OCR識別等)以及鍵盤鼠標(biāo)的模擬功能。
數(shù)據(jù)層主要提供數(shù)據(jù)支持,使用MySQL數(shù)據(jù)庫,提供操作接口供上層使用。數(shù)據(jù)內(nèi)容是所有要存儲數(shù)據(jù)庫的內(nèi)容,包括GUI界面對象數(shù)據(jù)、測試用例數(shù)據(jù)、測試結(jié)果數(shù)據(jù)、測試日志數(shù)據(jù)、鼠標(biāo)事件映射數(shù)據(jù)和鍵盤按鍵事件映射數(shù)據(jù)。
通信層是上層模塊對被測件信息之間的驅(qū)動,驅(qū)動硬件完成對被測件的操作。作為硬件提供支持,由上層模塊驅(qū)動執(zhí)行。
本系統(tǒng)使用MFC進(jìn)行實現(xiàn),使用了MySQL 5.0數(shù)據(jù)庫,需要支持的底層環(huán)境包括:鼠標(biāo)鍵盤模擬系統(tǒng)驅(qū)動;圖像采集系統(tǒng)驅(qū)動;openCV開源開發(fā)庫;boost1.3開源開發(fā)庫;python-2.5.1.msi;Google支持的OCR圖文識別的開源項目Tesseract_OCR。
嵌入式軟件GUI自動化測試平臺軟件工作過程如圖3所示。
圖3 業(yè)務(wù)流程設(shè)計圖
1)測試項目工程管理和測試環(huán)境配置,測試人員根據(jù)被測件相關(guān)文檔,在測試主控機(jī)上新建工程,并配置被測件鼠標(biāo)鍵盤類型和外圍交聯(lián)設(shè)備類型,保存到MySQL數(shù)據(jù)庫中。
2)程序執(zhí)行和視頻信息采集,執(zhí)行被測系統(tǒng),截取被測系統(tǒng)的圖像,作為生成測試用例的基準(zhǔn)圖像。
3)測試用例轉(zhuǎn)換和建模,將基準(zhǔn)圖像進(jìn)行建模,獲取像素坐標(biāo)值,用于自動生成圖像對比、圖像查找、OCR以及鼠標(biāo)移動的函數(shù)。
4)腳本生成與編輯,通過利用自動生成的函數(shù)以及對腳本編輯,將測試用例轉(zhuǎn)換成可執(zhí)行的腳本文件,腳本包括測試腳本和調(diào)度腳本。
測試腳本包括基于圖像建模的腳本函數(shù)自動生成和文本編輯兩種方式。調(diào)度腳本主要有測試腳本運(yùn)行函數(shù)和Python語言自身的關(guān)鍵字組成,采用文本編輯方式進(jìn)行編輯。
5)腳本執(zhí)行,通過對腳本的函數(shù)進(jìn)行解析,自動執(zhí)行測試過程。腳本中函數(shù)會調(diào)用到視頻采集子系統(tǒng)、圖像信息子系統(tǒng)、圖像特征識別子系統(tǒng)和鼠標(biāo)鍵盤模擬子系統(tǒng)??梢跃帉懻{(diào)度腳本進(jìn)行運(yùn)行,通過運(yùn)行調(diào)度腳本運(yùn)行測試腳本,也可以直接運(yùn)行單個測試腳本。
本測試系統(tǒng)的腳本解析會調(diào)用Python腳本解析器,Python腳本解析器會解析Python語言的關(guān)鍵字和變量,當(dāng)遇到Python語言之外的關(guān)鍵字后,Python解析器會產(chǎn)生中斷,并將執(zhí)行權(quán)交給本測試系統(tǒng)腳本解析器,本測試系統(tǒng)腳本解析器會查找使用VC開發(fā)的驅(qū)動函數(shù)關(guān)鍵字,當(dāng)查找到后,發(fā)送驅(qū)動函數(shù)的事件,驅(qū)動函數(shù)執(zhí)行,執(zhí)行完畢后,本測試系統(tǒng)腳本解析器將執(zhí)行權(quán)再交給Python腳本解析器,同時將驅(qū)動函數(shù)返回信息傳遞給Python腳本解析器,Python腳本解析器繼續(xù)執(zhí)行。這樣,本測試系統(tǒng)的腳本解析器與Python腳本解析器融為一體,一方面實現(xiàn)了將Python語言編輯于執(zhí)行界面嵌入到測試系統(tǒng)界面中;另一方面也實現(xiàn)了Python語言功能的擴(kuò)展。
6)數(shù)據(jù)收集及存儲,在測試執(zhí)行過程中,會根據(jù)關(guān)鍵函數(shù)執(zhí)行結(jié)果進(jìn)行保存數(shù)據(jù),對測試的數(shù)據(jù)保存在保存到MySQL數(shù)據(jù)庫中。
7)測式數(shù)據(jù)服務(wù)器根據(jù)所存儲的測試數(shù)據(jù),進(jìn)行結(jié)果分析。
根據(jù)本設(shè)計研發(fā)的GUI自動仿真測試系統(tǒng)軟件界面如圖4所示。
圖4 系統(tǒng)界面圖
1)測試準(zhǔn)備:利用“測試工程管理”和“視頻信息采集”功能,按照測試環(huán)境及測試用例要求,準(zhǔn)備測試環(huán)境及獲取基準(zhǔn)圖像和圖像管理,為測試腳本編寫準(zhǔn)備。
2)測試腳本編寫:根據(jù)獲取的基準(zhǔn)圖像以及測試用例要求,完成測試用例到測試腳本轉(zhuǎn)換。腳本中指令主要是對鼠標(biāo)和鍵盤的操作,包括鼠標(biāo)移動、鼠標(biāo)左鍵點(diǎn)擊、鼠標(biāo)右鍵點(diǎn)擊、鍵盤輸入字符、鍵盤輸入組合按鈕等指令。
3)腳本執(zhí)行與分析。運(yùn)行測試腳本,對測試結(jié)果察看。結(jié)果的判斷主要在腳本中利用條件語句,講圖像處理結(jié)果與預(yù)期結(jié)果比較,輸出是否執(zhí)行成功。
由于測試指令是自己定義開發(fā),需要有相應(yīng)的容錯性。本系統(tǒng)采用如下措施,提高了系統(tǒng)容錯性。(1)鼠標(biāo)鍵盤模擬功能、視頻采集功能失敗以及注冊組件模塊功能失敗后軟件的其他功能能正常使用;(2)在錯誤指令、錯誤參數(shù)、圖像采集失敗、誤關(guān)閉情況下給出提示;(3)測試腳本運(yùn)行中鍵盤鼠標(biāo)相關(guān)指令、圖像獲取指令以及信息識別指令時遇到故障時系統(tǒng)能夠識別并給出提示信息。(4)輸入有效性檢查:對工程名稱檢查,不允許名稱重復(fù);對基準(zhǔn)圖像名稱檢查,不允許名稱重復(fù);對腳本指令和參數(shù)檢查,不能執(zhí)行不支持的指令。
本文設(shè)計并實現(xiàn)了一種非侵入的GUI自動化測試系統(tǒng)。該測試系統(tǒng)有以下優(yōu)點(diǎn):
1)該測試平臺面向嵌入式,采用人機(jī)交互設(shè)備模擬真實指令,圖像采集與信息識別模擬人的判別行為,不會干擾被測系統(tǒng)的運(yùn)行。
2)該測試平臺采用非侵入式自動測試機(jī)制,測試平臺軟件不需要與被測軟件運(yùn)行在同一系統(tǒng),解決了通用GUI測試工具無法針對嵌入式GUI軟件測試的困難。
3)通用GUI工具常常調(diào)用API,只支持被測件單一的運(yùn)行系統(tǒng),本測試平臺應(yīng)用不受被測件運(yùn)行環(huán)境限制,與被測件操作系統(tǒng)無關(guān),只要是支持鼠標(biāo)和鍵盤的輸入類型(觸摸屏除外)即可。
4)該測試平臺采用Python腳本形式編輯用例。Python語言嵌入平臺軟件中,與平臺軟件有機(jī)結(jié)合,融為一體。支持基于圖像建模的腳本函數(shù)自動生成和文本編輯兩種方式生產(chǎn)測試腳本。提高了腳本編寫的效率。腳本編輯方式,使腳本靈活多樣,能夠?qū)崿F(xiàn)復(fù)雜的測試用例。
5)該測試平臺利用調(diào)度腳本方式支持測試腳本的調(diào)度,可以支持測試用例的周期執(zhí)行、條件執(zhí)行、順序執(zhí)行以及腳本模塊化、腳本共享等復(fù)雜測試方式。
6)該測試平臺可以仿真外圍交聯(lián)環(huán)境,集成通訊子系統(tǒng),包括網(wǎng)絡(luò)通訊和串口通訊,實現(xiàn)被測系統(tǒng)與外圍設(shè)備的交互。
[1] Memon A M. GUI testing: pitfalls and process[J]. Computer, 2002, 35(8):87-88.
[2] 吳立金, 唐龍利, 韓新宇, 等. 嵌入式軟件GUI自動化測試平臺研究[J]. 計算機(jī)測量與控制, 2015(04):1094-1097.
[3] 譚 苗. GUI 可用性評價與自動化測試框架研究[D].重慶:重慶大學(xué),2006.
[4] 游澤青,面向GUI軟件的自動化測試框架的研究與實現(xiàn)[D].重慶:西南大學(xué),2012.
Design of Non-Intrusive GUI Automated Test System
Wu Lijin,Han XinYu,Zhang Kai,Tang Longli
(China Institute of Marine Technology & Economy,Beijing 100081,China)
To solve the problem of the automatic testing of embedded GUI software,this paper proposes a non-intrusive GUI automatic test system ,which can convert the execution steps of test cases into Python test script. The human-computer interaction is transformed into the control instruction of mouse and keyboard simulation equipment to enter the required human-computer information, so that the test case execution is carried out. At the same time, in the principle of not interfering with the tested system,the output video data of the tested system is collected directly, and the result of the test case is determined automatically according to the expected output through the image data processing algorithm such as image comparison, image search and text recognition.The test system can improve the test efficiency.
embedded software;GUI;automatic test;test script
2017-06-13;
2017-07-23。
吳立金(1987-),男,山東人,工程師,主要從事軟件可靠性與軟件測試方向的研究。
1671-4598(2017)12-0049-05
10.16526/j.cnki.11-4762/tp.2017.12.013
TP311
A