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
Der Bericht über die Anforderungsnachverfolgung basiert auf dem Bericht zur Nachverfolgung von Anforderungen und zeigt, wie Metriken für ein Rollup auf einer Ebene aggregiert werden. Wenn Sie beispielsweise Anforderungen mit Benutzerartikeln nachverfolgen, können Sie Daten für Features mithilfe der in diesem Artikel bereitgestellten Abfragen aggregieren.
In der folgenden Abbildung ist ein Beispiel angegeben.
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), Anforderung (CMMI) oder Problem (Basic) und manueller 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.
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.
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.
Abfrage nach dem Prozentsatz der erfüllten Stunden für Anforderungen
Hinweis
Ändern Sie das WorkItemType basierend auf dem Prozess, den Sie verwenden. Die Scrum-Vorlage unterstützt Feature, und die Basisvorlage unterstützt Epic als Rollup-Arbeitsaufgabentyp.
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 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"
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(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"
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
Hinweis
Ändern Sie das WorkItemType basierend auf dem Prozess, den Sie verwenden. Die Scrum-Vorlage unterstützt Feature, und die Basisvorlage unterstützt Epic als Rollup-Arbeitsaufgabentyp.
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 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"
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} und WorkItemType eq 'Feature' )`
Gibt Daten nur für Features unter der angegebenen Iteration und dem angegebenen Bereich zurück.
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)))
Geben Sie Daten nur für ausgewählte Backlog-Anforderungselemente unter der angegebenen Iteration und dem angegebenen Bereich zurück.
&$expand=Descendants( $apply=filter( CompletedWork ne null or RemainingWork ne null )
Erweitern Sie die untergeordneten Elemente von Features und geben Sie Daten für Abgeschlossene Arbeit und Verbleibende Arbeit für die Arbeitselemente zurück.
&$expand=Descendants( $apply=filter( WorkItemType eq 'Bug' ) /groupby( (State), aggregate($count as Count) )
Erweitern Sie die untergeordneten Elemente von Features und filtern Sie nach Fehlern, gruppieren Sie die Rückgabedaten nach Status, und summieren Sie die Gesamtanzahl der untergeordneten Elemente.
/aggregate($count as TotalCount,
Daten über die gefilterten Testpunkte mit Anzahl als aggregieren 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)
Während der Aggregation werden die Werte der Testpunkte basierend auf ihrem letzten Ausführungsergebnis (Bestanden, Nicht bestanden, Blockiert, Nicht anwendbar und Keine) summiert. Addieren Sie außerdem die Werte der Testpunkte, deren neuestes Ergebnis nicht gleich "None" ist, um die Summe RunCountzu erhalten.
/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
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.
In diesem Beispiel ist Authentifizierungs-Szenarien ein übergeordnetes Feature von zwei Benutzer-Stories.
Verwandte Inhalte
- 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