專利名稱:一種嵌入式軟件的測(cè)試方法和系統(tǒng)的制作方法
一種嵌入式軟件的測(cè)試方法和系統(tǒng)技術(shù)領(lǐng)域:
本發(fā)明涉及軟件測(cè)試領(lǐng)域,尤其涉及對(duì)嵌入式軟件的測(cè)試。背景技術(shù):
隨著軟件的廣泛應(yīng)用,人們對(duì)軟件的期望值也越來越高,軟件的質(zhì)量、 性能、可靠性等方面也正逐漸成為人們關(guān)注的焦點(diǎn),軟件測(cè)試是驗(yàn)證軟件 是否能達(dá)到期望功能的有效方法,通過軟件測(cè)試可以保證軟件質(zhì)量,因此 軟件測(cè)試是一件非常重要的工作。嵌入式軟件是運(yùn)行在特定目標(biāo)系統(tǒng)上的 軟件,其硬件平臺(tái)和操作系統(tǒng)往往是專用的,不具有通用性,比如手機(jī)、 洗衣機(jī)、機(jī)頂盒、導(dǎo)航系統(tǒng)、醫(yī)療檢測(cè)設(shè)備等使用的軟件。目前對(duì)嵌入式軟件進(jìn)行測(cè)試采用的方法,通常是手工編制腳本,通過 腳本調(diào)用存儲(chǔ)在計(jì)算機(jī)上的用例下發(fā)給目標(biāo)嵌入式設(shè)備上的測(cè)試樁程序進(jìn) 行測(cè)試。該方法需要測(cè)試人員具備一定的自動(dòng)化用例編寫能力,需要進(jìn)行 手工編寫用例,不能通過錄制嵌入式軟件系統(tǒng)測(cè)試過程生成。此外,用于PC機(jī)上的常用自動(dòng)化軟件測(cè)試工具有WINRUNNER、 LOADRU雨ER、 ROBOT等,這些用于PC機(jī)上的軟件測(cè)試工具雖然都有錄制和 重放功能,但都還未實(shí)現(xiàn)對(duì)嵌入式設(shè)備的操作進(jìn)行腳本錄制與重放。因而,現(xiàn)有技術(shù)存在著測(cè)試效率低,對(duì)操作人員的自動(dòng)化測(cè)試用例編 寫能力要求較高,需要使用大量的測(cè)試人員,人力成本高,不能將手工操 作目標(biāo)機(jī)的操作過程進(jìn)行錄制生成自動(dòng)化測(cè)試用例腳本,也不能錄制、編 輯和重放對(duì)嵌入式軟件操作的腳本實(shí)現(xiàn)嵌入式軟件的測(cè)試自動(dòng)化等缺點(diǎn)。
發(fā)明內(nèi)容本發(fā)明的目的是解決現(xiàn)有技術(shù)中的缺陷,提供一種用于嵌入式軟件的 測(cè)試方法和系統(tǒng),通過錄制對(duì)目標(biāo)機(jī)的操作生成自動(dòng)化測(cè)試用例腳本,通 過調(diào)用存放在數(shù)據(jù)庫文件中的不同測(cè)試參數(shù)數(shù)據(jù),對(duì)測(cè)試用例的腳本進(jìn)行 簡(jiǎn)單編輯進(jìn)行動(dòng)作重放,即在被測(cè)試設(shè)備上完成一系列連續(xù)動(dòng)作,此外, 還可以通過對(duì)所錄制腳本修改或直接編寫腳本形成測(cè)試用例。為了實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案是 一種嵌入式軟件的測(cè) 試方法,包括以下步驟1)錄制對(duì)目標(biāo)機(jī)的操作,生成測(cè)試腳本;2)重放所錄制的腳本;
其中,所述步驟l包括如下步驟
11) 利用目標(biāo)機(jī)上的樁程序錄制操作人員的操作步驟、被設(shè)置參數(shù)的 數(shù)據(jù)、以及目標(biāo)機(jī)運(yùn)行的結(jié)果,錄制的對(duì)象包括對(duì)目標(biāo)機(jī)的圖形用戶界面
的操作、模擬器操作和關(guān)鍵點(diǎn)插入操作的錄制;
12) 將錄制的數(shù)據(jù)通過通訊端口傳輸至計(jì)算機(jī);
13) 運(yùn)行計(jì)算機(jī)上的測(cè)試程序;
14) 測(cè)試程序接收錄制的數(shù)據(jù),并將錄制的數(shù)據(jù)保存為具有關(guān)鍵字的 腳本文件;
15) 修改腳本中的所需要的數(shù)值部分為參變量;
16) 在計(jì)算機(jī)上建立數(shù)據(jù)庫文件,存放參變量對(duì)應(yīng)的數(shù)據(jù); 其中,所述步驟2包括如下步驟
21) 運(yùn)行計(jì)算機(jī)上的測(cè)試程序;
22) 測(cè)試程序調(diào)用腳本文件、并讀入?yún)?shù)數(shù)據(jù)庫中的對(duì)應(yīng)數(shù)據(jù)來替換 腳本文件中的參變量;
23) 解析腳本文件并輸入目標(biāo)機(jī);
24) 目標(biāo)機(jī)中的樁程序解析并執(zhí)行腳本中的指令;
25) 將運(yùn)行結(jié)果返回計(jì)算機(jī)進(jìn)行分析,并輸出測(cè)試結(jié)果。 其中述步驟11中對(duì)目標(biāo)機(jī)的圖形用戶界面操作的錄制方法采用"面向
控件對(duì)象的錄制"或"面向步驟操作錄制"。
所述"面向控件對(duì)象的錄制"優(yōu)選是由鼠標(biāo)動(dòng)作觸發(fā),錄制鼠標(biāo)的一 系列動(dòng)作,其中對(duì)鼠標(biāo)動(dòng)作的錄制只記錄能夠改變控件行為或?qū)傩灾档挠?效點(diǎn)擊,包括控件的絕對(duì)路徑和控件的屬性,包括如下步驟
Al)捕捉鼠標(biāo)的點(diǎn)擊動(dòng)作;
A2)判斷該點(diǎn)擊動(dòng)作是否是有效的動(dòng)作,如果不是有效的動(dòng)作,則忽
略該動(dòng)作;如果是有效的動(dòng)作,則執(zhí)行步驟A3;
A3)判斷鼠標(biāo)點(diǎn)擊的控件ID是否改變,如果沒變,則忽略該點(diǎn)擊動(dòng)
作;如果控件ID改變了,則執(zhí)行步驟A4;
A4)生成與該控件對(duì)應(yīng)的絕對(duì)路徑,并記錄控件屬性改變后的值; A5)上傳絕對(duì)路徑和控件屬性改變后的值到計(jì)算機(jī)中的測(cè)試腳本中。 所述絕對(duì)路徑是指從目標(biāo)機(jī)圖像用戶界面的初始界面開始,到達(dá)目標(biāo)
控件,途經(jīng)的各個(gè)窗口和窗口上被點(diǎn)擊的控件所形成的二元組,二元組的 形式是(.Wndld, Itemld),其中Wndld是每一級(jí)窗口 Id, Itemld是該窗口上接收有效點(diǎn)擊后屬性被改變的控件Id,絕對(duì)路徑是一個(gè)操作過程鏈, 描述點(diǎn)擊過程的有序ID集合。這樣的操作鏈將作為面向控件錄制的一部分 數(shù)據(jù)被記錄下來,同時(shí)在錄制過程中還要記錄控件的屬性值的變化結(jié)果, 控件屬性的記錄不是記錄某個(gè)控件內(nèi)容的改變過程,而是只記錄控件屬性 值改變后,焦點(diǎn)離開該控件時(shí)的控件屬性值。
其中,所述"面向步驟錄制"是記錄目標(biāo)機(jī)的鍵盤上被按下的鍵盤 碼和旋鈕旋轉(zhuǎn)的操作碼,錄制按鍵或旋鈕的操作包括以下步驟-
Bl)捕捉按鍵或旋鈕的動(dòng)作;
B2)判斷按鍵或旋鈕的動(dòng)作是否是有效動(dòng)作,如果不是有效動(dòng)作,則 忽略該動(dòng)作;如果是有效動(dòng)作,則執(zhí)行步驟B3; B3)記錄按鍵的鍵盤碼或者旋鈕的操作碼;
B4)上傳按鍵的鍵盤碼或旋鈕的操作碼到計(jì)算機(jī)中的測(cè)試腳本中。 所述步驟2中還包括如下步驟 Cl)選取腳本文件,系統(tǒng)關(guān)聯(lián)相應(yīng)的參數(shù)數(shù)據(jù)文件; C2)讀取腳本文件中的指令并執(zhí)行,執(zhí)行過程中測(cè)試程序把前后兩個(gè) 絕對(duì)路徑換算為相對(duì)路徑。
所述步驟C2是一個(gè)循環(huán)過程,包括如下步驟
51) 判斷指令是否是對(duì)目標(biāo)機(jī)的圖形用戶界面的操作,如果是,則重 放面向控件對(duì)象或面向步驟操作,并執(zhí)行步驟S4;如果否,則執(zhí)行步驟S2;
52) 判斷指令是否是關(guān)鍵點(diǎn)插入操作,如果是,則收集目標(biāo)機(jī)信息,
然后執(zhí)行步驟S4;如果否,則執(zhí)行步驟S3;
53) 判斷指令是否是對(duì)模擬器的操作,如果是,則向模擬器發(fā)指令,
模擬器發(fā)出信號(hào),然后執(zhí)行步驟S4;如果否,執(zhí)行步驟S4;
54) 判斷動(dòng)作序列是否執(zhí)行結(jié)束,如果是,則跳出循環(huán)繼續(xù)往下執(zhí)行;
如果動(dòng)作序列沒有執(zhí)行結(jié)束,則繼續(xù)讀取下一條重放動(dòng)作的指令,執(zhí)行上
述步驟S1。
為實(shí)現(xiàn)上述目的,本發(fā)明的另一種技術(shù)方案是 一種嵌入式軟件的測(cè) 試系統(tǒng),包括錄制模塊和重放模塊;所述錄制模塊包括用于錄制操作人 員的操作步驟、被設(shè)置參數(shù)的數(shù)據(jù)、以及目標(biāo)機(jī)運(yùn)行的結(jié)果的錄制單元, 用于將錄制的數(shù)據(jù)通過通訊端口傳輸至計(jì)算機(jī)的傳輸單元,用于運(yùn)行計(jì)算 機(jī)上的測(cè)試程序的程序運(yùn)行單元,用于接受測(cè)試程序指令且將錄制的數(shù)據(jù)
保存為具有關(guān)鍵字的腳本文件的腳本文件生成單元,用于修改腳本文件中 的所需的數(shù)值為參變量的數(shù)值編輯單元,用于存放參變量對(duì)應(yīng)數(shù)據(jù)的數(shù)據(jù)庫單元;所述重放模塊包括..用于運(yùn)行測(cè)試程序、調(diào)用腳本文件的文件調(diào) 用單元,用于接收腳本文件、并讀入?yún)?shù)數(shù)據(jù)庫中的對(duì)應(yīng)數(shù)據(jù)來替換參變 量,并解析腳本文件、將腳本文件輸入目標(biāo)機(jī)的數(shù)據(jù)解析和執(zhí)行單元,位 于目標(biāo)機(jī)中,用于解析并執(zhí)行腳本中的指令的樁程序解析單元,用于接收 樁程序解析單元運(yùn)行的結(jié)果、并將運(yùn)行結(jié)果返回計(jì)算機(jī)進(jìn)行分析,并輸出 測(cè)試結(jié)果的處理單元。
所述錄制單元優(yōu)選包括面向控件對(duì)象錄制單元或面向步驟錄制單元。 所述面向控件對(duì)象錄制單元包括用于錄制鼠標(biāo)動(dòng)作的第一捕捉模 塊,所述第一捕捉模塊錄制鼠標(biāo)的一系列動(dòng)作,其中對(duì)鼠標(biāo)動(dòng)作的錄制只 記錄能夠改變控件行為或?qū)傩灾档挠行c(diǎn)擊,包括控件的絕對(duì)路徑和控件 的屬性;用于判斷鼠標(biāo)點(diǎn)擊動(dòng)作是否是有效動(dòng)作的第一判斷模塊;用于在
第一判斷模塊判斷鼠標(biāo)點(diǎn)擊動(dòng)作是有效動(dòng)作后判斷鼠標(biāo)點(diǎn)擊的控件ID是 否改變的第二判斷模塊;用于在第二判斷模塊判斷鼠標(biāo)點(diǎn)擊的控件ID改變
時(shí),生成與該控件對(duì)應(yīng)的絕對(duì)路徑,記錄控件屬性改變后的值的第一記錄 模塊;和用于上傳絕對(duì)路徑和控件屬性改變后的值到計(jì)算機(jī)中的測(cè)試腳本 中的第一傳輸模塊。
所述絕對(duì)路徑是指從目標(biāo)機(jī)圖像用戶界面的初始界面開始,到達(dá)目標(biāo) 控件,途經(jīng)的各個(gè)窗口和窗口上被點(diǎn)擊的控件所形成的二元組,所述二元 組的形式是(Wndld, Itemld),其中Wndld是每一級(jí)窗口 Id, Itemld是
該窗口上接收有效點(diǎn)擊后屬性或行為被改變的控件Id。
所述面向步驟錄制模塊包括用于捕捉按鍵或旋鈕動(dòng)作的第二捕捉模 塊;用于根據(jù)第二捕捉模塊捕捉的按鍵或旋鈕動(dòng)作判斷按鍵或旋鈕的動(dòng)作 是否是有效動(dòng)作的第三判斷模塊;用于在第三判斷模塊判斷按鍵或旋鈕的 動(dòng)作有效后記錄按鍵的鍵盤碼或者旋鈕的操作碼的第二記錄模塊;用于上 傳按鍵的鍵盤碼或旋鈕的操作碼到計(jì)算機(jī)中的測(cè)試腳本中的第二傳輸模 塊。
所述重放模塊還包括用于根據(jù)選取的腳本文件關(guān)聯(lián)相應(yīng)的參數(shù)數(shù)據(jù) 文件的關(guān)聯(lián)模塊;和用于讀取腳本文件中的指令并執(zhí)行的執(zhí)行模塊,所述 執(zhí)行模塊用于在執(zhí)行過程中把前后兩個(gè)絕對(duì)路徑換算為相對(duì)路徑。
所述執(zhí)行模塊包括用于判斷指令是否是對(duì)目標(biāo)機(jī)的圖形用戶界面進(jìn) 行操作的第四判斷模塊;用于在第四判斷模塊判斷指令是對(duì)目標(biāo)機(jī)的圖形 用戶界面進(jìn)行操作時(shí)重放面向控件對(duì)象或面向步驟操作的重放模塊;用于 在第四判斷模塊判斷指令不是對(duì)目標(biāo)機(jī)的圖形用戶界面進(jìn)行操作時(shí)判斷指令是否是關(guān)鍵點(diǎn)插入操作的第五判斷模塊;用于在第五判斷模塊判斷指令 是關(guān)鍵點(diǎn)插入操作時(shí)收集目標(biāo)機(jī)上信息的信息采集模塊;用于在第五判斷 模塊判斷指令不是關(guān)鍵點(diǎn)插入操作時(shí)判斷指令是否是對(duì)模擬器的操作的第 六判斷模塊;用于向模擬器發(fā)送指令的發(fā)送模塊;用于在重放模塊、信息 采集模塊和發(fā)送模塊中的任何一個(gè)執(zhí)行完畢后判斷動(dòng)作序列是否執(zhí)行結(jié)束 的第七判斷模塊,所述第七判斷模塊用于在判斷動(dòng)作序列執(zhí)行結(jié)束后,則 跳出循環(huán)繼續(xù)往下執(zhí)行,在動(dòng)作序列沒有執(zhí)行結(jié)束時(shí),則繼續(xù)讀取下一條
重放動(dòng)作的指令,控制第四判斷模塊對(duì)指令進(jìn)行判斷。
本發(fā)明的有益效果是本發(fā)明為測(cè)試人員提供了一種快速生成自動(dòng)化 測(cè)試用例的方法,利用腳本錄制重放技術(shù)提高編寫嵌入式軟件自動(dòng)化測(cè)試 用例的速度,對(duì)測(cè)試人員而言,無須記憶過多的腳本指令。利用"絕對(duì)路 徑"方式存放操作步驟,使每一步驟路徑清晰可讀,利用相對(duì)路徑重放符 合模擬人工操作實(shí)際。通過對(duì)被測(cè)試設(shè)備的操作進(jìn)行錄制,生成自動(dòng)化測(cè) 試用例腳本,減少了編寫自動(dòng)化測(cè)試用例的工作量,加快了測(cè)試的進(jìn)度, 提高了測(cè)試效率,降低了成本。
本發(fā)明的特征及優(yōu)點(diǎn)將通過實(shí)施例結(jié)合附圖進(jìn)行詳細(xì)說明。
圖1是使用本發(fā)明一種嵌入式軟件的測(cè)試方法的測(cè)試系統(tǒng)的架構(gòu)示意圖。
圖2是圖1所示測(cè)試系統(tǒng)錄制重放邏輯結(jié)構(gòu)圖。
圖3是本發(fā)明中錄制過程的流程圖。
圖4是本發(fā)明中面向控件對(duì)象錄制流程圖。
圖5是本發(fā)明中面向步驟錄制流程圖。
圖6是本發(fā)明中重放過程的流程圖。
圖7是圖1所示測(cè)試系統(tǒng)中自動(dòng)化測(cè)試錄制重放界面。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施例進(jìn)行詳細(xì)的說明。
測(cè)試系統(tǒng)的架構(gòu)示意圖如圖1所示,以監(jiān)護(hù)儀的嵌入式軟件測(cè)試為例 進(jìn)行說明。系統(tǒng)由PC機(jī)1、模擬器2、監(jiān)護(hù)儀3組成。PC機(jī)1是整個(gè)測(cè)試 系統(tǒng)的控制核心,是具備RS-232通信串口和以太網(wǎng)卡的普通計(jì)算機(jī),其上 運(yùn)行自動(dòng)化測(cè)試程序,錄制的腳本也存放在PC機(jī)1上;模擬器2是一種模 擬人體生理信號(hào)的特殊信號(hào)發(fā)生器,監(jiān)護(hù)儀3為被測(cè)試的目標(biāo)機(jī),監(jiān)護(hù)儀 3自身的系統(tǒng)軟件是自動(dòng)化測(cè)試的待測(cè)目標(biāo),監(jiān)護(hù)儀3的系統(tǒng)軟件具有完整的圖形用戶界面,監(jiān)護(hù)儀3上還運(yùn)行樁程序;PC機(jī)1和模擬器2通過串
口連接來傳輸數(shù)據(jù)和指令,模擬器2和監(jiān)護(hù)儀3通過專用的信號(hào)傳輸鏈路 連接,由模擬器2接受PC機(jī)1指令后輸出信號(hào)到監(jiān)護(hù)儀3, PC機(jī)1與監(jiān)護(hù) 儀3之間通過以太網(wǎng)鏈路連接,使用基于TCP/IP的協(xié)議來傳輸數(shù)據(jù)和指令。
其中,監(jiān)護(hù)儀3還可以被替換為其他的被測(cè)試的目標(biāo)機(jī),模擬器2也 可以是根據(jù)被測(cè)試的目標(biāo)機(jī)的不同而產(chǎn)生所需要的信號(hào)的信號(hào)發(fā)生器。
測(cè)試系統(tǒng)錄制重放邏輯結(jié)構(gòu)如圖2所示,錄制重放的流程如圖3到 圖6所示,程序運(yùn)行的邏輯過程是PC機(jī)1上的測(cè)試程序通過"控制發(fā)送 單元"發(fā)送錄制指令給監(jiān)護(hù)儀3,監(jiān)護(hù)儀3接收指令后通過"數(shù)據(jù)包解析 單元一"進(jìn)行數(shù)據(jù)解析,解析后啟動(dòng)"操作捕獲單元"對(duì)手工操作進(jìn)行錄 制,記錄對(duì)目標(biāo)機(jī)的手工操作和目標(biāo)機(jī)的運(yùn)行信息,并把錄制的內(nèi)容回傳 給測(cè)試程序,測(cè)試程序保存所錄制內(nèi)容為腳本文件;在錄制過程中測(cè)試程 序中通過串口控制模擬器2的操作也同時(shí)被錄制下來;重放時(shí)則由測(cè)試程 序通過"腳本記錄分析單元"解析腳本后送給"控制發(fā)送單元","控制發(fā) 送單元"再發(fā)給目標(biāo)機(jī)的"數(shù)據(jù)包解析單元一",解析后送給"腳本執(zhí)行單 元"進(jìn)行操作重放,同時(shí)收集相關(guān)測(cè)試數(shù)據(jù),通過"數(shù)據(jù)反饋單元"回傳 給測(cè)試程序,通過"測(cè)試關(guān)鍵點(diǎn)比較單元"完成比較并通過"輔助測(cè)試單 元一"輸出報(bào)告。
其中,錄制過程的一種實(shí)施例的流程如圖3所示,包括如下步驟
Rl)判斷是否對(duì)操作動(dòng)作進(jìn)行錄制,如果是,則錄制操作動(dòng)作到腳本,
然后執(zhí)行步驟R4;如果否,則執(zhí)行步驟R2;
R2)判斷是否加入關(guān)鍵點(diǎn),如果是,則在錄制序列中加入關(guān)鍵點(diǎn),然
后執(zhí)行步驟R4;如果否,則執(zhí)行步驟R3;
R3)判斷指令是否是對(duì)模擬器的操作,如果是,則向模擬器發(fā)指令,
模擬器發(fā)出信號(hào),然后執(zhí)行步驟R4;如果否,執(zhí)行步驟R4;
R4)判斷錄制是否結(jié)束,如果是,錄制結(jié)束;如果錄制沒有結(jié)束,則
執(zhí)行步驟R1繼續(xù)錄制下一個(gè)操作,循環(huán)執(zhí)行上述步驟。
對(duì)圖形用戶界面進(jìn)行操作的錄制方法采用"面向控件對(duì)象的錄制"和 "面向歩驟操作錄制"兩種方法。
"面向控件對(duì)象的錄制"是由鼠標(biāo)動(dòng)作觸發(fā),錄制鼠標(biāo)的一系列動(dòng)作,
如圖4所示,操作過程為
Al)捕捉鼠標(biāo)的點(diǎn)擊動(dòng)作;A2)判斷該點(diǎn)擊動(dòng)作是否是有效的動(dòng)作;
A3)如果不是有效的動(dòng)作,則忽略該動(dòng)作,結(jié)束錄制過程;如果是有 效的動(dòng)作,則執(zhí)行A4;
A4)判斷鼠標(biāo)點(diǎn)擊的控件ID是否改變,如果沒變,則忽略該點(diǎn)擊動(dòng) 作,結(jié)束錄制過程;如果控件1D改變了,則執(zhí)行A5;
A5)生成與該控件對(duì)應(yīng)的絕對(duì)路徑,并記錄該控件屬性改變后的值; A6)上傳絕對(duì)路徑和控件屬性改變后的值到計(jì)算機(jī)中的測(cè)試腳本中。 在附圖4中,提到的控件ID的改變實(shí)際上是在執(zhí)行鼠標(biāo)操作時(shí),鼠 標(biāo)所指向的當(dāng)前焦點(diǎn)的改變,因?yàn)榻裹c(diǎn)從一個(gè)控件轉(zhuǎn)移到另一個(gè)控件上會(huì) 導(dǎo)致控件ID改變,只有當(dāng)樁程序檢測(cè)到由于鼠標(biāo)點(diǎn)擊導(dǎo)致焦點(diǎn)改變才說明 對(duì)該控件的操作已經(jīng)結(jié)束,此時(shí)才會(huì)觸發(fā)錄制,這樣可以避免錄制未最終 確認(rèn)的屬性改變,即并不是對(duì)每一次點(diǎn)擊都做記錄,只有焦點(diǎn)改變時(shí)才對(duì) 原來的控件屬性做記錄,這是是否記錄錄制操作的條件。當(dāng)因焦點(diǎn)改變而 引起的控件ID改變時(shí)記錄控件的絕對(duì)路徑和控件屬性值。有些控件比如 "普通按鈕"在被鼠標(biāo)點(diǎn)擊后產(chǎn)生的結(jié)果是被測(cè)試目標(biāo)程序執(zhí)行相應(yīng)處理 函數(shù),但控件自身屬性值并沒有被改變,控件只承受鼠標(biāo)點(diǎn)擊動(dòng)作的行為, 這種情況認(rèn)為是控件行為變化,此外因?yàn)辄c(diǎn)擊后被測(cè)試目標(biāo)程序會(huì)執(zhí)行相 應(yīng)處理函數(shù),所以是有效點(diǎn)擊,另外一些控件在被鼠標(biāo)點(diǎn)擊后會(huì)使屬性值 發(fā)生變化。于是鼠標(biāo)動(dòng)作錄制只記錄能夠改變控件行為或?qū)傩灾档挠行c(diǎn) 擊,不記錄鼠標(biāo)的坐標(biāo)改變和在無效位置的點(diǎn)擊,即不記錄沒有引起界面 改變和沒有引起后臺(tái)數(shù)據(jù)改變的無效點(diǎn)擊。記錄鼠標(biāo)動(dòng)作的內(nèi)容包括控件 的絕對(duì)路徑和控件的屬性改變后的值。
所述絕對(duì)路徑是指從目標(biāo)機(jī)圖像用戶界面的初始界面開始,到達(dá)目標(biāo) 控件,途經(jīng)的各個(gè)窗口和窗口上被點(diǎn)擊的控件所形成的二元組,二元組的 形式是(Wndld, Itemld),其中Wndld是每一級(jí)窗口 Id, Itemld是該窗 口上屬性被改變的控件Id,絕對(duì)路徑是一個(gè)操作過程鏈,描述點(diǎn)擊過程的 有序ID集合。例如, 一個(gè)操作過程的動(dòng)作是點(diǎn)擊圖形初始界面的TOOLBAR 中的"主菜單",進(jìn)入主菜單,再點(diǎn)擊主菜單中的"病人管理"采單條,則 該操作過程的鼠標(biāo)動(dòng)作記錄是
① (ID—DESKTOP, 麗一T00LBAR) (IDV一T00LBAR, IDC_T00L—B—MA麗ENU一N)
② (ID DESKTOP, IDV TOOLBAR) (IDV TOOLBAR,IDC—T00L—B—MA應(yīng)NU一N)
(IDD一MAIN一MENU, IDC_MAINMENUDLG—B一PATIENT)
這是兩條絕對(duì)路徑,都是從初始界面記錄起,路徑①對(duì)應(yīng)第一個(gè)點(diǎn)擊 動(dòng)作,路徑②對(duì)應(yīng)第二個(gè)點(diǎn)擊動(dòng)作。從路徑②又可以看出,到達(dá)主菜單中 的病人管理菜單條按鈕,途經(jīng)了 TOOLBAR上的主菜單按鈕,所以它們都是 一個(gè)從初始界面開始記錄的絕對(duì)路徑;如果把每一個(gè)二元組看成是操作過 程鏈上的一個(gè)節(jié)點(diǎn),那么第一條路徑只有兩個(gè)個(gè)節(jié)點(diǎn),第二個(gè)操作鏈有三 個(gè)節(jié)點(diǎn),這樣的操作鏈將作為面向控件錄制的一部分?jǐn)?shù)據(jù)被記錄下來,同 時(shí)在錄制過程中還要記錄控件的屬性值的變化結(jié)果,控件屬性的記錄不是 記錄某個(gè)控件內(nèi)容的改變過程,而只記錄控件屬性值改變后,光標(biāo)離開該 控件時(shí)的控件屬性值。各控件屬性值處理方法如下-.
a) 普通按鈕被點(diǎn)擊錄制時(shí)記下屬性值改變?yōu)?,表示被點(diǎn)擊過; 沒有被點(diǎn)擊則不記錄路徑和屬性值;
b) 多選按鈕被選中錄制時(shí)記下屬性值改變?yōu)?;取消選中錄制時(shí) 記下屬性值改變?yōu)?;
c) 單選按鈕被選中錄制時(shí)記下屬性值改變?yōu)?;取消選中錄制
時(shí)記下屬性值改變?yōu)?;
d) 編輯框被填寫后則記錄Edit框中的字符串;
e) 下拉框記錄被選中的條目的序號(hào);
f) 微調(diào)按鈕記錄微調(diào)后的控件顯示值。
另外,"面向控件對(duì)象的錄制"還可由按鍵觸發(fā),對(duì)按鍵的操作引起
焦點(diǎn)的移動(dòng),焦點(diǎn)從一個(gè)控件轉(zhuǎn)移到另一個(gè)控件上會(huì)導(dǎo)致控件ID改變,所
以當(dāng)樁程序檢測(cè)到由于按鍵被按下導(dǎo)致焦點(diǎn)改變時(shí)也會(huì)觸發(fā)錄制,但對(duì)按 鍵動(dòng)作的錄制也是只記錄能夠改變控件行為或?qū)傩灾档挠行c(diǎn)擊,在控件
ID改變后,根據(jù)該控件生成絕對(duì)路徑,并記錄該控件屬性改變后的值。
所述"面向步驟錄制"是記錄目標(biāo)機(jī)鍵盤上被按下鍵的鍵盤碼和旋 鈕旋轉(zhuǎn)的操作碼,這些鍵盤碼或操作碼在形成腳本時(shí)被寫成易于識(shí)別的指
令,例如,旋鈕逆時(shí)針轉(zhuǎn)程序中的操作碼是0x35,在腳本中寫成的易于識(shí) 別的指令為ACLK ,如果要使旋鈕逆時(shí)針轉(zhuǎn)3下則腳本可以寫成ACLK 3, ^步驟錄制作為控件對(duì)象錄制的一個(gè)補(bǔ)充,比如表格控件比較復(fù)雜,單純通 過面向控件對(duì)象的錄制/重放方法很難實(shí)現(xiàn)或無法實(shí)現(xiàn)錄制/重放,因?yàn)楸?格之類的復(fù)雜控件可能包含多個(gè)子控件,往往難以確定焦點(diǎn)在哪一個(gè)子控件上,此外也比較難以準(zhǔn)確記錄到操作子控件而導(dǎo)致復(fù)雜的父控件的屬性 改變,步驟錄制放棄記錄控件屬性值變化為代價(jià),但采用面向步驟錄制來 解決使這一問題簡(jiǎn)單化,因?yàn)椴襟E錄制只需要記錄按鍵或旋鈕的操作次數(shù)。 一個(gè)按鍵動(dòng)作的錄制過程表示如圖5所示。首先,捕捉按鍵或旋鈕的動(dòng)作; 然后,判斷按鍵或旋鈕的動(dòng)作是否是有效動(dòng)作,如果不是有效動(dòng)作,則忽 略該動(dòng)作;如果是有效動(dòng)作,則記錄按鍵的鍵盤碼或者旋鈕的操作碼;最 后,將按鍵的鍵盤碼或者旋鈕的操作碼上傳到計(jì)算機(jī)中的測(cè)試腳本中。
對(duì)應(yīng)于目標(biāo)機(jī)的腳本生成過程是在錄制過程中駐留在目標(biāo)機(jī)上的樁 程序?qū)?huì)捕獲到"面向控件對(duì)象錄制"或"面向步驟錄制"產(chǎn)生的"動(dòng)作、 路徑、屬性值"等數(shù)據(jù),這些數(shù)據(jù)被組包,通過以太網(wǎng)鏈路,使用基于TCP/IP 的協(xié)議來傳輸?shù)絇C機(jī),PC機(jī)則根據(jù)約定協(xié)議把數(shù)據(jù)包解包,然后把動(dòng)作 翻譯成腳本指令并同時(shí)保存路徑和屬性值;對(duì)應(yīng)于模擬器的腳本生成過程 是錄制對(duì)PC機(jī)通過串口向模擬器發(fā)送模擬器本身就可以識(shí)別的指令,同 時(shí)把這些指令以更容易閱讀的腳本指令方式寫到腳本文件里。
重放錄制的測(cè)試用例,如圖6所示,包括如下步驟首先,重放前場(chǎng) 景布置,選取腳本文件,系統(tǒng)關(guān)聯(lián)相應(yīng)的參數(shù)數(shù)據(jù)文件;然后,讀取腳本 文件中的指令并執(zhí)行,所述讀取腳本文件中的指令并執(zhí)行,包括如下步驟
51) 判斷指令是否是對(duì)目標(biāo)機(jī)的圖形用戶界面的操作,如果是,則重 放面向控件對(duì)象或面向步驟操作,并執(zhí)行步驟S4;如果否,則執(zhí)行步驟S2;
52) 判斷指令是否是關(guān)鍵點(diǎn)插入操作,如果是,則收集目標(biāo)機(jī)信息,
然后執(zhí)行步驟S4;如果否,則執(zhí)行步驟S3;
53) 判斷指令是否是對(duì)模擬器的操作,如果是,則向模擬器發(fā)指令,
模擬器發(fā)出信號(hào),然后執(zhí)行步驟S4;如果否,執(zhí)行步驟S4;
54) 判斷動(dòng)作序列是否執(zhí)行結(jié)束,如果是,則繼續(xù)往下執(zhí)行,對(duì)重放 后的場(chǎng)景進(jìn)行恢復(fù),結(jié)束重放操作;如果動(dòng)作序列沒有執(zhí)行結(jié)束,則繼續(xù) 讀取下一條重放動(dòng)作的指令,然后執(zhí)行上述步驟S1。
其中,重放前場(chǎng)景布置與圖3中錄制前場(chǎng)景布置相對(duì)應(yīng),是布置測(cè)試
前一些機(jī)器配置,包括通過手工完成電路連接和通過腳本指令完成的軟件
初始化,比如重放/錄制前執(zhí)行機(jī)器初始化指令;重放/錄制后場(chǎng)景恢復(fù)是 撤消重放/錄制用的硬件和軟件測(cè)試環(huán)境。重放開始時(shí)選取腳本文件; 一旦
選中腳本文件后系統(tǒng)會(huì)自動(dòng)關(guān)聯(lián)相應(yīng)的參數(shù)數(shù)據(jù)文件,讀取文件中的指令 并進(jìn)行解釋,在解釋過程中遇到參數(shù)時(shí)系統(tǒng)會(huì)自動(dòng)地在參數(shù)數(shù)據(jù)文件中尋找對(duì)應(yīng)參數(shù)值來替換該參變量,替換時(shí)系統(tǒng)會(huì)判斷當(dāng)前是第幾輪重放,系
統(tǒng)會(huì)用相應(yīng)輪的數(shù)值來替換參變量,例如PRESS 3表示旋鈕按3下,寫成 參數(shù)形式就是PRESS $a , $a為參數(shù);執(zhí)行過程中測(cè)試程序會(huì)把前后兩個(gè)
"絕對(duì)路徑"換算成"相對(duì)路徑"來執(zhí)行,這種按照"相對(duì)路徑"執(zhí)行指 令的方法更接近"所錄即所放"思想?,F(xiàn)舉例說明"相對(duì)路徑"的概念, 假如以A.、 B、 C等表示路徑中的節(jié)點(diǎn),重放過程中第一步從腳本中讀到的 絕對(duì)路徑為"A--〉B—〉C",執(zhí)行操作后從A到達(dá)C,此時(shí)這條路徑就成了 光標(biāo)所在的當(dāng)前路徑,第二步從腳本中讀到的絕對(duì)路徑為
"A—>B--〉C一〉D--〉E",這就是第二步要執(zhí)行的目標(biāo)路徑,測(cè)試樁程序會(huì) 自動(dòng)比較目標(biāo)路徑和當(dāng)前路徑,換算出相對(duì)路徑為"D—>E",這樣,被測(cè) 試程序?qū)?huì)在操作完第一步的基礎(chǔ)上繼續(xù)執(zhí)行"D—〉E",而不會(huì)根據(jù)絕對(duì) 路徑從A執(zhí)行到E。
為了記錄所錄制的內(nèi)容,本發(fā)明定義了一套簡(jiǎn)明腳本語言,腳本中使 用的關(guān)鍵字及其語法解釋如下 CASE CASEEND
表示用例開始和結(jié)束標(biāo)記,要配對(duì)使用,CASE后跟用例ID及用例標(biāo)
題
例如CASEn 第一個(gè)用例
CASE END
n表示用例編號(hào),"第一個(gè)用例"是用例標(biāo)題 GOTO 定位目標(biāo)控件
例如GOTO IDV—BIS一PV IDC—BIS—PV—B—NAME
IDD—BIS一PSD IDC一BIS一PSD—SB—BIS一LO 表示經(jīng)過一系列動(dòng)作后到達(dá)ID為IDC—BIS—PSD—SB—BIS—L0的控件 DATA表示值設(shè)定
例如DATA 20表示把控件的屬性值設(shè)置為20
OBSERVE 設(shè)置觀察點(diǎn)標(biāo)記,為無值簡(jiǎn)單指令。
PSACTI0N 設(shè)置模擬器指令
例如設(shè)置模擬器參數(shù)模擬心跳次數(shù)60/分鐘
PSACTI0NECGBPM 60bpm
LOOPL00PEND 設(shè)定過程循環(huán)及次數(shù)
例如LOOP 3GOTO 麗—NIBP—PV IDC—NIBP_PV—B一誦E DATA 1 LOOPEND
其中LOOP所在行的3表示LOOP于LOOPEND之間的過程被反復(fù)執(zhí) 行的次數(shù)
REMARK 注釋指令
例如REMARK這是一行注釋指令。
PRESS 旋鈕按下
例如PRESS 3 表示旋鈕按3下. CLK 旋鈕順時(shí)針轉(zhuǎn) ACLK 旋鈕逆時(shí)針轉(zhuǎn)
測(cè)試程序中錄制重放的界面如圖7。描述如下-其中,錄制過程為
(1) 按圖1配置好計(jì)算機(jī)與目標(biāo)機(jī)以及模擬器物理連接,運(yùn)行計(jì)算機(jī) 上的測(cè)試程序,進(jìn)入錄制重放界面如圖7 ,進(jìn)入這一界面前,系統(tǒng)會(huì)提示 要求選擇測(cè)試件所在目錄和要生成的腳本名。
(2) 填寫用例標(biāo)題,點(diǎn)擊"錄制開始"按鈕,在目標(biāo)機(jī)上手工執(zhí)行操 作;所有的模擬器操作通過測(cè)試程序中的模擬器軟鍵盤執(zhí)行,并在需要測(cè) 試分析或進(jìn)行值比較的時(shí)候插入測(cè)試關(guān)鍵觀察點(diǎn),執(zhí)行完所有操作后點(diǎn)"停 止錄制"按鈕,即可生成測(cè)試用例腳本,當(dāng)然若中途想放棄錄制,則可以 點(diǎn)"放棄錄制"按鈕。
(3) 錄制完成后可以選擇"腳本編輯"按鈕打開錄制的腳本,根據(jù)腳 本語法規(guī)則對(duì)錄制的腳本步驟進(jìn)行簡(jiǎn)單編輯,比如添加循環(huán)、更換參數(shù)、 增加測(cè)試數(shù)據(jù),以便用于回歸測(cè)試或壓力測(cè)試。
其中,重放過程為-
(1) 按圖1配置好測(cè)試場(chǎng)景即硬件環(huán)境和軟件測(cè)試條件,配置完成后 打開錄制重放界面如圖7所示,系統(tǒng)會(huì)以腳本形式列出保存的所有的用例 標(biāo)題,根據(jù)標(biāo)題,選擇要執(zhí)行的測(cè)試并指定執(zhí)行次數(shù),系統(tǒng)還會(huì)提示執(zhí)行 結(jié)果的保存選項(xiàng),即選擇保存所有測(cè)試過程中收集到的測(cè)試數(shù)據(jù)或者僅保 留結(jié)果,點(diǎn)"重放"按鈕開始執(zhí)行。
(2) 系統(tǒng)自動(dòng)重放測(cè)試,測(cè)試過程中對(duì)于每個(gè)用例逐個(gè)比較測(cè)試關(guān)鍵 點(diǎn),全部通過則記錄為"PASS",否則"FAIL"。(3)執(zhí)行結(jié)束后系統(tǒng)會(huì)提示,并自動(dòng)生成結(jié)果文件,所有"FAIL"的 用例被用紅色大字體標(biāo)出;并根據(jù)執(zhí)行的腳本文件和執(zhí)行結(jié)束時(shí)間自動(dòng)命名保存。實(shí)現(xiàn)上述方法的系統(tǒng)包括錄制模塊和重放模塊;所述錄制模塊包括 用于錄制操作人員的操作步驟、被設(shè)置參數(shù)的數(shù)據(jù)、以及目標(biāo)機(jī)運(yùn)行的結(jié) 果的錄制單元,用于將錄制的數(shù)據(jù)通過通訊端口傳輸至計(jì)算機(jī)的傳輸單元, 用于運(yùn)行計(jì)算機(jī)上的測(cè)試程序的程序運(yùn)行單元,用于接受測(cè)試程序指令且 將錄制的數(shù)據(jù)保存為具有關(guān)鍵字的腳本文件的腳本文件生成單元,用于修 改腳本文件中的所需的數(shù)值為參變量的數(shù)值編輯單元,用于存放參變量對(duì) 應(yīng)數(shù)據(jù)的數(shù)據(jù)庫單元;所述重放模塊包括用于運(yùn)行測(cè)試程序、調(diào)用腳本文件的文件調(diào)用單元,用于接收腳本文件、并讀入?yún)?shù)數(shù)據(jù)庫中的對(duì)應(yīng)數(shù) 據(jù)來替換參變量,并解析腳本文件、將腳本文件輸入目標(biāo)機(jī)的數(shù)據(jù)解析和 執(zhí)行單元,位于目標(biāo)機(jī)中,用于解析并執(zhí)行腳本中的指令的樁程序解析單 元,用于接收樁程序解析單元運(yùn)行的結(jié)果、并將運(yùn)行結(jié)果返回計(jì)算機(jī)進(jìn)行 分析,并輸出測(cè)試結(jié)果的處理單元。所述錄制單元包括面向控件對(duì)象錄制單元或面向步驟錄制單元。所述面向控件對(duì)象錄制單元包括用于錄制鼠標(biāo)動(dòng)作的第一捕捉模 塊,所述第一捕捉模塊錄制鼠標(biāo)的一系列動(dòng)作,其中對(duì)鼠標(biāo)動(dòng)作的錄制只 記錄能夠改變控件行為或?qū)傩灾档挠行c(diǎn)擊,包括控件的絕對(duì)路徑和控件 的屬性;用于判斷鼠標(biāo)點(diǎn)擊動(dòng)作是否是有效動(dòng)作的第一判斷模塊;用于在 第一判斷模塊判斷鼠標(biāo)點(diǎn)擊動(dòng)作是有效動(dòng)作后判斷鼠標(biāo)點(diǎn)擊的控件ID是 否改變的第二判斷模塊;用于在第二判斷模塊判斷鼠標(biāo)點(diǎn)擊的控件ID改變 時(shí),生成與該控件對(duì)應(yīng)的絕對(duì)路徑、記錄控件屬性改變后的值的第一記錄 模塊;和用于上傳絕對(duì)路徑和控件屬性改變后的值到計(jì)算機(jī)中的測(cè)試腳本 中的第一傳輸模塊。所述面向步驟錄制模塊包括用于捕捉按鍵或旋鈕動(dòng)作的第二捕捉模 塊;用于根據(jù)第二捕捉模塊捕捉的按鍵或旋鈕動(dòng)作判斷按鍵或旋鈕的動(dòng)作 是否是有效動(dòng)作的第三判斷模塊;用于在第三判斷模塊判斷按鍵或旋鈕的 動(dòng)作有效后記錄按鍵的鍵盤碼或者旋鈕的操作碼的第二記錄模塊;用于上 傳按鍵的鍵盤碼或旋鈕的操作碼到計(jì)算機(jī)中的測(cè)試腳本中的第二傳輸模 塊。所述重放模塊還包括用于根據(jù)選取的腳本文件關(guān)聯(lián)相應(yīng)的參數(shù)數(shù)據(jù)文件的關(guān)聯(lián)模塊;和用于讀取腳本文件中的指令并執(zhí)行的執(zhí)行模塊,所述 執(zhí)行模塊用于在執(zhí)行過程中把前后兩個(gè)絕對(duì)路徑換算為相對(duì)路徑。所述執(zhí)行模塊包括用于判斷指令是否是對(duì)目標(biāo)機(jī)的圖形用戶界面進(jìn) 行操作的第四判斷模塊;用于在第四判斷模塊判斷指令是對(duì)目標(biāo)機(jī)的圖形 用戶界面進(jìn)行操作時(shí)重放面向控件對(duì)象或面向步驟操作的重放模塊 ,用于 在第四判斷模塊判斷指令不是對(duì)目標(biāo)機(jī)的圖形用戶界面進(jìn)行操作時(shí)判斷指 令是否是關(guān)鍵點(diǎn)插入操作的第五判斷模塊;用于在第五判斷模塊判斷指令 是關(guān)鍵點(diǎn)插入操作時(shí)收集目標(biāo)機(jī)上信息的信息采集模塊;用于在第五判斷 模塊判斷指令不是關(guān)鍵點(diǎn)插入操作時(shí)判斷指令是否是對(duì)模擬器的操作的第 六判斷模塊;用于向模擬器發(fā)送指令的發(fā)送模塊;用于在重放模塊、信息 采集模塊和發(fā)送模塊中的任何一個(gè)執(zhí)行完畢后判斷動(dòng)作序列是否執(zhí)行結(jié)束 的第七判斷模塊,所述第七判斷模塊用于在判斷動(dòng)作序列執(zhí)行結(jié)束后,則 跳出循環(huán)繼續(xù)往下執(zhí)行,在動(dòng)作序列沒有執(zhí)行結(jié)束時(shí),則繼續(xù)讀取下一條 重放動(dòng)作的指令,控制第四判斷模塊對(duì)指令進(jìn)行判斷。以上是結(jié)合具體實(shí)施方式
對(duì)本發(fā)明進(jìn)行的詳細(xì)描述,本發(fā)明是用于嵌 入式軟件測(cè)試的錄制重放式測(cè)試方法,不僅可以應(yīng)用在醫(yī)療監(jiān)護(hù)設(shè)備中進(jìn) 行軟件測(cè)試,也可用于其他行業(yè)類似的嵌入設(shè)備中進(jìn)行軟件測(cè)試;本發(fā)明 中的錄制方法,還可以在某些需要跟蹤和記錄用戶操作并保存日志的嵌入 式產(chǎn)品中使用。因此,對(duì)于本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,在 不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡(jiǎn)單推演或替換,都應(yīng)當(dāng)視 為屬于本發(fā)明的保護(hù)范圍。
權(quán)利要求
1. 一種嵌入式軟件的測(cè)試方法,其特征在于,包括以下步驟1)錄制對(duì)目標(biāo)機(jī)的操作,生成測(cè)試腳本;2)重放所錄制的腳本;其中,所述步驟1包括如下步驟11)利用目標(biāo)機(jī)上的樁程序錄制操作人員的操作步驟、被設(shè)置參數(shù)的數(shù)據(jù)、以及目標(biāo)機(jī)運(yùn)行的結(jié)果,錄制的對(duì)象包括對(duì)目標(biāo)機(jī)的圖形用戶界面的操作、模擬器操作和關(guān)鍵點(diǎn)插入操作的錄制;12)將錄制的數(shù)據(jù)通過通訊端口傳輸至計(jì)算機(jī);13)運(yùn)行計(jì)算機(jī)上的測(cè)試程序;14)測(cè)試程序接收錄制的數(shù)據(jù),并將錄制的數(shù)據(jù)保存為具有關(guān)鍵字的腳本文件;15)修改腳本中的所需要的數(shù)值部分為參變量;16)在計(jì)算機(jī)上建立數(shù)據(jù)庫文件,存放參變量對(duì)應(yīng)的數(shù)據(jù);其中,所述步驟2包括如下步驟21)運(yùn)行計(jì)算機(jī)上的測(cè)試程序;22)測(cè)試程序調(diào)用腳本文件、并讀入?yún)?shù)數(shù)據(jù)庫中的對(duì)應(yīng)數(shù)據(jù)來替換腳本文件中的參變量;23)解析腳本文件并輸入目標(biāo)機(jī);24)目標(biāo)機(jī)中的樁程序解析并執(zhí)行腳本中的指令;25)將運(yùn)行結(jié)果返回計(jì)算機(jī)進(jìn)行分析,并輸出測(cè)試結(jié)果。
2. 如權(quán)利要求1所述的嵌入式軟件的測(cè)試方法,其特征在于所述步驟 11中對(duì)目標(biāo)機(jī)的圖形用戶界面操作的錄制方法采用"面向控件對(duì)象的錄 第U"或"面向步驟操作錄制"。
3. 如權(quán)利要求2所述的嵌入式軟件的測(cè)試方法,其特征在于所述"面 向控件對(duì)象的錄制"是由鼠標(biāo)動(dòng)作觸發(fā),錄制鼠標(biāo)的一系列動(dòng)作,其中對(duì) 鼠標(biāo)動(dòng)作的錄制只記錄能夠改變控件行為或?qū)傩灾档挠行c(diǎn)擊,包括控件 的絕對(duì)路徑和控件的屬性,包括如下步驟Al)捕捉鼠標(biāo)的點(diǎn)擊動(dòng)作;A2)判斷該點(diǎn)擊動(dòng)作是否是有效的動(dòng)作,如果不是有效的動(dòng)作,則忽 略該動(dòng)作;如果是有效的動(dòng)作,則執(zhí)行步驟A3;A3)判斷鼠標(biāo)點(diǎn)擊的控件ID是否改變,如果沒變,則忽略該點(diǎn)擊動(dòng) 作;如果控件ID改變了,則執(zhí)行步驟A4;A4).生成與該控件對(duì)應(yīng)的絕對(duì)路徑,并記錄控件屬性改變后的值; A5)上傳絕對(duì)路徑和控件屬性改變后的值到計(jì)算機(jī)中的測(cè)試腳本中。
4. 如權(quán)利要求3所述的嵌入式軟件的測(cè)試方法,其特征在于所述絕對(duì) 路徑是指從目標(biāo)機(jī)圖像用戶界面的初始界面開始,到達(dá)目標(biāo)控件,途經(jīng)的 各個(gè)窗口和窗口上被點(diǎn)擊的控件所形成的二元組,所述二元組的形式是 (Wndld, Itemld),其中Wndld是每一級(jí)窗口 Id, Itemld是該窗口上接 收有效點(diǎn)擊后屬性或行為被改變的控件Id。
5. 如權(quán)利要求2所述的嵌入式軟件的測(cè)試方法,其特征在于所述"面 向步驟錄制"是記錄目標(biāo)機(jī)的鍵盤上被按下的鍵盤碼和旋鈕旋轉(zhuǎn)的操作 碼,錄制按鍵或旋鈕的操作包括以下步驟Bl)捕捉按鍵或旋鈕的動(dòng)作;B2)判斷按鍵或旋鈕的動(dòng)作是否是有效動(dòng)作,如果不是有效動(dòng)作,則 忽略該動(dòng)作;如果是有效動(dòng)作,則執(zhí)行步驟B3; B3)記錄按鍵的鍵盤碼或者旋鈕的操作碼;B4)上傳按鍵的鍵盤碼或旋鈕的操作碼到計(jì)算機(jī)中的測(cè)試腳本中。
6. 如權(quán)利要求1至5中任一項(xiàng)所述的嵌入式軟件的測(cè)試方法,其特征在 于所述步驟2中還包括如下步驟Cl)選取腳本文件,系統(tǒng)關(guān)聯(lián)相應(yīng)的參數(shù)數(shù)據(jù)文件;C2)讀取腳本文件中的指令并執(zhí)行,執(zhí)行過程中測(cè)試程序把前后兩個(gè) 絕對(duì)路徑換算為相對(duì)路徑。
7. 如權(quán)利要求6所述的嵌入式軟件的測(cè)試方法,其特征在于所述步驟 C2是一個(gè)循環(huán)過程,包括如下步驟51) 判斷指令是否是對(duì)目標(biāo)機(jī)的圖形用戶界面的操作,如果是,則重放面向控件對(duì)象或面向步驟操作,并執(zhí)行步驟S4;如果否,則執(zhí)行步驟S2;52) 判斷指令是否是關(guān)鍵點(diǎn)插入操作,如果是,則收集目標(biāo)機(jī)信息,然后執(zhí)行步驟S4;如果否,則執(zhí)行步驟S3;53) 判斷指令是否是對(duì)模擬器的操作,如果是,則向模擬器發(fā)指令,模擬器發(fā)出信號(hào),然后執(zhí)行步驟S4;如果否,執(zhí)行步驟S4;54) 判斷動(dòng)作序列是否執(zhí)行結(jié)束,如果是,則跳出循環(huán)繼續(xù)往下執(zhí)行;如果動(dòng)作序列沒有執(zhí)行結(jié)束,則繼續(xù)讀取下一條重放動(dòng)作的指令,執(zhí)行上述步驟S1。
8. —種嵌入式軟件的測(cè)試系統(tǒng),其特征在于包括錄制模塊和重放模塊; 所述錄制模塊包括用于錄制操作人員的操作步驟、被設(shè)置參數(shù)的數(shù)據(jù)、以及目標(biāo)機(jī)運(yùn)行 的結(jié)果的錄制單元;用于將錄制的數(shù)據(jù)通過通訊端口傳輸至計(jì)算機(jī)的傳輸單元 , 用于運(yùn)行計(jì)算機(jī)上的測(cè)試程序的程序運(yùn)行單元;用于接受測(cè)試程序指令且將錄制的數(shù)據(jù)保存為具有關(guān)鍵字的腳本文件 的腳本文件生成單元;用于修改腳本文件中的所需的數(shù)值為參變量的數(shù)值編輯單元;用于存放參變量對(duì)應(yīng)數(shù)據(jù)的數(shù)據(jù)庫單元;所述重放模塊包括用于運(yùn)行測(cè)試程序、調(diào)用腳本文件的文件調(diào)用單元; 用于接收腳本文件、并讀入?yún)?shù)數(shù)據(jù)庫中的對(duì)應(yīng)數(shù)據(jù)來替換參變量,并解析腳本文件、將腳本文件輸入目標(biāo)機(jī)的數(shù)據(jù)解析和執(zhí)行單元;位于目標(biāo)機(jī)中,用于解析并執(zhí)行腳本中的指令的樁程序解析單元; 用于接收樁程序解析單元運(yùn)行的結(jié)果、并將運(yùn)行結(jié)果返回計(jì)算機(jī)進(jìn)行分析,并輸出測(cè)試結(jié)果的處理單元。
9. 如權(quán)利要求8所述的嵌入式軟件測(cè)試系統(tǒng),其特征在于所述錄制單 元包括面向控件對(duì)象錄制單元或面向步驟錄制單元。
10. 如權(quán)利要求9所述的嵌入式軟件測(cè)試系統(tǒng),其特征在于所述面向控 件對(duì)象錄制單元包括用于錄制鼠標(biāo)動(dòng)作的第一捕捉模塊,所述第一捕捉模塊錄制鼠標(biāo)的一 系列動(dòng)作,其中對(duì)鼠標(biāo)動(dòng)作的錄制只記錄能夠改變控件行為或?qū)傩灾档挠?效點(diǎn)擊,包括控件的絕對(duì)路徑和控件的屬性;用于判斷鼠標(biāo)點(diǎn)擊動(dòng)作是否是有效動(dòng)作的第一判斷模塊;用于在第一判斷模塊判斷鼠標(biāo)點(diǎn)擊動(dòng)作是有效動(dòng)作后判斷鼠標(biāo)點(diǎn)擊 的控件ID是否改變的第二判斷模塊;用于在第二判斷模塊判斷鼠標(biāo)點(diǎn)擊的控件ID改變時(shí),生成與該控件 對(duì)應(yīng)的絕對(duì)路徑、記錄控件屬性改變后的值的第一記錄模塊;和用于上傳控件ID和控件屬性改變后的值到計(jì)算機(jī)中的測(cè)試腳本中 的第一傳輸模塊。
11.如權(quán)利要求10所述的嵌入式軟件的測(cè)試系統(tǒng),其特征在于所述絕對(duì) 路徑是指從目標(biāo)機(jī)圖像用戶界面的初始界面開始,到達(dá)目標(biāo)控件,途經(jīng)的各個(gè)窗口和窗口上被點(diǎn)擊的控件所形成的二元組,所述二元組的形式是(Wndld, Itemld),其中Wndld是每一級(jí)窗口 Id, Itemld是該窗口上接 收有效點(diǎn)擊后屬性或行為被改變的控件Id。
12. 如權(quán)利要求9所述的嵌入式軟件的測(cè)試系統(tǒng),其特征在于所述面向 步驟錄制模塊包括-用于捕捉按鍵或旋鈕動(dòng)作的第二捕捉模塊;用于根據(jù)第二捕捉模塊捕捉的按鍵或旋鈕動(dòng)作判斷按鍵或旋鈕的動(dòng) 作是否是有效動(dòng)作的第三判斷模塊;用于在第三判斷模塊判斷按鍵或旋鈕的動(dòng)作有效后記錄按鍵的鍵盤 碼或者旋鈕的操作碼的第二記錄模塊;用于上傳按鍵的鍵盤碼或旋鈕的操作碼到計(jì)算機(jī)中的測(cè)試腳本中的 第二傳輸模塊。
13. 如權(quán)利要求8所述的嵌入式軟件的測(cè)試系統(tǒng),其特征在于所述重放 模塊還包括用于根據(jù)選取的腳本文件關(guān)聯(lián)相應(yīng)的參數(shù)數(shù)據(jù)文件的關(guān)聯(lián)模 塊;和用于讀取腳本文件中的指令并執(zhí)行的執(zhí)行模塊,所述執(zhí)行模塊用于 在執(zhí)行過程中把前后兩個(gè)絕對(duì)路徑換算為相對(duì)路徑。
14. 如權(quán)利要求13所述的嵌入式軟件的測(cè)試系統(tǒng),其特征在于所述執(zhí)行 模塊包括用于判斷指令是否是對(duì)目標(biāo)機(jī)的圖形用戶界面進(jìn)行操作的第四判斷 模塊;用于在第四判斷模塊判斷指令是對(duì)目標(biāo)機(jī)的圖形用戶界面進(jìn)行操作時(shí)重放面向控件對(duì)象或面向步驟操作的重放模塊;用于在第四判斷模塊判斷指令不是對(duì)目標(biāo)機(jī)的圖形用戶界面進(jìn)行操 作時(shí)判斷指令是否是關(guān)鍵點(diǎn)插入操作的第五判斷模塊;用于在第五判斷模塊判斷指令是關(guān)鍵點(diǎn)插入操作時(shí)收集目標(biāo)機(jī)上信 息的信息采集模塊;用于在第五判斷模塊判斷指令不是關(guān)鍵點(diǎn)插入操作時(shí)判斷指令是否 是對(duì)模擬器的操作的第六判斷模塊;用于向模擬器發(fā)送指令的發(fā)送模塊;用于在重放模塊、信息采集模塊和發(fā)送模塊中的任何一個(gè)執(zhí)行完畢后 判斷動(dòng)作序列是否執(zhí)行結(jié)束的第七判斷模塊,所述第七判斷模塊用于在判 斷動(dòng)作序列執(zhí)行結(jié)束后,則跳出循環(huán)繼續(xù)往下執(zhí)行,在動(dòng)作序列沒有執(zhí)行 結(jié)束時(shí),則繼續(xù)讀取下一條重放動(dòng)作的指令,控制第四判斷模塊對(duì)指令進(jìn) 行判斷。
全文摘要
本發(fā)明公開了一種嵌入式軟件的測(cè)試方法,首先錄制對(duì)目標(biāo)機(jī)的操作,生成測(cè)試腳本;然后重放錄制的腳本。在目標(biāo)機(jī)上編寫樁程序,用樁程序錄制操作人員的操作步驟、被設(shè)置參數(shù)的數(shù)據(jù)和運(yùn)行結(jié)果;傳輸至計(jì)算機(jī);測(cè)試程序收到錄制的數(shù)據(jù)后保存為腳本;修改腳本中的數(shù)值部分為參變量;在計(jì)算機(jī)上建立數(shù)據(jù)庫文件存放參變量對(duì)應(yīng)的數(shù)據(jù);運(yùn)行測(cè)試程序;測(cè)試程序調(diào)用腳本、同時(shí)讀入?yún)?shù)數(shù)據(jù)庫中的對(duì)應(yīng)數(shù)據(jù)來替換參變量;解析腳本并輸入目標(biāo)機(jī);目標(biāo)機(jī)中的樁程序解析和執(zhí)行腳本中的指令;將運(yùn)行結(jié)果返回計(jì)算機(jī)進(jìn)行分析并輸出。本發(fā)明通過對(duì)目標(biāo)機(jī)的操作進(jìn)行錄制生成自動(dòng)化測(cè)試用例腳本,減少了編寫自動(dòng)化測(cè)試用例的工作量,提高了測(cè)試效率。
文檔編號(hào)G06F11/36GK101241466SQ20071007329
公開日2008年8月13日 申請(qǐng)日期2007年2月8日 優(yōu)先權(quán)日2007年2月8日
發(fā)明者徐春陽, 楊文亮 申請(qǐng)人:深圳邁瑞生物醫(yī)療電子股份有限公司