專利名稱:一種構(gòu)造測試軟件的方法和應(yīng)用該方法的測試系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及測試軟件的技術(shù)領(lǐng)域,尤其涉及一種構(gòu)造測試軟件的方法,還有應(yīng)用該方法的測試系統(tǒng)。
背景技術(shù):
目前,制造業(yè)中的測試軟件往往都是開發(fā)人員根據(jù)現(xiàn)有的測試設(shè)備、測試方法和流程定制而成。由于產(chǎn)品的差異以及更新?lián)Q代,哪怕是同一公司內(nèi)的不同產(chǎn)品,其測試流程往往也會千差萬別,而相關(guān)的測試軟件也必須不斷根據(jù)用戶需求進行修改。這對測試軟件編寫者帶來了極大的挑戰(zhàn),測試軟件無法快速適用于不同產(chǎn)品,甚至也無法適用于相同產(chǎn)品的不同階段(比如研發(fā)階段,中試階段,生產(chǎn)階段等等),也無法與現(xiàn)有產(chǎn)線上的各類信息系統(tǒng)緊密結(jié)合,一旦產(chǎn)線上做流程變更,軟件的變更也不可缺少,由于現(xiàn)有編程語言多半需 要在編譯環(huán)境下重新編譯后才能使用,這會帶來幾個問題I.開發(fā)者所處的開發(fā)環(huán)境中不一定有軟件使用者相關(guān)的測試儀表環(huán)境,必須在開發(fā)機器上修改代碼后再發(fā)布到使用者機器上。而往往測試軟件調(diào)試必須經(jīng)常這樣反復(fù)往返,這使得開發(fā)效率往往在測試環(huán)節(jié)下變得異常緩慢。2.軟件初期版本在用戶機器上運行出現(xiàn)問題時,往往不太好迅速定位;由于出現(xiàn)問題的情況多較為復(fù)雜,涉及到用戶的不同操作,在本地調(diào)試環(huán)境中也不太好模擬相關(guān)操作。3.用戶任何細(xì)微的需求變更無法自我完成,必須由開發(fā)維護人員開放出相關(guān)參數(shù)后通過用戶設(shè)置或者配置文件等操作后才能完成,這給開發(fā)人員也帶來了極大的困惱,一方面,舊項目遲遲無法完結(jié),必須不停地滿足客戶的變化需求;而另一方面,新的項目又馬不停蹄地接踵而至。
發(fā)明內(nèi)容
為克服現(xiàn)有技術(shù)的缺陷,本發(fā)明要解決的技術(shù)問題是提供了一種方便編程人員快速構(gòu)造其測試軟件、并使其軟件具有較大擴充性、能夠在脫離編譯環(huán)境的情況下快速擴充軟件功能、及時響應(yīng)客戶需求、用戶能夠自行修改需求的構(gòu)造測試軟件的方法。本發(fā)明的技術(shù)方案是這種構(gòu)造測試軟件的方法,將測試軟件分為測試程序框架層、腳本解釋引擎及器件動態(tài)鏈接庫DLL層、測試腳本層,測試程序框架層用于腳本解釋引擎初始化、日志顯示、測試需要的控件顯示以及設(shè)備面板顯示,腳本解釋引擎及器件DLL層用于解釋腳本、運行控制腳本、鏈接測試腳本到器件DLL的接口函數(shù),測試腳本層用于描述測試流程,測試命令通過腳本解釋引擎加載測試腳本執(zhí)行測試命令的序列,以便適應(yīng)各種測試設(shè)備及測試流程。測試程序通過腳本引擎加載腳本執(zhí)行不同測試命令的序列,也就是不同的腳本,即可快速適應(yīng)不同測試設(shè)備及流程的目的。由于腳本修改都是ASCII文本,不需要重新編譯代碼,我們可以很方便地直接在用戶測試環(huán)境中進行調(diào)試,及時發(fā)現(xiàn)錯誤,最終達到快速響應(yīng)用戶需求的目的。
圖I是根據(jù)本發(fā)明的構(gòu)造測試軟件的方法的一個優(yōu)選實施例的流程圖;圖2是應(yīng)用本發(fā)明的結(jié)構(gòu)示意圖。
具體實施例方式如圖2所示,這種構(gòu)造測試軟件的方法,將測試軟件分為測試程序框架層、腳本解釋引擎及器件動態(tài)鏈接庫DLL層、測試腳本層,測試程序框架層用于腳本解釋引擎初始化、日志顯示、測試需要的控件顯示以及設(shè)備面板顯示,腳本解釋引擎及器件DLL層用于解 釋腳本、運行控制腳本、鏈接測試腳本到器件DLL的接口函數(shù),測試腳本層用于描述測試流程,測試命令通過腳本解釋引擎加載測試腳本執(zhí)行測試命令的序列,以便適應(yīng)各種測試設(shè)備及測試流程。測試程序通過腳本引擎加載腳本執(zhí)行不同測試命令的序列,也就是不同的腳本,即可快速適應(yīng)不同測試設(shè)備及流程的目的。由于腳本修改都是ASCII文本,不需要重新編譯代碼,我們可以很方便地直接在用戶測試環(huán)境中進行調(diào)試,及時發(fā)現(xiàn)錯誤,最終達到快速響應(yīng)用戶需求的目的。優(yōu)選地,這種構(gòu)造測試軟件的方法,包括以下步驟(I)開始;(2)選擇所需的腳本;(3)腳本引擎解析其腳本內(nèi)容;(4)根據(jù)腳本內(nèi)容布置測試界面、映射按鈕和其它控制事件;(5)用戶點擊按鈕開始測試;(6)生成測試結(jié)果和日志。優(yōu)選地,這種構(gòu)造測試軟件的方法,包括以下步驟(I)將測試儀表按照功能或接口歸類封裝在DLL中;比如光譜儀一類,不管有多少種不同廠家,不同類型的儀器,其控制接口大都遵循SCPI的標(biāo)準(zhǔn),我們可以將其封裝在一個DLL中,將其常用的功能接口進行公開,比如連接,斷開,發(fā)送命令,接收命令以及常用功能等等;還比如,常用的串口,網(wǎng)口,也都可以封裝在各自的DLL中,只公開其通用接口 ;還有與用戶緊密關(guān)聯(lián)的信息系統(tǒng),也可以仿照器件的模式,封裝在DLL中;(2)構(gòu)造腳本解釋引擎及器件DLL,其包含鏈接已有的DLL (我們這里采取的是靜態(tài)鏈接方法,鏈接后框架進程(exe)即可調(diào)用器件DLL中的接口函數(shù)),并采用微軟的ActiveX Scripting技術(shù),將這些DLL的接口函數(shù)進行映射,映射成腳本可以識別的對象及其函數(shù)接口(比如,將光譜儀映射成MyOSA ;其OPEN操作,則用腳本MyOSA. Open O這樣的語句進行對應(yīng);發(fā)送命令操作則對應(yīng)MyOSA. SendO。如此將用戶對設(shè)備儀表進行相關(guān)操作均采用腳本進行對應(yīng)。同理,用戶常用的信息系統(tǒng)也可以當(dāng)做儀表進行類似的功能封裝,以方便測試軟件與其他信息系統(tǒng)的數(shù)據(jù)接入。);對于用戶在圖形用戶界面⑶I (Graphical UserInterface)上的操作(比如構(gòu)造常用輸入控件 Edit, Label, StringGri d, CheckBox, RadioButton),獲取用戶對常用控件的操作等),在腳本中獲取用戶在界面上的相關(guān)操作,并以此作為程序的相關(guān)輸入和流程的判定。更進一步地,步驟(2)中的按鈕的點擊事件,利用編程語言中的通過運行時類型識別RTTI (Run-Time Type Identification)機制,將腳本中的函數(shù)直接映射到其點擊事件中,以便當(dāng)用戶在點擊界面的按鈕時,執(zhí)行腳本中指定函數(shù)的代碼。優(yōu)選地,步驟(2)中的映射包括以下步驟(2. 1)創(chuàng)建必要的受控對象,這些受控對象是指將要在腳本文件中引用到的Automation對象,通常是應(yīng)用系統(tǒng)的文檔對象,也可以是某些ActiveX控制;(2. 2)加入名字項,凡是應(yīng)用系統(tǒng)中要暴露給腳本文件的所有對象都需要加入到引擎的名字空間中(IActiveScript. AddNamedItem);(2.3)引擎在執(zhí)行腳本時,首先處理其名字空間中的名字項,調(diào)用應(yīng)用系統(tǒng)IActiveScriptSite接口的GetItemInfo成員函數(shù),獲取每一個名字所對應(yīng)的受控對象的
信息;(2. 4)在腳本執(zhí)行過程中,當(dāng)特定的事件發(fā)生時,引擎中的事件控制函數(shù)就要被調(diào)用;(2. 5)在腳本執(zhí)行過程中,當(dāng)調(diào)用到受控對象的屬性和方法時,引擎會通過它所獲取的對象接口調(diào)用IDispatch: : Invoke成員函數(shù)。也就是說,我們可以利用腳本自己在界面上創(chuàng)建控件,映射控件的相關(guān)事件,并執(zhí)行我們自定義的操作。這樣的模式極大擴充了軟件的功能,可以很快速的應(yīng)對外部需求變更。以上所述,僅是本發(fā)明的較佳實施例,并非對本發(fā)明作任何形式上的限制,凡是依據(jù)本發(fā)明的技術(shù)實質(zhì)對以上實施例所作的任何簡單修改、等同變化與修飾,均仍屬本發(fā)明技術(shù)方案的保護范圍。
權(quán)利要求
1.一種構(gòu)造測試軟件的方法,其特征在于將測試軟件分為測試程序框架層、腳本解釋弓I擎及器件動態(tài)鏈接庫DLL層、測試腳本層,測試程序框架層用于腳本解釋弓I擎初始化、日志顯示、測試需要的控件顯示以及設(shè)備面板顯示,腳本解釋引擎及器件DLL層用于解釋腳本、運行控制腳本、鏈接測試腳本到器件DLL的接口函數(shù),測試腳本層用于描述測試流程,測試命令通過腳本解釋引擎加載測試腳本執(zhí)行測試命令的序列,以便適應(yīng)各種測試設(shè)備及測試流程。
2.根據(jù)權(quán)利要求I所述的構(gòu)造測試軟件的方法,其特征在于包括以下步驟 (1)開始; (2)選擇所需的腳本; (3)腳本引擎解析其腳本內(nèi)容; (4)根據(jù)腳本內(nèi)容布置測試界面、映射按鈕和其它控制事件; (5)用戶點擊按鈕開始測試; (6)生成測試結(jié)果和日志。
3.根據(jù)權(quán)利要求I所述的構(gòu)造測試軟件的方法,其特征在于包括以下步驟 (1)將測試儀表按照功能或接口歸類封裝在DLL中; (2)構(gòu)造腳本解釋引擎及器件DLL,其包含靜態(tài)鏈接已有的DLL,并采用微軟的ActiveX Scripting技術(shù),將這些DLL的接口函數(shù)進行映射,映射成腳本可以識別的對象及其函數(shù)接口 ;對于用戶在圖形用戶界面CTI上的操作,在腳本中獲取用戶在界面上的相關(guān)操作,并以此作為程序的相關(guān)輸入和流程的判定。
4.根據(jù)權(quán)利要求3所述的構(gòu)造測試軟件的方法,其特征在于步驟(2)中的按鈕的點擊事件,利用編程語言中的通過運行時類型識別RTTI機制,將腳本中的函數(shù)直接映射到其點擊事件中,以便當(dāng)用戶在點擊界面的按鈕時,執(zhí)行腳本中指定函數(shù)的代碼。
5.根據(jù)權(quán)利要求3所述的構(gòu)造測試軟件的方法,其特征在于步驟(2)中的映射包括以下步驟 (2. I)創(chuàng)建必要的受控對象,這些受控對象是指將要在腳本文件中引用到的Automation 對象; (2. 2)加入名字項,凡是應(yīng)用系統(tǒng)中要暴露給腳本文件的所有對象都需要加入到引擎的名字空間中; (2.3)引擎在執(zhí)行腳本時,首先處理其名字空間中的名字項,調(diào)用應(yīng)用系統(tǒng)IActiveScriptSite接口的GetItemInfo成員函數(shù),獲取每一個名字所對應(yīng)的受控對象的信息; (2. 4)在腳本執(zhí)行過程中,當(dāng)特定的事件發(fā)生時,引擎中的事件控制函數(shù)就要被調(diào)用; (2. 5)在腳本執(zhí)行過程中,當(dāng)調(diào)用到受控對象的屬性和方法時,引擎會通過它所獲取的對象接口調(diào)用IDispatch: : Invoke成員函數(shù)。
全文摘要
本發(fā)明公開一種方便編程人員快速構(gòu)造其測試軟件、并使其軟件具有較大擴充性、能夠在脫離編譯環(huán)境的情況下快速擴充軟件功能、及時響應(yīng)客戶需求、用戶能夠自行修改需求的構(gòu)造測試軟件的方法,將測試軟件分為測試程序框架層、腳本解釋引擎及器件動態(tài)鏈接庫DLL層、測試腳本層,測試程序框架層用于腳本解釋引擎初始化、日志顯示、測試需要的控件顯示以及設(shè)備面板顯示,腳本解釋引擎及器件DLL層用于解釋腳本、運行控制腳本、鏈接測試腳本到器件DLL的接口函數(shù),測試腳本層用于描述測試流程,測試命令通過腳本解釋引擎加載測試腳本執(zhí)行測試命令的序列,以便適應(yīng)各種測試設(shè)備及測試流程。
文檔編號G06F9/44GK102890652SQ20121043982
公開日2013年1月23日 申請日期2012年11月7日 優(yōu)先權(quán)日2012年11月7日
發(fā)明者李仲偉, 江毅, 許耿, 裴青峰, 俞施展, 黃丹 申請人:武漢光迅信息技術(shù)有限公司, 武漢光迅科技股份有限公司