面向開發人員和測試人員的IBM Rational PurifyPlus

發表于:2008-03-06來源:作者:點擊數: 標簽:rationalRationalPurifyPluspurifyplus
開發人員和測試人員能夠在組織中扮演不同的角色,但都是為了最大化整個項目 質量 的共同目標。不管它意味著要增加客戶想要的特征和 性能 ,還是要確保這些特性能夠很好的運轉,您的項目小組都要維持一個高水平的質量來取得成功的機會。 IBM Rational PurifyPl
開發人員和測試人員能夠在組織中扮演不同的角色,但都是為了最大化整個項目質量的共同目標。不管它意味著要增加客戶想要的特征和性能,還是要確保這些特性能夠很好的運轉,您的項目小組都要維持一個高水平的質量來取得成功的機會。

  IBM® Rational® PurifyPlus™ 能夠幫助開發人員和測試人員達到他們項目質量的共同目標。有些人把 PurifyPlus 看作一個測試工具,有些人則將它看作是一個開發工具。開發人員和測試人員都可以從 PurifyPlus 獲得利益,因為他們都是在軟件項目中為高水平的質量而奮斗。

  在這篇文章中,我展現了一個 PurifyPlus 的概述、它如何操作,以及為什么它對開發人員和測試人員有如此大的價值,通過許多重要的產品活動不僅僅提高了產品質量,還增加了個人和小組的效率和有效性。

  低質量的成本

  為了您項目的成功,盡早找到并修復故障是非常必要的。如果能夠盡早找到并修復缺陷,這些缺陷的成本將少得多,要么通過開發人員要么通過早期得測試得方法來操作。故障如果通過了測試并到達了客戶,成本將比找到并修復要高得多,而且對您得聲譽和最終的業務也有相當大的影響。

  在開發和測試階段使用 PurifyPlus,您可以盡早將質量引入項目,并且可以避免不完全測試的高成本,處理性能問題,以及/或者稍后找到并修復內存使用錯誤。

  PurifyPlus 組件

  Rational PurifyPlus 產品有三個組件:內存錯誤驗證的 Purify,性能數據采集的 Quantify,以及代碼覆蓋分析的 PureCoverage。我將依次討論每個成分的工作方式。

  Purify 組件

  在 C/C++ 程序中去除分解內存使用。當它發現事件比被分配時使用更多的內存,或者在它初始化之前或者釋放之后使用內存,就會發布一個錯誤報告。Purify 還可以報告內存泄漏――比如,當一個程序在丟失內存跟蹤之前不能釋放一個或者更多的內存板塊時。尤其是在 Java™ 和 Microsoft .NET 程序中,Purify 能夠幫助您識別使用內存并且沒有將它釋放的程序區域,這是另一種類型的內存泄漏。

  對于 C 和 C++ 程序 (而不是 Java 或者 .NET), Purify 通過在這個程序執行中的每一個內存訪問周圍插入額外的指令來工作。這叫做儀表化。當您運行這個儀表化程序時,它將正常運作,進行與平時一樣的操作。但是,Purify 在里面,可以檢查問題。如果這個程序從還沒有被初始化的內存中讀取,或者讀取或者改寫已經被釋放或者仍然存在于分配區域之外的內存,您將看到一個 Purify 錯誤報告。

  有些類型的內存訪問錯誤 (比如使用一個 NULL 指示器) 將會導致一個程序完全崩潰。這是一個很容易就可以辨認出的一個錯誤――您可以用一個正規調試器來找到它。Purify 可以讓您看到更多潛伏的內存錯誤類型,它們可能出現在程序開起來似乎運轉正常的情況下。這個特殊的功能在程序中可以產生正確的答案,您的測試可以通過,但是仍然可能存在內存錯誤。

  例如,一個邏輯性的瑕疵可能在只有99條被分配時已經產生100條的錯誤。這種錯誤可能不會導致您的程序崩潰或者您的測試失敗,但是仍然存在內存崩潰的危險。某天當潛在的內存錯誤由于一個不正確的操作超出了內存的范圍,那么將導致系統崩潰,這將導致客戶的不滿意。在項目的早期,Purify 就能夠很容易的發現這種類型的錯誤。

  對于 Java 和 .NET 程序,當您的項目仍然在使用本應該已經釋放的內存時, Purify 能夠幫助您識別出來。這種類型的內存泄漏將會導致您的程序越來越大,運行越來越慢,最終耗盡內存。

  Quantify 組件

  Quantify 是 PurifyPlus 中進行分析的組件。它適用于 C/C++, Java,以及 .NET 程序。Quantify 度量并分析在程序中所花費的時間,從而識別“熱點”和無效的代碼。獨特的 "River of Time" 顯示可以直接讓您找到您的程序中最浪費時間的區域。

  PureCoverage 組件

  PureCoverage 進行代碼覆蓋的分析。就像 Quantify,您可以利用它應用在您的 C/C++, Java, 以及 .NET 程序中。利用 PureCoverage,您可以確保測試您的整個程序。畢竟,您沒有進行測試的代碼的質量是未知的。因為您的測試并不報告它的錯誤或者健康狀態。沒有測試到的錯誤將會“逃離”進入釋放,找到并修復它們的成本將十分昂貴。在發布版本之前識別測試漏洞,填充并找到這些錯誤,成本會低得多。

  此外,很重要得一點是, Purify 只在運行測試的過程中對部分的程序進行錯誤的檢驗。如果您在測試覆蓋范圍中有漏洞,那么您在 Purify 錯誤檢驗中仍然會有漏洞。這是使用 PureCoverage 另一個很好的理由。

  開發人員和測試人如何使用 PurifyPlus

  開發人員和測試人員使用工具的方法是不同的。一個開發人員更想要交互的,圖解的并帶有“挖掘”性能的結果,然后 PurifyPlus 將它交付。而測試人員更喜歡用報告中的日志文檔和總結報告,利用它們捕捉結果。PurifyPlus 也可以產生這樣的結果。在這個部分中我將分別描述開發人員和測試人員利用 PurifyPlus 組件優化質量的方法,還將討論您將從中獲得的好處。

  開發人員使用 Purify

  開發人員可以用兩種方法來使用 Purify。首先,當您遇到一個程序錯誤或者看起來是與不適當使用內存相關的缺陷時,您可以把它當作一個程序調整工具來使用。當內存被毀壞、不適當地使用,或者泄漏時,Purify 能夠幫您識別所有不正當行為。這樣看來, Purify 像一個醫生:當您生病需要診斷治療時可以求助于它。

  但是開發人員還有另外一種使用 Purify 的方法:像作家利用拼寫檢查器一樣,找到并去除您沒有意識到的錯誤。有規律地使用 Purify,您可以在程序崩潰或者其它明顯疑問的行為發生之前,找到內存的錯誤使用并修復它。(如果您在檢驗之前找到并修復了這個錯誤,它還會有影響嗎?)

  有些程序設計部門使用 Purify 的方法是,將它作為源代碼中的自動步驟來控制過程。在開發人員的檢入代碼被允許進行測試之前,必須用 Purify 來進行測試。如果存在 Purify 錯誤報告,這個變更是不能繼續進入到這個構架的。這樣可以使構架保持健康,并不至于開發人員陷入困境中。畢竟,您并不希望成為引入一個變更而導致所有測試崩潰的人。這樣看來,Purify 就像維他命或者鍛煉:您可以每天使用來保持您代碼的健康,這樣一來這些問題就可以掌控之中。

  開發人員使用 Quantify

  測試人員或者測試工具可以從較高的層面上告訴您系統性能并不充分,但是找到并修復這個潛在問題的任務將落到開發人員身上。這就是 Quantify 組件參與進來的位置。Quantify 重點突出了您代碼中的 "熱點",比如運算法則需要改良的位置,如果鏈接列表應該是一個哈希表,或者什么地方應該使用緩存,以避免不必要的重新計算。

  Quantify 可以用來比較您程序的兩種趨向,這樣您可以清楚地看到您做出代碼變更時所表現的不同性能。這樣您可以利用真實的代碼而不是猜測來對您的性能進行最優化操作。對于 C 和 C++ 程序,Quantify 利用不變的定時數字,這樣性能數據就不會受到外界因素的影響,比在測試機上加載。這意味著您可以更可靠地比較這兩種趨勢,度量與只使用度量“運行時間”工具相比較時地良好性能差別。

  除了性能分析之外,另一種使用 Quantify 的方法是獲取對程序邏輯和操作更好的理解。Quantify 的 "River of Time" 展現了一個圖示,顯示了程序的功能是如何調用對方的。您可以利用它來跟蹤程序邏輯,并可以查看子系統之間的相互關系。有時最有價值的見解來自諸如"我并不希望這個子系統來調用那個子系統。" 之類的驚喜。Quantify 的調用圖示向您顯示了將會發生什么――如果它確實您所期望的不匹配,那么您就學習更多的相關知識。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97