新四季網

針對局部模塊的單元測試方法

2023-05-31 06:49:11 1

專利名稱:針對局部模塊的單元測試方法
技術領域:
本發明涉及單元測試技術領域,並且具體地,涉及一種針對局部模塊的單元測試方法。
背景技術:
單元測試是軟體開發中質量保證的重要環節。單元測試包括以下幾個過程(1)根據被測試模塊設計相應的測試模塊,測試模塊包括測試邏輯和測試接口,測試邏輯需要構造被測試模塊的環境變量,設計測試用例。測試接口是某一個測試的入口。
(2)修改被測試模塊,使被測試模塊可以引用測試模塊中的樁函數,通常採用額外全局變量或者宏來判別是引用樁函數還是原來的功能函數。
(3)編譯被測試模塊和測試模塊,生成可執行目標運行文件。
(4)運行目標可執行文件,啟動測試模塊。測試模塊通過不同的環境變量組合(測試邏輯負責實現),完成對被測試模塊的測試。
(5)發布最後版本時,去掉測試模塊,修改被測試模塊,去除不必要的針對測試的相關修改。重新編譯生成可執行文件。
在處理(1)中構造測試用例時,必須引用被測試單元中的單元接口此單元才能被測試,通常的單元接口是全局的。當進行更詳細的單元測試,需要對被測試單元中的局部模塊進行測試時,測試模塊無法引用被測試模塊的局部接口,為了實現這個功能,一般的做法是將被測試模塊的相關局部接口改為全局接口,或者將測試模塊插入到被測試模塊中,解決局部接口引用的問題。
上述做法存在以下缺點(1)被測試模塊被較大程度的修改,測試結果的可信性、準確性都受到一定程度影響;(2)被測試模塊的局部接口被修改為全局接口,可能會引發符號衝突問題,引起編譯問題;(3)被測試模塊代碼和測試代碼混合在一起,給代碼版本管理維護帶來不便。

發明內容
考慮到現有技術中存在的上述問題而提出本發明,為此,本發明旨在提供一種針對局部模塊的單元測試方案,其可以不對被測試模塊進行較大程度的修改,同時無需改變被測試模塊的局部接口,也無需將被測試模塊代碼和測試代碼混合在一起。
根據本發明,提供了一種針對局部模塊的單元測試方法。
該方法包括以下處理設計測試模塊及測試用例;調整被測試模塊,實現被測試模塊與測試模塊的掛接;編譯測試模塊和被測試模塊,生成目標執行文件,並對目標執行文件進行修改,以引用局部模塊符號;運行測試用例;恢復對目標執行文件的修改,生成發布目標文件。
其中,對目標執行文件進行修改的處理包括針對要引用的局部模塊符號,在測試模塊中聲明對其引用。具體地,在測試模塊中定義一個關聯符號,關聯符號的內容表示要引用的局部模塊符號的位置。
另外,對目標執行文件進行修改的處理具體為在完成測試模塊與被測試模塊的掛接後,搜索目標執行文件的符號表,將在測試模塊中定義的關聯符號的內容修改為要引用的局部模塊符號的位置。其中,搜索目標執行文件的符號表的處理包括找到目標執行文件的文件頭,讀取其中的段描述信息,獲取符號表段在目標執行文件中的偏移及字符串段和數據段在目標執行文件中的位置。將在測試模塊中定義的關聯符號的內容修改為要引用的局部模塊符號的位置的處理包括判斷查找到的帶有特徵類型的字符串為關聯符號,獲取關聯符號在數據段中的位置,將關聯符號的值修改為要引用的局部模塊符號的指針。帶有特徵類型的字符串為以引用標識為前綴的字符串。
通過本發明,可以使一個模塊應用其他模塊的局部函數,滿足對局部函數測試的需求,並且相比於傳統單元測試方法,可以最大限度的減少對被測試模塊的修改,減少被測試模塊和測試模塊的代碼混雜,因此便於代碼管理和維護。
本發明的其它特徵和優點將在隨後的說明書中闡述,並且,部分地從說明書中變得顯而易見,或者通過實施本發明而了解。本發明的目的和其他優點可通過在所寫的說明書、權利要求書、以及附圖中所特別指出的結構來實現和獲得。


附圖用來提供對本發明的進一步理解,並且構成說明書的一部分,與本發明的實施例一起用於解釋本發明,並不構成對本發明的限制。在附圖中
圖1是根據本發明實施例的針對局部模塊的單元測試方法的流程圖。
具體實施例方式
以下結合附圖對本發明的優選實施例進行說明,應當理解,此處所描述的優選實施例僅用於說明和解釋本發明,並不用於限定本發明。
根據本發明實施例,提供了一種針對局部模塊的單元測試方法。
如圖1所示,根據本發明實施例的該方法包括以下處理步驟S102,設計測試模塊及測試用例;步驟S104,調整被測試模塊,實現被測試模塊與測試模塊的掛接;步驟S106,編譯測試模塊和被測試模塊,生成目標執行文件,並對目標執行文件進行修改,以引用局部模塊符號;步驟S108,運行測試用例;步驟S110,恢復對目標執行文件的修改,生成發布目標文件。
在上述方法中,在步驟S106中,對掛接後生成的目標文件進行修正,以達到引用局部模塊符號的目的。局部模塊不能被應用域以外的模塊引用是程式語言規範的部分,編譯器對此有嚴格的限制。本發明實施例提供的方法採用繞開編譯器的方式,在掛接後期進行符號修正,間接完成對局部模塊符號的引用。
其中,對目標執行文件進行修改的處理包括(1)針對要引用的局部模塊符號,在測試模塊中聲明對其引用,實際上,在測試模塊中定義一個關聯符號,該關聯符號的內容表示要引用的局部模塊符號的位置;(2)在完成測試模塊與被測試模塊的掛接後,搜索目標執行文件的符號表,將在測試模塊中定義的關聯符號的內容修改為要引用的局部模塊符號的位置。這樣,運行測試用例時,對關聯符號的使用,就相當於對其所關聯的局部符號的使用。
其中,上述的搜索目標執行文件的符號表的處理包括找到目標執行文件的文件頭,讀取其中的段(section)描述信息,獲取符號表section在目標執行文件中的偏移及字符串section和數據段section在目標執行文件中的位置;將在測試模塊中定義的關聯符號的內容修改為要引用的局部模塊符號的位置的處理包括判斷查找到的帶有特徵類型的字符串(例如,以引用標識為前綴的字符串)為關聯符號,獲取關聯符號在數據段中的位置,將關聯符號的值修改為要引用的局部模塊符號的指針。
以下將結合實例來進一步描述上述處理。
以下,以生成ELF目標文件的gnu的編譯器為例,進一步說明具體實現方法。在c語言規範中,static局部函數不能被其他模塊調用,但本質上局部函數也是個地址,只要我們可以獲得這個地址,就可以使用這個局部函數,實現這個目標,分兩步進行(1)定義一個變量,通過declare_static_func(test_c_static_A),定義一個與static_A(要引用的局部模塊符號)相關聯的變量,為了防止符號重名,聲明引用時加上了文件名稱,聲明引用後,便定義了一個變量為int$sp_test_c_static_A(定義的關聯符號)。
(2)對生成的ELF可執行文件進行符號修正,即,找到$sp_test_c_static_A這個變量的地址(在文件中的地址)和static_A函數的地址(實際運行的RAM地址),將後者的地址寫入到前者所在的文件地址。當代碼運行後,引用$sp_test_c_static_A的內容便找到了staic_A的地址。
其中,尋找ELF中符號的過程如下(1)找到ELF文件的ELF頭,讀取section描述信息,找到符號表section在文件中的偏移,以及字符串section和數據段section在文件中的位置。
(2)根據符號表的結構逐個檢查其名稱所在字符串section中的偏移,查看是否是$sp作為前綴,如果是,找到變量(即,新定義的關聯符號)在數據段中的位置,修正變量值為所關聯的局部函數的指針。
這樣,通過以上描述的內容可以看出,通過本發明,可以使一個模塊應用其他模塊的局部函數,滿足對局部函數測試的需求,並且相比於傳統單元測試方法,可以最大限度的減少對被測試模塊的修改,減少被測試模塊和測試模塊的代碼混雜,因此便於代碼管理和維護。
以上所述僅為本發明的優選實施例而已,並不用於限制本發明,對於本領域的技術人員來說,本發明可以有各種更改和變化。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。
權利要求
1.一種針對局部模塊的單元測試方法,其特徵在於,包括以下處理設計測試模塊及測試用例;調整被測試模塊,實現所述被測試模塊與所述測試模塊的掛接;編譯所述測試模塊和所述被測試模塊,生成目標執行文件,並對所述目標執行文件進行修改,以引用局部模塊符號;運行測試用例;以及恢復對所述目標執行文件的修改,生成發布目標文件。
2.根據權利要求1所述的針對局部模塊的單元測試方法,其特徵在於,對所述目標執行文件進行修改的處理包括針對要引用的局部模塊符號,在測試模塊中聲明對其引用。
3.根據權利要求2所述的針對局部模塊的單元測試方法,其特徵在於,在所述測試模塊中定義一個關聯符號,所述關聯符號的內容表示要引用的所述局部模塊符號的位置。
4.根據權利要求3所述的針對局部模塊的單元測試方法,其特徵在於,對所述目標執行文件進行修改的處理具體為在完成所述測試模塊與所述被測試模塊的掛接後,搜索所述目標執行文件的符號表,將在所述測試模塊中定義的所述關聯符號的內容修改為要引用的所述局部模塊符號的位置。
5.根據權利要求4所述的針對局部模塊的單元測試方法,其特徵在於,搜索所述目標執行文件的符號表的處理包括找到所述目標執行文件的文件頭,讀取其中的段描述信息,獲取符號表段在所述目標執行文件中的偏移及字符串段和數據段在所述目標執行文件中的位置。
6.根據權利要求5所述的針對局部模塊的單元測試方法,其特徵在於,將在所述測試模塊中定義的所述關聯符號的內容修改為要引用的所述局部模塊符號的位置的處理包括判斷查找到的帶有特徵類型的字符串為所述關聯符號,獲取所述關聯符號在所述數據段中的位置,將所述關聯符號的值修改為要引用的所述局部模塊符號的指針。
7.根據權利要求6所述的針對局部模塊的單元測試方法,其特徵在於,所述帶有特徵類型的字符串為以引用標識為前綴的字符串。
全文摘要
本發明提供了一種針對局部模塊的單元測試方法,其中,設計測試模塊及測試用例;調整被測試模塊,實現被測試模塊與測試模塊的掛接;編譯測試模塊和被測試模塊,生成目標執行文件,並對目標執行文件進行修改,以引用局部模塊符號;運行測試用例;恢復對目標執行文件的修改,生成發布目標文件。通過本發明,可以使一個模塊應用其他模塊的局部函數,滿足對局部函數測試的需求,並且相比於傳統單元測試方法,可以最大限度的減少對被測試模塊的修改,減少被測試模塊和測試模塊的代碼混雜,因此便於代碼管理和維護。
文檔編號G06F11/36GK101075207SQ200710129959
公開日2007年11月21日 申請日期2007年7月20日 優先權日2007年7月20日
發明者王雲峰 申請人:中興通訊股份有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀