單元測試的主要目的是獲取應用程序中可測試軟件的最小片段,將其同代碼的其余部分隔離開來,然后確定它的行為是否與預期的一樣。單元測試并不能保證程序是完美無缺的,但是在所有的測試中,單元測試是第一個環節,也是最重要的一個環節。單元測試的對象是軟件設計中的最小單位--模塊,它是一種程序員對自己的代碼進行自測試的工作,其測試依據就是軟件模塊的詳細設計文檔。單元測試通常采用白盒測試的方式,白盒測試也稱結構測試或邏輯驅動測試,已知產品內部工作過程,通過測試來檢測內部動作是否正常。測試按照程序內部結構進行,檢驗程序中的每條通路是否正確工作,而不顧它的功能。測試是從代碼的路徑結構和內部邏輯信息設計測試用例并覆蓋全部代碼、分支、路徑、條件。 所以,單元測試的一個很重要的指標就是代碼覆蓋率,很多軟件開發標準化組織都對單元測試的代碼覆蓋率有很明確的要求,低于標準就意味著單元測試不通過。
目前有很多單元測試工具都支持程序覆蓋率的自動統計,應用較廣的分析覆蓋率的工具有 Logiscope TestChecker、 TrueCoverage 、 PureCoverage 等,本文主要是介紹如何使用Rational公司的PureCoverage工具統計測試代碼覆蓋率。PureCoverage是Rational公司的單元測試工具PurifyPlus三套件之一,PurifyPlus的另外兩個套件分別是內存檢查工具purify和代碼效率分析工具pureQuantity。本文主要介紹如何使用PureCoverage配合Microsoft的開發工具Visual C++統計單元測試的代碼覆蓋率。PureCoverage通過記錄執行過的代碼,生成代碼覆蓋分析報告,其代碼覆蓋分析可以詳細到語句級,技術上的原理就是使用目標碼插入OCI(Object Code Insertion)技術。所謂的目標對象插入技術,就是直接對目標碼進行分析,并插入相應的匯編代碼,不過源代碼插入SCI(Source Code Instrumentation)和執行碼替換ECI(Executable Code Interception)都需要源代碼或編譯環境的支持,并且會引起程序運行緩慢和系統資源占用過多的問題。但是瑕不掩瑜,PureCoverage憑借著與Visual Studio集成開發環境的無縫連接,依然是單元測試工具的首選利器。
PureCoverage有兩種運行界面,一種是應用程序界面,可以脫離開發環境獨立運行;另一種是嵌入式界面,可以集成到Visual Studio的集成開發環境中,不過兩種運行方式的基本功能是相同的。下面用一個簡單的例子作個演示,使大家對PureCoverage有一個感性的認識,這個例子就是PureCoverage自帶的一個例子hello.exe。
首先運行PureCoverage,然后選擇“File”菜單的“Run”命令,在彈出的“Run Program”對話框中選擇hello.exe程序:
圖1. 選擇程序
文章來源于領測軟件測試網 http://www.kjueaiud.com/