SlideShare una empresa de Scribd logo
1 de 33
Cobertura de pruebas unitarias: que tan bien
escribimos nuestras pruebas?
@Mteheran
TDD
Miguel Teheran
Colombiano
Consultor y desarrollador de software
@Mteheran
TDD
Test Driven Development
Flujo de trabajo en TDD
● Escribir requisito
● Escribir la prueba
● Verificar que la prueba falla
● Escribir implementación
● Ejecutar pruebas automatizadas
● Refactoring
TDD - Code First
Primero el código luego las pruebas
Sabemos que tan efectivas son
nuestras pruebas?
Cómo medimos el alcance de
nuestras pruebas?
Cobertura de pruebas unitarias
85% 15%
Herramientas
Existen muchas herramientas que nos ayudan a medir la cobertura
Visual studio enterprise
Herramientas - Antiguas
● NCover
● OpenCover
dotCover
https://www.jetbrains.com/dotcover/
Coverlet
Cross platform code coverage for .NET
https://github.com/coverlet-coverage/coverlet
Características
● Open source
● Multiplataforma
● Soporta .NET Framework y .NET Core
● Funciona con VSTest, NUnit, XUnit y otros
● Permite generar reportes
● Tiene diferentes parámetros de configuración
dotnet add package coverlet.msbuild
dotnet add package coverlet.collector
dotnet test /p:CollectCoverage=true
Demo 1
dotnet test /p:CollectCoverage=true
Demo 2
dotnet test --no-build
/p:CollectCoverage=true
Demo 3
dotnet test /p:CollectCoverage=true
/p:Include="[*]CoverletDemo.Calculati
on.*"
Demo 4
dotnet test /p:CollectCoverage=true
/p:ExcludeByAttribute="ExcludeFromC
odeCoverage"
Demo 5
dotnet test /p:CollectCoverage=true
/p:CoverletOutputFormat=cobertura
Unit Test + Devops
Mejora continua gracias a los resultados de las pruebas unitarias
Ventajas de la integración
● Análisis continuo de resultados
● Detección temprana de errores
● Análisis de impacto de cambios o nuevo código implementado
● Generación de alertas
Demo - Azure Devops
Azure devops
Demo - Codecov
Easily upload coverage reports to Codecov from GitHub Actions
https://github.com/marketplace/actions/codecov
Codecov
- uses: codecov/codecov-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }} # not required for public
repos
file: /coverage.cobertura.xml # optional
flags: unittests # optional
name: codecov-umbrella # optional
fail_ci_if_error: true # optional (def
Coveralls.io
Test Coverage History & Statistics
https://coveralls.io/
Cúal es el porcentaje ideal de
cobertura?
Tiempo
Pruebas Cobertura
60% 70% 80%
Intensidad de uso en ciertos
módulos en una aplicación
30% 50%20%
Cobertura de pruebas unitarias en C#
Cobertura de pruebas unitarias en C#

Más contenido relacionado

La actualidad más candente

Analisis y-diseño-farmacia-ximena
Analisis y-diseño-farmacia-ximenaAnalisis y-diseño-farmacia-ximena
Analisis y-diseño-farmacia-ximenaMilton Siles
 
Ingeniería de requisitos e ingeniería de requerimientos
Ingeniería de requisitos e ingeniería de requerimientosIngeniería de requisitos e ingeniería de requerimientos
Ingeniería de requisitos e ingeniería de requerimientosCesar Prado
 
Diapositivas Informe Final - Proyecto Sociotecnológico I
Diapositivas Informe Final - Proyecto Sociotecnológico IDiapositivas Informe Final - Proyecto Sociotecnológico I
Diapositivas Informe Final - Proyecto Sociotecnológico IÁngel Ramos
 
Analisis y Diseño de Sistemas - Kendal & Kendal - Sexta Edición
Analisis y Diseño de Sistemas - Kendal & Kendal - Sexta EdiciónAnalisis y Diseño de Sistemas - Kendal & Kendal - Sexta Edición
Analisis y Diseño de Sistemas - Kendal & Kendal - Sexta EdiciónRolf Pinto
 
Unidad2 Bases De Datos Para L Toma De Desiciones
Unidad2 Bases De Datos Para L Toma De DesicionesUnidad2 Bases De Datos Para L Toma De Desiciones
Unidad2 Bases De Datos Para L Toma De DesicionesDeysi Hdz
 
Manual técnico del software
Manual técnico del softwareManual técnico del software
Manual técnico del softwareLina Vega
 
Seguridad en dispositivos móviles
Seguridad en dispositivos móvilesSeguridad en dispositivos móviles
Seguridad en dispositivos móvilesMarcos Harasimowicz
 
Construyendo tu propio laboratorio de pentesting
Construyendo tu propio laboratorio de pentestingConstruyendo tu propio laboratorio de pentesting
Construyendo tu propio laboratorio de pentestingJaime Andrés Bello Vieda
 
Proyecto Socio Tecnologico
Proyecto Socio TecnologicoProyecto Socio Tecnologico
Proyecto Socio Tecnologicoyessika_escalona
 
Servicios web xml
Servicios web xmlServicios web xml
Servicios web xmlJuan Anaya
 
Modelo Contrato para el-desarrollo-de-software
Modelo Contrato para el-desarrollo-de-softwareModelo Contrato para el-desarrollo-de-software
Modelo Contrato para el-desarrollo-de-softwareariz_2214
 
Estructura de los Sistemas Operativos
Estructura de los Sistemas OperativosEstructura de los Sistemas Operativos
Estructura de los Sistemas OperativosG Hoyos A
 
Herramientas de Programacion Cliente Servidor
Herramientas de Programacion Cliente ServidorHerramientas de Programacion Cliente Servidor
Herramientas de Programacion Cliente ServidorHectlys Piña
 
Formato Para La Captura Y DescripcióN De Requerimientos
Formato Para La Captura  Y DescripcióN De RequerimientosFormato Para La Captura  Y DescripcióN De Requerimientos
Formato Para La Captura Y DescripcióN De RequerimientosJosse Perez
 
Sesión 2: Visión General. El proceso del software
Sesión 2: Visión General. El proceso del softwareSesión 2: Visión General. El proceso del software
Sesión 2: Visión General. El proceso del softwareCoesi Consultoria
 

La actualidad más candente (20)

Arquitectura cliente servidor
Arquitectura cliente servidorArquitectura cliente servidor
Arquitectura cliente servidor
 
Analisis y-diseño-farmacia-ximena
Analisis y-diseño-farmacia-ximenaAnalisis y-diseño-farmacia-ximena
Analisis y-diseño-farmacia-ximena
 
Ingeniería de requisitos e ingeniería de requerimientos
Ingeniería de requisitos e ingeniería de requerimientosIngeniería de requisitos e ingeniería de requerimientos
Ingeniería de requisitos e ingeniería de requerimientos
 
Arquitectura de aplicaciones
Arquitectura de aplicacionesArquitectura de aplicaciones
Arquitectura de aplicaciones
 
Diapositivas Informe Final - Proyecto Sociotecnológico I
Diapositivas Informe Final - Proyecto Sociotecnológico IDiapositivas Informe Final - Proyecto Sociotecnológico I
Diapositivas Informe Final - Proyecto Sociotecnológico I
 
Analisis y Diseño de Sistemas - Kendal & Kendal - Sexta Edición
Analisis y Diseño de Sistemas - Kendal & Kendal - Sexta EdiciónAnalisis y Diseño de Sistemas - Kendal & Kendal - Sexta Edición
Analisis y Diseño de Sistemas - Kendal & Kendal - Sexta Edición
 
Java Micro Edition "J2ME"
Java Micro Edition "J2ME"Java Micro Edition "J2ME"
Java Micro Edition "J2ME"
 
Unidad2 Bases De Datos Para L Toma De Desiciones
Unidad2 Bases De Datos Para L Toma De DesicionesUnidad2 Bases De Datos Para L Toma De Desiciones
Unidad2 Bases De Datos Para L Toma De Desiciones
 
Diagrama de casos de uso
Diagrama de casos de usoDiagrama de casos de uso
Diagrama de casos de uso
 
Manual técnico del software
Manual técnico del softwareManual técnico del software
Manual técnico del software
 
Seguridad en dispositivos móviles
Seguridad en dispositivos móvilesSeguridad en dispositivos móviles
Seguridad en dispositivos móviles
 
Construyendo tu propio laboratorio de pentesting
Construyendo tu propio laboratorio de pentestingConstruyendo tu propio laboratorio de pentesting
Construyendo tu propio laboratorio de pentesting
 
Proyecto Socio Tecnologico
Proyecto Socio TecnologicoProyecto Socio Tecnologico
Proyecto Socio Tecnologico
 
Servicios web xml
Servicios web xmlServicios web xml
Servicios web xml
 
Modelo Contrato para el-desarrollo-de-software
Modelo Contrato para el-desarrollo-de-softwareModelo Contrato para el-desarrollo-de-software
Modelo Contrato para el-desarrollo-de-software
 
Estructura de los Sistemas Operativos
Estructura de los Sistemas OperativosEstructura de los Sistemas Operativos
Estructura de los Sistemas Operativos
 
Herramientas de Programacion Cliente Servidor
Herramientas de Programacion Cliente ServidorHerramientas de Programacion Cliente Servidor
Herramientas de Programacion Cliente Servidor
 
Formato Para La Captura Y DescripcióN De Requerimientos
Formato Para La Captura  Y DescripcióN De RequerimientosFormato Para La Captura  Y DescripcióN De Requerimientos
Formato Para La Captura Y DescripcióN De Requerimientos
 
Sesión 2: Visión General. El proceso del software
Sesión 2: Visión General. El proceso del softwareSesión 2: Visión General. El proceso del software
Sesión 2: Visión General. El proceso del software
 
Ensayo Cliente Servidor
Ensayo Cliente ServidorEnsayo Cliente Servidor
Ensayo Cliente Servidor
 

Similar a Cobertura de pruebas unitarias en C#

Desarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesDesarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesJobsket
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality Assurancewill2294
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas.. ..
 
Behavior1
Behavior1Behavior1
Behavior1arajar
 
Testing & Pizza by Lito & nitsnets
Testing & Pizza by Lito & nitsnetsTesting & Pizza by Lito & nitsnets
Testing & Pizza by Lito & nitsnetseusonlito
 
pruebasunitarias-110921232512-phpapp02.pptx
pruebasunitarias-110921232512-phpapp02.pptxpruebasunitarias-110921232512-phpapp02.pptx
pruebasunitarias-110921232512-phpapp02.pptxCompusoftnetCiaLtda
 
Vision práctica del BDD (Behaviour Driven Design) para agilizar el proceso de...
Vision práctica del BDD (Behaviour Driven Design) para agilizar el proceso de...Vision práctica del BDD (Behaviour Driven Design) para agilizar el proceso de...
Vision práctica del BDD (Behaviour Driven Design) para agilizar el proceso de...Software Guru
 
PHP Unit y TDD
PHP Unit y TDDPHP Unit y TDD
PHP Unit y TDDEmergya
 
Automatización de pruebas con Selenium, Typescript, Protractor & Cucumber
Automatización de pruebas con Selenium, Typescript, Protractor & CucumberAutomatización de pruebas con Selenium, Typescript, Protractor & Cucumber
Automatización de pruebas con Selenium, Typescript, Protractor & CucumberSoftware Guru
 
#HablemosDeTestingDay - José Castillo: Estrategia de QA en un contexto de DevOps
#HablemosDeTestingDay - José Castillo: Estrategia de QA en un contexto de DevOps#HablemosDeTestingDay - José Castillo: Estrategia de QA en un contexto de DevOps
#HablemosDeTestingDay - José Castillo: Estrategia de QA en un contexto de DevOpsHablemosDeTesting
 
Faces y Sub Faces de la Metodologia XP
Faces y Sub Faces de la Metodologia XPFaces y Sub Faces de la Metodologia XP
Faces y Sub Faces de la Metodologia XPdanielocaa12
 
Apuntes #XPweek
Apuntes #XPweekApuntes #XPweek
Apuntes #XPweekCarlos Ble
 
Modelos De Calidad para proyectos de Software Y Software Libre
Modelos De Calidad para proyectos de Software Y Software LibreModelos De Calidad para proyectos de Software Y Software Libre
Modelos De Calidad para proyectos de Software Y Software LibreEQ SOFT EIRL
 
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7Luis Ruiz Pavón
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?Micael Gallego
 

Similar a Cobertura de pruebas unitarias en C# (20)

Desarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesDesarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agiles
 
Tdd
TddTdd
Tdd
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality Assurance
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas
 
Behavior1
Behavior1Behavior1
Behavior1
 
El coste de no usar integración continua
El coste de no usar integración continuaEl coste de no usar integración continua
El coste de no usar integración continua
 
Testing & Pizza by Lito & nitsnets
Testing & Pizza by Lito & nitsnetsTesting & Pizza by Lito & nitsnets
Testing & Pizza by Lito & nitsnets
 
pruebasunitarias-110921232512-phpapp02.pptx
pruebasunitarias-110921232512-phpapp02.pptxpruebasunitarias-110921232512-phpapp02.pptx
pruebasunitarias-110921232512-phpapp02.pptx
 
Vision práctica del BDD (Behaviour Driven Design) para agilizar el proceso de...
Vision práctica del BDD (Behaviour Driven Design) para agilizar el proceso de...Vision práctica del BDD (Behaviour Driven Design) para agilizar el proceso de...
Vision práctica del BDD (Behaviour Driven Design) para agilizar el proceso de...
 
PHP Unit y TDD
PHP Unit y TDDPHP Unit y TDD
PHP Unit y TDD
 
Automatización de pruebas con Selenium, Typescript, Protractor & Cucumber
Automatización de pruebas con Selenium, Typescript, Protractor & CucumberAutomatización de pruebas con Selenium, Typescript, Protractor & Cucumber
Automatización de pruebas con Selenium, Typescript, Protractor & Cucumber
 
#HablemosDeTestingDay - José Castillo: Estrategia de QA en un contexto de DevOps
#HablemosDeTestingDay - José Castillo: Estrategia de QA en un contexto de DevOps#HablemosDeTestingDay - José Castillo: Estrategia de QA en un contexto de DevOps
#HablemosDeTestingDay - José Castillo: Estrategia de QA en un contexto de DevOps
 
Taller de TDD con .NET y xUnit
Taller de TDD con .NET y xUnitTaller de TDD con .NET y xUnit
Taller de TDD con .NET y xUnit
 
Faces y Sub Faces de la Metodologia XP
Faces y Sub Faces de la Metodologia XPFaces y Sub Faces de la Metodologia XP
Faces y Sub Faces de la Metodologia XP
 
Modulo 1
Modulo 1Modulo 1
Modulo 1
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de software
 
Apuntes #XPweek
Apuntes #XPweekApuntes #XPweek
Apuntes #XPweek
 
Modelos De Calidad para proyectos de Software Y Software Libre
Modelos De Calidad para proyectos de Software Y Software LibreModelos De Calidad para proyectos de Software Y Software Libre
Modelos De Calidad para proyectos de Software Y Software Libre
 
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?
 

Más de Miguel Angel Teheran Garcia

Pruebas Automatizadas con PlayWright sobre nuestras Google Cloud Functions
Pruebas Automatizadas con PlayWright sobre nuestras Google Cloud FunctionsPruebas Automatizadas con PlayWright sobre nuestras Google Cloud Functions
Pruebas Automatizadas con PlayWright sobre nuestras Google Cloud FunctionsMiguel Angel Teheran Garcia
 
PlayWright, Cypress, Selenium Cual es la mejor opción para desarrolladores Ja...
PlayWright, Cypress, Selenium Cual es la mejor opción para desarrolladores Ja...PlayWright, Cypress, Selenium Cual es la mejor opción para desarrolladores Ja...
PlayWright, Cypress, Selenium Cual es la mejor opción para desarrolladores Ja...Miguel Angel Teheran Garcia
 
DevFest 2022 - El Arte de escribir sobre programacion.pptx
DevFest 2022 - El Arte de escribir sobre programacion.pptxDevFest 2022 - El Arte de escribir sobre programacion.pptx
DevFest 2022 - El Arte de escribir sobre programacion.pptxMiguel Angel Teheran Garcia
 
RoadMap y herramientas de Azure DevOps que debes conocer
RoadMap y herramientas de Azure DevOps que debes conocerRoadMap y herramientas de Azure DevOps que debes conocer
RoadMap y herramientas de Azure DevOps que debes conocerMiguel Angel Teheran Garcia
 
MAUIConf - Adios Net Maui Essentials Bienvenida Integración de Plataforma
MAUIConf - Adios Net Maui Essentials Bienvenida Integración de PlataformaMAUIConf - Adios Net Maui Essentials Bienvenida Integración de Plataforma
MAUIConf - Adios Net Maui Essentials Bienvenida Integración de PlataformaMiguel Angel Teheran Garcia
 
Building Web Applications with Blazor and MudBlazor
Building Web Applications with Blazor and MudBlazorBuilding Web Applications with Blazor and MudBlazor
Building Web Applications with Blazor and MudBlazorMiguel Angel Teheran Garcia
 

Más de Miguel Angel Teheran Garcia (20)

Pruebas Automatizadas con PlayWright sobre nuestras Google Cloud Functions
Pruebas Automatizadas con PlayWright sobre nuestras Google Cloud FunctionsPruebas Automatizadas con PlayWright sobre nuestras Google Cloud Functions
Pruebas Automatizadas con PlayWright sobre nuestras Google Cloud Functions
 
PlayWright, Cypress, Selenium Cual es la mejor opción para desarrolladores Ja...
PlayWright, Cypress, Selenium Cual es la mejor opción para desarrolladores Ja...PlayWright, Cypress, Selenium Cual es la mejor opción para desarrolladores Ja...
PlayWright, Cypress, Selenium Cual es la mejor opción para desarrolladores Ja...
 
Introduction to Blazor Hybrid
Introduction to Blazor HybridIntroduction to Blazor Hybrid
Introduction to Blazor Hybrid
 
La historia de api-colombia
La historia de api-colombiaLa historia de api-colombia
La historia de api-colombia
 
DevFest 2022 - El Arte de escribir sobre programacion.pptx
DevFest 2022 - El Arte de escribir sobre programacion.pptxDevFest 2022 - El Arte de escribir sobre programacion.pptx
DevFest 2022 - El Arte de escribir sobre programacion.pptx
 
RoadMap y herramientas de Azure DevOps que debes conocer
RoadMap y herramientas de Azure DevOps que debes conocerRoadMap y herramientas de Azure DevOps que debes conocer
RoadMap y herramientas de Azure DevOps que debes conocer
 
Introduction to OpenTelemetry in .NET
Introduction to OpenTelemetry in .NETIntroduction to OpenTelemetry in .NET
Introduction to OpenTelemetry in .NET
 
PRISM con MAUI
PRISM con MAUIPRISM con MAUI
PRISM con MAUI
 
.NET MAUI Offline first
.NET MAUI Offline first .NET MAUI Offline first
.NET MAUI Offline first
 
MAUIConf - Adios Net Maui Essentials Bienvenida Integración de Plataforma
MAUIConf - Adios Net Maui Essentials Bienvenida Integración de PlataformaMAUIConf - Adios Net Maui Essentials Bienvenida Integración de Plataforma
MAUIConf - Adios Net Maui Essentials Bienvenida Integración de Plataforma
 
Servicios Nativos MAUI
Servicios Nativos MAUIServicios Nativos MAUI
Servicios Nativos MAUI
 
Aplicaciones para MacOS con .NET MAUI
Aplicaciones para MacOS con .NET MAUIAplicaciones para MacOS con .NET MAUI
Aplicaciones para MacOS con .NET MAUI
 
Primero pasos con Visual Studio for MAC
Primero pasos con Visual Studio for MACPrimero pasos con Visual Studio for MAC
Primero pasos con Visual Studio for MAC
 
Aplicaciones con web con Blazor + MudBlazor
Aplicaciones con web con Blazor + MudBlazorAplicaciones con web con Blazor + MudBlazor
Aplicaciones con web con Blazor + MudBlazor
 
Building Web Applications with Blazor and MudBlazor
Building Web Applications with Blazor and MudBlazorBuilding Web Applications with Blazor and MudBlazor
Building Web Applications with Blazor and MudBlazor
 
Tips para una entrevista Tech Exitosa
Tips para una entrevista Tech ExitosaTips para una entrevista Tech Exitosa
Tips para una entrevista Tech Exitosa
 
Metaverso y Microsoft Mesh
Metaverso y Microsoft MeshMetaverso y Microsoft Mesh
Metaverso y Microsoft Mesh
 
Mejoras en Blazor con .NET 6
Mejoras en Blazor con .NET 6Mejoras en Blazor con .NET 6
Mejoras en Blazor con .NET 6
 
Apis with dotnet postgreSQL and Apsaradb
Apis with dotnet postgreSQL and ApsaradbApis with dotnet postgreSQL and Apsaradb
Apis with dotnet postgreSQL and Apsaradb
 
Microservices with Minimal APi and .NET 6
Microservices with Minimal APi and .NET 6Microservices with Minimal APi and .NET 6
Microservices with Minimal APi and .NET 6
 

Cobertura de pruebas unitarias en C#