Voorbeeldrapport voor het bijhouden van vereisten
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
U kunt de kwaliteit van werkitems bijhouden die deel uitmaken van de categorie Vereisten met het rapport Voor het bijhouden van vereisten. De categorie Vereisten omvat werkitems zoals User Stories (Agile), Product Backlog Items (Scrum), Issues (Basic) en Requirements (CMMI). Zie Gebruikersverhalen, problemen, bugs en andere werkitems bijhouden voor meer informatie over werkitemscategorieën.
In de volgende afbeelding ziet u een voorbeeld van een rapport voor het bijhouden van vereisten.
Dit rapport bevat de volgende informatie voor elke vereiste die wordt vermeld:
- Percentage voltooid werk: voortgangsbalk met het percentage voltooid werk op basis van het samenvouwen van voltooide uren voor alle taken die aan de vereiste zijn gekoppeld.
- Geslaagde tests: het aantal testcases dat wordt uitgevoerd op basis van de meest recente testuitvoering.
- Mislukte tests: het aantal testcases dat is mislukt op basis van de meest recente testuitvoering.
- Tests uitvoeren: het aantal testuitvoeringen dat wordt uitgevoerd.
- Actieve bugs: het aantal gekoppelde bugs in een actieve status.
- Gesloten bugs: het aantal gekoppelde bugs in de status Gesloten, Gereed of Voltooid.
Notitie
Het bijhouden van vereisten wordt alleen ondersteund voor testcases die zijn gekoppeld via een testpakket op basis van vereisten. De koppeling tussen een werkitem voor vereisten: User Story (Agile), Product Backlog Item (Scrum), Vereiste (CMMI) of Probleem (Basic) en handmatige testuitvoering wordt alleen gevormd wanneer de testcase wordt gekoppeld via een testpakket op basis van vereisten.
Vragen over de antwoorden van het rapport
Rapporten voor het bijhouden van vereisten zijn handig voor het beantwoorden van de volgende typen vragen.
Werkvoortgang
- Komt de hoeveelheid werk die overblijft voor elke vereiste overeen met uw verwachtingen?
- Worden de hoogste vereisten als eerste geïmplementeerd?
- Hoeveel tests zijn gedefinieerd voor elke vereiste? Hoeveel tests worden doorgegeven?
- Welke vereisten worden geïmplementeerd waarvoor geen testcases zijn gedefinieerd?
Kwaliteitsvoortgang
- Hoeveel testcases zijn uitgevoerd voor elke vereiste en hoeveel zijn er verstreken?
- Hoeveel actieve bugs heeft elke vereiste?
- Worden er bugs gevonden voor vereisten die worden getest?
- Worden fouten opgelost of blijven ze actief?
Risico-evaluatie
- Welke vereisten lopen het risico?
- Welke vereisten zijn niet voldoende stabiel voor de release?
- Welke vereisten kunnen we vandaag verzenden?
Belangrijk
Power BI-integratie en -toegang tot de OData-feed van de Analytics-service zijn algemeen beschikbaar voor Azure DevOps Services en Azure DevOps Server 2020 en latere versies. De voorbeeldquery's in dit artikel zijn alleen geldig voor Azure DevOps Server 2020 en latere versies en zijn afhankelijk van versie v3.0 of hoger. We raden u aan deze query's te gebruiken en ons feedback te geven.
Vereisten
- Toegang: Wees lid van een project met ten minste basistoegang .
- Machtigingen: projectleden zijn standaard gemachtigd om query's uit te voeren op Analytics en weergaven te maken.
- Zie Machtigingen en vereisten voor toegang tot Analyse voor meer informatie over andere vereisten met betrekking tot het inschakelen van services en functies en algemene activiteiten voor het bijhouden van gegevens.
Notitie
In dit artikel wordt ervan uitgegaan dat u overzicht van voorbeeldrapporten leest met behulp van OData-query's en basiskennis hebt van Power BI.
Voor het genereren van nuttige gegevens moet u de volgende taken hebben uitgevoerd:
- U hebt vereiste werkitems gedefinieerd en deze toegewezen aan het gebied en iteratiepaden van belang. Zie Gebiedspaden definiëren en Iteratiepaden definiëren voor meer informatie over het definiëren van gebieds- en iteratiepaden.
- Als u het voltooiingspercentage van uren wilt ophalen, moet u de velden Voltooid werk en Resterende hoeveelheid werk van taken of bugs invullen die zijn gekoppeld aan vereisten met het koppelingstype Onderliggend item.
- Als u de uitvoeringsstatus van testcases wilt ophalen, hebt u testsuites op basis van vereisten gemaakt in Testplannen die overeenkomen met die vereisten. Inlinetests die u via het bord toevoegt, voldoen aan deze vereiste, maar vereisten die u koppelt aan tests niet. Zie Testplannen en testsuites maken voor meer informatie.
- Als u de status van bugs wilt ophalen, hebt u bugs gemaakt en gekoppeld aan vereisten met het type onderliggende koppeling.
Voorbeeldquery's
Als u het rapport wilt genereren, moet u drie Power BI-query's toevoegen aan Power BI Desktop en deze vervolgens koppelen. Elke query voert de WorkItems
of TestPoints
entiteitsset uit.
Notitie
De Power BI-queryfragmenten in de volgende secties bevatten de vereiste gegevenstransformaties om kolommen uit te vouwen en het gegevenstype te wijzigen.
Notitie
Als u de beschikbare eigenschappen voor filter- of rapportdoeleinden wilt bepalen, raadpleegt u de naslaginformatie over metagegevens voor Azure Boards. U kunt uw query's filteren of eigenschappen retourneren met behulp van een van de Property
waarden onder een EntityType
of NavigationPropertyBinding Path
waarden die beschikbaar zijn met een EntitySet
. Elk EntitySet
komt overeen met een EntityType
. Raadpleeg voor meer informatie over het gegevenstype van elke waarde de metagegevens die voor de bijbehorende EntityType
waarde zijn opgegeven.
Querygebied en iteratiepaden
Als u het bereik van uw rapport wilt instellen op een bepaald gebied en iteratiepad, kunt u de query filteren met Behulp van AreaSK en IterationSK. Zie Basisquery's definiëren met behulp van OData Analytics voor meer informatie.
Query uitvoeren op voltooiingspercentage van uren voor vereisten
Notitie
De volgende query werkt voor het Agile-proces, omdat deze velden in werkitems definieert Remaining Work
en Completed Work
opgeeft.
Kopieer en plak de volgende Power BI-query rechtstreeks in het venster Lege query ophalen>. Zie Overzicht van voorbeeldrapporten met behulp van OData-query's voor meer informatie.
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"
Query voor testuitvoeringsstatus van vereisten
Notitie
Als u de beschikbare eigenschappen voor filter- of rapportdoeleinden wilt bepalen, raadpleegt u de metagegevensreferentie voor Analyse van testplannen. U kunt uw query's filteren of eigenschappen retourneren met behulp van een van de Property
waarden onder een EntityType
of NavigationPropertyBinding Path
waarden die beschikbaar zijn met een EntitySet
. Elk EntitySet
komt overeen met een EntityType
. Raadpleeg voor meer informatie over het gegevenstype van elke waarde de metagegevens die voor de bijbehorende EntityType
waarde zijn opgegeven.
Kopieer en plak de volgende Power BI-query rechtstreeks in het venster Lege query ophalen>. Zie Overzicht van voorbeeldrapporten met behulp van OData-query's voor meer informatie.
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"
Notitie
De TestSuite/RequirementWorkItem/...
vermelding geeft aan dat het werkitem moet worden gekoppeld aan het testpakket via een op vereisten gebaseerde testsuites, zoals besproken in de vereisten.
Query uitvoeren op de status van bugs die zijn gekoppeld aan de vereisten
Kopieer en plak de volgende Power BI-query rechtstreeks in het venster Lege query ophalen>. Zie Overzicht van voorbeeldrapporten met behulp van OData-query's voor meer informatie.
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"
Uitsplitsing van tekenreeksen en query's vervangen
Vervang de volgende tekenreeksen door uw waarden. Neem geen vierkante haken {} op bij uw vervanging. Als de naam van uw organisatie bijvoorbeeld Fabrikam is, vervangt u door {organization}
Fabrikam
, niet {Fabrikam}
.
{organization}
- Naam van uw organisatie{project}
- De naam van uw project{iterationSK}
- De GUID die is gekoppeld aan het iteratiepad van belang. Als u de GUID wilt opzoeken, raadpleegt u [.. /extend-analytics/wit-analytics.md#iterationsk](Retourneer de IterationSK voor een specifiek iteratiepad){areaSK}
- De GUID die is gekoppeld aan het gebiedspad van belang. Als u de GUID wilt opzoeken, raadpleegt u [.. /extend-analytics/wit-analytics.md#areask](Retourneer de AreaSK voor een specifiek gebiedspad).
Uitsplitsing van query's
In de volgende tabel wordt elk deel van de query beschreven.
Queryonderdeel
Beschrijving
$filter=( IterationSK eq {iterationSK} and AreaSK eq {areaSK}
)`
Retourneert alleen gegevens voor geselecteerde iteratie-, gebied- en achterstandsitems.
Processes/any(p:p/BacklogType eq 'RequirementBacklog')
Filter de werkitems zodanig dat ze in de categorie Vereisten moeten vallen voor ten minste één proces dat eraan is gekoppeld.
Processes/all(p:p/IsBugType eq false)
Laat de fouttype werkitems weg tijdens het verkrijgen van vereisten. In de basisprocessjabloon zijn werkitems van probleem ook van het type bug, dus voor het Basic-proces wordt deze component uit uw query verwijderd.
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) ) )
Gegevens retourneren voor alleen geselecteerde vereisten op basis van iteratie en gebied.
/aggregate($count as TotalCount,
Geaggregeerde gegevens over de gefilterde testpunten met het aantal als TotalCount
.
cast(LastResultOutcome eq 'Passed', Edm.Int32) with sum as Passed
Tijdens het aggregeren worden testpunten met typecast-testpunten met het meest recente uitvoeringsresultaat 'Doorgegeven' aan 1 en opgeteld als 'Passed
' metrische gegevens.
&$expand=Descendants( $apply=filter( CompletedWork ne null or RemainingWork ne null )
Hiermee worden voltooide werk- en resterende werkgegevens geretourneerd voor onderliggende werkitems van gefilterde bovenliggende items.
/aggregate( iif(CompletedWork ne null, CompletedWork, 0) with sum as SumCompletedWork, iif(RemainingWork ne null, RemainingWork, 0) with sum as SumRemainingWork
Samengevoegde voltooide werk- en resterende hoeveelheid werk voor de gefilterde werkitems.
)/compute( (SumCompletedWork add SumRemainingWork) as TotalWork, SumCompletedWork as SumCompleted
Bereken het totale aantal voltooide werk en resterende hoeveelheid werk.
)/compute( iif(TotalWork gt 0,(SumCompleted div cast(TotalWork, Edm.Double) mul 100), 0) as PercCompletedWork )
Bereken het percentage voltooide wor.
Het tabelrapport maken
Voer de volgende stappen uit om het rapport te maken:
- Kies op het tabblad Modellering Relaties beheren en koppel de drie queryresultaten per
WorkItemId
kolom. - Kies Onder Visualisaties de optie Tabel.
- Voeg de kolommen toe waarin u geïnteresseerd bent vanuit de drie Power BI-query's.
- Selecteer Sum als aggregatie voor additieve kolommen, zoals Geslaagde tests , enzovoort.
Uw rapport moet er ongeveer uitzien als in de volgende afbeelding.