工具輔助: 使用 Rational PurifyPlus 工具執行測試套組(Windows 和 UNIX)
這個工具輔助說明在測試套組中使用 Rational PurifyPlus 工具來偵測可能有害的記憶體錯誤和洩漏,以確保測試達到程式碼涵蓋率的可接受層次,並使您注意效能問題。
工具: Rational PurifyPlus
關係
主要說明

這個工具輔助同時適用於 Microsoft Windows 系統和 UNIX 系統。

PurifyPlus 工具包括 Rational Purify、Rational PureCoverage 和 Rational Quantify。

Book 圖示 若要進一步瞭解 PurifyPlus 工具,請閱讀 PurifyPlus 的入門手冊(Windows 版本或 UNIX 版本)。

helpbook 圖示 如需使用 PurifyPlus 工具的逐步資訊,請參閱工具的線上說明。

您可以使用 PurifyPlus 工具執行下列動作:

  • 偵測記憶體錯誤和洩漏(Windows 和 UNIX 上的 C/C++)。 使用 Purify 來標出測試中應用程式的錯誤和洩漏。
  • 監督程式碼涵蓋率(Windows 和 UNIX)。 使用 PureCoverage 來顯示測試中的差異,並提出迴歸警示。
  • 評估效能(Windows 和 UNIX)。 使用 Quantify 來警告您,新的移入是否會使效能降低。

使用 PurifyPlus 工具執行測試套組會造成可靠的零錯誤程式碼,它將以最大效率執行。


工具步驟

若要使用 PurifyPlus 工具實作測試:

1. 執行 Purify 之下的程式來收集錯誤和洩漏資料(限 C/C++ 程式) 

Purify 在測試中應用程式和它使用的元件中偵測執行時期錯誤,包括記憶體洩漏。它報告記憶體錯誤,例如陣列界限錯誤、透過 dangling 指標存取、未起始設定的記憶體讀取、記憶體配置錯誤和記憶體洩漏,以便在它們造成任何損害之前加以解決。 

從將 Purify 併入現有的 Perl Script、批次檔和 Make 檔中開始。

  • 在 Windows 上,修改執行程式的指令行。<ProgramName>.exe
     
    Purify /SaveTextData <ProgramName>.exe
     

  •  
  • 在 UNIX 上,修改編譯和鏈結行:
     
    % purify -logfile=<filename> cc -g <program_name>.c

在 UNIX 上使用 /SaveTextData -logfile 選項,會造成 Purify 在沒有使用者介面的情況下執行,當您從 Script 執行程式時,若程式終止,會傳送錯誤和洩漏資料至文字輸出檔。

自己查驗此輸出檔,或撰寫 Script 來分析它。您可以在此檔案中使用錯誤和警告訊息作為測試結果的其他準則。

如果您已安裝 PureCoverage,您可以新增 /Coverage (Windows) 或新增 purecov purify (UNIX) 選項,來收集相同執行作業的涵蓋率資料。使用涵蓋率資料,您也可以尋找程式碼中尚未檢查是否有錯誤的部分。如需使用涵蓋率資料的相關資訊,請參閱這個工具輔助的步驟 2。

附註

  • 使用 Purify API 來控制程式內的資料收集。
  • Purify 也有指令行選項,可讓您將測試資料儲存為二進位檔,您可以使用 Purify 圖形式使用者介面檢查它們;這在工具輔助「使用 Rational PurifyPlus 工具分析執行時期效能」有加以討論。

helpbook 圖示 如果需要詳細資訊,請查閱 Purify 線上說明索引的下列主題:

  • 執行程式
  • 錯誤訊息
  • 選項
  • API 函數
  • 儲存資料

2. 執行 PureCoverage 之下的程式來監督程式碼涵蓋率。 

PureCoverage 提供精確的行層次和函數層次程式碼涵蓋率資訊。在夜間測試中使用 PureCoverage,以確保測試能趕上程式碼開發的速度。

從將 PureCoverage 併入現有的 Perl Script、批次檔和 Make 檔中開始。

  • 在 Windows 上,修改執行程式、Java 類別檔(.jar 檔)或 Applet 的指令行,來包含 PureCoverage:
     
    對於 C/C++ 程式:Coverage /SaveTextData <ProgramName>.exe
    對於 Java 類別檔:Coverage /SaveTextData /Java Java.exe <ClassName>.class
    對於 .NET 管理的程式碼程式:Coverage /SaveTextData /Net <ProgramName>.exe
     
    使用 /SaveTextData 選項會造成 PureCoverage 在沒有使用者介面的情況下執行,當您從 Script 執行程式時,若程式終止,會傳送資料至文字輸出檔。

  •  
  • 在 UNIX 上,修改編譯和鏈結行:
     
    對於 C/C++ 程式:% purecov cc -g <program_name>.c
    對於 Java 類別檔:% purecov -java java <class_name>
     
    在程式結束之後使用 PureCoverage -export 選項,將涵蓋率資料寫至文字輸出檔。

當您運用程式碼時,PureCoverage 會記錄關於使用的行和函數的記錄。您可以從程式呼叫 PureCoverage API 函數,在程式碼的特定點儲存資料,或只為特定常式收集資料。當您結束程式時,您有精確的資料集指出測試中有涵蓋和未涵蓋哪些行和哪些函數。

您可以從多個執行作業中合併涵蓋率資料,或將它保存在個別檔案中,以分析涵蓋率的變更。

使用 Script 來比較現行資料與您從先前執行作業中收集到的資料。如果涵蓋率下降,表示您的測試可能沒有運用新程式碼,或新程式碼可能產生問題,造成未測試大量程式碼。使用 Rational Robot 或 Rational Visual Test 之類的測試工具,撰寫測試案例來運用新的程式碼。

附註:您可以使用 PureCoverage 圖形式使用者介面檢查二進位涵蓋率資料檔。

helpbook 圖示 如果需要詳細資訊,請查閱 PureCoverage 線上說明索引的下列主題:

  • 執行程式
  • 選項
  • API 函數
  • 儲存資料
  • 比較資料

3. 執行 Quantify 之下的程式來評估效能 

Quantify 為程式及其元件提供完整而精確的效能資料集,使您能夠監督效能及在開發和測試週期中儘早識別迴歸。 

從將 Quantify 併入現有的 Perl Script、批次檔和 Make 檔中開始。

  • 在 Windows 上,修改執行程式、類別檔(.jar 檔)或 Applet 的指令行,來包含 Quantify:
     
    對於 C/C++ 程式:Quantify /SaveTextData <ProgramName>.exe
    對於 Java 類別檔:Quantify /SaveTextData /Java Java.exe <ClassName>.class
    對於 .NET 管理的程式碼程式:Quantify /SaveTextData /Net <ProgramName>.exe
     
    使用 /SaveTextData 選項會造成 Quantify 在沒有使用者介面的情況下執行,當您從 Script 執行程式時,若程式終止,會傳送資料至文字輸出檔。

  •  
  • 在 UNIX 上,修改編譯和鏈結行:
     
    對於 C/C++ 程式:% quantify cc -g <program_name>.c
    對於 Java 類別檔:% quantify -java java <class_name>
     
    在程式結束之後使用 Quantify -export 選項,將效能資料寫至文字輸出檔。

當您運用程式碼時,Quantify 會記錄關於程式效能的資料。 您可以使用 API 函數來隨時暫停和回復資料錄製,將概況限制至特定程式碼部分。您也可以在程式碼執行的特定點儲存資料,或只針對特定常式收集效能資料。當您結束程式時,Quantify 有其效能的精確設定檔。

您可以撰寫 Script 來比較資料集和報告效能的變更:

  • 效能的降級指出最近移入的程式碼使程式速度變慢。分析您已收集的資料,尋找程式中有無法接受之效能的部分。
  • 所標示的改進指出開發人員已改進其程式碼,或測試基於某種原因而停止運用大量程式碼。請檢查涵蓋率資料,看看您是否仍然達到先前的涵蓋率層次。

附註:Quantify 也可以將測試資料儲存為二進位檔,您可以使用 Quantify 圖形式使用者介面檢查它們;這在工具輔助「使用 Rational PurifyPlus 工具分析執行時期效能」有加以討論。

如果需要詳細資訊,請查閱 Quantify 線上說明索引的下列主題:

  • 執行程式
  • 選項
  • API 函數
  • 儲存資料
  • 比較資料