Dela via


Exempelrapport för kravspårning av sammanslagning

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

Rapporten Kravspårning bygger på rapporten Kravspårning och visar hur du aggregerar mått för en sammanslagning på en nivå. Om du till exempel spårar krav med Användarberättelser kan du aggregera data för funktioner med hjälp av frågorna i den här artikeln.

Ett exempel visas i följande bild.

Skärmbild av sammanslagningsrapport för Översikt över Power BI Stories.

Den här rapporten visar följande information för varje krav som den visar:

  • Procent färdigt arbete: Förloppsindikator som visar procentandelen slutfört arbete baserat på sammanslagning av slutförda timmar för alla aktiviteter som är länkade till kravet.
  • Klarade tester: Antalet testfall som körs baserat på den senaste testkörningen.
  • Misslyckade tester: Antalet testfall som körs som misslyckats baserat på den senaste testkörningen.
  • Körningstester: Antalet testkörningar som körs.
  • Aktiva buggar: Antalet länkade buggar i ett aktivt tillstånd.
  • Stängda buggar: Antalet länkade buggar i tillståndet Stängd, Klar eller Slutförd.

Kommentar

Kravspårning stöds endast för testfall som är länkade via en kravbaserad testsvit. Associationen mellan ett kravarbetsobjekt – Användarberättelse (Agile), Produktpost för kvarvarande uppgifter (Scrum), Krav (CMMI) eller Problem (Basic) – och manuell testkörning skapas endast när testfallet länkas via en kravbaserad testsvit.

Frågor om rapportens svar

Kravspårningsrapporter är användbara för att besvara följande typer av frågor.

Förlopp för arbetet

  • Motsvarar mängden arbete som återstår för varje krav dina förväntningar?
  • Implementeras de högst rankade kraven först?
  • Hur många tester definieras för varje krav? Hur många tester skickas?
  • Vilka krav implementeras som inte har några testfall definierade för dem?

Kvalitetsframstatus

  • Hur många testfall har körts för varje krav och hur många har klarats?
  • Hur många aktiva buggar har varje krav?
  • Hittas buggar för krav som testas?
  • Löses buggar eller är de aktiva?

Riskbedömning

  • Vilka krav är i riskzonen?
  • Vilka krav är inte tillräckligt stabila för lansering?
  • Vilka krav kan vi skicka idag?

Viktigt!

Power BI-integrering och åtkomst till OData-flödet i Analytics Service är allmänt tillgängliga för Azure DevOps Services och Azure DevOps Server 2020 och senare versioner. Exempelfrågorna i den här artikeln är endast giltiga mot Azure DevOps Server 2020 och senare versioner och är beroende av v3.0-förhandsversion eller senare version. Vi rekommenderar att du använder dessa frågor och ger oss feedback.

Förutsättningar

  • Åtkomst: Vara medlem i ett projekt med minst grundläggande åtkomst.
  • Behörigheter: Som standard har projektmedlemmar behörighet att fråga Analytics och skapa vyer.
  • Mer information om andra förutsättningar för tjänst- och funktionsaktivering och allmänna dataspårningsaktiviteter finns i Behörigheter och krav för åtkomst till analys.

Kommentar

Den här artikeln förutsätter att du läser Översikt över exempelrapporter med OData-frågor och har en grundläggande förståelse för Power BI.

För att rapporten ska generera användbara data måste du ha utfört följande uppgifter:

  • Du har definierat kravarbetsobjekt och tilldelat dem till området och iterationssökvägar av intresse. Information om hur du definierar sökvägar för område och iteration finns i Definiera områdessökvägar och Definiera iterationssökvägar.
  • För att få procentandelen timmar slutförda måste du fylla i fälten Fullständigt arbete och Återstående arbete med uppgifter eller buggar som är länkade till krav med länktypen Underordnad.
  • För att få körningsstatus för testfall har du skapat kravbaserade testpaket i testplaner som motsvarar dessa krav. Infogade tester som du lägger till via tavlan uppfyller den här förutsättningen, men krav som du länkar till tester gör inte det. Mer information finns i Skapa testplaner och testpaket.
  • För att få status för buggar har du skapat och länkat buggar till krav med länktypen Underordnad.

Exempelfrågor

För att generera rapporten måste du lägga till tre Power BI-frågor i Power BI Desktop och sedan länka dem. Varje fråga kör antingen entitetsuppsättningen WorkItems eller TestPoints .

Kommentar

Power BI-frågefragmenten som anges i följande avsnitt innehåller nödvändiga datatransformeringar för att expandera kolumner och ändra datatyp.

Sökvägar för frågeområde och iteration

För att begränsa rapporten till ett visst område och en viss iterationssökväg kan du filtrera frågan med hjälp av AreaSK och IterationSK. Mer information finns i Definiera grundläggande frågor med OData Analytics.

Kommentar

Information om hur du fastställer tillgängliga egenskaper för filter- eller rapportändamål finns i Metadatareferens för Azure Boards. Du kan filtrera dina frågor eller returnera egenskaper med något av värdena Property under ett EntityType eller NavigationPropertyBinding Path flera värden som är tillgängliga med en EntitySet. Var och EntitySet en motsvarar en EntityType. Mer information om datatypen för varje värde finns i metadata för motsvarande EntityType.

Fråga efter procentuellt antal timmar som slutförts för krav

Kommentar

WorkItemType Ändra baserat på den process som du använder. Scrum-mallen har stöd för Funktion och Basic-mallen har stöd för Epic som typ av sammanslagning av arbetsobjekt.

Kopiera och klistra in följande Power BI-fråga direkt i fönstret Hämta data>tom fråga. Mer information finns i Översikt över exempelrapporter med OData-frågor.

let
    Source = OData.Feed("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems? 
$filter=( 
    IterationSK eq {iterationSK}
    and AreaSK eq {areaSK}
    and WorkItemType eq 'Feature'
)
&$expand=Descendants( 
    $apply=filter( CompletedWork ne null or RemainingWork ne null ) 
    /aggregate( 
        iif(CompletedWork ne null, CompletedWork, 0) with sum as SumCompletedWork, 
        iif(RemainingWork ne null, RemainingWork, 0) with sum as SumRemainingWork 
    ) 
    /compute( 
        (SumCompletedWork add SumRemainingWork) as TotalWork, 
        SumCompletedWork as SumCompleted 
    ) 
    /compute( 
        iif(TotalWork gt 0,(SumCompleted div cast(TotalWork, Edm.Double) mul 100), 0) as PercCompletedWork 
    ) 
)
&$select=WorkItemId, Title", null, [Implementation="2.0"]),
    #"Expanded Descendants" = Table.ExpandTableColumn(Source, "Descendants", {"SumCompletedWork", "SumRemainingWork", "TotalWork", "SumCompleted", "PercCompletedWork"}, {"Descendants.SumCompletedWork", "Descendants.SumRemainingWork", "Descendants.TotalWork", "Descendants.SumCompleted", "Descendants.PercCompletedWork"}),
    #"Changed Type" = Table.TransformColumnTypes(#"Expanded Descendants",{{"Descendants.SumCompletedWork", type number}, {"Descendants.SumRemainingWork", type number}, {"Descendants.TotalWork", type number}, {"Descendants.SumCompleted", type number}, {"Descendants.PercCompletedWork", type number}})
in
    #"Changed Type"

Fråga efter krav för testkörningsstatus

Kommentar

Information om hur du fastställer tillgängliga egenskaper för filter- eller rapportändamål finns i Metadatareferens för Analys av testplaner. Du kan filtrera dina frågor eller returnera egenskaper med något av värdena Property under ett EntityType eller NavigationPropertyBinding Path flera värden som är tillgängliga med en EntitySet. Var och EntitySet en motsvarar en EntityType. Mer information om datatypen för varje värde finns i metadata för motsvarande EntityType.

Kopiera och klistra in följande Power BI-fråga direkt i fönstret Hämta data>tom fråga. Mer information finns i Översikt över exempelrapporter med OData-frågor.

let
    Source = OData.Feed("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/TestPoints? 
	$apply=filter(
	    (TestSuite/RequirementWorkItem/IterationSK eq {iterationSK}
    and TestSuite/RequirementWorkItem/AreaSK eq {areaSK}
    and TestSuite/RequirementWorkItem/Processes/any(p:p/BacklogType eq 'RequirementBacklog')
    and TestSuite/RequirementWorkItem/Processes/all(p:p/IsBugType eq false)
	))
	/compute(iif(TestSuite/RequirementWorkItem/Parent ne null, TestSuite/RequirementWorkItem/Parent/WorkItemId, 0) as ParentWorkItemId, 
	iif(TestSuite/RequirementWorkItem/Parent ne null, TestSuite/RequirementWorkItem/Parent/Title, 'Unparented') as ParentWorkItemTitle
	)/groupby(
	    (ParentWorkItemId, ParentWorkItemTitle), 
	    aggregate(
	        $count as TotalCount, 
	        cast(LastResultOutcome eq 'Passed', Edm.Int32) with sum as PassedCount, 
	        cast(LastResultOutcome eq 'Failed', Edm.Int32) with sum as FailedCount, 
            cast(LastResultOutcome eq 'Blocked', Edm.Int32) with sum as BlockedCount,
            cast(LastResultOutcome eq 'NotApplicable', Edm.Int32) with sum as NotApplicableCount,
	        cast(LastResultOutcome eq 'None', Edm.Int32) with sum as NotRunCount, 
	        cast(LastResultOutcome ne 'None', Edm.Int32) with sum as RunCount)
)", null, [Implementation="2.0"]),
    #"Changed Type" = Table.TransformColumnTypes(#"Source",{{"TotalCount", type number}, {"PassedCount", type number}, {"FailedCount", type number}, {"BlockedCount", type number}, {"NotApplicableCount", type number}, {"NotRunCount", type number}, {"RunCount", type number}})
in
    #"Changed Type"

Kommentar

Posten TestSuite/RequirementWorkItem/... anger att arbetsobjektet måste länkas till testpaketet via ett kravbaserat testpaket enligt beskrivningen i förhandskraven.

Fråga efter status för buggar som är länkade till kraven

Kommentar

WorkItemType Ändra baserat på den process som du använder. Scrum-mallen har stöd för Funktion och Basic-mallen har stöd för Epic som typ av sammanslagning av arbetsobjekt.

Kopiera och klistra in följande Power BI-fråga direkt i fönstret Hämta data>tom fråga. Mer information finns i Översikt över exempelrapporter med OData-frågor.

let
    Source = OData.Feed("https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/WorkItems?
    $filter=(
        IterationSK eq {iterationSK}
        and AreaSK eq {areaSK}
        and WorkItemType eq 'Feature'
    )
&$expand=Descendants(
    $apply=filter(
        WorkItemType eq 'Bug'
    )
    /groupby(
        (State),
        aggregate($count as Count)
    )
)
&$select=WorkItemId,Title", null, [Implementation="2.0"]),
    #"Expanded Descendants" = Table.ExpandTableColumn(Source, "Descendants", {"State", "Count"}, {"Descendants.State", "Descendants.Count"}),
    #"Filtered Rows" = Table.SelectRows(#"Expanded Descendants", each [Descendants.Count] <> null and [Descendants.Count] <> ""),
    #"Pivoted Column" = Table.Pivot(#"Filtered Rows", List.Distinct(#"Filtered Rows"[Descendants.State]), "Descendants.State", "Descendants.Count", List.Sum),
    #"Changed Type" = Table.TransformColumnTypes(#"Pivoted Column",{{"Active", type number}, {"Closed", type number}})
in
    #"Changed Type"

Ersättningssträngar och frågeuppdelning

Ersätt följande strängar med dina värden. Ta inte med hakparenteser {} med din ersättning. Om ditt organisationsnamn till exempel är "Fabrikam" ersätter du {organization} med Fabrikam, inte {Fabrikam}.

  • {organization} – Organisationens namn
  • {project} – Namnet på projektet
  • {iterationSK}– GUID:et som är associerat med iterationssökvägen av intresse. Information om hur du söker efter GUID finns i [.. /extend-analytics/wit-analytics.md#iterationsk](Returnera IterationSK för en specifik iterationssökväg)
  • {areaSK} – GUID:et som är associerat med områdessökvägen av intresse. Information om hur du söker efter GUID finns i [.. /extend-analytics/wit-analytics.md#areask](Returnera AreaSK för en specifik områdessökväg).

Frågeuppdelning

I följande tabell beskrivs varje del av frågan.

Frågedel

Beskrivning


$filter=( IterationSK eq {iterationSK} and AreaSK eq {areaSK} och WorkItemType eq 'Feature' )'

Returnerar endast data för funktioner under angiven iteration och område.

filter( (TestSuite/RequirementWorkItem/IterationSK eq {iterationSK} and TestSuite/RequirementWorkItem/AreaSK eq {areaSK} and TestSuite/RequirementWorkItem/Processes/any(p:p/BacklogType eq 'RequirementBacklog') and TestSuite/RequirementWorkItem/Processes/all(p:p/IsBugType eq false)))

Returnera data för endast markerade objekt för kvarvarande uppgifter under angiven iteration och område.

&$expand=Descendants( $apply=filter( CompletedWork ne null or RemainingWork ne null )

Expandera de underordnade objekten i Funktioner och returnera slutfört arbete och återstående arbetsdata för arbetsobjekten.

&$expand=Descendants( $apply=filter( WorkItemType eq 'Bug' ) /groupby( (State), aggregate($count as Count) )

Expandera de underordnade objekten i Funktioner och filtrera efter bugg, gruppera returdata efter Delstat och sol det totala antalet underordnade objekt.

/aggregate($count as TotalCount,

Aggregera data över de filtrerade testpunkterna med antalet som TotalCount.

cast(LastResultOutcome eq 'Passed', Edm.Int32) with sum as PassedCount, cast(LastResultOutcome eq 'Failed', Edm.Int32) with sum as FailedCount, cast(LastResultOutcome eq 'Blocked', Edm.Int32) with sum as BlockedCount, cast(LastResultOutcome eq 'NotApplicable', Edm.Int32) with sum as NotApplicableCount, cast(LastResultOutcome eq 'None', Edm.Int32) with sum as NotRunCount, cast(LastResultOutcome ne 'None', Edm.Int32) with sum as RunCount)

När du aggregerar summerar du värdena för testpunkter baserat på deras senaste körningsresultat för Godkänd, Misslyckad, Blockerad, NotApplicable och Ingen. Summera också värdena för testpunkter vars senaste resultat inte är lika med Ingen för att få totalsumman RunCount.

/aggregate( iif(CompletedWork ne null, CompletedWork, 0) with sum as SumCompletedWork, iif(RemainingWork ne null, RemainingWork, 0) with sum as SumRemainingWork

Aggregera slutförda arbets - och återstående arbetsdata över de filtrerade arbetsobjekten.

)/compute( (SumCompletedWork add SumRemainingWork) as TotalWork, SumCompletedWork as SumCompleted

Beräkna den totala sammanslagningen av slutfört arbete och återstående arbete.

)/compute( iif(TotalWork gt 0,(SumCompleted div cast(TotalWork, Edm.Double) mul 100), 0) as PercCompletedWork )

Beräkna procent av slutförd wor.

Skapa tabellrapporten

  1. På fliken Modellering väljer du Hantera relationer och länkar de tre frågeresultaten WorkItemId efter kolumn.
  2. Under Visualiseringar väljer du Tabell.
  3. Lägg till de kolumner som du är intresserad av från de tre Power BI-frågorna.
  4. Välj Summa som aggregering för additiva kolumner som Godkänd test osv.

    Power BI väljer Summa som sammansättning

Här är autentiseringsscenarier en överordnad funktion i två användarberättelser.

Skärmbild av Översikt över sammanslagningsrapport för Power BI-exempelberättelser.