4選擇[BoundsChecker/Rebuild All with BoundsChecker] 菜單命令,對程序重新進行編譯連接,也就是在這時,BoundsChecker向被測程序的代碼中加入了錯誤檢測碼。編譯連接完成后,BoundsChecker會在你為BoundsChecker構造的文件夾中生成可執行文件。
MILY: 宋體">在FinalCheck模式下對程序進行檢測的準備工作都已經做好,這時可以啟動程序開始測試了,
操作步驟與在ActiveChecker模式下沒什么區別。具體步驟如下:
- 確保VC++集成開發環境中[BoundsChecker/ Integrated Debugging]菜單項和[BoundsChecker/Report Errors and Events]菜單項處于選中狀態。
- 點擊[ Build\Start Debug]菜單,選中“Go” 菜單項。程序開始在Debug狀態下運行。
- 按照你制定好的測試用例,對程序進行操作。
- 當BoundsChecker檢測到了錯誤時,會彈出窗口向你匯報,你可以當時就進行處理,也可以等到你的操作全部完成,退出程序之后再對列出的這些錯誤進行分析。這完全取決于你是否選中了[BoundsChecker/Report Errors Immediately] 菜單項。
- 退出程序后,BoundsChecker會給出錯誤檢測結果列表。該錯誤列表與ActiveChecker給出的錯誤列表的查看方法完全一樣。只不過這個列表中所報告的信息會更多、更詳細一些。
好了,BoundsChecker在FinalCheck模式下的使用也介紹完了。ActiveChecker、FinalCheck這兩種模式,比較而言各有長短。ActiveChecker使用方便,只需在Debug狀態下直接運行程序即可,并且程序的運行速度較快,但檢測的錯誤種類有限;FinalCheck模式下,需要使用BoundsChecker的編譯連接器重新編譯連接生成可執行程序,并且程序的運行速度比較慢,但檢測的錯誤種類、提供的錯誤相關信息要多于ActiveChecker。所以,何時使用何種模式,應根據當時的具體情況而定。
3.3 檢測Win32 API函數的兼容性
BoundsChecker還提供了一個功能——檢測程序中使用的Win32 API函數在不同平臺上的兼容性。該功能與前面提到的ActiveChecker、FinalCheck模式沒有什么關系,它是獨立的一個功能。
雖然大多數Win32 API函數都適用于Win95、Win98、Win2000、WinNT等不同的Windows操作系統平臺,但并不是所有的API函數都滿足這種情況。你可能不知不覺的使用了在某一個平臺下允許,在另一個平臺下卻不允許使用的API函數,而項目的要求是:程序能夠在這兩種平臺下運行。 BoundsChecker提供的這個檢測Win32 API函數兼容性的功能,恰好能夠處理這個問題。
該功能的使用方法如下:
啟動[BoundsChecker/View/Compliance Report]菜單命令,如下圖所示:

圖3-5 啟動Win32 API函數兼容性檢測功能
會彈出下面的窗口:

圖3-6Win32 API函數兼容性檢測功能
在對話框中選擇程序承諾能夠運行的平臺,以及被要求遵從的其他標準(標準C和擴展的標準C),點擊“OK”按鈕,BoundChecker會給出兼容性檢測報告。
3.4 忽略錯誤
在某些情況下,我們需要忽略BoundsChecker報告的一些錯誤,這些情況包括:
1 誤報。BoundsChecker 指定程序中的某段代碼存在錯誤,但經過我們的仔細檢查,證實程序確實沒有這個錯誤,這是BoundsChecker的誤報。工具畢竟是工具,它只能依照為它制定的算法行事,所以會有誤報的情形發生。但千萬不要輕易認定某一個錯誤為誤報,一定要對錯誤進行仔細的分析,確定是真正的誤報。
2第三方的代碼。BoundsChecker指定的錯誤發生位置在第三方提供的代碼中,包括第三方提供的程序庫、DLL、OCX等。對于這種情況,我們也要先進行認真的檢查,確定不是由于我們錯誤的使用第三方的代碼引起的。如果最后確定不是我們的原因,則這樣的錯誤報告可以忽略。
3.5 其他
還有一點需要強調,使用BoundsChecker對程序進行測試時,需要有程序的源代碼。如果沒有源碼,BoundsChecker雖然也可以打開EXE文件將其執行起來,但得出的測試結果經常是不正確的,因此也就沒有太大的意義。
另外,除了可以在VC++集成開發環境中使用BoundChecker外,從 [開始菜單] 中啟動BoundChecker,然后打開經BoundChecker編譯連接生成的可執行文件,也可以對程序進行測試,操作方法與集成到VC++集成開發環境中的BoundChecker的操作方法是一樣的,在此就不贅述了。
至此,BoundChecker所提供的功能全部介紹完了。
4 TrueCoverage
覆蓋率對于測試來說是一項重要的數據。在我們執行了針對一個功能模塊的所有測試用例后,非常想了解測試對于模塊代碼的覆蓋情況,也就是測試覆蓋率到達了多少,以此來判斷測試工作是否可以結束,如果還未達到測試目標,如何進一步補充測試用例。
對于這些問題,如果沒有覆蓋率統計工具的幫助,而想通過手工來進行,幾乎是不可能的。
TrueCoverage的功能就是統計測試覆蓋率,它恰好能為我們就上面這個問題提供幫助。TrueCoverage給出的覆蓋率是“語句覆蓋”,是最低覆蓋強度的覆蓋率,所以我們測試的項目,用TrueCoverage統計后,應盡量達到100%的覆蓋。
TrueCoverage的應用階段為單元測試階段和集成測試階段。
和BoundChecker一樣,TrueCoverage安裝成功后,在你的VC++集成開發環境中,會多出一個名為TrueCoverage的菜單,如下圖所示:

圖4-1 TrueCoverage在VC++集成開發環境中添加的菜單
這說明,TrueCoverage已經完好的集成到VC++集成開發環境中了。
下面開始介紹TrueCoverage的具體使用步驟。
4.1 使用TrueCoverage
TrueCoverage使用步驟:
1 在VC++集成開發環境中,打開你所要測試的項目。
2 為TrueCoverage構造一個文件夾,方法為:
首先,點擊[ Build/Configurations...]菜單命令。
其次,在彈出的對話框中點擊 Add 按鈕。
然后,在Configuration 編輯框中添入你為TrueCoverage創建的文件夾的名稱,這個名稱是任意的,比如我們叫做TrueCoverage。
最后,在 Copy settings from組合框中選中 XXX—Win32 Debug項,然后點擊OK按鈕,接著點擊Close按鈕。
現在,我們已經為TrueCoverage構造好了一個文件夾。
3 點擊[Build/Set Active Configuration…] 菜單命令,選中你剛才為TrueCoverage建的文件夾,然后點擊OK按鈕。
4 選擇[TrueCoverage/Rebuild All with TrueCoverage] 菜單命令,用TrueCoverage的編譯連接器對程序重新進行編譯連接。TrueCoverage對程序進行編譯連接時生成的中間文件、可執行程序,會放到你剛才為TrueCoverage創建的文件夾下。在這個編譯連接過程中,TrueCoverage向可執行程序中插入了一些信息,這也就是 TrueCoverage能夠跟蹤、統計測試覆蓋率的原因。
5點擊[TrueCoverage/Run with TrueCoverage] 菜單命令,TrueCoverage被啟動,接著你的程序也被執行起來,F在就可以按照事先已經制定好的測試用例,在程序中逐個進行執行了, TrueCoverage會在后臺記錄程序的執行覆蓋情況。
在TrueCoverage界面中有一個工具條,我們有必要在這里對它做一下說明。如下所示:

圖4-2 運行控制工具條
這個工具條在程序運行起來后,會由不可用狀態變為可用狀態。工具條上各按鈕功能為:
按鈕1:如果在程序的運行過程中你按下了該按鈕,則覆蓋率的統計只計算到此,你還可以繼續操作程序,但此時對程序的任何操作都不再計入到覆蓋率統計中去了。
按鈕2:如果在程序的運行過程中你按下了該按鈕,則TrueCoverage會馬上顯示截止到目前為止的測試覆蓋率情況。之后你可以繼續操作程序,TrueCoverage會繼續在后臺記錄程序的執行覆蓋情況。
按鈕3:如果在程序的運行過程中你按下了該按鈕,則TrueCoverage會清除在這之前的覆蓋數據,使各項覆蓋率的數據均為零。你可以繼續操作,TrueCoverage在后臺從零開始重新記錄程序的執行覆蓋情況。
6 當你退出程序時,TrueCoverage會顯示本次操作結束后,程序的執行覆蓋情況,包括:整個可執行程序的覆蓋情況、每個代碼文件的覆蓋情況、每個代碼文件中每個函數的覆蓋情況,對于這些覆蓋率統計結果,可以文件的形式進行保存。要想再次執行程序,點擊TrueCoverage 中的[Program/ Start]菜單命令即可。
我們不太可能一次執行完所有的測試用例。TrueCoverage 為我們想到了這一點。在我們每次使用TrueCoverage運行起程序,執行了一些用例,關閉程序,并保存這一次的覆蓋率統計結果后, TrueCoverage會詢問你是否將本次的測試結果合并到總的覆蓋率統計結果中去,一般情況下,我們合并進去就可以了。
下面介紹一下TrueCoverage的界面,按圖中的編號分別給出說明。

圖4-3 TrueCoverage的運行界面
1:表示程序在某一次執行結束后的測試覆蓋情況。雙擊某一個條目,會在3、4部分的窗口中顯示關于本次覆蓋率的詳細信息。本圖中的情況,表示測試人員執行了兩次程序。
2:表示程序當前總的測試覆蓋情況,是多個1合并后的結果。雙擊該條目,會在3、4部分的窗口中顯示關于總覆蓋率的詳細信息。
3:該窗口中顯示的數據與你當前選中的某一次或總的測試覆蓋統計結果相對應(即前面說到的1、2)。該窗口中顯示的數據包括:程序的覆蓋率、每個代碼文件的覆蓋率。更詳細的信息顯示在窗口4中。
文章來源于領測軟件測試網 http://www.kjueaiud.com/