欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種嵌入式軟件自動(dòng)化測試的裝置及其方法

文檔序號(hào):6420557閱讀:321來源:國知局
專利名稱:一種嵌入式軟件自動(dòng)化測試的裝置及其方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)軟件測試領(lǐng)域,尤其涉及一種嵌入式軟件自動(dòng)化測試的裝置及其方法。
背景技術(shù)
TCL(Tool Command Language,工具命令語言)于1980年被發(fā)明,是一種解釋執(zhí)行的腳本語言(Scripting Language),現(xiàn)已成為一個(gè)流行的描述語言;它擁有一個(gè)固有的核心命令集,支持類C的流程控制if控制、循環(huán)控制和switch控制等,支持過程的定義和調(diào)用,并且提供了強(qiáng)大的數(shù)組和字符串處理功能。TCL因其易用性、可擴(kuò)展性,功能全面以及開發(fā)速度快的特性已經(jīng)成為工業(yè)界自動(dòng)測試最常用的語言之一。
GDB代理模塊,GDB調(diào)試器的一個(gè)代理模塊,本發(fā)明中依靠它對(duì)GDB調(diào)試器進(jìn)行控制。
Tornado是WindRiver公司嵌入式實(shí)時(shí)操作系統(tǒng)VxWorks的集成開發(fā)環(huán)境,它給嵌入式系統(tǒng)開發(fā)人員提供了許多實(shí)用的開發(fā)和調(diào)試工具。如圖1所示,圖1為Tornado提供的嵌入式軟件開發(fā)環(huán)境框圖。
GDB調(diào)試器,一種GNU的基于源碼級(jí)的調(diào)試器,它的源碼是公開的,支持C、C++、JAVA、PASCAL等語言。Tornado的Debugger使用了GDB調(diào)試器的內(nèi)核。GDB調(diào)試器的功能非常強(qiáng)大,但對(duì)于測試來說,最有用的功能為查看變量(命令名稱為print,簡寫p)、給變量賦值(命令名稱為set)以及格式化內(nèi)存,舉例說明
假定被測代碼中有如下變量
char gCharG[]=″abcde″;int gIntG[4]={1,2,3,4};typedef struct{int m_int1;int m_int2;char m_char1;char m_char2;char*m_pChar;}TYPE1;TYPE1 gType1;
查看變量
(gdb)p gType1.m_int2
$1=0
(gdb)p gCharG
$2=″abcde″
給變量賦值
(gdb)set var gType1.m_int2=100
格式化內(nèi)存
(gdb)set({TYPE1}0x 0x421ea8).m_int2=1000
現(xiàn)有的問題
通過TCL腳本解釋器可完成嵌入式軟件的測試,其原理圖參考如圖2所示,圖2是通過TCL解釋器進(jìn)行嵌入式軟件測試原理圖。測試人員通過編寫測試代碼封裝測試命令注冊在通信服務(wù)器端,然后在客戶端使用相應(yīng)的命令和腳本進(jìn)行自動(dòng)化的軟件測試。
此方案的缺點(diǎn)為
(1)測試人員需要編寫測試代碼,測試代碼的正確性得不到保障,從而影響測試的正確性。
(2)測試人員增加測試用例就需要在被測代碼中新增測試代碼,從而導(dǎo)致代碼需要重新編譯連接,而嵌入式軟件的編譯連接和加載一般需要很長的時(shí)間,這樣測試效率就大大下降。
(3)測試人員對(duì)一些復(fù)雜數(shù)據(jù)類型的變量的訪問依然困難。

發(fā)明內(nèi)容
有鑒于上述問題,本發(fā)明的目的就是為了解決如下的技術(shù)問題
(1)測試人員在嵌入式軟件測試中不需要在被測系統(tǒng)中加測試代碼,就可以進(jìn)行測試。
(2)支持對(duì)復(fù)雜數(shù)據(jù)類型的變量訪問。
(3)支持對(duì)入口參數(shù)為復(fù)雜數(shù)據(jù)類型的函數(shù)的調(diào)用。
本方案的前提是被測軟件在編譯時(shí)包含debug信息,否則本方案不能全部解決上述問題。
為實(shí)現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案
一種嵌入式軟件自動(dòng)化測試的裝置,適用于在編譯時(shí)包含debug信息的被測軟件,包括提供對(duì)TCL腳本語言進(jìn)行解釋的TCL內(nèi)核解釋器及與被測系統(tǒng)連接并提供被測系統(tǒng)信息的目標(biāo)機(jī)服務(wù)器模塊,其特征在于還包括GDB代理模塊和GDB調(diào)試器模塊;
所述TCL內(nèi)核解釋器通過GDB代理模塊與GDB調(diào)試器模塊進(jìn)行通信;
所述GDB調(diào)試器模塊通過管道通信與目標(biāo)機(jī)服務(wù)器模塊進(jìn)行通信。
所述的GDB代理模塊包括GDB的TCL擴(kuò)展接口模塊、用戶界面模塊和消息命令處理模塊;
所述GDB的TCL擴(kuò)展接口模塊接收并傳遞由TCL內(nèi)核解釋器傳送來的命令并輸入給消息處理模塊,并將消息命令處理模塊反饋的結(jié)果傳遞給TCL內(nèi)核解釋器;
所述用戶界面模塊傳遞用戶輸入的命令給消息處理模塊,并將消息處理模塊反饋的信息傳遞給用戶界面模塊;
所述消息命令處理模塊對(duì)消息命令進(jìn)行接收、返回和處理。
所述的消息命令處理模塊進(jìn)一步包括
啟動(dòng)GDB調(diào)試器模塊,發(fā)送啟動(dòng)命令給GDB調(diào)試器模塊;
所述的執(zhí)行文件加載模塊通過管道連接GDB調(diào)試器模塊,完成對(duì)目標(biāo)機(jī)服務(wù)器模塊的被測軟件加載;
所述的命令執(zhí)行模塊,通過管道連接GDB調(diào)試器模塊,依據(jù)命令發(fā)送到不同的GDB調(diào)試器;
所述的命令結(jié)果分析模塊,接收由GDB輸出管道守候線程發(fā)送回來的命令執(zhí)行結(jié)果。
一種嵌入式軟件自動(dòng)化測試的方法,適用于在編譯時(shí)包含debug信息的被測軟件,其特征在于包括以下步驟
a、啟動(dòng)目標(biāo)機(jī)服務(wù)器模塊,連接駐留在被測系統(tǒng)中的代理模塊;
b、通過GDB代理模塊中的命令啟動(dòng)GDB(The GNU Source-1evelDebugger)調(diào)試器去連接目標(biāo)機(jī)服務(wù)器模塊;
c、用戶向被測軟件發(fā)送的測試命令,GDB代理模塊通過不同的管道發(fā)送到不同的GDB調(diào)試器;
d、GDB調(diào)試器將命令執(zhí)行結(jié)果返回GDB代理模塊并分析結(jié)果是否完整,如果不完整繼續(xù)等待執(zhí)行結(jié)果,如果完整,則返回用戶。
所述的嵌入式軟件自動(dòng)化測試的方法,用戶以TCL腳本語言編寫輸入GDB調(diào)試器命令。
所述的嵌入式軟件自動(dòng)化測試的方法,步驟b中的GDB代理模塊是在TCL內(nèi)核解釋器中依靠管道通信控制GDB調(diào)試器的代理接口。
所述的嵌入式軟件自動(dòng)化測試的方法,步驟b進(jìn)一步包括
GDB代理模塊將GDB調(diào)試器的標(biāo)準(zhǔn)輸入輸出重定向固定管道中,同時(shí)啟動(dòng)兩個(gè)管道守候線程接收GDB調(diào)試器的輸出。
所述的嵌入式軟件自動(dòng)化測試的方法,GDB代理模塊接收輸入命令的過程進(jìn)一步可分為
當(dāng)輸入的命令是TCL內(nèi)核解釋器中的命令,為GDB調(diào)試器命令時(shí),該命令通過TCL擴(kuò)展接口進(jìn)入GDB代理模塊;
當(dāng)輸入的命令為用戶輸入時(shí),命令通過用戶界面進(jìn)入GDB代理模塊。
利用此技術(shù)方案進(jìn)行嵌入式軟件的單元和集成測試,有以下好處
1、測試人員不需要在被測系統(tǒng)中加測試代碼,就可以進(jìn)行測試,非常方便。
2、測試功能強(qiáng)大,可以直接執(zhí)行函數(shù),查詢變量和給變量賦值。
3、使用方法簡單,測試人員容易上手。
本發(fā)明經(jīng)過在MGW產(chǎn)品的單元和集成測試中實(shí)驗(yàn)使用,效果良好。


圖1是Tomado提供的嵌入式軟件開發(fā)環(huán)境框圖2是通過TCL解釋器進(jìn)行嵌入式軟件測試原理圖3是本發(fā)明結(jié)合TCL和Tornado進(jìn)行嵌入式軟件測試的原理框圖4是本發(fā)明中GDB代理模塊基本原理框圖。
具體實(shí)施例方式
下面結(jié)合說明書附圖來說明本發(fā)明的具體實(shí)施方式
。
本發(fā)明技術(shù)方案的總體框圖如圖3所示,圖3是結(jié)合TCL和GDB調(diào)試器進(jìn)行嵌入式軟件測試的原理框圖。在圖3中,灰框部分是本發(fā)明技術(shù)方案密切相關(guān)的部分。
一種嵌入式軟件自動(dòng)化測試的裝置,適用于在編譯時(shí)包含debug信息的被測軟件,包括提供對(duì)TCL腳本語言進(jìn)行解釋的TCL內(nèi)核解釋器及與被測系統(tǒng)連接并提供被測系統(tǒng)信息的目標(biāo)機(jī)服務(wù)器(Target Server)模塊,所述裝置還包括GDB代理模塊、駐留在本地主機(jī)的GDB調(diào)試器模塊;所述TCL內(nèi)核解釋器通過GDB代理模塊與GDB調(diào)試器模塊進(jìn)行通信;所述GDB調(diào)試器模塊通過管道通信與目標(biāo)機(jī)服務(wù)器模塊進(jìn)行通信。
請參考圖4,所述的GDB代理模塊包括GDB的TCL擴(kuò)展接口模塊、用戶界面模塊和消息命令處理模塊;所述GDB代理模塊接收并傳遞由TCL內(nèi)核解釋器傳送來的命令并輸入給消息處理模塊,并將消息命令處理模塊反饋的結(jié)果傳遞給TCL內(nèi)核解釋器;所述用戶界面模塊傳遞用戶輸入的命令給消息處理模塊,并將消息處理模塊反饋的信息傳遞給用戶界面模塊;所述消息命令處理模塊對(duì)消息命令進(jìn)行接收、返回和處理。
所述的消息命令處理模塊進(jìn)一步包括啟動(dòng)GDB調(diào)試器模塊,發(fā)送啟動(dòng)命令給GDB調(diào)試器模塊;所述的執(zhí)行文件加載模塊通過管道連接GDB調(diào)試器模塊,完成對(duì)Target Server模塊的被測軟件加載;所述的命令執(zhí)行模塊,通過管道連接GDB調(diào)試器模塊,依據(jù)命令發(fā)送到不同的GDB調(diào)試器;所述的命令結(jié)果分析模塊,接收由GDB輸出管道守候線程發(fā)送回來的命令執(zhí)行結(jié)果。
本發(fā)明提供的嵌入式軟件自動(dòng)化測試的方法,適用于在編譯時(shí)包含debug信息的被測軟件,包括以下步驟
a、啟動(dòng)目標(biāo)機(jī)服務(wù)器(Target Server)模塊,連接駐留在被測系統(tǒng)中的代理模塊;
b、通過GDB代理模塊中的命令啟動(dòng)GDB(The GNU Source-level Debugger)調(diào)試器去連接目標(biāo)機(jī)服務(wù)器模塊;
c、用戶向被測軟件發(fā)送的測試命令,GDB代理通過不同的管道發(fā)送到GDB調(diào)試器;
d、GDB調(diào)試器將命令執(zhí)行結(jié)果返回GDB代理模塊并分析結(jié)果是否完整,如果不完整繼續(xù)等待執(zhí)行結(jié)果,如果完整,則返回用戶。
在執(zhí)行上述方法過程中,用戶是以TCL腳本語言編寫輸入GDB調(diào)試器命令的;步驟b中的GDB代理模塊是在TCL內(nèi)核解釋器中依靠管道通信控制GDB調(diào)試器的代理接口,且步驟b進(jìn)一步包括GDB代理模塊將GDB調(diào)試器的標(biāo)準(zhǔn)輸入輸出重定向固定管道中,同時(shí)啟動(dòng)兩個(gè)管道守候線程接收GDB調(diào)試器的輸出。
所述GDB代理模塊接收輸入命令的過程進(jìn)一步可分為當(dāng)輸入的命令是TCL內(nèi)核解釋器中的命令,為GDB調(diào)試器命令命令時(shí),該命令通過TCL擴(kuò)展接口與GDB代理模塊交互;當(dāng)輸入的命令為用戶輸入時(shí),命令通過用戶界面與GDB代理模塊交互。
可見,本發(fā)明中在TCL內(nèi)核解釋器中增加了控制GDB調(diào)試器的代理接口,這樣通過TCL腳本集中控制GDB調(diào)試器,從而可以使用GDB調(diào)試器查看變量,給變量賦值,值得一提的是,因?yàn)镚DB調(diào)試器可以將一段內(nèi)存強(qiáng)制轉(zhuǎn)化為某種數(shù)據(jù)類型的變量,這樣即使被測代碼中函數(shù)的入口參數(shù)比較復(fù)雜,本發(fā)明也有辦法解決,解決方式如下
(1)利用GDB調(diào)試器調(diào)用分配內(nèi)存的函數(shù)(如malloc)得到內(nèi)存;
(2)利用GDB調(diào)試器命令將此段內(nèi)存格式化為需要的數(shù)據(jù)類型變量;
(3)使用GDB調(diào)試器調(diào)用被測函數(shù),入口參數(shù)就是上面已經(jīng)被格式化的內(nèi)存塊首地址;
(4)最后得到函數(shù)的執(zhí)行結(jié)果。
模塊說明
(1)TCL內(nèi)核解釋器使用網(wǎng)上成熟源碼,其功能與標(biāo)準(zhǔn)TCL一致。
(2)GDB代理接口,其軟件框圖如圖4所示,圖4是GDB調(diào)試器代理模塊的基本原理框圖。由圖4可知,GDB調(diào)試器代理主要是依靠管道通信向GDB發(fā)起命令請求,同時(shí)依靠管道得到命令的響應(yīng)信息。
(3)GDB調(diào)試器為Tornado軟件提供的支持各種CPU類型的GDB調(diào)試器,本發(fā)明可直接使用。
(4)目標(biāo)機(jī)服務(wù)器由Tomado軟件提供,主要是負(fù)責(zé)響應(yīng)GDB調(diào)試器的命令請求,提供被測系統(tǒng)的信息。
(5)代理模塊為駐留在被測系統(tǒng)的代理程序,由Tornado軟件提供。
下面詳細(xì)介紹一下整個(gè)方案的流程
(1)啟動(dòng)目標(biāo)機(jī)服務(wù)器去連接被測系統(tǒng)的代理模塊,注意代理模塊駐留在被測系統(tǒng)中。
(2)通過命令啟動(dòng)GDB調(diào)試器去連接目標(biāo)機(jī)服務(wù)器,注意因?yàn)镚DB調(diào)試器都是可執(zhí)行的win32 console程序,GDB代理模塊在啟動(dòng)它的過程中,將它們的標(biāo)準(zhǔn)輸入輸出復(fù)位向固定管道中,同時(shí)啟動(dòng)兩個(gè)管道守候線程接收GDB調(diào)試器的輸出。
(3)通過命令向目標(biāo)機(jī)服務(wù)器加載被測軟件,如果被測系統(tǒng)中已經(jīng)有了被測軟件,此過程可以省略。
(4)此時(shí),用戶可以向被測軟件發(fā)送測試命令,GDB代理接收到測試命令后,通過管道將命令發(fā)送GDB調(diào)試器,GDB調(diào)試器收到命令后,并執(zhí)行,然后將結(jié)果返回,被GDB代理模塊的管道守候線程獲得,GDB代理模塊分析結(jié)果是否完整,如果不完整繼續(xù)等待執(zhí)行結(jié)果,如果完整,則返回給用戶。
(5)如果用戶編寫了TCL腳本來輸入GDB調(diào)試器命令,就可以進(jìn)行嵌入式軟件的自動(dòng)化測試。
下面舉一具體實(shí)施例說明本發(fā)明
typedef struct TYPE1{int m_int;char m_char;char*m_charPtr;char m_charList[5];}TYPE1;TYPE1 gType1;int FuncTest5(TYPE 1*pTypel){int ret=pType 1->m_int;retum ret;<!-- SIPO <DP n="8"> --><dp n="d8"/>}
測試腳本如下
set addr[tshell vxsim″shParse malloc 11″]
tgdb vxsim″set(\{TYPE1\$addr}.m_int=123456″
set result[tgdb vxsim″shParse FuncTest5 $addr″]
puts″$result″
tgdb vxsim″shParse free $addr″
執(zhí)行結(jié)果
123456
注意,這里的tgdb就是注冊在TCL內(nèi)核中控制GDB調(diào)試器的命令;vxsim為目標(biāo)機(jī)服務(wù)器的名稱。
本發(fā)明的有益效果在于利用此方案進(jìn)行嵌入式軟件的單元和集成測試,
可以產(chǎn)生以下好處
1、測試人員不需要在被測系統(tǒng)中加測試代碼,就可以進(jìn)行測試,非常方便。
2、測試功能強(qiáng)大,可以直接執(zhí)行函數(shù),查詢變量和給變量賦值。
3、使用方法簡單,測試人員容易上手。
權(quán)利要求
1、一種嵌入式軟件自動(dòng)化測試的裝置,適用于在編譯時(shí)包含debug信息的被測軟件,包括提供對(duì)TCL腳本語言進(jìn)行解釋的TCL內(nèi)核解釋器及與被測系統(tǒng)連接并提供被測系統(tǒng)信息的目標(biāo)機(jī)服務(wù)器(Target Server)模塊,其特征在于還包括GDB代理模塊、駐留在本地主機(jī)的GDB調(diào)試器模塊;
所述TCL內(nèi)核解釋器通過GDB代理模塊與GDB調(diào)試器模塊進(jìn)行通信;
所述GDB調(diào)試器模塊通過管道通信與目標(biāo)機(jī)服務(wù)器模塊進(jìn)行通信。
2、根據(jù)權(quán)利要求1所述的嵌入式軟件自動(dòng)化測試的裝置,其特征在于所述的GDB代理模塊包括GDB的TCL擴(kuò)展接口模塊、用戶界面模塊和消息命令處理模塊;
所述GDB代理模塊接收并傳遞由TCL內(nèi)核解釋器傳送來的命令并輸入給消息處理模塊,并將消息命令處理模塊反饋的結(jié)果傳遞給TCL內(nèi)核解釋器;
所述用戶界面模塊傳遞用戶輸入的命令給消息處理模塊,并將消息處理模塊反饋的信息傳遞給用戶界面模塊;
所述消息命令處理模塊對(duì)消息命令進(jìn)行接收、返回和處理。
3、根據(jù)權(quán)利要求2所述的嵌入式軟件自動(dòng)化測試的裝置,其特征在于所述的消息命令處理模塊進(jìn)一步包括
啟動(dòng)GDB調(diào)試器模塊,發(fā)送啟動(dòng)命令給GDB調(diào)試器模塊;
所述的執(zhí)行文件加載模塊通過管道連接GDB調(diào)試器模塊,完成對(duì)TargetServer模塊的被測軟件加載;
所述的命令執(zhí)行模塊,通過管道連接GDB調(diào)試器模塊,依據(jù)命令發(fā)送到不同的GDB調(diào)試器;
所述的命令結(jié)果分析模塊,接收由GDB輸出管道守候線程發(fā)送回來的命令執(zhí)行結(jié)果。
4、一種嵌入式軟件自動(dòng)化測試的方法,適用于在編譯時(shí)包含debug信息的被測軟件,其特征在于包括以下步驟
a、啟動(dòng)目標(biāo)機(jī)服務(wù)器(Target Server)模塊,連接駐留在被測系統(tǒng)中的代理模塊;
b、通過GDB代理模塊中的命令啟動(dòng)GDB(The GNU Source-level Debugger)調(diào)試器去連接目標(biāo)機(jī)服務(wù)器模塊;
c、用戶向被測軟件發(fā)送的測試命令,GDB代理通過不同的管道發(fā)送到GDB調(diào)試器;
d、GDB調(diào)試器將命令執(zhí)行結(jié)果返回GDB代理模塊并分析結(jié)果是否完整,如果不完整繼續(xù)等待執(zhí)行結(jié)果,如果完整,則返回用戶。
5、根據(jù)權(quán)利要求4所述的嵌入式軟件自動(dòng)化測試的方法,其特征在于用戶以TCL腳本語言編寫輸入GDB調(diào)試器命令。
6、根據(jù)權(quán)利要求4所述的嵌入式軟件自動(dòng)化測試的方法,其特征在于步驟b中的GDB代理模塊是在TCL內(nèi)核解釋器中依靠管道通信控制GDB調(diào)試器的代理接口。
7、根據(jù)權(quán)利要求4所述的嵌入式軟件自動(dòng)化測試的方法,其特征在于步驟b進(jìn)一步包括
GDB代理模塊將GDB調(diào)試器的標(biāo)準(zhǔn)輸入輸出重定向固定管道中,同時(shí)啟動(dòng)兩個(gè)管道守候線程接收GDB調(diào)試器的輸出。
8、根據(jù)權(quán)利要求4所述的嵌入式軟件自動(dòng)化測試的方法,其特征在于GDB代理模塊接收輸入命令的過程進(jìn)一步可分為
當(dāng)輸入的命令是TCL內(nèi)核解釋器中的命令,為GDB調(diào)試器命令命令時(shí),該命令通過TCL擴(kuò)展接口與GDB代理模塊交互;
當(dāng)輸入的命令為用戶輸入時(shí),命令通過用戶界面與GDB代理模塊交互。
全文摘要
本發(fā)明涉及計(jì)算機(jī)軟件測試領(lǐng)域,一種嵌入式軟件自動(dòng)化測試的裝置及其方法。本發(fā)明的目的是利用TCL擴(kuò)展控制GDB調(diào)試器進(jìn)行嵌入式軟件的自動(dòng)化測試。主要步驟如下a.啟動(dòng)被測系統(tǒng),并使用目標(biāo)機(jī)服務(wù)器連接被測系統(tǒng)中的代理模塊;b.啟動(dòng)GDB調(diào)試器連接目標(biāo)機(jī)服務(wù)器;c.GDB代理模塊接收用戶向被測軟件發(fā)送的測試命令,通過管道發(fā)送到GDB調(diào)試器;e.GDB調(diào)試器將命令執(zhí)行結(jié)果返回,GDB代理模塊分析結(jié)果返回用戶。
文檔編號(hào)G06F11/36GK1737775SQ20041006430
公開日2006年2月22日 申請日期2004年8月18日 優(yōu)先權(quán)日2004年8月18日
發(fā)明者金雪鋒 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
怀远县| 凤城市| 察哈| 黄冈市| 竹山县| 永春县| 乌鲁木齐市| 应用必备| 长子县| 张家港市| 稻城县| 玉环县| 木兰县| 洛阳市| 萨嘎县| 固原市| 天全县| 衡阳县| 崇阳县| 湟中县| 马尔康县| 长垣县| 陆河县| 文水县| 乐至县| 乌恰县| 长岭县| 邮箱| 昌黎县| 东乌珠穆沁旗| 偏关县| 宿松县| 宣化县| 鄂托克旗| 祁门县| 湟中县| 房山区| 望奎县| 金川县| 沿河| 平阳县|