Implementación de la cobertura de código y visualización en la canalización
La cobertura de código es una métrica que se usa para medir la proporción de código fuente que se ejecuta durante las pruebas automatizadas. Proporciona información sobre la eficacia de los conjuntos de pruebas mediante la identificación de áreas de código que carecen de cobertura de pruebas suficiente. Al garantizar una cobertura completa de código, los equipos de desarrollo pueden aumentar la confianza en la confiabilidad de su software, identificar posibles errores en el proceso de desarrollo y, en última instancia, ofrecer productos de mayor calidad a los usuarios finales.
Aunque el concepto de cobertura de código es independiente de la plataforma, sus detalles de implementación difieren entre Azure DevOps y GitHub. Estos detalles también difieren en los marcos de desarrollo y los lenguajes de programación.
Azure DevOps
Supongamos que tiene un proyecto de .NET (C#) para el que desea implementar la cobertura de código mediante Azure Pipelines. Esto implicaría la siguiente secuencia de tareas:
- Configuración de herramientas de prueba y cobertura: Use un marco de pruebas que admita el análisis de cobertura de código, como NUnit, MSTest o xUnit para .NET. Integre una herramienta de cobertura de código como Coverlet u OpenCover en el proyecto. Estas herramientas pueden generar informes de cobertura de código en varios formatos compatibles con Azure Pipelines.
- Configuración de Azure Pipelines: En el portal de Azure DevOps, vaya al proyecto de Azure DevOps y seleccione la canalización en la que desea agregar cobertura de código. Edite la configuración de canalización y agregue pasos para instalar dependencias y compilar el proyecto.
- Adición de tareas de cobertura de código: Agregue tareas a la canalización para ejecutar pruebas con cobertura de código habilitada y genere informes de cobertura. Use los argumentos de línea de comandos adecuados para el ejecutor de pruebas para habilitar el análisis de cobertura de código y especificar el formato de salida para los informes de cobertura.
- Publicación del informe de cobertura de código: Publique los informes de cobertura de código generados como artefactos o asócielos a la ejecución de la canalización. Use las funcionalidades de publicación integradas de Azure Pipelines o tareas personalizadas para cargar informes de cobertura en Azure DevOps o servicios externos.
Esta es una canalización de ejemplo que ilustra este enfoque:
trigger: - mainpool: vmImage: "windows-latest"steps: - task: UseDotNet@2 inputs: packageType: "sdk" version: "8.0.x" - script: dotnet restore displayName: "Restore Dependencies" - script: dotnet build --configuration Release displayName: "Build Solution" - script: dotnet test --no-build --verbosity normal /p:CollectCoverage=true /p:CoverletOutputFormat=opencover displayName: "Run Tests with Code Coverage" - task: PublishCodeCoverageResults@2 inputs: summaryFileLocation: "$(Agent.TempDirectory)/**/*.xml" failIfCoverageEmpty: true
Esta canalización genera informes de cobertura de código como parte del proceso de compilación. Esto le permite revisar y analizar los resultados de cobertura en el portal de Azure DevOps. Para realizar análisis más detallados, puede descargar artefactos de cobertura de código y examinarlos mediante Visual Studio (cuando se usa la tarea Prueba de Visual Studio) o las opciones específicas de la herramienta de cobertura de código.
GitHub
Para facilitar la comparación con el enfoque basado en Azure DevOps, supongamos de nuevo que tiene un proyecto de .NET (C#) para el que desea implementar la cobertura de código mediante el flujo de trabajo de Acciones de GitHub. Esto implicaría la siguiente secuencia de tareas:
- Configuración de herramientas de prueba y cobertura: Al igual que con Azure DevOps, use un marco de pruebas que admita el análisis de cobertura de código. Compruebe que estas herramientas pueden generar informes de cobertura de código en los formatos compatibles con GitHub.
- Creación de flujo de trabajo de Acciones de GitHub: En la página del repositorio de GitHub, vaya al directorio .github/workflows. Cree un nuevo archivo YAML (por ejemplo, ci.yml) para definir la configuración del flujo de trabajo. Defina desencadenadores para el flujo de trabajo, como solicitudes de incorporación de cambios o inserciones en ramas específicas.
- Configuración de los pasos de flujo de trabajo: Defina los pasos del flujo de trabajo YAML para configurar el entorno, restaurar dependencias, compilar el proyecto, ejecutar pruebas y generar informes de cobertura de código. Asegúrese de que el código fuente del proyecto, la configuración de prueba y las dependencias necesarias se incluyen en el repositorio. Use acciones como acciones o desprotección para extraer del repositorio, actions/setup-dotnet para configurar el SDK de .NET Core y coverallsapp/github-action o codecov/codecov-action para cargar informes de cobertura de código.
Este es un flujo de trabajo de ejemplo que ilustra este enfoque:
name: Code Coverageon: pull_request: branches: - main push: branches: - mainjobs: build: runs-on: ubuntu-latest steps: - name: Checkout Repository uses: actions/checkout@v2 - name: Setup .NET Core uses: actions/setup-dotnet@v1 with: dotnet-version: "8.0.x" - name: Restore Dependencies run: dotnet restore - name: Build Solution run: dotnet build --configuration Release - name: Run Tests run: dotnet test --no-build --verbosity normal /p:CollectCoverage=true /p:CoverletOutputFormat=opencover - name: Upload Code Coverage Report uses: coverallsapp/github-action@v1 with: github-token: ${{ secrets.GITHUB_TOKEN }}
Este flujo de trabajo de Acciones de GitHub ejecutará automáticamente pruebas y generará informes de cobertura de código cada vez que se crea una solicitud de incorporación de cambios o se inserta código en la rama principal. Asegúrese de que tiene los permisos necesarios y los tokens de API para cargar informes de cobertura de código en servicios de terceros, como Coveralls o Codecov.