天天看點

通過增加代碼覆寫率提高單元測試的品質

   在許多類型的開發項目中,無論您使用的是靈活開發方法、rational unified process (rup),還是瀑布式開發方法,在開發期間,測量已執行代碼的數量是一個主要度量名額。這對開發人員和測試人員都很重要,因為當開發人員生成具有高代碼 覆寫率的代碼時,測試團隊可以關注代碼是否滿足業務目标,而不是陷入大量低級代碼缺陷中。

  當代碼覆寫率非常重要時

  下列是代碼覆寫率非常重要時的一些場景的常見示例:

  ● 任何想要響應業務并以低風險方式進行更改的團隊

  ● 當某個項目定義了開發和測試之間的協定,以便通過開發測試獲得代碼覆寫率時,這意味着測試團隊在捕捉代碼錯誤上花費的時間更少

  ● 靈活團隊可能想要在每個 sprint(沖刺階段)結束時制定釋出代碼決策,因為這會提高傳遞物的品質,在将代碼用于生産之前很少需要轉換代碼

  ● 一些想要減少技術債務的團隊,這些團隊可以逐漸增加單元測試的數量并重構代碼,進而減少錯誤并減低複雜性

  ● 想要通過建構度量程式來衡量品質和技術債務的組織,這樣做可及早發現發展趨勢并進行相應的改進

   今年早些時候,我編寫了一個原型擴充,用該擴充來內建 ibm? rational team concert? 和 rational application developer。如果沒有足夠的代碼覆寫率,就會阻止傳遞給 rational team concert 的代碼,正如在 rational application developer 中測量的那樣。此擴充(現在名為 code coverage advisor)已正式納入 rational application developer 中,在版本 8.0.3 之後都可以找到它。這意味着您現在可以配置 rational application developer 和 ibm rational team concert,在傳遞代碼之前檢查代碼覆寫率。本文将介紹如何設定它,以及在項目開發期間如何使用它來提高代碼覆寫率。

  提示:

  您需要了解一些 rational application developer 知識才能了解本文。

  後面的内容包含了三個主題:

  1、何時适合使用 code coverage advisor

  2、當使用在 rational application developer 中配置的此額外過程傳遞代碼時會發生什麼事

  3、如何配置 rational team concert 以使用 advisor

  最适合使用 code coverage advisor 的情況

  如何使用 advisor?以下是兩個主要場景:

  ● 第一個場景針對的是新項目,出現在您想要確定單元測試提供足夠的代碼覆寫率時。在這種場景下,可使用 advisor 幫助開發團隊維護高标準的單元測試和代碼覆寫率。

   ● 第二個場景針對的是您想要改進的具有糟糕的單元測試或不存在單元測試的項目。通過打開 advisor,要求開發人員為他們修改的代碼提供單元測試,這樣這些團隊可以一種簡單、遞增且可管理的方式進行改進。此外,這種方法意味着正在編寫的單 元測試将包含正在修改的代碼;是以,開發人員很可能會發現缺陷。

  在這兩種場景中,code coverage advisor 可提供大量價值,通過幫助團隊維護單元測試的高代碼覆寫率來改進其代碼品質。下一部分将介紹開發人員在已經配置了代碼覆寫率功能時如何使用 rational application developer 傳遞代碼。

 使用 rational application developer 中的新流程傳遞代碼

  您需要做的第一件事是(如果還沒有做)配置項目,以收集代碼覆寫率資訊。

  配置項目的流程

  1、在 project explorer 中右鍵單擊項目,選擇 properties。

  2、然後從菜單中選擇 code coverage ,采用與設定團隊相同的方式設定項目的代碼覆寫率資訊(參見圖 1)。

圖 1.項目代碼覆寫率配置

通過增加代碼覆寫率提高單元測試的品質

  使用啟動的流程傳遞代碼時會發生什麼事

  在配置了代碼覆寫率後,code coverage advisor 會檢查檔案的覆寫率,以确定是否傳遞了代碼。coverage advisor 在下列情況下不支援傳遞代碼:

  ● 覆寫率低于目标水準。

  ● 覆寫率過期了(例如,您已修改了其中一個檔案,但沒有重新運作測試)。

  ● 項目未啟用代碼覆寫率。

  在這些情況下,需要開發人員在傳遞代碼前提高覆寫率。但是,如果已大緻配置了流程,并且人員具有必備的權限,那麼開發人員可選擇忽略警告并傳遞代碼覆寫率不足的代碼。

  讓我們看一個示例。在如圖 2 所示的項目中,您可以看到,helloworld.java 類并不滿足覆寫率要求。

圖 2. project explorer 顯示了失敗的代碼覆寫率

通過增加代碼覆寫率提高單元測試的品質

  如果您嘗試傳遞代碼,傳遞将失敗,您将得到如圖 3 所示的流程建議:重寫“prohibit unsatisfactory code coverage”先決條件。

圖 3. 代碼覆寫率傳遞失敗

通過增加代碼覆寫率提高單元測試的品質

<a href="http://www.51testing.com/batch.download.php?aid=37609" target="_blank"> 在 rational team concert 中設定流程</a>

<a href="http://www.51testing.com/batch.download.php?aid=37609" target="_blank"></a>

<a href="http://www.51testing.com/batch.download.php?aid=37609" target="_blank">  在流程中存儲資訊意味着集中存儲所必需的代碼百分比門檻值,并在團隊中平等應用它們(盡管您可要針對不同元件配置不同的代碼覆寫率要求,如後面所見)。您可以在本地用戶端設定不同的覆寫率設定,但是當傳遞代碼時将使用基于伺服器的設定。</a>

<a href="http://www.51testing.com/batch.download.php?aid=37609" target="_blank">  配置流程</a>

<a href="http://www.51testing.com/batch.download.php?aid=37609" target="_blank">  提示:</a>

<a href="http://www.51testing.com/batch.download.php?aid=37609" target="_blank">  在開始前,您需要具有修改 project area 的流程的相應角色。</a>

<a href="http://www.51testing.com/batch.download.php?aid=37609" target="_blank">  1、從 eclipse shell,導航到 work item 視圖,打開 team artifacts 視圖。</a>

<a href="http://www.51testing.com/batch.download.php?aid=37609" target="_blank">  2、在想要配置的項目區域右鍵單擊,并選擇 open。</a>

<a href="http://www.51testing.com/batch.download.php?aid=37609" target="_blank">  3、然後單擊 process configuration 頁籤打開流程編輯器(圖 4)。</a>

<a href="http://www.51testing.com/batch.download.php?aid=37609" target="_blank">圖 4. 流程配置編輯器</a>

通過增加代碼覆寫率提高單元測試的品質

  1、打開 team configuration 視圖,選擇 deliver (client) 操作,然後選擇 everyone (default) 列下面的單元格,如圖 5 所示。

圖 5. 傳遞選項

通過增加代碼覆寫率提高單元測試的品質

  将足夠的代碼覆寫率配置為先決條件

  現在您準備好配置規則,然後可以檢查每次有人傳遞代碼時代碼覆寫率是否足夠。

  1、添加一個先決條件來檢查代碼覆寫率:

  a)在 preconditions 部分單擊 add,選擇 prohibit unsatisfactory code coverage(參見圖 6)。

  b)配置所需的各種代碼覆寫率級别。

  您可以在源代碼的不同級别指定所需的覆寫率。例如,每個檔案可能需要 70% 的行覆寫率;但是,開發人員對每種類型必須具有 100% 的覆寫率。您還可以正規表達式以将檔案從覆寫率統計資訊中排除,這在您具有一些自動生成的不在意覆寫率的代碼時很有用。最後,不同的元件可以具有不同的規 則,方法是指定這些覆寫率設定應用的元件。

圖 6. prohibit unsatisfactory code coverage 配置

通過增加代碼覆寫率提高單元測試的品質

  2、現在儲存流程,這些新規則會在您下次傳遞代碼時生效。

====================================分割線================================

最新内容請見作者的github頁:http://qaseven.github.io/

繼續閱讀