亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

軟件測(cè)試方法及其系統(tǒng)的制作方法

文檔序號(hào):6407160閱讀:98來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):軟件測(cè)試方法及其系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及測(cè)試技術(shù)領(lǐng)域,尤其涉及一種軟件測(cè)試的方法及其系統(tǒng)。
背景技術(shù)
在現(xiàn)有很多通信或計(jì)算機(jī)設(shè)備中,或由多相通信或計(jì)算機(jī)設(shè)備組成的通信系統(tǒng)或計(jì)算機(jī)網(wǎng)絡(luò)中,有很多數(shù)據(jù)的處理過(guò)程、設(shè)備的操作及控制都是由運(yùn)行在所述設(shè)備或系統(tǒng)或網(wǎng)絡(luò)中的軟件來(lái)完成??梢?jiàn),在將軟件正式安裝并運(yùn)行在所述的設(shè)備或系統(tǒng)或網(wǎng)絡(luò)中之前,對(duì)軟件進(jìn)行嚴(yán)格而全面的測(cè)試以保證其正常運(yùn)行是非常重要的。
在現(xiàn)有技術(shù)中,軟件測(cè)試主要分為三種類(lèi)型系統(tǒng)測(cè)試、集成測(cè)試和單元測(cè)試。其中的單元測(cè)試就是對(duì)整個(gè)軟件程序中的每個(gè)基本組成單元分別進(jìn)行的測(cè)試,所謂“單元”是指具有明確的功能、明確的與其他“單元”部分的接口定義、可清晰的與其他“單元”劃分開(kāi)的程序段。
與其他兩種測(cè)試類(lèi)型相比,單元測(cè)試重點(diǎn)在于發(fā)現(xiàn)軟件程序設(shè)計(jì)或?qū)崿F(xiàn)的邏輯錯(cuò)誤,檢查軟件程序的健壯性,一般是對(duì)軟件程序設(shè)計(jì)或?qū)崿F(xiàn)中所描述的具體設(shè)計(jì)單元進(jìn)行測(cè)試。單元測(cè)試具體有黑盒測(cè)試技術(shù)和白盒測(cè)試技術(shù),其中又以白盒測(cè)試技術(shù)應(yīng)用更為廣泛。所謂白盒測(cè)試技術(shù)即是在分析被測(cè)試單元內(nèi)部的結(jié)構(gòu)后,通過(guò)對(duì)被測(cè)試單元的輸入輸出用例進(jìn)行構(gòu)造,達(dá)到對(duì)被測(cè)試單元內(nèi)程序測(cè)試路徑的最大覆蓋。
在實(shí)際的測(cè)試中,由于通常被測(cè)試單元本身不是一個(gè)獨(dú)立的程序,也不是一個(gè)完整的可運(yùn)行的軟件系統(tǒng),所以利用單元測(cè)試進(jìn)行測(cè)試,就得為每個(gè)被測(cè)試單元開(kāi)發(fā)樁函數(shù)(stub)。所述“樁函數(shù)”是指用于替代被測(cè)試單元調(diào)用的一個(gè)程序段,樁函數(shù)在被調(diào)用時(shí),會(huì)做一些少量的數(shù)據(jù)操作后返回給調(diào)用它的被測(cè)試單元。對(duì)于整個(gè)測(cè)試系統(tǒng)來(lái)說(shuō),樁函數(shù)是額外的開(kāi)銷(xiāo),是必須開(kāi)發(fā)用于軟件測(cè)試使用但又不能和最終軟件程序一起提交的編程開(kāi)銷(xiāo)。
隨著軟件測(cè)試技術(shù)的發(fā)展,軟件測(cè)試技術(shù)迫切需要提供一種高效的樁函數(shù)構(gòu)造手段,以盡量減少軟件測(cè)試的額外開(kāi)銷(xiāo)。
在現(xiàn)有軟件測(cè)試技術(shù)中,大多是使用靜態(tài)樁技術(shù)來(lái)實(shí)現(xiàn)樁函數(shù),即需要測(cè)試人員首先用具體的編程語(yǔ)言編寫(xiě)測(cè)試所需要的樁函數(shù),然后同被測(cè)試單元的代碼一起進(jìn)行編譯及鏈接生成可執(zhí)行文件,然后運(yùn)行所述可執(zhí)行文件,以獲取測(cè)試結(jié)果。這樣,當(dāng)測(cè)試人員發(fā)現(xiàn)需要修改被測(cè)試單元的代碼時(shí),就需要進(jìn)行重復(fù)編譯及鏈接等過(guò)程,當(dāng)被測(cè)系統(tǒng)復(fù)雜龐大時(shí),這樣的重復(fù)編譯及鏈接操作就會(huì)越頻繁,最終將嚴(yán)重導(dǎo)致測(cè)試效率的越低。
參照?qǐng)D1,該圖是現(xiàn)有技術(shù)中使用樁函數(shù)進(jìn)行軟件測(cè)試的簡(jiǎn)單處理過(guò)程示意圖;如該圖所示,A函數(shù)和B函數(shù)均為被測(cè)試軟件系統(tǒng)中的函數(shù)單元,A函數(shù)為被測(cè)函數(shù)單元,且B函數(shù)被A函數(shù)調(diào)用,則A函數(shù)被測(cè)試的過(guò)程如下被測(cè)試A函數(shù)調(diào)用B函數(shù)時(shí),B函數(shù)將跳轉(zhuǎn)到啞巴函數(shù)群20中對(duì)應(yīng)的啞巴函數(shù);該啞巴函數(shù)調(diào)用補(bǔ)丁處理中心10的接口,通知補(bǔ)丁處理中心10有一個(gè)函數(shù)進(jìn)入,需要執(zhí)行對(duì)應(yīng)的樁函數(shù)。調(diào)用樁函數(shù)可以采用對(duì)ESP寄存器(ESP寄存器為用來(lái)保存調(diào)用棧指針的寄存器)的訪問(wèn),根據(jù)調(diào)用樁函數(shù)時(shí)的輸入值定位到對(duì)應(yīng)的樁函數(shù),這里以調(diào)用到樁函數(shù)C為例進(jìn)行說(shuō)明。
這樣,樁函數(shù)C可以替換B函數(shù)對(duì)A函數(shù)調(diào)用B函數(shù)時(shí)輸入的參數(shù)進(jìn)行處理,完成A函數(shù)的測(cè)試。
但是上述采用樁函數(shù)的方式對(duì)被測(cè)軟件系統(tǒng)進(jìn)行測(cè)試的過(guò)程主要存在如下不足在由B函數(shù)調(diào)用對(duì)應(yīng)樁函數(shù)C的調(diào)用過(guò)程中,需要對(duì)B函數(shù)添加保護(hù)程序代碼,并要求修改正在運(yùn)行的被測(cè)程序中某些代碼段的內(nèi)容,因此增加了測(cè)試之外的額外開(kāi)銷(xiāo),影響了被測(cè)軟件系統(tǒng)的性能;
被測(cè)A函數(shù)只能在運(yùn)行之前調(diào)用相應(yīng)的樁函數(shù),而在運(yùn)行之后不能再調(diào)用相關(guān)樁函數(shù),這樣在測(cè)試過(guò)程中就不能對(duì)測(cè)試的返回值進(jìn)行控制處理,測(cè)試的靈活性較差;同時(shí)由于一般情況下,樁函數(shù)都是用腳本語(yǔ)言(如python語(yǔ)言、TCL語(yǔ)言等)編寫(xiě)的函數(shù),而被測(cè)函數(shù)單元卻是用高級(jí)語(yǔ)言(如C、C++或者pascal語(yǔ)言等)編寫(xiě)的函數(shù),在軟件測(cè)試過(guò)程中,被調(diào)用的樁函數(shù)首先需要編譯成高級(jí)語(yǔ)言,再對(duì)被測(cè)函數(shù)輸入的參數(shù)進(jìn)行處理,從而降低了測(cè)試效率。

發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題是提出一種軟件測(cè)試方法及其系統(tǒng),以降低軟件測(cè)試過(guò)程的額外開(kāi)銷(xiāo),并提高軟件測(cè)試的靈活性。
為解決上述問(wèn)題,本發(fā)明提出了一種軟件測(cè)試方法,用于對(duì)被測(cè)軟件系統(tǒng)中的每個(gè)函數(shù)單元進(jìn)行測(cè)試,包括設(shè)置步驟1)為每個(gè)函數(shù)單元分別設(shè)置函數(shù)地址表和套子函數(shù);2)為每個(gè)函數(shù)單元編寫(xiě)樁函數(shù);3)將套子函數(shù)的地址跳轉(zhuǎn)偏移和樁函數(shù)的地址分別記錄到對(duì)應(yīng)的函數(shù)單元的函數(shù)地址表中;測(cè)試步驟4)被測(cè)函數(shù)單元運(yùn)行到調(diào)用其他函數(shù)單元的調(diào)用指令時(shí),跳轉(zhuǎn)運(yùn)行該被調(diào)函數(shù)單元的函數(shù)地址表;5)根據(jù)函數(shù)地址表中記錄的套子函數(shù)的地址跳轉(zhuǎn)偏移,跳轉(zhuǎn)運(yùn)行對(duì)應(yīng)的套子函數(shù);6)套子函數(shù)根據(jù)函數(shù)地址表中記錄的樁函數(shù)地址,調(diào)用執(zhí)行對(duì)應(yīng)的樁函數(shù)后返回到該被測(cè)函數(shù)單元的調(diào)用指令處繼續(xù)后續(xù)測(cè)試。
其中步驟2)中所述樁函數(shù)包括用于對(duì)輸入測(cè)試參數(shù)進(jìn)行分析處理的前插樁函數(shù)和用于對(duì)測(cè)試結(jié)果參數(shù)進(jìn)行分析處理的后插樁函數(shù)。
則所述步驟6)進(jìn)一步包括套子函數(shù)根據(jù)函數(shù)地址表中記錄的前插樁函數(shù)地址,調(diào)用執(zhí)行前插樁函數(shù);并根據(jù)函數(shù)地址表中記錄的后插樁函數(shù)地址,調(diào)用執(zhí)行后插樁函數(shù)。
其中所述步驟3)中還包括分別將每個(gè)函數(shù)單元的地址記錄到對(duì)應(yīng)的函數(shù)地址表中的步驟。
則所述步驟6)中還包括套子函數(shù)根據(jù)被調(diào)函數(shù)單元的函數(shù)地址表中記錄的函數(shù)單元地址,調(diào)用執(zhí)行被調(diào)函數(shù)單元的步驟。
其中所述步驟6)進(jìn)一步包括套子函數(shù)根據(jù)函數(shù)地址表中記錄的前插樁函數(shù)地址,調(diào)用執(zhí)行前插樁函數(shù);并根據(jù)該被調(diào)函數(shù)單元的函數(shù)地址表中記錄的函數(shù)單元地址,調(diào)用執(zhí)行被調(diào)函數(shù)單元;及根據(jù)函數(shù)地址表中記錄的后插樁函數(shù)地址,調(diào)用執(zhí)行后插樁函數(shù)。
其中所述步驟1)中在將每個(gè)函數(shù)單元的源代碼形式編譯鏈接成目標(biāo)代碼形式的過(guò)程中為每個(gè)函數(shù)單元設(shè)置套子函數(shù)和函數(shù)地址表;并在步驟3)中將套子函數(shù)的地址跳轉(zhuǎn)偏移和對(duì)應(yīng)的函數(shù)單元的地址記錄到所述函數(shù)地址表中。
其中所述步驟3)在將對(duì)應(yīng)的樁函數(shù)的源代碼編譯鏈接成可執(zhí)行的目標(biāo)代碼進(jìn)行存儲(chǔ)后,將樁函數(shù)的存儲(chǔ)位置地址記錄到所述函數(shù)地址表中。
其中所述步驟2)中利用高級(jí)語(yǔ)言編寫(xiě)樁函數(shù)。
相應(yīng)地,本發(fā)明還提出了一種軟件測(cè)試系統(tǒng),包括測(cè)試控制模塊,用于對(duì)所述測(cè)試系統(tǒng)進(jìn)行初始化,并在初始化過(guò)程中為每個(gè)函數(shù)單元設(shè)置函數(shù)地址表和套子函數(shù);
編譯鏈接模塊,與所述測(cè)試控制模塊連接,用于將外界輸入的測(cè)試指令編譯鏈接成可執(zhí)行的目標(biāo)代碼,并將為每個(gè)函數(shù)單元編寫(xiě)的樁函數(shù)源代碼編譯鏈接成可執(zhí)行的目標(biāo)代碼后存儲(chǔ);地址表管理模塊,與所述測(cè)試控制模塊連接,用于管理為每個(gè)函數(shù)單元設(shè)置的函數(shù)地址表,并在函數(shù)地址表中記錄對(duì)應(yīng)的函數(shù)單元地址、套子函數(shù)地址跳轉(zhuǎn)偏移和樁函數(shù)的地址;套子函數(shù)管理模塊,與所述測(cè)試控制模塊連接,用于管理為每個(gè)函數(shù)單元設(shè)置的套子函數(shù),并在測(cè)試過(guò)程中根據(jù)函數(shù)地址表記錄的地址信息,控制相應(yīng)的套子函數(shù)調(diào)用執(zhí)行相關(guān)的樁函數(shù)或函數(shù)單元。
本發(fā)明軟件測(cè)試方法及其系統(tǒng)能夠達(dá)到如下的有益效果A.通過(guò)為每個(gè)函數(shù)單元設(shè)置套子函數(shù)和函數(shù)地址表,從而可以實(shí)現(xiàn)套子函數(shù)根據(jù)函數(shù)地址表中記錄的各個(gè)函數(shù)地址信息,調(diào)用執(zhí)行被調(diào)函數(shù)單元對(duì)應(yīng)的樁函數(shù),因此就避免了由被調(diào)函數(shù)單元調(diào)用相應(yīng)樁函數(shù)所需的額外保護(hù)代碼,降低了測(cè)試過(guò)程中的額外開(kāi)銷(xiāo);B.由于本發(fā)明使用每個(gè)函數(shù)單元的套子函數(shù)對(duì)相應(yīng)樁函數(shù)進(jìn)行調(diào)用,因此可以實(shí)現(xiàn)對(duì)多個(gè)樁函數(shù)分別進(jìn)行調(diào)用執(zhí)行的目的,如可以為每個(gè)函數(shù)單元分別設(shè)置前插樁函數(shù)和后插樁函數(shù),以實(shí)現(xiàn)對(duì)測(cè)試輸入?yún)?shù)和測(cè)試結(jié)果參數(shù)進(jìn)行分析控制的目的,因此提高了測(cè)試的靈活性;C.由于本發(fā)明采用高級(jí)語(yǔ)言對(duì)每個(gè)函數(shù)單元的樁函數(shù)進(jìn)行編寫(xiě),因此在軟件測(cè)試過(guò)程中,不用對(duì)樁函數(shù)進(jìn)行編譯后再使其對(duì)測(cè)試輸入?yún)?shù)和測(cè)試結(jié)果參數(shù)進(jìn)行分析,因此提高了軟件測(cè)試的效率。


圖1是現(xiàn)有技術(shù)中使用樁函數(shù)進(jìn)行軟件測(cè)試的簡(jiǎn)單處理過(guò)程示意圖;圖2是本發(fā)明軟件測(cè)試系統(tǒng)的結(jié)構(gòu)組成示意圖;圖3是本發(fā)明軟件測(cè)試方法使用插入樁方式對(duì)函數(shù)單元進(jìn)行測(cè)試的過(guò)程示意圖;圖4是本發(fā)明軟件測(cè)試方法使用覆蓋樁方式對(duì)函數(shù)單元進(jìn)行測(cè)試的過(guò)程示意圖。
具體實(shí)施例方式
由于一個(gè)完整的軟件程序可以從組成結(jié)構(gòu)上劃分為多個(gè)函數(shù)單元,而軟件測(cè)試過(guò)程就可以對(duì)軟件程序中的每個(gè)函數(shù)單元分別進(jìn)行測(cè)試,現(xiàn)有技術(shù)的白盒測(cè)試就是采用這種分別對(duì)每個(gè)函數(shù)單元進(jìn)行測(cè)試以完成對(duì)被測(cè)軟件系統(tǒng)進(jìn)行邏輯測(cè)試的目的。
而單元測(cè)試技術(shù)在對(duì)每個(gè)函數(shù)單元進(jìn)行測(cè)試的過(guò)程中,一般不能對(duì)被測(cè)函數(shù)單元進(jìn)行單獨(dú)測(cè)試,而是要依賴(lài)被測(cè)函數(shù)單元調(diào)用其他函數(shù)單元的功能來(lái)實(shí)現(xiàn),但是當(dāng)被調(diào)函數(shù)單元的功能沒(méi)有編寫(xiě)完善時(shí),則會(huì)影響到被測(cè)函數(shù)單元的測(cè)試結(jié)果,造成測(cè)試結(jié)果的不準(zhǔn)確。
所以為了在被調(diào)函數(shù)單元的功能沒(méi)有編寫(xiě)完善的情況下,仍能保證對(duì)被測(cè)函數(shù)單元進(jìn)行準(zhǔn)確性測(cè)試,這時(shí)就需要由測(cè)試人員預(yù)先為每個(gè)函數(shù)單元編寫(xiě)樁函數(shù),以使用編寫(xiě)的樁函數(shù)替換被調(diào)函數(shù)單元,來(lái)完成對(duì)被測(cè)函數(shù)單元的測(cè)試,而被編寫(xiě)了樁函數(shù)的函數(shù)單元這里定義為被打樁函數(shù)。
本發(fā)明軟件測(cè)試方法及其系統(tǒng)正是基于函數(shù)單元測(cè)試技術(shù),提出為軟件系統(tǒng)中的每個(gè)函數(shù)單元設(shè)置套子函數(shù),由套子函數(shù)來(lái)完成對(duì)函數(shù)單元的樁函數(shù)進(jìn)行調(diào)用執(zhí)行,同時(shí)使用套子函數(shù)對(duì)樁函數(shù)進(jìn)行調(diào)用的方式還可以擴(kuò)展樁函數(shù)功能,使軟件測(cè)試過(guò)程更為靈活。
本發(fā)明軟件測(cè)試方法及其系統(tǒng)提出的套子函數(shù)功能如下套子函數(shù)是對(duì)樁函數(shù)功能的擴(kuò)充,通過(guò)對(duì)函數(shù)單元前后插入樁函數(shù)的辦法來(lái)達(dá)到對(duì)函數(shù)單元的控制,套子函數(shù)可以調(diào)用執(zhí)行被打樁函數(shù),同時(shí)可以實(shí)現(xiàn)如下插入樁函數(shù)的功能在被打樁函數(shù)前運(yùn)行前插樁函數(shù),以獲得對(duì)被打樁函數(shù)接收的測(cè)試參數(shù)的控制;在被打樁函數(shù)后運(yùn)行后插樁函數(shù),以獲得對(duì)被打樁函數(shù)的輸出和返回值的控制;在套子函數(shù)里也可以實(shí)現(xiàn)不調(diào)用被打樁函數(shù),直接調(diào)用執(zhí)行相應(yīng)的樁函數(shù),以實(shí)現(xiàn)覆蓋樁的功能。另外,套子函數(shù)也可以直接針對(duì)被測(cè)函數(shù)單元,在樁函數(shù)里面添加任意功能的代碼,實(shí)現(xiàn)對(duì)被測(cè)函數(shù)單元的功能進(jìn)行擴(kuò)展,以對(duì)被測(cè)函數(shù)單元的運(yùn)行性能做準(zhǔn)確分析,并對(duì)被測(cè)函數(shù)單元運(yùn)行所使用的內(nèi)存資源進(jìn)行監(jiān)控。由此可見(jiàn),套子函數(shù)的設(shè)置可以實(shí)現(xiàn)豐富靈活的對(duì)函數(shù)單元進(jìn)行測(cè)試的目的。
下面結(jié)合附圖對(duì)本發(fā)明軟件測(cè)試方法及其系統(tǒng)的具體實(shí)施過(guò)程作進(jìn)一步的詳細(xì)描述。
參照?qǐng)D2,該圖是本發(fā)明軟件測(cè)試系統(tǒng)的結(jié)構(gòu)組成示意圖;圖中由被測(cè)軟件系統(tǒng)1和軟件測(cè)試系統(tǒng)2兩大部分組成。其中被測(cè)軟件系統(tǒng)1中的函數(shù)單元A為被測(cè)函數(shù)單元,函數(shù)單元A在被測(cè)過(guò)程中會(huì)調(diào)用函數(shù)單元B,則測(cè)試人員會(huì)預(yù)先為函數(shù)單元B編寫(xiě)樁函數(shù),并將編寫(xiě)的樁函數(shù)的源代碼形式編譯鏈接成可執(zhí)行的目標(biāo)代碼形式存儲(chǔ)在內(nèi)存中;則這時(shí)函數(shù)單元B就是前述定義的被打樁函數(shù)單元。軟件測(cè)試系統(tǒng)2主要包括測(cè)試控制模塊100、編譯鏈接模塊200、地址表管理模塊300和套子函數(shù)管理模塊400,各個(gè)模塊之間的聯(lián)系及其作用如下測(cè)試控制模塊100,用于對(duì)整個(gè)軟件測(cè)試系統(tǒng)2進(jìn)行初始化處理,以完成為被測(cè)軟件系統(tǒng)1中的每個(gè)函數(shù)單元分別設(shè)置函數(shù)地址表和套子函數(shù);測(cè)試控制模塊100主要負(fù)責(zé)軟件測(cè)試系統(tǒng)2的初始化,即接受外界的測(cè)試指令和測(cè)試人員編寫(xiě)的測(cè)試代碼,在測(cè)試時(shí)是測(cè)試運(yùn)行的發(fā)起者。處理軟件測(cè)試系統(tǒng)的初始化主要是指負(fù)責(zé)將被測(cè)軟件系統(tǒng)1的源代碼編譯鏈接成可執(zhí)行的目標(biāo)代碼,即成為可執(zhí)行的被測(cè)系統(tǒng),在此對(duì)被測(cè)軟件系統(tǒng)進(jìn)行編譯鏈接的過(guò)程中同時(shí)給被測(cè)軟件系統(tǒng)1中的每個(gè)函數(shù)單元(函數(shù)單元是否被打樁,在此并不確定,所以這個(gè)地方指被測(cè)軟件系統(tǒng)1中的所有函數(shù)單元)裝置上各自的套子函數(shù)。同時(shí)還要在此過(guò)程中為每個(gè)函數(shù)單元配置上一個(gè)函數(shù)地址表,以記載和對(duì)應(yīng)函數(shù)單元相關(guān)的每個(gè)函數(shù)在內(nèi)存中的地址信息,其中每個(gè)套子函數(shù)410由后續(xù)的套子函數(shù)管理模塊400來(lái)管理,而每個(gè)函數(shù)地址表310由地址表管理模塊300來(lái)管理,測(cè)試控制模塊100通過(guò)調(diào)用地址表管理模塊300和套子函數(shù)管理模塊400提供的應(yīng)用程序接口(API,Application ProgrammingInterface)來(lái)實(shí)現(xiàn)對(duì)整個(gè)軟件測(cè)試系統(tǒng)2的初始化。
測(cè)試過(guò)程舉例來(lái)說(shuō)明假設(shè)被測(cè)軟件系統(tǒng)中有函數(shù)單元myFunc,其調(diào)用了函數(shù)單元funcA,現(xiàn)在對(duì)函數(shù)單元myFunc進(jìn)行測(cè)試,就需要對(duì)函數(shù)單元funcA進(jìn)行編寫(xiě)樁函數(shù),那么funcA就是被打樁函數(shù)單元,用戶(hù)對(duì)其編寫(xiě)樁函數(shù)測(cè)試代碼,寫(xiě)了兩個(gè)樁函數(shù),即樁函數(shù)funcA_before(指插在函數(shù)單元funcA之前運(yùn)行的樁函數(shù),即前插樁函數(shù))和樁函數(shù)funcA_after(指插在函數(shù)單元funcA之后運(yùn)行的樁函數(shù),即后插樁函數(shù)),測(cè)試控制模塊100獲取這兩個(gè)樁函數(shù)的源代碼文本后就調(diào)用套子函數(shù)管理模塊400的API進(jìn)行處理。
編譯鏈接模塊200,與測(cè)試控制模塊100進(jìn)行邏輯連接,用于將外界輸入的測(cè)試指令編譯鏈接成可執(zhí)行的目標(biāo)代碼,并將測(cè)試人員為每個(gè)函數(shù)單元編寫(xiě)的樁函數(shù)的源代碼編譯鏈接成可執(zhí)行的目標(biāo)代碼后存儲(chǔ)在內(nèi)存在內(nèi)存中;其編譯鏈接過(guò)程既是目標(biāo)代碼(object)的導(dǎo)入過(guò)程這個(gè)過(guò)程可以實(shí)現(xiàn)樁函數(shù)的動(dòng)態(tài)導(dǎo)入,類(lèi)似于windows的動(dòng)態(tài)鏈接庫(kù)(Dynamic-Link Library)技術(shù)。編譯鏈接模塊200將測(cè)試人員編寫(xiě)好的樁函數(shù)源代碼或測(cè)試指令編譯鏈接成目標(biāo)代碼,然后動(dòng)態(tài)導(dǎo)入到正在運(yùn)行的被測(cè)軟件系統(tǒng)1中。
地址表管理模塊300,與測(cè)試控制模塊100進(jìn)行邏輯連接,用于管理為每個(gè)函數(shù)單元設(shè)置的函數(shù)地址表310,并在函數(shù)地址表310中記錄對(duì)應(yīng)的函數(shù)單元地址、套子函數(shù)地址跳轉(zhuǎn)偏移和每個(gè)樁函數(shù)的地址;本發(fā)明所提到的套子函數(shù)技術(shù)的實(shí)現(xiàn)主要依賴(lài)這個(gè)函數(shù)地址表。函數(shù)地址表310的設(shè)計(jì)是給每個(gè)被測(cè)函數(shù)單元分別分配一個(gè)表項(xiàng)所組成的,采用一字節(jié)對(duì)齊方式,每個(gè)函數(shù)地址表310的具體結(jié)構(gòu)如下

下面結(jié)合上面的函數(shù)地址表310結(jié)構(gòu)說(shuō)明地址表管理模塊300填寫(xiě)每個(gè)函數(shù)地址表項(xiàng)的過(guò)程在測(cè)試控制模塊100進(jìn)行系統(tǒng)初始化的過(guò)程中,會(huì)為被測(cè)軟件系統(tǒng)中的每個(gè)函數(shù)單元分配一個(gè)函數(shù)地址表310,如以被測(cè)軟件系統(tǒng)中的函數(shù)單元funcA(假設(shè)它是后來(lái)測(cè)試過(guò)程中被打樁的函數(shù)單元)為例,后續(xù)在對(duì)被測(cè)軟件系統(tǒng)進(jìn)行編譯鏈接的過(guò)程中將函數(shù)單元funcA的地址替換為funcA的函數(shù)地址表310的地址(因?yàn)楸粶y(cè)軟件系統(tǒng)的編譯鏈接是由測(cè)試人員來(lái)接管的,測(cè)試控制模塊100對(duì)被測(cè)軟件系統(tǒng)進(jìn)行初始化操作時(shí)會(huì)做這個(gè)工作),這樣就使得在測(cè)試過(guò)程中,當(dāng)運(yùn)行到本來(lái)應(yīng)該調(diào)用函數(shù)單元funcA的指令時(shí),就會(huì)跳轉(zhuǎn)運(yùn)行該函數(shù)單元funcA的函數(shù)地址表310中的相應(yīng)指令;同時(shí)將函數(shù)單元funA的真實(shí)地址填入函數(shù)地址表310的ul Called Func Address域,并且將funcA的函數(shù)地址表310的頭兩項(xiàng)內(nèi)容先缺省設(shè)置為跳轉(zhuǎn)到funcA的地址的機(jī)器指令。然后在函數(shù)地址表310的最后一項(xiàng)填入funcA的套子函數(shù)的地址,套子函數(shù)的地址由后續(xù)套子函數(shù)管理模塊400提供,該函數(shù)地址表310的其余項(xiàng)內(nèi)容暫時(shí)不填。這些步驟做完后,也實(shí)現(xiàn)了利用函數(shù)地址表310對(duì)函數(shù)funcA裝上相應(yīng)套子函數(shù)的目的,只是缺省時(shí)套子函數(shù)還是執(zhí)行原函數(shù)單元funcA(因?yàn)槿笔『瘮?shù)地址表310的頭兩個(gè)域的機(jī)器指令就是跳轉(zhuǎn)到函數(shù)單元funcA的原來(lái)地址)。
而在對(duì)被測(cè)軟件系統(tǒng)進(jìn)行測(cè)試的過(guò)程中,如果測(cè)試人員需要對(duì)函數(shù)單元funcA進(jìn)行打樁(即為funcA編寫(xiě)樁函數(shù)),而且為其寫(xiě)好的前插樁函數(shù)funcA_before和后插樁函數(shù)funcA_after兩個(gè)插樁函數(shù)已經(jīng)由后續(xù)的套子函數(shù)管理模塊400處理好了,則將funcA的函數(shù)地址表310的剩余內(nèi)容依次填入,并將該函數(shù)地址表310的push_or_jmp_code1域改為壓棧指令,相應(yīng)的Ul UserInsert Proc Before Call_or_calledfunction域改成前插樁函數(shù)funcA_before的地址。
這樣基于上述的處理,在被測(cè)軟件系統(tǒng)中運(yùn)行到調(diào)用函數(shù)單元funcA的調(diào)用指令時(shí)就會(huì)跳轉(zhuǎn)運(yùn)行funcA的函數(shù)地址表310,進(jìn)而根據(jù)函數(shù)地址表310中記錄的funcA的套子函數(shù)的地址信息,跳轉(zhuǎn)運(yùn)行funcA的套子函數(shù)。
套子函數(shù)管理模塊400,與測(cè)試控制模塊100邏輯連接,用于管理為每個(gè)函數(shù)單元設(shè)置的套子函數(shù)410,并在測(cè)試過(guò)程中根據(jù)函數(shù)地址表記錄的各個(gè)地址信息,控制相應(yīng)的套子函數(shù)調(diào)用執(zhí)行與被測(cè)函數(shù)單元調(diào)用的函數(shù)單元相關(guān)的樁函數(shù)或調(diào)用執(zhí)行被測(cè)函數(shù)單元調(diào)用的函數(shù)單元。套子函數(shù)管理模塊400負(fù)責(zé)管理每個(gè)套子函數(shù)410,并負(fù)責(zé)管理供套子函數(shù)410調(diào)用的各個(gè)樁函數(shù)。套子函數(shù)管理模塊400在得到測(cè)試控制模塊100傳來(lái)的樁函數(shù)源代碼后就調(diào)用編譯鏈接模塊200的接口,從而獲取經(jīng)過(guò)編譯鏈接模塊200處理后的樁函數(shù)的目標(biāo)代碼,并將樁函數(shù)的目標(biāo)代碼存放在內(nèi)存中,后續(xù)套子函數(shù)410會(huì)根據(jù)函數(shù)地址表中的相應(yīng)樁函數(shù)地址記錄信息去相應(yīng)內(nèi)存位置調(diào)用執(zhí)行對(duì)應(yīng)的樁函數(shù)。
后續(xù),當(dāng)測(cè)試人員要對(duì)存儲(chǔ)在內(nèi)存中的樁函數(shù)進(jìn)行編輯操作(包括修改樁函數(shù)代碼,刪除樁函數(shù),增加樁函數(shù)等)時(shí),測(cè)試控制模塊100就會(huì)調(diào)用套子函數(shù)管理模塊400,套子函數(shù)管理模塊400則負(fù)責(zé)動(dòng)態(tài)更新樁函數(shù)的目標(biāo)代碼。
套子函數(shù)管理模塊400能夠?qū)崿F(xiàn)使每個(gè)套子函數(shù)410對(duì)相應(yīng)的樁函數(shù)進(jìn)行調(diào)用執(zhí)行,因?yàn)樵趂uncA的函數(shù)地址表中運(yùn)行調(diào)用funcA的套子函數(shù)指令之前已經(jīng)將前插樁函數(shù)funcA_before、函數(shù)單元funcA和后插樁函數(shù)funcA_after的地址依次壓棧了(即已經(jīng)記錄在函數(shù)地址表中),所以這些地址信息就是套子函數(shù)利用的參數(shù),套子函數(shù)利用地址表中記錄的各個(gè)地址信息就可以很方便的對(duì)各個(gè)函數(shù)段(包括樁函數(shù)和被調(diào)用的函數(shù)單元)進(jìn)行調(diào)用執(zhí)行。同時(shí),套子函數(shù)還可以訪問(wèn)堆棧,獲取本來(lái)傳給被調(diào)函數(shù)單元funcA(即被打樁的函數(shù)單元)的參數(shù)。
通過(guò)上述對(duì)本發(fā)明軟件測(cè)試系統(tǒng)的具體描述,已經(jīng)能夠看出相應(yīng)于本發(fā)明軟件測(cè)試系統(tǒng)的測(cè)試方法的大體實(shí)施過(guò)程,請(qǐng)參照?qǐng)D3,該圖是本發(fā)明軟件測(cè)試方法使用插入樁方式對(duì)函數(shù)單元進(jìn)行測(cè)試的過(guò)程示意圖;圖中假設(shè)對(duì)被測(cè)軟件系統(tǒng)中的函數(shù)單元MyFunc進(jìn)行測(cè)試,在測(cè)試過(guò)程中,函數(shù)單元MyFunc將調(diào)用函數(shù)單元FuncA,則使用本發(fā)明軟件測(cè)試方法實(shí)現(xiàn)對(duì)函數(shù)單元MyFunc進(jìn)行測(cè)試的過(guò)程如下步驟S1至步驟S3的過(guò)程為對(duì)軟件測(cè)試系統(tǒng)進(jìn)行初始化的階段。
步驟S1,由測(cè)試控制模塊為函數(shù)單元FuncA配置函數(shù)地址表;步驟S2,由測(cè)試控制模塊為函數(shù)單元FuncA配置套子函數(shù);步驟S3,由測(cè)試控制模塊控制編譯鏈接模塊將被測(cè)軟件系統(tǒng)中的每個(gè)被測(cè)函數(shù)單元的源代碼編譯鏈接成目標(biāo)代碼,使得被測(cè)軟件系統(tǒng)和軟件測(cè)試系統(tǒng)運(yùn)轉(zhuǎn)起來(lái);步驟S4至步驟S12為對(duì)函數(shù)單元進(jìn)行測(cè)試的過(guò)程。
步驟S4,由測(cè)試控制模塊控制編譯鏈接模塊動(dòng)態(tài)導(dǎo)入測(cè)試人員為函數(shù)單元FuncA編寫(xiě)的前插樁函數(shù)funcA_before和后插樁函數(shù)funcA_after,以將前插樁函數(shù)funcA_before和后插樁函數(shù)funcA_after的源代碼編譯鏈接成目標(biāo)代碼形式存儲(chǔ)在內(nèi)存的相應(yīng)位置上;在樁函數(shù)導(dǎo)入之后,將函數(shù)單元FuncA的函數(shù)地址表填寫(xiě)完全,其中包括函數(shù)單元FuncA的地址、函數(shù)單元FuncA的套子函數(shù)的地址、函數(shù)單元FuncA的前插樁函數(shù)funcA_before的地址和函數(shù)單元FuncA的后插樁函數(shù)funcA_after的地址;步驟S5,在調(diào)用函數(shù)單元FuncA的調(diào)用指令處設(shè)置地址跳轉(zhuǎn)偏移,以使在函數(shù)單元FuncA被調(diào)用時(shí),跳轉(zhuǎn)運(yùn)行函數(shù)單元FuncA的函數(shù)地址表;步驟S6,在對(duì)函數(shù)單元MyFunc進(jìn)行測(cè)試的過(guò)程中,當(dāng)函數(shù)單元MyFunc調(diào)用函數(shù)單元FuncA時(shí),會(huì)跳轉(zhuǎn)運(yùn)行函數(shù)單元FuncA的函數(shù)地址表中的相應(yīng)機(jī)器指令;
步驟S7,funcA的函數(shù)地址表中的相應(yīng)機(jī)器指令會(huì)指示跳轉(zhuǎn)運(yùn)行funcA的套子函數(shù);步驟S8,跳轉(zhuǎn)運(yùn)行到funcA的套子函數(shù)后,funcA的套子函數(shù)先執(zhí)行測(cè)試人員編寫(xiě)的前插樁函數(shù)funcA_before,在前插樁函數(shù)funcA_before里可以編寫(xiě)實(shí)現(xiàn)任意功能代碼,例如用前插樁函數(shù)funcA_before修改傳給函數(shù)單元funcA的參數(shù)和funcA的運(yùn)行環(huán)境,具體內(nèi)容由測(cè)試人員在前插樁函數(shù)funcA_before中自行定制;步驟S9,在函數(shù)單元funcA的函數(shù)地址表中調(diào)用執(zhí)行原函數(shù)單元funcA,執(zhí)行函數(shù)單元funcA原來(lái)的代碼;步驟S10,對(duì)函數(shù)單元funcA執(zhí)行完成后返回到funcA的套子函數(shù);步驟S11,由函數(shù)單元funcA的套子函數(shù)繼續(xù)調(diào)用執(zhí)行測(cè)試人員編寫(xiě)的后插樁函數(shù)funcA_after;同理,在后插樁函數(shù)funcA_after中可以對(duì)函數(shù)單元funcA運(yùn)行的返回值和輸出結(jié)果進(jìn)行操作,例如可以對(duì)函數(shù)單元funcA的運(yùn)行結(jié)果進(jìn)行讀取和修改等操作;同時(shí)用戶(hù)也可以在后插樁函數(shù)funcA_after里編寫(xiě)實(shí)現(xiàn)任意功能的代碼,具體編寫(xiě)何種功能的代碼也由測(cè)試人員在后插樁函數(shù)funcA_after中自行定制;步驟S12,函數(shù)單元funcA的套子函數(shù)對(duì)funcA的后插樁函數(shù)調(diào)用執(zhí)行完成后,返回到被測(cè)函數(shù)單元myfunc調(diào)用函數(shù)單元funcA的調(diào)用指令處,繼續(xù)執(zhí)行后續(xù)的測(cè)試。
上例只是以插入樁的方式描述了使用套子函數(shù)技術(shù)對(duì)函數(shù)單元進(jìn)行測(cè)試的過(guò)程,下面再以覆蓋樁的方式描述本發(fā)明使用套子函數(shù)技術(shù)對(duì)被測(cè)函數(shù)單元進(jìn)行測(cè)試的過(guò)程。請(qǐng)參照?qǐng)D4,該圖是本發(fā)明軟件測(cè)試方法使用覆蓋樁方式對(duì)函數(shù)單元進(jìn)行測(cè)試的過(guò)程示意圖;其處理過(guò)程如下其中步驟S20至步驟S27的處理過(guò)程同圖3中的步驟S1至步驟S8的處理過(guò)程,這里不再重復(fù)贅述;在步驟S27中由函數(shù)單元FuncA的套子函數(shù)對(duì)FuncA的前插樁函數(shù)funcA_before進(jìn)行調(diào)用執(zhí)行后,將不再去調(diào)用執(zhí)行原函數(shù)單元FuncA中的代碼,而是直接執(zhí)行步驟S28,由函數(shù)單元funcA的套子函數(shù)繼續(xù)調(diào)用執(zhí)行測(cè)試人員為函數(shù)單元FuncA編寫(xiě)的后插樁函數(shù)funcA_after;再在步驟S29中返回到被測(cè)函數(shù)單元myfunc調(diào)用函數(shù)單元funcA的調(diào)用指令處,繼續(xù)執(zhí)行后續(xù)的測(cè)試。這個(gè)處理過(guò)程中套子函數(shù)并不調(diào)用執(zhí)行原函數(shù)單元funcA,只是執(zhí)行測(cè)試人員編寫(xiě)的樁函數(shù)代碼,然后直接返回到被測(cè)函數(shù)單元MyFunc的調(diào)用指令處,從而實(shí)現(xiàn)了樁函數(shù)對(duì)原函數(shù)單元funcA運(yùn)行的完全替代,即覆蓋樁過(guò)程。
本發(fā)明軟件測(cè)試方法及其系統(tǒng)提出用高級(jí)語(yǔ)言(如C語(yǔ)言。C++語(yǔ)言或pascal語(yǔ)言)編寫(xiě)樁函數(shù),由于被測(cè)軟件系統(tǒng)中的函數(shù)單元和樁函數(shù)都是用高級(jí)語(yǔ)言編寫(xiě)的函數(shù),所以在測(cè)試過(guò)程中,不用再將樁函數(shù)編譯成高級(jí)語(yǔ)言后再進(jìn)行測(cè)試,所以提高了測(cè)試的效率。
本發(fā)明使用套子函數(shù)技術(shù)對(duì)函數(shù)單元進(jìn)行測(cè)試可以提高測(cè)試的靈活性,主要體現(xiàn)在如下方面(1)可以測(cè)試函數(shù)單元的性能如可以在函數(shù)單元的前插樁函數(shù)中和后插樁函數(shù)中分別打上時(shí)間戳,以統(tǒng)計(jì)被測(cè)函數(shù)單元的運(yùn)行時(shí)間;(2)可以對(duì)函數(shù)單元所使用的內(nèi)存資源進(jìn)行監(jiān)控如可以在函數(shù)單元的前插樁函數(shù)中設(shè)置打開(kāi)內(nèi)存監(jiān)控的開(kāi)關(guān),同時(shí)在后插樁函數(shù)中設(shè)置關(guān)閉內(nèi)存監(jiān)控的開(kāi)關(guān),這樣可以實(shí)現(xiàn)原函數(shù)單元在被測(cè)過(guò)程中對(duì)內(nèi)存的申請(qǐng)和釋放分別做記錄,以分析是否有內(nèi)存泄漏發(fā)生。
(3)在套子函數(shù)里編寫(xiě)相應(yīng)功能的代碼可以實(shí)現(xiàn)對(duì)函數(shù)單元屬性的獲取(如函數(shù)單元的被測(cè)次數(shù),函數(shù)單元接收的測(cè)試參數(shù),函數(shù)單元的返回值等)如在軟件測(cè)試過(guò)程中,可以統(tǒng)計(jì)某個(gè)函數(shù)單元的運(yùn)行次數(shù),只需要給這個(gè)函數(shù)單元裝上套子函數(shù),然后在該函數(shù)單元的前插樁函數(shù)中編寫(xiě)一個(gè)計(jì)數(shù)器即可;
也可以使用函數(shù)單元的套子函數(shù)訪問(wèn)堆棧的指針,由此可以得到在棧中保存的各類(lèi)參數(shù),由此分析棧中的數(shù)據(jù),以得到函數(shù)單元調(diào)用的棧信息;函數(shù)單元運(yùn)行后的返回值一般都保存在特定寄存器里,例如X86體系結(jié)構(gòu)的函數(shù)單元前4字節(jié)的返回值是保存在EAX寄存器中,PPC體系結(jié)構(gòu)的函數(shù)單元的返回值是保存在r3和r4寄存器中,這樣本發(fā)明就可以在函數(shù)單元的后插樁函數(shù)中編寫(xiě)相應(yīng)功能的代碼以得到對(duì)函數(shù)單元運(yùn)行后的返回值的訪問(wèn)和控制。
(4)使用套子函數(shù)技術(shù)可以實(shí)現(xiàn)對(duì)函數(shù)單元功能的擴(kuò)展如測(cè)試人員只需要在函數(shù)單元的前插樁函數(shù)和后插樁函數(shù)中編寫(xiě)實(shí)現(xiàn)各種功能的代碼,即可實(shí)現(xiàn)對(duì)原函數(shù)單元功能的擴(kuò)展。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明技術(shù)原理的前提下,還可以作出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種軟件測(cè)試方法,用于對(duì)被測(cè)軟件系統(tǒng)中的每個(gè)函數(shù)單元進(jìn)行測(cè)試,其特征在于,包括如下步驟設(shè)置步驟1)為每個(gè)函數(shù)單元分別設(shè)置函數(shù)地址表和套子函數(shù);2)為每個(gè)函數(shù)單元編寫(xiě)樁函數(shù);3)將套子函數(shù)的地址跳轉(zhuǎn)偏移和樁函數(shù)的地址分別記錄到對(duì)應(yīng)的函數(shù)單元的函數(shù)地址表中;測(cè)試步驟4)被測(cè)函數(shù)單元運(yùn)行到調(diào)用其他函數(shù)單元的調(diào)用指令時(shí),跳轉(zhuǎn)運(yùn)行該被調(diào)函數(shù)單元的函數(shù)地址表;5)根據(jù)函數(shù)地址表中記錄的套子函數(shù)的地址跳轉(zhuǎn)偏移,跳轉(zhuǎn)運(yùn)行對(duì)應(yīng)的套子函數(shù);6)套子函數(shù)根據(jù)函數(shù)地址表中記錄的樁函數(shù)地址,調(diào)用執(zhí)行對(duì)應(yīng)的樁函數(shù)后返回到該被測(cè)函數(shù)單元的調(diào)用指令處繼續(xù)后續(xù)測(cè)試。
2.根據(jù)權(quán)利要求1所述的軟件測(cè)試方法,其特征在于,步驟2)中所述樁函數(shù)包括用于對(duì)輸入測(cè)試參數(shù)進(jìn)行分析處理的前插樁函數(shù)和用于對(duì)測(cè)試結(jié)果參數(shù)進(jìn)行分析處理的后插樁函數(shù)。
3.根據(jù)權(quán)利要求2所述的軟件測(cè)試方法,其特征在于,所述步驟6)進(jìn)一步包括套子函數(shù)根據(jù)函數(shù)地址表中記錄的前插樁函數(shù)地址,調(diào)用執(zhí)行前插樁函數(shù);并根據(jù)函數(shù)地址表中記錄的后插樁函數(shù)地址,調(diào)用執(zhí)行后插樁函數(shù)。
4.根據(jù)權(quán)利要求2所述的軟件測(cè)試方法,其特征在于,所述步驟3)中還包括分別將每個(gè)函數(shù)單元的地址記錄到對(duì)應(yīng)的函數(shù)地址表中的步驟。
5.根據(jù)權(quán)利要求4所述的軟件測(cè)試方法,其特征在于,所述步驟6)中還包括套子函數(shù)根據(jù)被調(diào)函數(shù)單元的函數(shù)地址表中記錄的函數(shù)單元地址,調(diào)用執(zhí)行被調(diào)函數(shù)單元的步驟。
6.根據(jù)權(quán)利要求4所述的軟件測(cè)試方法,其特征在于,所述步驟6)進(jìn)一步包括套子函數(shù)根據(jù)函數(shù)地址表中記錄的前插樁函數(shù)地址,調(diào)用執(zhí)行前插樁函數(shù);并根據(jù)該被調(diào)函數(shù)單元的函數(shù)地址表中記錄的函數(shù)單元地址,調(diào)用執(zhí)行被調(diào)函數(shù)單元;及根據(jù)函數(shù)地址表中記錄的后插樁函數(shù)地址,調(diào)用執(zhí)行后插樁函數(shù)。
7.根據(jù)權(quán)利要求4所述的軟件測(cè)試方法,其特征在于,所述步驟1)中在將每個(gè)函數(shù)單元的源代碼形式編譯鏈接成目標(biāo)代碼形式的過(guò)程中為每個(gè)函數(shù)單元設(shè)置套子函數(shù)和函數(shù)地址表;并在步驟3)中將套子函數(shù)的地址跳轉(zhuǎn)偏移和對(duì)應(yīng)的函數(shù)單元的地址記錄到所述函數(shù)地址表中。
8.根據(jù)權(quán)利要求1所述的軟件測(cè)試方法,其特征在于,所述步驟3)在將對(duì)應(yīng)的樁函數(shù)的源代碼編譯鏈接成可執(zhí)行的目標(biāo)代碼進(jìn)行存儲(chǔ)后,將樁函數(shù)的存儲(chǔ)位置地址記錄到所述函數(shù)地址表中。
9.根據(jù)權(quán)利要求1所述的軟件測(cè)試方法,其特征在于,所述步驟2)中利用高級(jí)語(yǔ)言編寫(xiě)樁函數(shù)。
10.一種軟件測(cè)試系統(tǒng),用于對(duì)被測(cè)軟件系統(tǒng)中的每個(gè)函數(shù)單元進(jìn)行測(cè)試,其特征在于,包括測(cè)試控制模塊,用于對(duì)所述測(cè)試系統(tǒng)進(jìn)行初始化,并在初始化過(guò)程中為每個(gè)函數(shù)單元設(shè)置函數(shù)地址表和套子函數(shù);編譯鏈接模塊,與所述測(cè)試控制模塊連接,用于將外界輸入的測(cè)試指令編譯鏈接成可執(zhí)行的目標(biāo)代碼,并將為每個(gè)函數(shù)單元編寫(xiě)的樁函數(shù)源代碼編譯鏈接成可執(zhí)行的目標(biāo)代碼后存儲(chǔ);地址表管理模塊,與所述測(cè)試控制模塊連接,用于管理為每個(gè)函數(shù)單元設(shè)置的函數(shù)地址表,并在函數(shù)地址表中記錄對(duì)應(yīng)的函數(shù)單元地址、套子函數(shù)地址跳轉(zhuǎn)偏移和樁函數(shù)的地址;套子函數(shù)管理模塊,與所述測(cè)試控制模塊連接,用于管理為每個(gè)函數(shù)單元設(shè)置的套子函數(shù),并在測(cè)試過(guò)程中根據(jù)函數(shù)地址表記錄的地址信息,控制相應(yīng)的套子函數(shù)調(diào)用執(zhí)行相關(guān)的樁函數(shù)或函數(shù)單元。
全文摘要
本發(fā)明提供了一種軟件測(cè)試方法,包括為每個(gè)函數(shù)單元分別設(shè)置函數(shù)地址表和套子函數(shù);為每個(gè)函數(shù)單元編寫(xiě)樁函數(shù);將套子函數(shù)的地址跳轉(zhuǎn)偏移和樁函數(shù)的地址分別記錄到對(duì)應(yīng)的函數(shù)單元的函數(shù)地址表中;被測(cè)函數(shù)單元運(yùn)行到調(diào)用其他函數(shù)單元的調(diào)用指令時(shí),跳轉(zhuǎn)運(yùn)行該被調(diào)函數(shù)單元的函數(shù)地址表;根據(jù)函數(shù)地址表中記錄的套子函數(shù)的地址跳轉(zhuǎn)偏移,跳轉(zhuǎn)運(yùn)行對(duì)應(yīng)的套子函數(shù);套子函數(shù)根據(jù)函數(shù)地址表中記錄的樁函數(shù)地址,調(diào)用執(zhí)行對(duì)應(yīng)的樁函數(shù)后返回到該被測(cè)函數(shù)單元的調(diào)用指令處繼續(xù)后續(xù)測(cè)試。相應(yīng)地,本發(fā)明還提供了一種軟件測(cè)試系統(tǒng)。本發(fā)明可以降低軟件測(cè)試過(guò)程的額外開(kāi)銷(xiāo),并提高軟件測(cè)試效率和測(cè)試靈活性。
文檔編號(hào)G06F11/36GK1710547SQ20041004814
公開(kāi)日2005年12月21日 申請(qǐng)日期2004年6月16日 優(yōu)先權(quán)日2004年6月16日
發(fā)明者袁長(zhǎng)洋, 張憲 申請(qǐng)人:華為技術(shù)有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1