新四季網

一種實現覆蓋率測試的系統和方法

2023-08-01 12:06:56 2


專利名稱::一種實現覆蓋率測試的系統和方法
技術領域:
:本發明涉及一種通訊領域的白盒測試技術,尤其涉及的是,一種覆蓋率測試系統和方法。
背景技術:
:白盒測試,也稱結構測試或邏輯驅動測試,是在軟體編碼階段,按照程序內部的結構測試程序,通過測試來檢測產品內部動作是否4安照設計規格說明書的規定正常進行,檢驗程序中的每條通路是否都能按預定要求正確工作。白盒測試是軟體生存周期中一個獨立的,關鍵的階段,代表了規約、設計和編碼的最終檢查,也是保證軟體質量的重要手段。覆蓋率統計是白盒測試中衡量測試用例以及代碼的關鍵指標參數,包括語句覆蓋率、分支覆蓋率、條件覆蓋率、函數覆蓋率,語句覆蓋率=至少被執行一次的語句數量/可執行的語句總數,分支覆蓋率=分支結果被執行的次數/分支結果總數,條件覆蓋率=條件操作數值至少被評價一次的數量/條件操作數值的總數;函數覆蓋率=已覆蓋的函數調用個數/全部函數調用個數。目前的覆蓋率統計的方法是在可執行文件插入監視代碼,即對不同的作業系統用不同的可執行文件找到函數入口插入代碼,在重定位代碼位置後進行統計。對可執行文件植入代碼存在以下問題不同的作業系統必須使用不同的可執行文件,例如,Windows4喿作系統的可執行文件是PE文件(PortableExecutable,可移植的執行體,是Windows作業系統自身所帶的執行體文件格式),對其他系統不適用,如UNIX作業系統、XENIX作業系統、LINUX作業系統中就必須另做該系統相應的可執行文件;而且,可執行文件的文件格式複雜,難以分析;代碼插入後需要重新定位,重新定位難度大。因此,現有技術還存在缺陷,有待於改進和發展。
發明內容本發明解決的技術問題是提供一種實現覆蓋率測試的系統和方法,能夠應用於多種作業系統的實現覆蓋率統計。為解決上述技術問題,本發明採用以下方案一種實現覆蓋率測試的系統,包括與被測模塊連接的原始碼分析器,用於對所述被測模塊進行原始碼分析並統計所述被測模塊中需要測試的指令的總數;與所述被測模塊連接的代碼植入器,用於對所述^L測模塊中需要測試的指令前插入代碼打點程序並對插入代碼打點程序的原始碼進行重新編譯;與所述被測模塊連接的代碼打點模塊,用於記錄代碼打點程序調用次數;與所述原始碼分析器和代碼打點模塊連接的計算模塊,用於計算所述打點程序調用次^t與指令的總數之間的比值並輸出。所述的系統,其中,所述原始碼分析器包括與被測模塊連接的原始碼解析模塊,用於解析原始碼結構;與所述原始碼解析模塊連接的指令分類模塊,用於對所述原始碼中的指令類型進行識別;與所述指令分類模塊連接的指令統計模塊,用於分別統計和存儲每種類型的指令的總數。所述的系統,其中,所述代碼打點模塊包括與所述^皮測才莫塊連接的統計代碼打點模塊,用於記錄所述代碼打點程序的調用次數;與所述統計模塊連接的存儲模塊,用於存儲所述代碼打點程序的調用次數。所述的系統,其中,所述需要測試的指令包括語句指令、分支指令、條件指令、函數指令、路徑指令。本發明還提供一種實現覆蓋率測試的方法,包括以下步驟Sl、分析原始碼、統計需要測試的指令的總數;S2、在所述需要測試的指令前插入代碼打點程序;S3、對插入代碼打點程序的原始碼進行重新編譯;S4、運行代碼打點程序插入後的原始碼,記錄代碼打點程序的調用次數;S5、計算代碼打點程序的調用次數與需要測試的指令的總數的比值並輸出。所述的方法,其中,所述需要測試的指令包括語句指令、分支指令、條件指令、函數指令、路徑指令。所述的方法,其中,所述步驟S1包括Sll、解析原始碼結構;S12、對所述原始碼中的指令類型進行識別;所述類型包括語句指令、分支指令、條件指令、函數指令、路徑指令;S13、按照所述指令的不同類型,分別統計每種類型的指令的總數。本發明所提供的一種實現覆蓋率測試的系統和方法,與現有技術相比,由於是在分析原始碼的基礎上進行覆蓋率的測試,因此可應用於不同的作業系統,提高了兼容性能和實用性能。圖l是本發明實現覆蓋率測試的系統的示意圖;圖2是本發明的系統中的原始碼分析器、代碼植入器和代碼打點模塊的示意圖3是本發明實現覆蓋率測試的方法的流程圖。具體實施例方式下面結合具體實施方式和附圖對本發明作進一步詳細的描述。如圖1所示,本發明提供一種實現覆蓋率測試的系統包括與被測模塊連接的原始碼分析器、代碼植入器和代碼打點模塊,以及與原始碼分析器和代碼打點模塊連接的計算模塊。所述原始碼分析器用於對所述被測模塊進行原始碼分析並統計所述被測模塊中需要測試的指令的總數;按照指令類型的不同,其中分為不同類型指令的分析子模塊,見圖2,其中包括賦值語句分析子模塊,用於分析和統計賦值語句指令的總數;分支分析子模塊,用於分析和統計分支指令的總數;條件分析子模塊,用於分析和統計條件指令的總數;函數分析子模塊,用於分析和統計函數指令的總數;路徑分析子模塊,用於分析和統計路徑指令的總數。所述每個分析子模塊包括與被測模塊連接用於解析原始碼結構的原始碼解析模塊;與所述原始碼解析模塊連接用於對所述原始碼中的指令類型進行識別的指令分類模塊;與所述指令分類模塊連接用於分別統計和存儲每種類型的指令的總數的指令統計模塊。與所述被測模塊連接的代碼植入器,用於對被測模塊中需要測試的指令前插入代碼打點程序並對插入代碼打點程序的原始碼進行重新編譯;其中插入代碼打點程序包括在賦值語句指令前插入賦值語句代碼打點子程序、在分支指令前插入分支代碼打點子程序、在條件指令前插入條件代碼打點子程序、在函數指令前插入函數代碼打點子程序。與所述被測模塊連接的代碼打點模塊,用於記錄代碼打點程序調用次數;按照指令類型的不同,運行重新編譯的原始碼,分別記錄賦值語句代碼打點子程序的調用次數、分支代碼打點子程序的調用次數、條件代碼打點子程序的調用次lt、函數代碼打點子程序的調用次數。所述代碼打點模塊包括與所述被測模塊連接的打點統計模塊,用於記錄所述代碼打點程序的調用次數;與所述統計模塊連接的存儲模塊,用於存儲所述代碼打點程序的調用次數。與所述原始碼分析器和代碼打點模塊連接的計算模塊,用於計算所述打點程序調用次數與指令的總數之間的比值並輸出,按照指令類型的不同,分別進行以下計算用賦值語句代碼打點子程序的調用次數與賦值語句指令的總數的相比計算語句覆蓋率;用分支代碼打點子程序的調用次數與分支指令的總數的相比計算分支覆蓋率;用條件代碼打點子程序的調用次數與條件指令的總數的相比計算條件覆蓋率;用函數代碼打點子程序的調用次數與函數指令的總數的相比計算函數覆蓋率。本發明還提供一種實現覆蓋率測試的方法,如圖3所示,有以下步驟100、分析原代碼、計算需要測試的指令的總數;本步驟包括以下分步驟110、解析原始碼結構;120、對原始碼中的指令類型進行識別;識別指令的類型作為後續步驟的依據;類型包括賦值語句指令、分支指令、條件指令、函數指令、路徑指令。130、按照所述指令的不同類型,分別統計每種類型的指令的總數。包括賦值語句指令總數、分支指令總數、條件指令總數、函數指令總數、路徑指令總數。200、根據分析原始碼的分析結果,按照所述指令的不同類型,分別在每種類型的指令前插入代碼打點程序;包括在賦值語句指令前插入賦值語句代碼打點子程序、在分支指令前插入分支代碼打點子程序、在條件指令前插入條件代碼打點子程序、在函數指令前插入函數代碼打點子程序。300、對插入代碼打點程序的原始碼進行重新編譯;400、運行插入代碼打點程序的原始碼,按照所述指令的不同類型,分別記錄每種類型的指令前插入代碼打點程序的調用次數,例如,賦值語句代碼打點子程序、分支代碼打點子程序、條件代碼打點子程序、函數代碼打點子程序;並且在運行過程中,記錄代碼當前運行文件和運行行數,記錄到日誌文件。500、按照所述指令的不同類型,分別計算代碼打點程序的調用次數與需要測試的指令的總數的比值並輸出。步驟200、300、400可在C語言環境中的實現,例如採用如下程序段:代碼插入原理如以下函數代碼inti=printf(,,Iamhere");void*ptr—源碼經過插裝改造,變為inti=(TestCoverage,printf)(,,Iamhere");void*ptr=&(TestCoverage,printf);其中,TestCoverage是插入的打點函數。藉助C語言的逗號表達式實現插裝,跟據ANSIC規範,逗號表達式的結果值是最後一個表達式的計算值,比如"exprl,exprt2,expr3",這3個表達式依次運算,最後返回值是expr3的計算值。所以,不難看出,運行上述插裝代碼等效於插裝前代碼,只有一點差別,每次printf函數調用前插裝打點函數TestCoverage都被調用一次。藉助C語言的宏替換功能可以讓插裝過程變得很簡單,比如#defineprintf(TestCoverage,printf)inti=printf(,,Iamhere");void*ptr=這樣就完成函數的代碼植入。插入賦值語句代碼打點子程序根據代碼分析結果,對賦值語句的代碼植入和函數相同。如intavr=abs*8/numner;TestCoverage;插入分支代碼打點子程序同理,將if、while、for等控制語句也按如下方式植入改造#defmeif(expr)if((expr)if—TestCoveragel:if一TestCoverage0)植入改造後,插裝進去的打點函數(如if—TestCoverage1、if—TestCoverage0)在相應條件成立時就被執行。插入條件代碼打點子程序對於條件覆蓋統計,改造"&&,,與"||"連接的條件子句,比如下面代碼if(i>0&&i0)&&COND(i<100))printf("OK");這樣不同條件都用調用的不同的代碼打點函數。步驟300:原始碼的重新編譯。步驟400:執行測試程序,代碼打點函數執行,自動生成日誌記錄。代碼打點函悽tTestCoverage實現原理根據ANSIC規範宏—FILE—和—LINE—分別記錄當前代碼的所在原始碼文件名和行數,調用TestCovemge函數時間獲取宏值記錄相關文件中。應當理解的是,以上所提供的具體實施方式只是對本發明的說明,而不應當理解為對本發明的限制,對本領域的普通技術人員來說,可以根據上述說明加以改進或變換,而所有這些改進和變換都應為本發明所揭示的原理和特徵,均屬本發明的保護範圍。權利要求1、一種實現覆蓋率測試的系統,其特徵在於,包括與被測模塊連接的原始碼分析器,用於對所述被測模塊進行原始碼分析並統計所述被測模塊中需要測試的指令的總數;與所述被測模塊連接的代碼植入器,用於對所述被測模塊中需要測試的指令前插入代碼打點程序並對插入代碼打點程序的原始碼進行重新編譯;與所述被測模塊連接的代碼打點模塊,用於記錄代碼打點程序調用次數;與所述原始碼分析器和代碼打點模塊連接的計算模塊,用於計算所述打點程序調用次數與指令的總數之間的比值並輸出。2、根據權利要求1所述的系統,其特徵在於,所述原始碼分析器包括與被測模塊連接的原始碼解析模塊,用於解析原始碼結構;與所述原始碼解析模塊連接的指令分類模塊,用於對所述原始碼中的指令類型進行識別;與所述指令分類模塊連接的指令統計模塊,用於分別統計和存儲每種類型的指令的總數。3、根據權利要求1所述的系統,其特徵在於,所述代碼打點模塊包括與所述被測模塊連接的打點統計模塊,用於記錄所述代碼打點程序的調用次數;與所述統計模塊連接的存儲模塊,用於存儲所述代碼打點程序的調用次數。4、根據權利要求1所述的系統,其特徵在於,所述需要測試的指令包括語句指令、分支指令、條件指令、函數指令、路徑指令。5、一種實現覆蓋率測試的方法,包括以下步驟分析原始碼、統計需要測試的指令的總數;、在所述需要測試的指令前插入代碼打點程序;、對插入代碼打點程序的原始碼進行重新編譯;、運行代碼打點程序插入後的原始碼,記錄代碼打點程序的調用次數;、計算代碼打點程序的調用次數與需要測試的指令的總數的比值並輸出。6、根據權利要求1所述的方法,其特徵在於,所述需要測試的指令包括語句指令、分支指令、條件指令、函數指令、路徑指令。7、根據權利要求1所述的方法,其特徵在於,所述步驟S1包括Sll、解析原始碼結構;.S12、對所述原始碼中的指令類型進行識別;所述類型包括語句指令、分支指令、條件指令、函數指令、路徑指令;S13、按照所述指令的不同類型,分別統計每種類型的指令的總數。全文摘要本發明公開了一種實現覆蓋率測試的系統和方法,應用於多種作業系統實現覆蓋率統計。其系統包括與被測模塊連接的原始碼分析器,用於對所述被測模塊進行原始碼分析並統計所述被測模塊中需要測試的指令的總數;與所述被測模塊連接的代碼植入器,用於對所述被測模塊中需要測試的指令前插入代碼打點程序並對插入代碼打點程序的原始碼進行重新編譯;與所述被測模塊連接的代碼打點模塊,用於記錄代碼打點程序調用次數;與所述原始碼分析器和代碼打點模塊連接的計算模塊,用於計算所述打點程序調用次數與指令的總數之間的比值並輸出。本發明是在分析原始碼的基礎上進行覆蓋率的測試,因此可應用於不同的作業系統,提高了兼容性能和實用性能。文檔編號G06F11/36GK101561777SQ20081006659公開日2009年10月21日申請日期2008年4月14日優先權日2008年4月14日發明者張若冰申請人:中興通訊股份有限公司

同类文章

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

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有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-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀