Programacion

Que es el unit testing

En este articulo abordaremos el tema de unit testing, que es el unit testing y para que sirve.

En programación, unit testing es una forma de comprobar el correcto funcionamiento del código de una aplicación.

En desarrollo de aplicaciones grandes o con equipos de trabajo da varias personas necesitamos herramientas automatizadas que verifiquen el codigo de las aplicaciones.

La implementación de unit testing garantiza que cada unidad funcione correctamente y eficientemente por separado. Además de verificar que el código hace lo que tiene que hacer, verificamos que sean correctos los nombres y tipos de los parámetros, el tipo de dato que se devuelve, si el estado inicial es válido, entonces el estado final es válido también.

La idea es escribir casos de prueba para cada función no trivial o método en el módulo, de forma que cada caso sea independiente del resto. Luego, con las Pruebas de Integración, se podrá asegurar el correcto funcionamiento del sistema o subsistema en cuestión.

Características del unit testing

Para que un unit testing tenga la calidad suficiente se deben cumplir los siguientes requisitos:

  • Automatizable: No debería requerirse una intervención manual. Esto es especialmente útil para integración continua.
  • Completas: Deben cubrir la mayor cantidad de código.
  • Repetibles o Reutilizables: No se deben crear pruebas que sólo puedan ser ejecutadas una sola vez. También es útil para integración continua.
  • Independientes: La ejecución de una prueba no debe afectar a la ejecución de otra.
  • Profesionales: Las pruebas deben ser consideradas igual que el código, con la misma profesionalidad, documentación, etc.

Aunque estos requisitos no tienen que ser cumplidos al pie de la letra, se recomienda seguirlos o de lo contrario las pruebas pierden parte de su función.

Ventajas del unit testing

El objetivo de los unit testing es aislar cada parte del programa y mostrar que las partes individuales son correctas. Garantizan cierta calidad que el código debe satisfacer. Estas pruebas aisladas proporcionan cinco ventajas básicas:

  • Fomentan el cambio: Los unit testing facilitan que el programador cambie el código para mejorar su estructura (refactorización), puesto que permiten hacer pruebas sobre los cambios y así asegurarse de que los nuevos cambios no han introducido defectos.
  • Simplifica la integración: Puesto que permiten llegar a la fase de integración con un grado alto de seguridad de que el código está funcionando correctamente. De esta manera se facilitan las pruebas de integración.
  • Documenta el código: Las propias pruebas son documentación del código, puesto que ahí se puede ver cómo utilizarlo.
  • Separación de la interfaz y la implementación: Dado que la única interacción entre los casos de prueba y las unidades bajo prueba son las interfaces de estas últimas, se puede cambiar cualquiera de los dos sin afectar al otro, a veces usando objetos maquetados (mock object – maqueta) que habilitan de forma aislada (unitaria) el comportamiento de objetos complejos.
  • Los errores están más acotados y son más fáciles de localizar: Dado que tenemos pruebas unitarias que pueden desenmascararlos.

Limitaciones del unit testing

Es importante darse cuenta de que los unit testing no descubrirán todos los errores del código.

Por definición, sólo prueban las unidades por sí solas. Por lo tanto, no descubrirán errores de integración, problemas de rendimiento y otros problemas que afectan a todo el sistema en su conjunto.

Las pruebas unitarias sólo son efectivas si se usan en conjunto con otras pruebas de software.

Esperamos que hayas comprendido que es el unit testing y cuales son las ventajas de su uso.

Click to comment

You must be logged in to post a comment Login

Leave a Reply

Most Popular

To Top
$(".comment-click-382").on("click", function(){ $(".com-click-id-382").show(); $(".disqus-thread-382").show(); $(".com-but-382").hide(); }); // Infinite Scroll $('.infinite-content').infinitescroll({ navSelector: ".nav-links", nextSelector: ".nav-links a:first", itemSelector: ".infinite-post", loading: { msgText: "Loading more posts...", finishedMsg: "Sorry, no more posts" }, errorCallback: function(){ $(".inf-more-but").css("display", "none") } }); $(window).unbind('.infscr'); $(".inf-more-but").click(function(){ $('.infinite-content').infinitescroll('retrieve'); return false; }); $(window).load(function(){ if ($('.nav-links a').length) { $('.inf-more-but').css('display','inline-block'); } else { $('.inf-more-but').css('display','none'); } }); $(window).load(function() { // The slider being synced must be initialized first $('.post-gallery-bot').flexslider({ animation: "slide", controlNav: false, animationLoop: true, slideshow: false, itemWidth: 80, itemMargin: 10, asNavFor: '.post-gallery-top' }); $('.post-gallery-top').flexslider({ animation: "fade", controlNav: false, animationLoop: true, slideshow: false, prevText: "<", nextText: ">", sync: ".post-gallery-bot" }); }); });