Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Verwenden Sie den Bericht zur Anforderungsnachverfolgung, um die Qualität der Arbeitsaufgaben in der Kategorie "Anforderungen" nachzuverfolgen. Die Kategorie "Anforderungen" enthält Arbeitsaufgaben wie User Stories (Agile), Product Backlog Items (Scrum), Issues (Basic) und Requirements (CMMI). Weitere Informationen zu Arbeitsaufgabenkategorien finden Sie unter Nachverfolgen von Benutzergeschichten, Problemen, Fehlern und anderen Arbeitsaufgaben.
Die folgende Abbildung zeigt ein Beispiel für einen Bericht zur Nachverfolgung von Anforderungen.
In diesem Bericht werden die folgenden Informationen für jede Anforderung angezeigt, die sie auflistet:
- Prozentsatz abgeschlossener Arbeit: Statusanzeige, die den Prozentsatz der abgeschlossenen Arbeit basierend auf dem Rollup der abgeschlossenen Stunden für alle Vorgänge anzeigt, die mit der Anforderung verknüpft sind.
- Bestandene Tests: Die Anzahl der Testfälle, die bei der letzten Testausführung bestanden wurden.
- Fehlgeschlagene Tests: Die Anzahl der Testfälle, die basierend auf der letzten Testausführung fehlschlagen.
- Ausführen von Tests: Die Anzahl der ausgeführten Testläufe.
- Aktive Fehler: Die Anzahl der verknüpften Fehler in einem aktiven Zustand.
- Geschlossene Fehler: Die Anzahl der verknüpften Fehler in einem Zustand "Geschlossen", "Fertig" oder "Abgeschlossen".
Hinweis
Die Anforderungsnachverfolgung unterstützt nur Testfälle, die über eine anforderungsbasierte Testsuite verknüpft sind. Die Zuordnung zwischen einer Anforderungsarbeitsaufgabe – User Story (Agile), Product Backlog Item (Scrum), Requirement (CMMI) oder Issue (Basic) – und der manuellen Testausführung wird nur gebildet, wenn Sie den Testfall über eine Anforderungsbasierte Testsuite verknüpfen.
Fragen, die der Bericht beantwortet.
Anforderungsnachverfolgungsberichte sind nützlich, um die folgenden Arten von Fragen zu beantworten.
Arbeitsfortschritt
- Entspricht die Arbeitsmenge, die für jede Anforderung verbleibt, Ihren Erwartungen?
- Werden die höchsten Anforderungen zuerst implementiert?
- Wie viele Tests sind für jede Anforderung definiert? Wie viele Tests werden bestanden?
- Welche Anforderungen werden implementiert, für die keine Testfälle definiert sind?
Qualitätsfortschritt
- Wie viele Testfälle werden für jede Anforderung ausgeführt und wie viele bestehen?
- Wie viele aktive Fehler hat jede Anforderung?
- Werden Fehler für Anforderungen gefunden, die getestet werden?
- Sind Fehler behoben oder bleiben sie aktiv?
Risikobewertung
- Welche Anforderungen sind gefährdet?
- Welche Anforderungen sind für die Veröffentlichung nicht ausreichend stabil?
- Welche Anforderungen können wir heute versenden?
Hinweis
Die Beispielabfragen in diesem Artikel erfordern v3.0-Vorschau oder später des Analytics OData-Feed. Teilen Sie Ihr Feedback.
| Kategorie | Anforderungen |
|---|---|
| Zugriffsebenen |
-
Projektmitglied. – Mindestens einfacher Zugriff. |
| Erlaubnisse | Standardmäßig verfügen Projektmitglieder über die Berechtigung zum Abfragen von Analysen und Erstellen von Ansichten. Weitere Informationen zu anderen Voraussetzungen für die Dienst- und Featureaktivierung sowie allgemeine Datenverfolgungsaktivitäten finden Sie unter Berechtigungen und Voraussetzungen für den Zugriff auf Analytics. |
Hinweis
In diesem Artikel wird davon ausgegangen, dass Sie Overview von Beispielberichten mithilfe von OData-Abfragen lesen und ein grundlegendes Verständnis von Power BI haben.
Richten Sie die folgenden Konfigurationen ein, damit der Bericht nützliche Daten generiert.
| Berichtsdaten | Erforderliche Einrichtung |
|---|---|
| All | Definieren Sie Anforderungsarbeitselemente, und weisen Sie sie Ihren Bereichspfaden und Iterationspfaden zu. |
| Standen Abschluss % | Füllen Sie die Arbeit abschließen und Verbleibende Arbeit Felder für Aufgaben oder Fehler, die durch die Verknüpfung mit Anforderungen mit Kind Linktyp. |
| Testausführungsstatus | Erstellen Sie anforderungsbasierte Testsuiten in Testplänen für diese Anforderungen. Inline-Tests, die über das Board hinzugefügt werden, erfüllen diese Anforderung, nicht jedoch Anforderungen, die mit Tests verknüpft sind. Weitere Informationen finden Sie unter Erstellen von Testplänen und Testsuiten. |
| Fehlerstatus | Fehler zur Erfüllung von Anforderungen erstellen und verknüpfen mithilfe von Kind Linktyp. |
Beispielabfragen
Um den Bericht zu generieren, fügen Sie drei Power BI Abfragen zu Power BI Desktop hinzu, und verknüpfen Sie sie dann. Jede Abfrage führt entweder den WorkItems- oder den TestPoints-Entitätssatz aus.
Hinweis
Die in den folgenden Abschnitten bereitgestellten Power BI Abfrageausschnitte umfassen die erforderlichen Datentransformationen zum Erweitern von Spalten und Ändern des Datentyps.
Hinweis
Informationen zum Suchen verfügbarer Eigenschaften zum Filtern oder Melden finden Sie in der Metadata-Referenz für Azure Boards. Sie können Abfragen filtern oder Eigenschaften zurückgeben, indem Sie einen beliebigen Property Wert verwenden, der unter einem EntityTypeoder einem beliebigen NavigationPropertyBinding Path für ein EntitySetObjekt aufgeführten Wert definiert ist. Jede EntitySet entspricht einem EntityType, der den Datentyp für jede Eigenschaft dokumentiert.
Abfragebereich und Iterationspfade
Um den Bericht auf einen bestimmten Bereichs- und Iterationspfad zu beschränken, filtern Sie die Abfrage mithilfe AreaSK und IterationSK. Ausführliche Informationen finden Sie unter Definieren grundlegender Abfragen mit OData Analytics.
Abfrage nach dem Prozentsatz der erfüllten Stunden für Anforderungen
Hinweis
Die folgende Abfrage funktioniert für den Agile-Prozess, da sie die Felder Remaining Work und Completed Work in Arbeitsaufgaben definiert.
Kopieren Sie die folgende Power BI Abfrage direkt in das Fenster Get Data>Blank Query. Weitere Informationen finden Sie unter Übersicht über Beispielberichte mit OData-Abfragen.
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"
Abfrage zum Testausführungsstatus der Anforderungen
Hinweis
Informationen zu verfügbaren Eigenschaften zum Filtern oder Melden finden Sie in der Metadatenreferenz für Testpläne Analytics. Sie können Abfragen filtern oder Eigenschaften zurückgeben, indem Sie einen beliebigen Property Wert verwenden, der unter einem EntityTypeoder einem beliebigen NavigationPropertyBinding Path für ein EntitySetObjekt aufgeführten Wert definiert ist. Jede EntitySet entspricht einem EntityType, der den Datentyp für jede Eigenschaft dokumentiert.
Kopieren Sie die folgende Power BI Abfrage direkt in das Fenster Get Data>Blank Query. Weitere Informationen finden Sie unter Übersicht über Beispielberichte mit OData-Abfragen.
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"
Hinweis
Der TestSuite/RequirementWorkItem/... Eintrag gibt an, dass Sie die Arbeitsaufgabe über anforderungsbasierte Testsammlungen mit der Testsuite verknüpfen müssen, wie im Abschnitt "Voraussetzungen" beschrieben.
Abfragen des Status von Fehlern, die mit den Anforderungen verknüpft sind
Kopieren Sie die folgende Power BI Abfrage direkt in das Fenster Get Data>Blank Query. Weitere Informationen finden Sie unter Übersicht über Beispielberichte mit OData-Abfragen.
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"
Ersetzungszeichenfolgen und Abfrageaufschlüsselung
Ersetzen Sie die folgenden Zeichenfolgen durch Ihre Werte. Klammern nicht einschließen {} in Ihrer Ersetzung Wenn Ihr Organisationsname z. B. "Fabrikam" lautet, ersetzen Sie {organization} durch Fabrikam, nicht durch {Fabrikam}.
-
{organization}- Name Ihrer Organisation. -
{project}- Der Name Ihres Projekts. -
{iterationSK}- Die GUID, die dem Iterationspfad von Interesse zugeordnet ist. Um die GUID nachzuschlagen, siehe IterationSK zurückgeben für einen bestimmten Iterationspfad. -
{areaSK}- Die GUID, die dem interessierenden Bereichspfad zugeordnet ist. Um die GUID nachzuschlagen, siehe Geben Sie den AreaSK für einen bestimmten Area-Pfad zurück.
Abfrageaufschlüsselung
In der folgenden Tabelle werden die einzelnen Teile der Abfrage beschrieben.
Abfrageteil
Beschreibung
$filter=( IterationSK eq {iterationSK} and AreaSK eq {areaSK} )`
Gibt Daten nur für ausgewählte Iterations-, Bereichs- und Backlog-Arbeitselemente zurück.
Processes/any(p:p/BacklogType eq 'RequirementBacklog')
Filtert die Arbeitsaufgaben so, dass sie in die Kategorie "Anforderungen" fallen, für mindestens einen Prozess, der ihnen zugeordnet ist.
Processes/all(p:p/IsBugType eq false)
schließt die Bug-Typ-Arbeitselemente aus, während Anforderungen abgerufen werden. In der grundlegenden Prozessvorlage sind Problemarbeitselemente auch vom Fehlertyp, daher entfernen Sie diese Klausel für den grundlegenden Prozess aus Ihrer Abfrage.
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) ) )
Gibt Daten nur für ausgewählte Anforderungen basierend auf Iteration und Bereich zurück.
/aggregate($count as TotalCount,
Aggregiert Daten über die gefilterten Testpunkte mit der Anzahl als TotalCount.
cast(LastResultOutcome eq 'Passed', Edm.Int32) with sum as PassedCount
Beim Aggregieren werden Testpunkte mit dem neuesten Ausführungsergebnis 'Bestanden' in 1 umgewandelt und summiert als PassedCount.
&$expand=Descendants( $apply=filter( CompletedWork ne null or RemainingWork ne null )
Liefert Erledigte Arbeit und Restliche Arbeit Daten für untergeordnete Workitems von gefilterten übergeordneten Items.
/aggregate( iif(CompletedWork ne null, CompletedWork, 0) with sum as SumCompletedWork, iif(RemainingWork ne null, RemainingWork, 0) with sum as SumRemainingWork
Aggregierte Arbeits- und Restarbeitsdaten für die gefilterten Arbeitsaufgaben.
)/compute( (SumCompletedWork add SumRemainingWork) as TotalWork, SumCompletedWork as SumCompleted
Berechnen Sie die Gesamtzusammenfassung der abgeschlossenen Arbeit und der verbleibenden Arbeit.
)/compute( iif(TotalWork gt 0,(SumCompleted div cast(TotalWork, Edm.Double) mul 100), 0) as PercCompletedWork )
Berechnen Sie den Prozentsatz der abgeschlossenen Arbeit.
Tabellenbericht erstellen
Führen Sie zum Erstellen des Berichts die folgenden Schritte aus:
Wählen Sie auf der Registerkarte ModelingBeziehungen verwalten aus, und verknüpfen Sie die drei Abfrageergebnisse durch die Spalte
WorkItemId.Wählen Sie unter "Visualisierungen" die Option "Tabelle" aus.
Fügen Sie die gewünschten Spalten aus den drei Power BI Abfragen hinzu.
Wählen Sie "Summe " als Aggregation für additive Spalten wie "Bestandene Tests" aus.
Ihr Bericht sollte ähnlich wie in der folgenden Abbildung aussehen.
Verwandte Artikel
- Erkunden von Beispielberichten mithilfe von OData-Abfragen
- Erstellen von OData-Abfragen für Analytics
- Verbinden Sie Power BI mit OData-Abfragen
- Beziehen Sie sich auf die Metadaten für Azure Boards Analytics
- Zugriff auf Beispielberichte und Schnellübersichtsindex
- Hinzufügen eines Team-Slicers zu einem vorhandenen Bericht