次の方法で共有


不安定なテストのサンプル レポート

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

次の図に示すように、テスト タスクを含むパイプラインの実行で発生する不安定なテストの一覧を示すレポートを作成できます。 不安定なテストは、ソース コードや実行環境に変更がない場合でも、成功や失敗など、さまざまな結果を示すテストです。 不安定なテストの有効化の詳細については、「不安定なテストの管理」を参照してください。 パイプラインにテストを追加する方法については、この記事で後述する 「テスト タスク リソース 」セクションを参照してください。

不安定なテスト テーブル レポートのスクリーンショット。

この記事で提供されているクエリを使用して、次のレポートを生成します。

  • ビルド ワークフローの不安定なテスト
  • リリース ワークフローの不安定なテスト
  • 特定のブランチの不安定なテスト
  • 特定のテスト ファイルの不安定なテスト
  • 特定のテスト所有者の不安定なテスト。

重要

Power BI の統合と Analytics サービスの OData フィードへのアクセスは、Azure DevOps Services および Azure DevOps Server 2020 以降のバージョンで一般提供されています。 この記事で提供されるサンプル クエリは、Azure DevOps Server 2020 以降のバージョンに対してのみ有効であり、v3.0-preview 以降のバージョンによって異なります。 これらのクエリを使用し、フィードバックをお寄せください。

前提条件

Note

この記事では、OData クエリを使用したサンプル レポートの概要を読み、Power BI の基本的な理解を持っていることを前提としています。

サンプル クエリ

エンティティ セットの次のクエリを TestResultsDaily 使用して、異なるが似たパイプラインの不安定なテスト レポートを作成できます。 エンティティ セットは TestResultsDaily 、テストごとにグループ化された実行の毎日の TestResult スナップショット集計を提供します。

Note

フィルターまたはレポートの目的で使用可能なプロパティを決定するには、「Test Plans Analytics のメタデータ リファレンス」および「Azure Pipelines のメタデータ リファレンス」を参照してください。 クエリをフィルター処理したり、 で使用可能な または 値のPropertyEntityTypeNavigationPropertyBinding Pathの値のいずれかを使用してプロパティをEntitySet返したりできます。 各 は EntitySetEntityType対応します。 各値のデータ型の詳細については、対応する EntityType値に指定されたメタデータを確認してください。

ビルド ワークフローの不安定なテスト

ビルド ワークフロー パイプラインの不安定なテストを表示するには、次のクエリを使用します。

次の Power BI クエリをコピーして、[データ>の空のクエリの取得] ウィンドウに直接貼り付けます。 詳細については、OData クエリを使用したサンプル レポートの概要を参照してください

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v4.0-preview/TestResultsDaily?
$apply=filter("
                &"Pipeline/PipelineName eq '{pipelineName} "
                &"And Date/Date ge {startdate} "
                &"And Workflow eq 'Build') "
        &"/groupby((TestSK, Test/TestName), "
            &"aggregate( "
                &"ResultCount with sum as TotalCount, "
                &"ResultPassCount with sum as PassedCount, "
                &"ResultFailCount with sum as FailedCount, "
                &"ResultNotExecutedCount with sum as NotExecutedCount, "
                &"ResultNotImpactedCount with sum as NotImpactedCount, "
                &"ResultFlakyCount with sum as FlakyCount)) "
    &"/filter(FlakyCount gt 0) "
    &"/compute( "
    &"(FlakyCount div cast(TotalCount, Edm.Decimal)) mul 100 as FlaykRate) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

リリース ワークフローの不安定なテスト

リリース ワークフロー パイプラインの不安定なテストを表示するには、次のクエリを使用します。

次の Power BI クエリをコピーして、[データ>の空のクエリの取得] ウィンドウに直接貼り付けます。 詳細については、OData クエリを使用したサンプル レポートの概要を参照してください

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v4.0-preview/TestResultsDaily?
$apply=filter("
                &"Pipeline/PipelineName eq '{pipelineName}' "
                &"And Date/Date ge {startdate}) "
        &"/groupby((TestSK, Test/TestName, Workflow), "
        &"aggregate( "
                &"ResultCount with sum as TotalCount, "
                &"ResultPassCount with sum as PassedCount, "
                &"ResultFailCount with sum as FailedCount, "
                &"ResultNotExecutedCount with sum as NotExecutedCount, "
                &"ResultNotImpactedCount with sum as NotImpactedCount, "
                &"ResultFlakyCount with sum as FlakyCount)) "
        &"/filter(FlakyCount gt 0) "
    &"/compute( "
    &"(FlakyCount div cast(TotalCount, Edm.Decimal)) mul 100 as FlakyRate) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

分岐でフィルター処理された不安定なテスト

特定のブランチのパイプラインの失敗したテストを表示するには、次のクエリを使用します。 レポートを作成するには、この記事の後半で指定されているものと共に、次の追加手順を実行します。

  • 次に展開します BranchBranch.BranchName
  • Power BI 視覚化スライサーを選択し、スライサーのフィールドにフィールドBranch.BranchNameを追加します
  • 結果の概要を表示する必要があるスライサーからブランチ名を選択します。

スライサーの使用の詳細については、「Power BI のスライサー」を参照してください

次の Power BI クエリをコピーして、[データ>の空のクエリの取得] ウィンドウに直接貼り付けます。 詳細については、OData クエリを使用したサンプル レポートの概要を参照してください

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v4.0-preview/TestResultsDaily?
$apply=filter("
                &"Pipeline/PipelineName eq '{pipelineName}' "
                &"And Date/Date ge {startdate} "
                &"And Workflow eq 'Build') "
        &"/groupby((TestSK, Test/TestName, Branch/BranchName), "
            &"aggregate( "
                &"ResultCount with sum as TotalCount, "
                &"ResultPassCount with sum as PassedCount, "
                &"ResultFailCount with sum as FailedCount, "
                &"ResultNotExecutedCount with sum as NotExecutedCount, "
                &"ResultNotImpactedCount with sum as NotImpactedCount, "
                &"ResultFlakyCount with sum as FlakyCount)) "
    &"/filter(FlakyCount gt 0) "
    &"/compute( "
    &"(FlakyCount div cast(TotalCount, Edm.Decimal)) mul 100 as FlakyRate) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

テスト ファイルでフィルター処理された不安定なテスト

パイプラインと特定のテスト ファイルの不安定なテストを表示するには、次のクエリを使用します。 レポートを作成するには、この記事の後半で定義されているものと共に、次の追加手順を実行します。

  • 次に展開します TestTest.ContainerName
  • Power BI 視覚化スライサーを選択し、スライサーのフィールドにフィールドTest.ContainerNameを追加します
  • 結果の概要を表示する必要があるスライサーからコンテナー名を選択します。

次の Power BI クエリをコピーして、[データ>の空のクエリの取得] ウィンドウに直接貼り付けます。 詳細については、OData クエリを使用したサンプル レポートの概要を参照してください

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v4.0-preview/TestResultsDaily?
$apply=filter("
                &"Pipeline/PipelineName eq '{pipelineName}' "
                &"And Date/Date ge {startdate}) "
        &"/groupby((TestSK, Test/TestName, Test/ContainerName), "
        &"aggregate( "
                &"ResultCount with sum as TotalCount, "
                &"ResultPassCount with sum as PassedCount, "
                &"ResultFailCount with sum as FailedCount, "
                &"ResultNotExecutedCount with sum as NotExecutedCount, "
                &"ResultNotImpactedCount with sum as NotImpactedCount, "
                &"ResultFlakyCount with sum as FlakyCount)) "
        &"/filter(FlakyCount gt 0) "
    &"/compute( "
    &"(FlakyCount div cast(TotalCount, Edm.Decimal)) mul 100 as FlakyRate) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

テスト所有者によってフィルター処理された不安定なテスト

パイプラインの Flaky テストと、特定のテスト所有者が所有するテストを表示するには、次のクエリを使用します。 レポートを作成するには、この記事の後半で定義されているものと共に、次の追加手順を実行します。

  • 次に展開します TestTest.TestOwner
  • Power BI 視覚化スライサーを選択し、スライサーのフィールドにフィールドTest.TestOwnerを追加します
  • 結果の概要を表示する必要があるスライサーからテスト所有者を選択します。

次の Power BI クエリをコピーして、[データ>の空のクエリの取得] ウィンドウに直接貼り付けます。 詳細については、OData クエリを使用したサンプル レポートの概要を参照してください

let
   Source = OData.Feed ("https://analytics.dev.azure.com/{organization}/{project}/_odata/v4.0-preview/TestResultsDaily?
$apply=filter("
                &"Pipeline/PipelineName eq '{pipelineName}' "
                &"And Date/Date ge {startdate}) "
        &"/groupby((TestSK, Test/TestName, Test/TestOwner), "
        &"aggregate( "
                &"ResultCount with sum as TotalCount, "
                &"ResultPassCount with sum as PassedCount, "
                &"ResultFailCount with sum as FailedCount, "
                &"ResultNotExecutedCount with sum as NotExecutedCount, "
                &"ResultNotImpactedCount with sum as NotImpactedCount, "
                &"ResultFlakyCount with sum as FlakyCount)) "
        &"/filter(FlakyCount gt 0) "
    &"/compute( "
    &"(FlakyCount div cast(TotalCount, Edm.Decimal)) mul 100 as FlakyRate) "
    ,null, [Implementation="2.0",OmitValues = ODataOmitValues.Nulls,ODataVersion = 4]) 
in
    Source

置換文字列とクエリの内訳

次の文字列を実際の値に置き換えます。 置換に角かっこを {} 含めないでください。 たとえば、組織名が "Fabrikam" の場合は、 ではなく {Fabrikam}を にFabrikam置き換えます{organization}

 

  • {organization} - 組織名
  • {project} - チーム プロジェクト名
  • {pipelinename} - パイプライン名。 例: Fabrikam hourly build pipeline
  • {startdate} - レポートを開始する日付。 形式: YYYY-MM-DDZ。 例: 2021-09-01Z 2021 年 9 月 1 日を表します。 引用符または角かっこで囲んで、月と日付の両方に 2 桁の数字を使用しないでください。

クエリの内訳

次の表では、クエリの各部分について説明します。

クエリ パーツ

説明

$apply=filter(

Start filter() 句。

Pipeline/PipelineName eq '{pipelineName}'

指定したパイプラインのテスト実行を返します。

and CompletedOn/Date ge {startdate}

指定した日付以降にテストが実行されます。

and Workflow eq 'Build'

ワークフローのテスト実行を Build 返します。

)

Close filter() 句。

/groupby(

Start groupby() 句。

(TestSK, Test/TestName),

テスト名でグループ化します。

aggregate(

フィルター条件に一致するテスト実行を計算する Start aggregate 句。

ResultCount with sum as TotalCount,

テスト実行の合計数を次のように TotalCountカウントします。

ResultPassCount with sum as PassedCount,

成功したテスト実行の合計数を次のように PassedCountカウントします。

ResultFailCount with sum as FailedCount,

失敗したテスト実行の合計数を次のように FailedCountカウントします。

ResultNotExecutedCount with sum as NotExecutedCount

未実行のテスト実行の合計数を次のように NotExecutedCountカウントします。

ResultNotImpactedCount with sum as NotImpactedCount,

影響を受けなかったテスト実行の合計数を次のように NotImpactedCountカウントします。

ResultFlakyCount with sum as FlakyCount

不安定なテストの実行の合計数を次のように FlakyCountカウントします。

))

groupby()閉じてaggregate()句を指定します。

/filter(FlakyCount gt 0)

少なくとも 1 回は不安定だったテストのみを除外します。

/compute(

Start compute() 句。

(FlakyCount div cast(TotalCount, Edm.Decimal)) mul 100 as FlakyRate

すべての不安定なテストについて、 FlakyRate.

)

Close compute() 句。

(省略可能)クエリの名前を変更する

既定のクエリ ラベル Query1 の名前を、より意味のある名前に変更できます。 [ クエリ設定] ペインから新しい名前を入力するだけです。

Power BI クエリ メニュー オプションのスクリーンショット。クエリの名前を変更します。

Power BI の [テスト] 列を展開する

列を Test 展開して、展開されたエンティティを表示します Test.TestName。 列を展開すると、レコードが特定のフィールドにフラット化されます。 方法については、「Analytics データを変換して Power BI レポートを生成する」の「列を展開する」を参照してください

列のデータ型を変更する

  1. Power Query エディターから 、、FailedCountPassedCountNotImpactedCountNotExecutedCountおよび列をTotalCount選択しFlakyCount、[変換] メニューから [データ型] を選択し、[整数] を選択します。

  2. 列をFlakyRate選択し、[変換] メニューから [データ型] を選択し、[10 進数] を選択します。

データ型の変更の詳細については、「 Analytics データを変換して Power BI レポートを生成する」の「列データ型の変換」を参照してください

クエリを閉じて変更を適用する

すべてのデータ変換が完了したら、[ホーム] メニューから [閉じる] & [適用] を選択してクエリを保存し、Power BI の [レポート] タブに戻ります。

[閉じて適用] オプションPower Query エディタースクリーンショット。

テーブル レポートを作成する

  1. Power BI の [視覚化] で [テーブル] を選択し、フィールドを [列] 領域にドラッグ アンド ドロップします。

    Flaky テスト テーブル レポートの視覚化フィールドの選択のスクリーンショット。

  2. 次のフィールドを一覧の 順序で [列] セクションに追加します。

    • Test.TestName
    • TotalCount
    • PassedCount
    • FailedCount
    • FlakyCount
    • FlakyRate

レポートは次の図のようになります。

サンプルの不安定なテスト テーブル レポートのスクリーンショット。

タスク リソースのテスト