Azure DevOps サービス |Azure DevOps Server |Azure DevOps Server 2022
次の図に示すように、テスト タスクを含むパイプラインの実行で発生する不安定なテストの一覧を示すレポートを作成できます。 不安定なテストは、ソース コードや実行環境に変更がない場合でも、成功や失敗など、さまざまな結果を示すテストです。 不安定なテストの有効化の詳細については、「 不安定なテストを管理する」を参照してください。 パイプラインにテストを追加する方法については、この記事で後述する タスク リソースのテスト セクションを参照してください。
この記事で提供されているクエリを使用して、次のレポートを生成します。
- ビルド ワークフローの不安定なテスト
- リリース ワークフローの不安定なテスト
- 特定のブランチの不安定なテスト
- 特定のテスト ファイルの不安定なテスト
- 特定のテスト所有者の不安定なテスト。
注釈
この記事のサンプル クエリには、Analytics OData フィードの v3.0-preview 以降が必要です。 フィードバックを共有します。
| カテゴリ | Requirements |
|---|---|
| アクセス レベル |
-
プロジェクトメンバー。 - 少なくともベーシックアクセス。 |
| アクセス許可 | 既定では、プロジェクト メンバーには Analytics にクエリを実行してビューを作成する権限があります。 サービスと機能の有効化と一般的なデータ追跡アクティビティに関するその他の前提条件の詳細については、「 Analytics にアクセスするためのアクセス許可と前提条件を参照してください。 |
注釈
この記事では、OData クエリを使用したサンプル レポートの概要を読み、Power BIに関する基本的な理解があることを前提としています。
サンプル クエリ
TestResultsDaily エンティティ セットの次のクエリを使用して、異なるが似たパイプラインの不安定なテスト レポートを作成できます。
TestResultsDaily エンティティ セットは、テストごとにグループ化された、TestResult実行の毎日のスナップショット集計を提供します。
注釈
フィルター処理またはレポートに使用できるプロパティについては、 Test Plans Analytics のMetadata リファレンスとAzure PipelinesのMetadata リファレンスを参照してください。 クエリをフィルター処理したり、プロパティを返したりするには、Propertyで定義されている任意のEntityType値、またはNavigationPropertyBinding Pathに一覧表示されている任意のEntitySet値を使用します。 各 EntitySet は、各プロパティのデータ型を文書化する EntityTypeにマップされます。
ビルド ワークフローの不安定なテスト
次のクエリを使用して、 Build ワークフロー パイプラインの不安定なテストを表示します。
次のPower BIクエリをコピーして、Get Data>Blank Query ウィンドウに直接貼り付けます。 詳細については、「 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
リリース ワークフローの不安定なテスト
次のクエリを使用して、 Release ワークフロー パイプラインの不安定なテストを表示します。
次のPower BIクエリをコピーして、Get Data>Blank Query ウィンドウに直接貼り付けます。 詳細については、「 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
ブランチでフィルターされた不安定なテスト
特定のブランチのパイプラインの失敗したテストを表示するには、次のクエリを使用します。 レポートを作成するには、この記事の後半で指定されているものと共に、次の追加手順を実行します。
-
BranchをBranch.BranchNameに展開します。 - Power BI ビジュアライゼーション スライサーを選択し、フィールド
Branch.BranchNameをスライサーの Field に追加します。 - 結果の概要を表示する必要があるスライサーからブランチ名を選択します。
スライサーの使用方法の詳細については、「Power BI の
次のPower BIクエリをコピーして、Get Data>Blank Query ウィンドウに直接貼り付けます。 詳細については、「 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
テスト ファイルでフィルター処理された不安定なテスト
パイプラインと特定のテスト ファイルの不安定なテストを表示するには、次のクエリを使用します。 レポートを作成するには、この記事の後半で定義されているものと共に、次の追加手順を実行します。
-
TestをTest.ContainerNameに展開します。 - Power BIの視覚化スライサーを選択し、フィールド
Test.ContainerNameをスライサーのFieldに追加します。 - 結果の概要を表示する必要があるスライサーからコンテナー名を選択します。
次のPower BIクエリをコピーして、Get Data>Blank Query ウィンドウに直接貼り付けます。 詳細については、「 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
テスト所有者によってフィルタされた信頼性の低いテスト
パイプラインの不安定なテストと、特定のテスト所有者が所有するテストを表示するには、次のクエリを使用します。 レポートを作成するには、この記事の後半で定義されているものと共に、次の追加手順を実行します。
-
TestをTest.TestOwnerに展開します。 - Power BI ビジュアライゼーション スライサーを選択し、フィールド
Test.TestOwnerをスライサーの Field に追加します。 - 結果の概要を表示する必要があるスライサーからテスト所有者を選択します。
次のPower BIクエリをコピーして、Get Data>Blank Query ウィンドウに直接貼り付けます。 詳細については、「 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" の場合は、{organization}ではなく、Fabrikamを{Fabrikam}に置き換えます。
-
{organization}- 組織名。 -
{project}- チーム プロジェクト名。 -
{pipelinename}- パイプライン名。 例:Fabrikam hourly build pipeline -
{startdate}- レポートを開始する日付。 形式: YYYY-MM-DDZ。 例:2021-09-01Zは 2021 年 9 月 1 日を表します。 引用符や角かっこで囲まず、月と日付の両方に2桁の数字を使用してください。
クエリの内訳
次の表では、クエリの各部分について説明します。
クエリ部分
説明
$apply=filter(
句 filter() 開始します。
Pipeline/PipelineName eq '{pipelineName}'
指定したパイプラインのテスト実行を返します。
and CompletedOn/Date ge {startdate}
指定した日付以降に実行されたテストを返します。
and Workflow eq 'Build'
Build ワークフローのテスト実行を返します。
)
filter() 句を閉じる。
/groupby(
句 groupby() 開始します。
(TestSK, Test/TestName),
テスト名でグループ化します。
aggregate(
句 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としてカウントします。
))
aggregate()句とgroupby()句を閉じます。
/filter(FlakyCount gt 0)
少なくとも 1 回は不安定だったテストのみを除外します。
/compute(
句 compute() 開始します。
(FlakyCount div cast(TotalCount, Edm.Decimal)) mul 100 as FlakyRate
すべての不安定なテストについて、 FlakyRateを計算します。
)
節 compute() クローズします。
(省略可能)クエリの名前を変更する
既定のクエリ ラベル Query1 の名前を、より意味のある名前に変更できます。 [クエリ設定] ペインから新しい名前を入力します。
Power BIの [テスト] 列を展開する
Test列を展開して、展開されたエンティティのTest.TestNameを表示します。 列を展開すると、レコードが特定のフィールドにフラット化されます。 その方法については、「Transform Analytics データを参照して、Power BI レポートを生成する、列の展開を参照してください。
列のデータ型を変更する
Power Query エディターで、
TotalCount、PassedCount、FailedCount、NotExecutedCount、NotImpactedCount、およびFlakyCount列を選択します。 [変換] メニューから [データ型] を選択し、[整数] を選択します。FlakyRate列を選択します。 [変換] メニューから [データ型] を選択し、[10 進数] を選択します。
データ型の変更の詳細については、「Transform Analytics データを使用してPower BIレポートを生成する」を参照してください。列データ型の変換。
クエリを閉じて変更を適用する
すべてのデータ変換が完了したら、[ホーム] メニューから [閉じて適用] を選択します。 このアクションによりクエリが保存され、Power BIの Report タブに戻ります。
テーブル レポートを作成する
Power BIの Visualizations で、Table を選択します。 フィールドを [列] 領域にドラッグ アンド ドロップします。
Columns セクションに次のフィールドを一覧表示されている順序で追加します。
Test.TestNameTotalCountPassedCountFailedCountFlakyCountFlakyRate
レポートは次の図のようになります。
タスク リソースのテスト
- Visual Studio テスト タスクを使用してテストを並列実行します
- 任意のテストランナーでテストを並列実行する
- テスト影響分析 (TIA) を使用してテストを高速化する
- 不安定なテストを管理する
- UI テストの考慮事項
- Azure Load Testing
- Azure Pipelines タスク リファレンス、テスト タスク