天天看點

AQtime使用簡介-覆寫率測試方法

AQtime使用簡介-覆寫率測試方法

一.AQtime計算覆寫率的方法

AQtime對實際可執行的代碼行(不包括注釋、空行、函數頭、#include語句、宏定義、資料結構定義、case語句和對應的break、部分{}等)進行打點标記,完全執行的代碼行标記綠點,部分執行到的代碼行标記黃點,完全沒有執行到的代碼标記紅點。這樣AQtime統計的是插入的點數而不是實際的代碼行數,這個點數要遠遠小于實際的代碼行數。在AQtime中隻有綠點的數量才作為被覆寫到的行的數量,而黃點和紅點都被計算為未覆寫的行數,于是有計算覆寫率的公式:

                                                                                     綠點數量

                                            覆寫率 = ---------------------------------------------   * 100%

                                                             綠點數量+黃點數量+紅點數量

二.  AQtime覆寫率分析的意義

a.幫助發現未執行到的功能,為再次執行做準備;

  軟體中有些功能可能是相對比較隐蔽的,在編寫測試用例時也可能沒有涉及到此功能,如果沒有覆寫率分析的話,那麼此功能就可能不會被發現,這就造成覆寫不全面,為軟體留下隐患。那麼通過覆寫率分析就可以發現這些隐含的軟體功能,可以針對這些功能重新設計必要的測試用例。

b.幫助發現特殊情況下才能走到的功能,以再次評判軟體引入此功能是否

有必要;

  這些特殊情況包括:異常處理、故障處理、特殊保護、特定情況下的功能處理等等,在軟體測試的過程中這些情況往往是無法模拟的,這些無法覆寫到的功能有的可能是并不需要的,也就是說某些處理可能永遠都無法走到,那麼軟體引入這些處理就是沒有必要了。

c.幫助發現廢碼;

  通過AQtime覆寫率的分析就可以發現所有的永遠都不會執行到的代碼,但是與程式無關的代碼卻不一定能夠全部發現,因為這些代碼是有可能被執行到的,例如程式的調試代碼。這兩者都應該在軟體的後續版本中被删除掉,保留這些代碼隻會為軟體的安全帶來隐患,隻是後者的排查難度比較大,需要進行全面的代碼審查。

三.  AQtime覆寫率分析的方法

   1.重新編譯被測軟體,為軟體增加調試資訊項,具體添加的内容會因開發工具的不同而有所差異,詳見AQtime幫助手冊;

   2.打開AQtime,建立一個工程;

   3.加載被測軟體:在AQtime左邊的Setup屬性頁中點選“Add Module”按鈕,此時會彈出一個“Add Module to Project”窗體,選擇被測軟體,然後點選“打開”按鈕;

   4.選擇分析器:在AQtime的工具欄中點選“分析器選擇” 下拉框,選擇“Coverage Profiler”;

   5.在Setup屬性頁的工具欄中的“View By”下拉框中,我們選擇“Source File”;

   6.新加一個“Areas”:在“Areas”區域中的空白處點選滑鼠的右鍵,系統彈出一個浮動菜單,在菜單中點選“Add Area…”菜單項,此時系統出現“Add Area”對話框,接着,在對話框中的“Name”框中輸入任意的字元,在“Type”中選擇“Including”,“Level”中選擇“Line”,點選“OK”按鈕;建立的Area出現在“Areas”區域中;

   7.在“Areas”區域中系統有兩個預設的Area:“Profile Entire .NET Code by Routines”和“Full Check by Routines”,請确認沒有選擇二者;

   8.将被分析的源檔案加載到建立的Area中:在Setup屬性頁中的Modules視窗中展開被測軟體,此時被測軟體所用到的所有源檔案就以樹狀結構羅列出來,這些檔案有的是開發工具自動加入的,我們就沒有必要分析它們了,我們隻選擇開發方提供給我們的代碼清單中包含的源檔案即可。具體方法是,滑鼠左建點選要加載的第一個源檔案,然後按住Shift鍵,再用滑鼠左鍵點選要加載的最後一個源檔案并拖到建立的Area中,然後放開滑鼠即可。如果添加了不需要分析的源檔案,也可以進行移除操作,在Area中選擇不需要分析的源檔案用滑鼠右鍵點選,在彈出的浮動菜單中點選“Remove”菜單項,然後确認即可;

   9.運作被測軟體:在工具欄中點選綠色的“Run”按鈕或直接按F5鍵,AQtime開始運作被測軟體,此時我們便真正開始了我們的測試工作,執行我們編寫的測試用例。需要注意的是,在做完測試時一定要正常退出被測軟體,一些意外的退出AQtime是無法獲得測試結果的;

   10.執行結果的儲存與合并:我們的測試不可能一次全部做完,中間必有停頓,每做一次AQtime就會儲存一次測試結果,當次數比較多時可能儲存的結果就比較多了,這時AQtime的合并功能就顯得非常重要了。測試結果儲存在Report屬性頁中的Explorer視窗中,其中有三個根節點“Last Results”(最近的測試結果)、“Saved Results”(按了Explorer視窗工具欄上的儲存按鈕後儲存的結果)和“Merged Results”(合并後的結果),這三個節點下的結果都可以合并,合并後的結果自動儲存在“Merged Results”節點下。具體合并操作方法為:按住Ctrl鍵,用滑鼠左鍵點選要合并的結果,然後放開Ctrl鍵,再在被選擇的結果上點選右鍵,系統出現浮動菜單,選擇“Merge”項,系統開始合并;

   11.分析測試結果:在所有的測試結果中都有三個子節點“Routines”、“Modules”和“Source Files”。“Routines”是對函數覆寫分析的結果儲存,“Modules”是整個軟體總的覆寫率的統計,“Source Files”是針對在Area中加載的所有源檔案的覆寫率的統計,我們分析的重點是“Routines”。在合并的測試結果中展開“Routines”節點,輕按兩下“All Threads”子節點,此時右邊的“Report”

視窗中便會出現所有的函數的覆寫率統計表格。在表格中輕按兩下一個函數,在AQtime的底邊視窗中的“Editor”屬性頁中會看到相應的代碼,屬性頁的左邊會顯示代碼的調用情況——調用次數和标記。如果不能看到代碼,那麼就需要告訴AQtime代碼的存在路徑:在主菜單欄中點選“Options”,然後選擇“Search Directories”項,系統彈出“Search Directories”對話框,接着點選“Browse…”按鈕選擇源代碼所在的目錄,如果源代碼所在的檔案夾比較多,那麼我們可以隻将根檔案夾添加進去,然後選擇“Include Subdirectorie”項,最後點選“OK”按鈕。

在函數的覆寫率統計表格中我們可以看到程式的總行數、未覆寫行數、已覆寫行數、覆寫率和标記等列。根據這些資訊我們便可以分析那些代碼已經走到了那些還沒有走到,沒有走到的我們就要查找原因,針對不同的情況做不同的處理;

四. AQtime中影響覆寫率的因素

   1.在建立的Area中沒有去掉不要求分析的源檔案。在測試正式執行前一定要把不需要參與分析的源檔案去掉,否則覆寫率是不可能上去的,所有的工作都等于白做了。

   2.用例設計不充分。在設計用例時不可能把所有的功能點都覆寫到,這就造成在執行用例時會有部分代碼走不到,進而覆寫率受到影響。當我們分析覆寫結果時針對沒有走到的代碼還可以補充部分測試用例,以提高覆寫率。

   3.源檔案中存在廢代碼。包括以下幾種情況:調試代碼、無用的語句或函數,還有當需求發生了變化軟體功能進行了修改後,但是以前的代碼沒有删除也是造成廢碼的情況。

   4.不可能出現的異常處理。

   5.不可能走到的條件分支。

   6.空函數。

   7.測試環境與實際運作環境的差别。

以上隻是我使用AQtime一點心得,有錯誤的地方請大家批評指出,以後還會繼續把我的心得與大家分享.

交流請發郵件:[email protected]或msn:[email protected]