測試的最佳實務 - Amazon CodeCatalyst

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

測試的最佳實務

使用 CodeCatalyst 提供的測試功能時,建議您遵循這些最佳實務。

自動探索

在 CodeCatalyst 中設定動作時,自動探索可讓您自動探索各種工具的輸出,例如 JUnit 測試報告,並從中產生相關的 CodeCatalyst 報告。自動探索有助於確保即使已探索輸出的名稱或路徑變更,報告仍會持續產生。新增檔案時,CodeCatalyst 會自動探索檔案並產生相關報告。不過,如果您使用自動探索,請務必考量此功能的下列部分層面:

  • 當您在動作中啟用自動探索時,所有自動探索到的相同類型報告都會共用相同的成功條件。例如,共用條件,例如最低通過率,將適用於所有自動探索的測試報告。如果您需要相同類型的報告不同條件,則必須明確設定每個報告。

  • 自動探索也可以找到您的相依性產生的報告,如果設定成功條件,則這些報告上的 動作可能會失敗。此問題可以透過更新排除路徑組態來解決。

  • 自動探索不保證每次都會產生相同的報告清單,因為它會在執行時間掃描動作。如果您希望一律產生特定報告,您應該明確設定報告。例如,如果測試在您的建置中停止執行,則測試架構不會產生任何輸出,因此不會產生任何測試報告,而且動作可能會成功。如果您希望動作的成功取決於該特定測試,則必須明確設定該報告。

提示

開始使用新的或現有的專案時,請針對整個專案目錄使用自動探索 (包括 **/*)。這調用專案中所有檔案的報告產生,包括子目錄中的檔案。

如需詳細資訊,請參閱在 動作中設定品質報告

成功條件

您可以設定成功條件,在報告上強制執行品質閾值。例如,如果自動探索兩個程式碼涵蓋範圍報告,一個包含 80% 的線路涵蓋範圍,另一個包含 60% 的線路涵蓋範圍,則您有下列選項:

  • 將行涵蓋範圍的自動探索成功條件設定為 80%。這會導致第一個報告通過,而第二個報告失敗,這會導致整體動作失敗。若要解除封鎖工作流程,請將新測試新增至您的專案,直到第二個報告的行涵蓋範圍超過 80%。

  • 將行涵蓋範圍的自動探索成功條件設定為 60%。這會導致兩個報告都通過,這會導致動作成功。然後,您可以在第二個報告中增加程式碼涵蓋範圍。不過,使用此方法,您無法保證第一個報告中的涵蓋範圍不會低於 80%。

  • 使用視覺化編輯器或為每個報告新增明確的 YAML 區段和路徑,明確設定一個或兩個報告。這可讓您為每個報告設定個別的成功條件和自訂名稱。不過,使用此方法,如果報告路徑變更,動作可能會失敗。

如需詳細資訊,請參閱設定報告的成功條件

包含/排除路徑

檢閱動作結果時,您可以透過設定 IncludePaths和 來調整 CodeCatalyst 產生的報告清單ExcludePaths

  • 使用 IncludePaths指定您要 CodeCatalyst 在搜尋報告時包含的檔案和檔案路徑。例如,如果您指定 "/test/report/*",CodeCatalyst 會搜尋尋找/test/report/目錄的動作所使用的整個建置映像。找到該目錄時,CodeCatalyst 會尋找該目錄中的報告。

    注意

    對於手動設定的報告, IncludePaths 必須是符合單一檔案的 glob 模式。

  • 使用 ExcludePaths指定您要 CodeCatalyst 在搜尋報告時排除的檔案和檔案路徑。例如,如果您指定 "/test/reports/**/*",CodeCatalyst 不會搜尋 /test/reports/目錄中的檔案。若要忽略目錄中的所有檔案,請使用 **/* glob 模式。

以下是可能的 glob 模式範例。

模式 描述

*.*

比對目前目錄中包含點的所有物件名稱

*.xml

比對目前目錄中以 結尾的所有物件名稱 .xml

*.{xml,txt}

比對目前目錄中以 .xml或 結尾的所有物件名稱 .txt

**/*.xml

比對結尾為 的所有目錄的物件名稱 .xml

testFolder

比對名為 的物件testFolder,將其視為 檔案

testFolder/*

從 比對子資料夾中的一個層級中的物件testFolder,例如 testFolder/file.xml

testFolder/*/*

從 比對子資料夾中兩個層級的物件testFolder,例如 testFolder/reportsFolder/file.xml

testFolder/**

符合資料夾 testFolder 以及 testFolder 下的檔案,例如 testFolder/file.xmltestFolder/otherFolder/file.xml

CodeCatalyst 解譯 glob 模式,如下所示:

  • 斜線 (/) 字元會分隔檔案路徑中的目錄。

  • 星號 (*) 字元符合不超過資料夾邊界之名稱元件的零個或多個字元。

  • 雙星號 (**) 會比對所有目錄中名稱元件的零個或多個字元。

注意

ExcludePaths 優先於 IncludePaths。如果 IncludePaths和 都ExcludePaths包含相同的資料夾,則不會掃描該資料夾以取得報告。