pruebas unitarias uso de nunit dentro de proyectos net4741

19
Pruebas Unitarias Uso de NUnit dentro de proyectos .NET Junio 2007

Upload: william-fernando-gualteros-garcia

Post on 14-Feb-2015

65 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Pruebas Unitarias Uso de Nunit Dentro de Proyectos Net4741

Pruebas UnitariasUso de NUnit dentro de proyectos .NET

Junio 2007

Page 2: Pruebas Unitarias Uso de Nunit Dentro de Proyectos Net4741

Contenido

• ¿Qué son Pruebas Unitarias?• Frameworks• Ventajas• Desventajas y limitaciones• Mitos sobre Pruebas Unitarias• Prácticas recomendadas en DBAccess• NUnit• Referencias

Page 3: Pruebas Unitarias Uso de Nunit Dentro de Proyectos Net4741

¿Qué son Pruebas Unitarias?• Las pruebas unitarias son una de las formas que tenemos de

probar pequeñas e individuales porciones de código.

• A través de ellas se verifica que cierto módulo o funcionalidad se ejecuta dentro de los parámetros y especificaciones concretadas en documentos tales como los casos de uso y el diseño detallado: proporcionan un contrato escrito que la porción de código debe cumplir.

• Permiten detectar efectivamente la inyección de defectos durante fases sucesivas de desarrollo o mantenimiento.

Page 4: Pruebas Unitarias Uso de Nunit Dentro de Proyectos Net4741

¿Qué son Pruebas Unitarias?

• Las pruebas unitarias típicamente son automatizadas, pero pueden llevarse a cabo de forma manual. Cuando son automatizadas es buena práctica que formen parte del repositorio que contiene al código probado.

• Se dice que una prueba unitaria es completa o es buena si cumple con los siguientes elementos:

– Cobertura– Repetibles– Independiente– Profesionales

Page 5: Pruebas Unitarias Uso de Nunit Dentro de Proyectos Net4741

Frameworks• Para llevar acabo pruebas unitarias, cada

organización se apoya en frameworks que ofrecen un conjunto completo de utilidades, motores de ejecución y reportes.

• Entre los frameworks más empleados destacan:– JUnit– TestNG– CPPUnit– NUnit– Visual Studio UnitTesting

Page 6: Pruebas Unitarias Uso de Nunit Dentro de Proyectos Net4741

VentajasDependiendo del framework empleado podemos encontrar las siguientes ventajas:

• Automatizadas, por lo cual se hacen repetibles.

• Fomentan el cambio: ya que permiten probar cambios en el código y asegurar que en éstos no se hayan introducido errores funcionales; habilitan el “refactoring”del código.

• Simplifican la integración: permiten llegar a la fase de integración con un grado alto de seguridad sobre el código.

Page 7: Pruebas Unitarias Uso de Nunit Dentro de Proyectos Net4741

Ventajas

• Documenta el código.

• Separa la interfaz y la implementación.

• Los defectos están acotados y fáciles de localizar.

• Permiten al desarrollador pensar como el consumidor del código y no como el productor.

Page 8: Pruebas Unitarias Uso de Nunit Dentro de Proyectos Net4741

Desventajas y limitaciones

• No descubrirán todos los defectos del código.

• No permite determinar problemas de integración o desempeño.

• No es trivial anticipar todos los casos especiales de entradas.

• Las pruebas unitarias determinan la presencia de defectos, no la ausencia de éstos. Son efectivas al combinarse con otras actividades de pruebas.

Page 9: Pruebas Unitarias Uso de Nunit Dentro de Proyectos Net4741

Mitos sobre Pruebas UnitariasMito Realidad

No se puede dedicar tiempo para implementarlas por que el tiempo de entrega está cerca.

Durante el desarrollo una prueba automatizada puede ahorrar cientos de veces el tiempo requerido para desarrollarla, ya que encuentra y protége contra los bugs. Mientras más dificil es la implementación de la prueba, más necesaria es para el desarrollo, por que el ahorro de tiempo será mayor.

Las pruebas unitarias pueden ser escritas durante las últimas semanas del desarrollo

Con la ausencia de las pruebas unitarias el desarrollo consumirá las 3 semanas y probablemente más. Incluso si el tiempo está disponible, el desarrollo de buenas pruebas unitarias requiere tiempo y el tiempo se incrementa mientras menos reciente sea el conocimiento sobre el código a probar.

Page 10: Pruebas Unitarias Uso de Nunit Dentro de Proyectos Net4741

Prácticas recomendadas en DBAccess• Seguir el procedimiento de integración continua al pie de la letra,

evitando hacer commit al repositorio si las pruebas unitarias preexistentes fallan.

• Toda falla es producida por un defecto. Antes de corregir el defecto, debe escribirse una prueba unitaria que, al fallar, compruebe que el defecto está allí, y que al pasar compruebe que el defecto fue eliminado.

• Aprovechar que se tiene la atención en esa parte del código y escribir otras pruebas que se piensen empleando las capacidades del motor de pruebas unitarias.

• Es a tiempo de diseño que debe definirse formalmente la estrategia para implementar las pruebas unitarias.

Page 11: Pruebas Unitarias Uso de Nunit Dentro de Proyectos Net4741

NUnit

• Es un framework opensource para pruebas unitarias de sistemas realizados con la plataforma Microsoft .NET. • Sirve al mismo propósito que realiza JUnit en el mundo Java, y es uno de muchos en la familia xUnit.

Page 12: Pruebas Unitarias Uso de Nunit Dentro de Proyectos Net4741

NUnit

• Consiste en un conjunto de metaatributos y aserciones que permiten probar los métodos de una clase especificada. • Se puede ejecutar desde la consola o a través de una interfaz gráfica.

Page 13: Pruebas Unitarias Uso de Nunit Dentro de Proyectos Net4741

NUnit

• Se puede integrar con el Visual Studio en cualquiera de sus versiones.• Actualmente soporta los frameworks 1.1/2.0.• También soporta la plataforma opensource Mono.• Soporte de archivos de configuración.• Ejecución de múltiples ensamblados.• Es extensible.• Autodetecta cambios de los ensamblados.

Versión actual 2.4.1

Page 14: Pruebas Unitarias Uso de Nunit Dentro de Proyectos Net4741

Elementos de NUnit

• La declaración de la prueba

• La declaración de un caso de prueba

Page 15: Pruebas Unitarias Uso de Nunit Dentro de Proyectos Net4741

Elementos de NUnit

• Elemento de inicio para la prueba

• Elemento de inicio para cada prueba

• Elemento de disposición para la prueba

Page 16: Pruebas Unitarias Uso de Nunit Dentro de Proyectos Net4741

Elementos de NUnit

• Elemento de disposición para cada prueba

• Capturando una excepción esperada

• Ignorando un caso de prueba

Page 17: Pruebas Unitarias Uso de Nunit Dentro de Proyectos Net4741

!Demostración

Page 18: Pruebas Unitarias Uso de Nunit Dentro de Proyectos Net4741

?Preguntas

Page 19: Pruebas Unitarias Uso de Nunit Dentro de Proyectos Net4741

Referencias• Kent Beck's original testing framework paper

http://www.xprogramming.com/testfram.htm

• http://en.wikipedia.org/wiki/Unit_testing

• http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks

• http://www.xprogramming.com/xpmag/acsUsingNUnit.htm

• http://msdn2.microsoft.com/en-us/library/ms364064(vs.80).aspx

• http://msdn2.microsoft.com/en-us/library/aa292197(VS.71).aspx

• http://msdn.microsoft.com/msdnmag/issues/06/01/UnitTesting/default.aspx

• http://buho.dbaccess.com/pages/viewpage.action?pageId=817

• Consultas al Ing. Juancarlo Añez ([email protected])