Informe de ejemplo de seguimiento de requisitos

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019

En este artículo se proporcionan instrucciones sobre cómo realizar un seguimiento de la calidad de los elementos de trabajo que pertenecen a la categoría Requisitos. Esto incluye elementos de trabajo como casos de usuario (Agile), elementos de trabajo pendientes del producto (Scrum) y requisitos (CMMI).

Importante

Power BI integración y el acceso a la fuente OData del servicio Analytics se encuentran en versión preliminar. Las consultas de ejemplo proporcionadas en este artículo solo son válidas en Azure DevOps Services y dependen de la versión preliminar v3.0 o posterior. Le recomendamos que use estas consultas y nos proporcione sus comentarios.

Un ejemplo se muestra en la imagen siguiente.

Sample - Stories Overview Report

Nota

El seguimiento de requisitos solo se admite para los casos de prueba vinculados a través de un conjunto de pruebas basado en requisitos. La asociación entre un elemento de trabajo de requisito: Caso de usuario(Agile),Elemento de trabajo pendiente del producto(Scrum),Requisito(CMMI)o Problema(Básico)y Ejecución de pruebas manual solo se forma cuando el caso de prueba está vinculado através de un conjunto de pruebas basado en requisitos .

Este informe muestra la siguiente información para cada requisito que enumera:

  • Porcentaje de trabajo completado:barra de progreso que muestra el porcentaje de trabajo completado en función del resumen de horas completadas para todas las tareas vinculadas al requisito.
  • Pruebas superdas:número de casos de prueba ejecutados que se han superado en función de la ejecución de pruebas más reciente.
  • Pruebas conerrores: número de casos de prueba ejecutados que han tenido errores en función de la ejecución de pruebas más reciente.
  • Ejecutar pruebas:el número de ejecuciones de prueba que se han ejecutado.
  • Errores activos:el número de errores vinculados en estado Activo.
  • Errores cerrados:número de errores vinculados en estado Cerrado, Listo o Completado.

Preguntas que responde el informe

Los informes de seguimiento de requisitos son útiles para responder a los siguientes tipos de preguntas.

Progreso del trabajo

  • ¿Corresponde a sus expectativas la cantidad de trabajo que resta para cada requisito?
  • ¿Se implementan primero los requisitos clasificados por relevancia?
  • ¿Cuántas pruebas se definen para cada requisito? ¿Cuántas pruebas se superan?
  • ¿Qué requisitos se implementan que no tienen ningún caso de prueba definido para ellos?

Progreso de calidad

  • ¿Cuántos casos de prueba se han ejecutado para cada requisito y cuántos se han superado?
  • ¿Cuántos errores activos tiene cada requisito?
  • ¿Se encuentran errores para los requisitos que se prueban?
  • ¿Se resuelven los errores o siguen activos?

Evaluación de riesgos

  • ¿Qué requisitos están en riesgo?
  • ¿Qué requisitos no son lo suficientemente estables para la versión?
  • ¿Qué requisitos podemos enviar hoy?

Prerrequisitos

Para que el informe genere datos útiles, debe haber realizado las siguientes tareas:

  • Ha definido elementos de trabajo de requisitos y los ha asignado a las rutas de acceso de área e iteración de interés. Para obtener información sobre cómo definir rutas de acceso de área e iteración, vea Definir rutas de acceso de área y Definir rutas de iteración.
  • Para obtener el porcentaje de horas de finalización, debe rellenar los campos Trabajo completo y Trabajo restante de tareas o errores vinculados a los requisitos con el tipo de vínculo Secundario.
  • Para obtener el estado de ejecución de los casos de prueba, habrá creado conjuntos de pruebas basados en requisitos Test Plans correspondientes a esos requisitos. Las pruebas insertdas que agregue a través del panel Kanban cumplen este requisito previo, pero los requisitos que vincule a las pruebas no lo cumplen. Para más información, consulte Creación de planes de pruebas y conjuntos de pruebas.
  • Para obtener el estado de los errores, habrá creado y vinculado errores a los requisitos con el tipo de vínculo Secundario.

Nota

En este artículo se da por supuesto que ha leído Información general de los informes de ejemplo mediante consultas de OData y tiene una comprensión básica de Power BI.

Consultas de ejemplo

Rutas de acceso de área de consulta e iteración

Para establecer el ámbito del informe en una ruta de acceso de área e iteración determinada, puede consultarlos como se describe en Consulta de los datos de seguimiento de trabajo mediante OData Analytics y uso de valores de AreaSK e IterationSK de interés para proporcionar a las demás consultas proporcionadas en las secciones proporcionadas más adelante en este artículo.

Consulta del porcentaje de horas de finalización de los requisitos

Nota

La consulta siguiente funciona para el proceso agile, ya que define Remaining Work los campos y en los elementos de Completed Work trabajo.

Puede pegar la consulta Power BI que se muestra a continuación directamente en la ventana Obtener datos: consulta en blanco. Para obtener más información, consulte Información general de informes de ejemplo mediante consultas de OData.

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"

Consulta del estado de ejecución de pruebas de los requisitos

Puede pegar la consulta Power BI que se muestra a continuación directamente en la ventana Obtener datos: consulta en blanco. Para obtener más información, consulte Información general de informes de ejemplo mediante consultas de OData.

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"

Nota

La entrada indica que el elemento de trabajo debe vincularse al conjunto de pruebas a través de un conjunto de pruebas basado en requisitos, como se describe TestSuite/RequirementWorkItem/... en los requisitos previos.TestSuite/RequirementWorkItem/...

Consulta del estado de los errores vinculados a los requisitos

Puede pegar la consulta Power BI que se muestra a continuación directamente en la ventana Obtener datos: consulta en blanco. Para obtener más información, consulte Información general de informes de ejemplo mediante consultas de OData.

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"

Cadenas de sustitución

Cada consulta contiene las cadenas siguientes que debe sustituir por sus valores. No incluya corchetes con {} la sustitución. Por ejemplo, si el nombre de la organización es "Fabrikam", reemplace {organization} por Fabrikam,no {Fabrikam}.

  • {organization}: nombre de la organización
  • {project}: nombre del proyecto de equipo u omita por completo "/{project}" para una consulta entre proyectos.
  • {iterationSK}: SKU de iteración de la ruta de acceso de iteración que le interesa
  • {areaSK}: SKU de área de la ruta de acceso del área que le interesa.

Desglose de consultas

En la tabla siguiente se describe cada parte de la consulta.

Elemento de consulta

Descripción

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

Filtre los elementos de trabajo de tal manera que deban estar en la categoría "requisitos" para al menos un proceso asociado a ellos.

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

Omita los elementos de trabajo del tipo de error al obtener los requisitos. En la plantilla de proceso Básico, los elementos de trabajo de problema también son de tipo de error, por lo que para el proceso básico, quite esta cláusula de la consulta.

Power BI transformaciones

Las transformaciones aplicadas a Power BI consultas ya se han agregado en fragmentos de consulta.

Creación del informe

Power BI muestra los campos sobre los que puede informar.

Nota

En el ejemplo siguiente se supone que nadie ha cambiado el nombre de ninguna columna.

Para crear el informe, realice los pasos siguientes:

  1. En la pestaña Modelado, elija Administrar relaciones vincular los tres resultados de la consulta por columna WorkItemId.
  2. Cree una tabla Power BI visualización de datos.
  3. Agregue las columnas que le interesen de las tres Power BI consultas.
  4. Seleccione Suma como agregación para columnas de adición, como Pruebas superdas, etc.

    Power BI select Sum as aggregation

El informe debe tener un aspecto similar al de la imagen siguiente.

Sample - Requirements tracking report