Ukázková sestava flaky testů

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

Můžete vytvořit sestavu, jak je znázorněno na následujícím obrázku, která obsahuje přehledné testy, ke kterým dochází v spuštěních kanálu, které zahrnují testovací úlohy. Flaky test je test, který poskytuje různé výsledky, jako je úspěšné nebo neúspěšné, i když ve zdrojovém kódu nebo spouštěcím prostředí nedošlo k žádným změnám. Další informace o povolení nespolehlivého testování najdete v tématu Správa nespolehlivého testování. Informace o přidávání testů do kanálu najdete v části Zdroje úloh testování dále v tomto článku.

Snímek obrazovky se sestavou tabulky Flaky Tests Table

Pomocí dotazů uvedených v tomto článku vygenerujte následující sestavy:

  • Flaky testy pro pracovní postup sestavení
  • Flaky testy pro pracovní postup vydávání verzí
  • Flaky testy pro určitou větev
  • Flaky testy pro konkrétní testovací soubor
  • Flaky testy pro konkrétního vlastníka testu.

Důležité

Integrace Power BI a přístup k datovému kanálu OData služby Analytics jsou obecně dostupné pro Azure DevOps Services a Azure DevOps Server 2020 a novější verze. Ukázkové dotazy uvedené v tomto článku jsou platné pouze pro Azure DevOps Server 2020 a novější verze a závisí na verzi v3.0-Preview nebo novější. Doporučujeme, abyste tyto dotazy používali a poskytli nám zpětnou vazbu.

Požadavky

  • Pokud chcete zobrazit data Analýzy a dotazovat se na službu, musíte být členem projektu se základním přístupem nebo novějším. Ve výchozím nastavení mají všichni členové projektu udělená oprávnění k dotazování analýzy a definování zobrazení Analýzy.
  • Další informace o dalších požadavcích týkajících se povolení služeb a funkcí a obecných aktivit sledování dat najdete v tématu Oprávnění a požadavky pro přístup k Analýzám.

Poznámka:

Tento článek předpokládá, že jste si přečetli přehled ukázkových sestav pomocí dotazů OData a máte základní znalosti o Power BI.

Vzorové dotazy

Následující dotazy sady entit můžete použít k vytvoření různých, ale podobných TestResultsDaily testovacích sestav kanálu. Sada TestResultsDaily entit poskytuje denní agregaci TestResult snímků spuštění seskupených podle testu.

Poznámka:

Informace o dostupných vlastnostech pro účely filtru nebo sestavy najdete v referenčních informacích k metadatům pro analýzu testovacích plánů a metadata pro Azure Pipelines. Dotazy můžete filtrovat nebo vracet vlastnosti pomocí libovolné hodnoty Property pod hodnotami nebo NavigationPropertyBinding Path hodnotami dostupnými v objektu EntitySetEntityType . Každý EntitySet odpovídá hodnotě EntityType. Další informace o datovém typu každé hodnoty najdete v metadatech zadaných pro odpovídající EntityTypehodnotu .

Flaky tests for a Build workflow

Pomocí následujících dotazů můžete zobrazit podrobné testy kanálu pracovního postupu sestavení .

Dotaz Power BI uvedený níže můžete vložit přímo do okna Získat prázdný dotaz dat>. Další informace najdete v přehledu ukázkových sestav pomocí dotazů 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

Flaky tests for Release workflow

Pomocí následujících dotazů můžete zobrazit podrobné testy kanálu pracovního postupu vydané verze .

Dotaz Power BI uvedený níže můžete vložit přímo do okna Získat prázdný dotaz dat>. Další informace najdete v přehledu ukázkových sestav pomocí dotazů 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

Flaky testy filtrované podle větve

Pokud chcete zobrazit neúspěšné testy kanálu pro určitou větev, použijte následující dotazy. Pokud chcete vytvořit sestavu, proveďte následující kroky navíc spolu s tím, co je uvedeno dále v tomto článku.

  • Rozbalit Branch do Branch.BranchName
  • Vyberte průřez vizualizace Power BI a přidejte pole Branch.BranchName do pole průřezu .
  • Vyberte název větve z průřezu, pro který potřebujete zobrazit souhrn výsledků.

Další informace o používání průřezů najdete v tématu Průřezy v Power BI.

Dotaz Power BI uvedený níže můžete vložit přímo do okna Získat prázdný dotaz dat>. Další informace najdete v přehledu ukázkových sestav pomocí dotazů 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

Flaky testy filtrované podle testovacího souboru

Pokud chcete zobrazit podrobné testy kanálu a konkrétního testovacího souboru, použijte následující dotazy. Pokud chcete vytvořit sestavu, proveďte následující dodatečné kroky spolu s tím, co je definováno dále v tomto článku.

  • Rozbalit Test do Test.ContainerName
  • Vyberte průřez vizualizace Power BI a přidejte pole Test.ContainerName do pole průřezu .
  • V průřezu vyberte název kontejneru, pro který potřebujete zobrazit souhrn výsledků.

Dotaz Power BI uvedený níže můžete vložit přímo do okna Získat prázdný dotaz dat>. Další informace najdete v přehledu ukázkových sestav pomocí dotazů 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 testy filtrované podle vlastníka testu

Pokud chcete zobrazit flakyové testy pro kanál a testy vlastněné konkrétním vlastníkem testu, použijte následující dotazy. Pokud chcete vytvořit sestavu, proveďte následující dodatečné kroky spolu s tím, co je definováno dále v tomto článku.

  • Rozbalit Test do Test.TestOwner
  • Vyberte průřez vizualizace Power BI a přidejte pole Test.TestOwner do pole průřezu .
  • Vyberte vlastníka testu z průřezu, pro který potřebujete zobrazit souhrn výsledků.

Dotaz Power BI uvedený níže můžete vložit přímo do okna Získat prázdný dotaz dat>. Další informace najdete v přehledu ukázkových sestav pomocí dotazů 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

Náhradní řetězce a rozpis dotazů

Nahraďte následující řetězce hodnotami. Nezahrnujte do náhradních závorek {} . Pokud je například název vaší organizace "Fabrikam", nahraďte {organization} ho Fabrikam, nikoli {Fabrikam}.

 

  • {organization} – Název vaší organizace
  • {project} - Název projektu vašeho týmu
  • {pipelinename} – Název vašeho kanálu. Příklad: Fabrikam hourly build pipeline
  • {startdate} - Datum zahájení sestavy. Formát: RRRR-MM-DDZ. Příklad: 2021-09-01Z představuje 1. září 2021. Nepoužívejte uvozovky ani hranaté závorky a pro oba měsíce a datum použijte dvě číslice.

Rozpis dotazů

Následující tabulka popisuje jednotlivé části dotazu.

Část dotazování

Popis

$apply=filter(

Klauzule Start filter() .

Pipeline/PipelineName eq '{pipelineName}'

Návratová testovací spuštění pro zadaný kanál.

and CompletedOn/Date ge {startdate}

Návratová testovací spuštění k zadanému datu nebo po tomto datu.

and Workflow eq 'Build'

Vrácení testovacích běhů pro Build pracovní postup

)

Klauzule Close filter()

/groupby(

Klauzule Start groupby() .

(TestSK, Test/TestName),

Seskupte podle názvu testu.

aggregate(

Počáteční aggregate klauzule pro výpočet testovacích běhů odpovídajících kritériím filtru.

ResultCount with sum as TotalCount,

Spočítejte celkový počet testovacích běhů jako TotalCount.

ResultPassCount with sum as PassedCount,

Spočítejte celkový počet úspěšných testovacích běhů jako PassedCount.

ResultFailCount with sum as FailedCount,

Spočítejte celkový počet neúspěšných testovacích spuštění jako FailedCount.

ResultNotExecutedCount with sum as NotExecutedCount

Spočítejte celkový počet nespouštět testovacích běhů jako NotExecutedCount.

ResultNotImpactedCount with sum as NotImpactedCount,

Spočítejte celkový počet ovlivněných testovacích běhů jako NotImpactedCount.

ResultFlakyCount with sum as FlakyCount

Spočítejte celkový počet záležných testovacích běhů jako FlakyCount.

))

Uzavření aggregate() a groupby() klauzule

/filter(FlakyCount gt 0)

Vyfiltrujte pouze ty testy, které byly alespoň jednou vyfiltrovány.

/compute(

Klauzule Start compute() .

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

Pro všechny zálechlé testy vypočítejte FlakyRate.

)

Klauzule Close compute()

(Volitelné) Přejmenování dotazu

Výchozí popisek dotazu , Query1, můžete přejmenovat na něco smysluplnějšího. Jednoduše zadejte nový název z podokna Nastavení dotazu.

Snímek obrazovky s možnostmi nabídky dotazu Power BI a přejmenování dotazu

Rozbalení sloupce Test v Power BI

Test Rozbalením sloupce zobrazíte rozbalenou entitu Test.TestName. Rozbalení sloupce zplošťuje záznam do konkrétních polí. Postup najdete v tématu Transformace analytických dat pro generování sestav Power BI a rozbalení sloupců.

Změna datového typu sloupce

  1. V Editor Power Query vyberte TotalCountpoložku , , FailedCountPassedCount, NotExecutedCount, NotImpactedCount, a FlakyCount sloupce; vyberte datový typ z nabídky Transformace; a pak zvolte Kdo le Number.

  2. FlakyRate Vyberte sloupec, v nabídce Transformace vyberte datový typ a pak zvolte Desetinné číslo.

Další informace o změně datového typu najdete v tématu Transformace analytických dat pro generování sestav Power BI a transformace datového typu sloupce.

Zavřete dotaz a použijte změny.

Jakmile dokončíte všechny transformace dat, v nabídce Domů zvolte Zavřít a použítdotaz a vraťte se na kartu Sestava v Power BI.

Snímek obrazovky s možností Zavřít a Použít Editor Power Query

Vytvoření sestavy tabulky

  1. V Power BI v části Vizualizace zvolte Tabulka a přetáhněte pole do oblasti Sloupce .

    Snímek obrazovky s výběrem polí vizualizace pro sestavu tabulky Flaky tests

  2. Do oddílu Sloupce v uvedeném pořadí přidejte následující pole.

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

Sestava by měla vypadat podobně jako na následujícím obrázku.

Snímek obrazovky s ukázkovou sestavou tabulky Flaky Tests Table

Testovací zdroje úkolů