Ejemplos java y C/linux

Tutoriales

Enlaces

Licencia

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Para reconocer la autoría debes poner el enlace http://www.chuidiang.com

Test automáticos de pruebas

Introducción a los test automáticos de prueba

Cuando una sola persona hace un programa más o menos pequeño, normalmente puede ir codificando su programa poco a poco, compilar de vez en cuando, ejecutarlo y ver si lo que está haciendo funciona. El proceso de probar a mano puede llevarle un tiempo razonable y el programa puede, al final, quedar perfectamente hecho. De hecho, es una de las formas más divertidas de programar, ir haciéndo cosas y ver rápidamente si funcionan o no.

Sin embargo, si hablamos de programas más grandes y de varios desarrolladores trabajando simultáneamente en varias partes de él, el proceso de pruebas cobra especial importancia. Es posible que un desarrollador, sin querer, haga algún cambio que produzca fallos en el funcionamiento del código de otro desarrollador. Es más, un mismo desarrollador, según van pasando los días y va codificando, puede ir olvidando los detalles del código que desarrolló unas semanas antes y nuevamente, sin querer, ser el mismo el que estropee lo que había hecho al ir añadiendo nueva funcionalidad.

Al ser el programa grande, las pruebas manuales deben ser frecuentes, para comprobar que según pasa el tiempo, lo que estaba funcionando, sigue funcionando, además de comprobar que lo que acabamos de hacer también funciona. Pero al mismo tiempo, al ser el programa grande, esas pruebas manuales llevan cada vez más tiempo, ya que cada vez hay más cosas que probar.

Sería maravilloso si hubiera algo que probará nuestro programa de forma automática y con frecuencia. Si cada vez que hacemos cambios o añadimos código le decimos a ese algo que prueba nuestro programa y nos despreocupamos del tema, nos ahorraríamos mucho tiempo de prueba.

Afortunadamente, existe ese algo. Podemos hacer un programa que se encargue de probar nuestro programa. Ese programa de pruebas debería ser fácil de lanzar, deberíamos lanzarlo con frecuencia, no debería requerir ninguna intervención por nuestra parte y no debería darnos unos resultados que tengamos que analizar. Unicamente debemos lanzarlo y el sólo debe decirnos "Todas las pruebas han ido bien". O si no hemos tenido suerte, "Han fallado estas pruebas en estos sitios".

Obviamente, hacer estos programas de prueba es más trabajo, pero cuando más grande y complejo es el proyecto en el que estamos involucrados, más tiempo vamos a ahorrar a la larga. Las ventajas de tener unos buenos programas de prueba son:

  1. Al ser la prueba automática, nos dará menos pereza lanzarla con frecuencia. De hecho, lo ideal es hacer un trozo de código y pasar las pruebas. Si hemos fastidiado algo, sabremos que el trozo de código que acabamos de tocar es el que ha introducido el fallo. Si la prueba es larga y manual, seguramente probaremos con menos frecuencia. Si algo se estropea, quizás tengamos que buscar el fallo en el código que hemos hecho durante toda la semana.
  2. Tener las pruebas automáticas nos quita el miedo a tocar el código que ya está funcionando. A veces vemos código que está funcionando pero que no está todo lo bien hecho que debiera. Otras veces, tenemos que arreglar un poco ese código para poder reutilizarlo en una nueva funcionalidad que queremos dar a nuestro programa. Si no tenemos una forma fácil de ver que ese código sigue funcionando después de tocarlo, igual no nos decidimos a tocarlo.
  3. Una prueba automática que falla nos da más información que una prueba manual que detecta un fallo. Si una prueba automática falla, nos dice exactamente qué método del código no hace lo que se esperaba de él. Si una prueba manual encuentra un fallo, sólo sabemos que algo en cualquier parte del código no está bien.

Las pruebas automáticas ayudan mucho, pero tampoco garantizan nada al 100%. Nunca nos quitaremos del todo la necesidad de hacer pruebas manuales, pero incluso haciendo pruebas manuales, algunos errores se colarán y saldrán más adelante... o nunca. Las pruebas automáticas son simplemente una primera criba que nos ahorrará tiempo al detectar automáticamente un porcentaje alto de los errores en el código.

Actualmente, en cualquier proyecto de software mínimamente serio, es impensable no realizar test automáticos de prueba, ya que el ahorro de tiempo y la mejora del software al hacer estos test está de sobra probada.

Hay varias librerías que nos ayudan a la realización de estos test automáticos de prueba. Vamos ahora a ver una introducción a jUnit, una de las librerías de test automáticos más conocidas para Java.

Estadísticas y comentarios

Numero de visitas desde el 4 Feb 2007: