Pruebas Unitarias - Uso de NUnit dentro de proyectos .NET

10,687 views

Published on

Published in: Technology, Education
3 Comments
6 Likes
Statistics
Notes
No Downloads
Views
Total views
10,687
On SlideShare
0
From Embeds
0
Number of Embeds
117
Actions
Shares
0
Downloads
277
Comments
3
Likes
6
Embeds 0
No embeds

No notes for slide
  • Pruebas Unitarias - Uso de NUnit dentro de proyectos .NET

    1. 1. Pruebas Unitarias Uso de NUnit dentro de proyectos .NET Junio 2007
    2. 2. Contenido <ul><li>¿Qué son Pruebas Unitarias? </li></ul><ul><li>Frameworks </li></ul><ul><li>Ventajas </li></ul><ul><li>Desventajas y limitaciones </li></ul><ul><li>Mitos sobre Pruebas Unitarias </li></ul><ul><li>Prácticas recomendadas en DBAccess </li></ul><ul><li>NUnit </li></ul><ul><li>Referencias </li></ul>
    3. 3. ¿Qué son Pruebas Unitarias? <ul><li>Las pruebas unitarias son una de las formas que tenemos de probar pequeñas e individuales porciones de código. </li></ul><ul><li>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. </li></ul><ul><li>Permiten detectar efectivamente la inyección de defectos durante fases sucesivas de desarrollo o mantenimiento. </li></ul>
    4. 4. ¿Qué son Pruebas Unitarias? <ul><li>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. </li></ul><ul><li>Se dice que una prueba unitaria es completa o es buena si cumple con los siguientes elementos: </li></ul><ul><ul><li>Cobertura </li></ul></ul><ul><ul><li>Repetibles </li></ul></ul><ul><ul><li>Independiente </li></ul></ul><ul><ul><li>Profesionales </li></ul></ul>
    5. 5. Frameworks <ul><li>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. </li></ul><ul><li>Entre los frameworks más empleados destacan: </li></ul><ul><ul><li>JUnit </li></ul></ul><ul><ul><li>TestNG </li></ul></ul><ul><ul><li>CPPUnit </li></ul></ul><ul><ul><li>NUnit </li></ul></ul><ul><ul><li>Visual Studio UnitTesting </li></ul></ul>
    6. 6. Ventajas <ul><li>Dependiendo del framework empleado podemos encontrar las siguientes ventajas: </li></ul><ul><li>Automatizadas , por lo cual se hacen repetibles. </li></ul><ul><li>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. </li></ul><ul><li>Simplifican la integración : permiten llegar a la fase de integración con un grado alto de seguridad sobre el código. </li></ul>
    7. 7. Ventajas <ul><li>Documenta el código . </li></ul><ul><li>Separa la interfaz y la implementación. </li></ul><ul><li>Los defectos están acotados y fáciles de localizar . </li></ul><ul><li>Permiten al desarrollador pensar como el consumidor del código y no como el productor . </li></ul>
    8. 8. Desventajas y limitaciones <ul><li>No descubrirán todos los defectos del código. </li></ul><ul><li>No permite determinar problemas de integración o desempeño. </li></ul><ul><li>No es trivial anticipar todos los casos especiales de entradas. </li></ul><ul><li>Las pruebas unitarias determinan la presencia de defectos, no la ausencia de éstos. Son efectivas al combinarse con otras actividades de pruebas. </li></ul>
    9. 9. Mitos sobre Pruebas Unitarias
    10. 10. Prácticas recomendadas en DBAccess <ul><li>Seguir el procedimiento de integración continua al pie de la letra, evitando hacer commit al repositorio si las pruebas unitarias preexistentes fallan. </li></ul><ul><li>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. </li></ul><ul><li>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. </li></ul><ul><li>Es a tiempo de diseño que debe definirse formalmente la estrategia para implementar las pruebas unitarias. </li></ul>
    11. 11. NUnit <ul><li>Es un framework opensource para pruebas unitarias de sistemas realizados con la plataforma Microsoft .NET. </li></ul><ul><li>Sirve al mismo propósito que realiza JUnit en el mundo Java, y es uno de muchos en la familia xUnit. </li></ul>
    12. 12. NUnit <ul><li>Consiste en un conjunto de metaatributos y aserciones que permiten probar los métodos de una clase especificada. </li></ul><ul><li>Se puede ejecutar desde la consola o a través de una interfaz gráfica. </li></ul>
    13. 13. NUnit <ul><li>Se puede integrar con el Visual Studio en cualquiera de sus versiones. </li></ul><ul><li>Actualmente soporta los frameworks 1.1/2.0. </li></ul><ul><li>También soporta la plataforma opensource Mono. </li></ul><ul><li>Soporte de archivos de configuración. </li></ul><ul><li>Ejecución de múltiples ensamblados. </li></ul><ul><li>Es extensible. </li></ul><ul><li>Autodetecta cambios de los ensamblados. </li></ul><ul><li>Versión actual  2.4.1 </li></ul>
    14. 14. Elementos de NUnit <ul><li>La declaración de la prueba  </li></ul><ul><li>La declaración de un caso de prueba  </li></ul>
    15. 15. Elementos de NUnit <ul><li>Elemento de inicio para la prueba  </li></ul><ul><li>Elemento de inicio para cada prueba  </li></ul><ul><li>Elemento de disposición para la prueba  </li></ul>
    16. 16. Elementos de NUnit <ul><li>Elemento de disposición para cada prueba  </li></ul><ul><li>Capturando una excepción esperada  </li></ul><ul><li>Ignorando un caso de prueba  </li></ul>
    17. 17. Demostración !
    18. 18. Preguntas ?
    19. 19. Referencias <ul><li>Kent Beck's original testing framework paper http://www.xprogramming.com/testfram.htm </li></ul><ul><li>http://en.wikipedia.org/wiki/Unit_testing </li></ul><ul><li>http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks </li></ul><ul><li>http://www.xprogramming.com/xpmag/acsUsingNUnit.htm </li></ul><ul><li>http://msdn2.microsoft.com/en-us/library/ms364064(vs.80).aspx </li></ul><ul><li>http://msdn2.microsoft.com/en-us/library/aa292197(VS.71).aspx </li></ul><ul><li>http://msdn.microsoft.com/msdnmag/issues/06/01/UnitTesting/default.aspx </li></ul><ul><li>http://buho.dbaccess.com/pages/viewpage.action?pageId=817 </li></ul><ul><li>Consultas al Ing. Juancarlo Añez (juancarlo.anez@gmail.com) </li></ul>

    ×