Exempelrapport för kravspårning

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

Du kan spåra kvaliteten på arbetsobjekt som tillhör kategorin Krav med kravspårningsrapporten. Kategorin Krav innehåller arbetsobjekt som User Stories (Agile), Product Backlog Items (Scrum), Issues (Basic) och Requirements (CMMI). Mer information om arbetsobjektskategorier finns i Spåra användarberättelser, problem, buggar och andra arbetsobjekt.

Följande bild visar ett exempel på en kravspårningsrapport.

Skärmbild av spårningsrapporten för Power BI-krav.

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.

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.

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.

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

Kommentar

Följande fråga fungerar för agil process eftersom den definierar Remaining Work och Completed Work fält i 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 Processes/any(p:p/BacklogType eq 'RequirementBacklog') 
        and Processes/all(p:p/IsBugType eq false)
    )
    &$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(TestSuite/RequirementWorkItem/WorkItemId as WorkItemId, TestSuite/RequirementWorkItem/Title as WorkItemTitle)
    /groupby(
        (WorkItemId, WorkItemTitle),
        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

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 Processes/any(p:p/BacklogType eq 'RequirementBacklog') 
        and Processes/all(p:p/IsBugType eq false)
    )
    &$expand=Links(
        $apply=filter(
            (LinkTypeName eq 'Child' or LinkTypeName eq 'Related')
            and TargetWorkItem/WorkItemType eq 'Bug'
        )
        /groupby(
            (TargetWorkItem/State),
            aggregate($count as Count)
        )
    )&$select=WorkItemId,Title", null, [Implementation="2.0"]),
    #"Expanded Links" = Table.ExpandTableColumn(Source, "Links", {"TargetWorkItem", "Count"}, {"Links.TargetWorkItem", "Links.Count"}),
    #"Expanded Links.TargetWorkItem" = Table.ExpandRecordColumn(#"Expanded Links", "Links.TargetWorkItem", {"State"}, {"Links.TargetWorkItem.State"}),
    #"Filtered Rows" = Table.SelectRows(#"Expanded Links.TargetWorkItem", each [Links.Count] <> null and [Links.Count] <> ""),
    #"Pivoted Column" = Table.Pivot(#"Filtered Rows", List.Distinct(#"Filtered Rows"[Links.TargetWorkItem.State]), "Links.TargetWorkItem.State", "Links.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} )`

Returnerar data för endast markerade Iteration-, Area- och kvarvarande arbetsobjekt.

Processes/any(p:p/BacklogType eq 'RequirementBacklog')

Filtrera arbetsobjekten på ett sådant sätt att de ska hamna i kategorin "krav" för minst en process som är associerad med dem.

Processes/all(p:p/IsBugType eq false)

Utelämna feltypens arbetsobjekt när du hämtar krav. I mallen Grundläggande process är problemarbetsobjekt också av feltyp, så för Grundläggande process tar du bort den här satsen från din fråga.

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 valda krav baserat på iteration och område.

/aggregate($count as TotalCount,

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

cast(LastResultOutcome eq 'Passed', Edm.Int32) with sum as Passed

Vid aggregering av typgjutna testpunkter med det senaste körningsresultatet "Godkänd" till 1 och summera dem som måttPassed.

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

Returnerar data för slutfört arbete och återstående arbete för underordnade arbetsobjekt i filtrerade överordnade objekt.

/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

Utför följande steg för att skapa rapporten:

  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

Rapporten bör se ut ungefär som i följande bild.

Skärmbild av spårningsrapport för Power BI-krav