¿TESTEAR? NO, NO HAY TIEMPO

¿Cuántas veces hemos oído esta frase? Sin embargo, ¿cuántas veces hemos oído hablar también de retrasos en la entrega por un error inesperado o accidentes por sobrecarga de un sistema de tráfico o de transporte?

Como verdaderos profesionales del software es nuestra responsabilidad testear nuestro software y garantizar la calidad de este. Un software que no se testea correctamente no solo daña nuestra reputación o el nombre de nuestra empresa sino al cliente que ha pagado por él y en casos extremos, puede poner en peligro muchas vidas.

La industria del software ha avanzado mucho en los últimos años. Y en el tema de testing hay muchos libros y artículos que demuestran la importancia de hacer tests automáticos. Se han desarrollado diversas técnicas y modelos que facilitan la creación y mantenimiento de tests. Y aún así vemos a muchas empresas que están renuentes a incluir tests automáticos en su software.

Mi objetivo con este post es dar una introducción muy básica al arte del testing hoy en día y mostrar los diversos tipos de tests que hay, así como una pequeña descripción a modo de resumen.

A continuación, muestro una lista de los tipos de test que conozco:

  1. Unit Tests: Verifican la corrección de partes individuales de software (usualmente una función).
  2. Integration Tests: Verifican que las funcionalidades están correctas cuando todos los componentes o piezas de un proyecto están integrados y trabajando juntos.
  3. User Interface Tests: Verifican operabilidad, usabilidad y acceso a la funcionalidad deseada de un sistema.
  4. Stress Tests: Verifican situaciones extremas donde se necesita una gran capacidad de respuesta en el servidor u ordenador que ejecuta nuestra aplicación como por ejemplo: muchos usuarios accediendo a la misma vez, muchos datos a transmitir o pedidos a la base de datos, en fin, mucho… estrés.
  5. User Acceptance Tests: Verifica que la funcionalidad real de la aplicación responde a las necesidades del cliente.
  6. Smoke Testing: Verifican la funcionalidad más básica del programa antes de testear cosas complejas. Por ejemplo: El usuario hace click en un botón y una ventana (sin importar cuál) es abierta.
  7. Characterization Tests: Verifican que la funcionalidad anteriormente observada en el software sigue siendo la misma(no la correcta sino la observada). En realidad con detectores de modificaciones en el software.
  8. Regression Tests: Verifican que no hay daños colaterales después de añadir nuevas funcionalidades o cambios. Normalmente es un conjunto de unit tests preparados para correr después de codificar cualquier cambio. Testear solamente los nuevos cambios se suele llamar Non-regression testing.
  9. Security Tests: Buscan huecos en los mecanismos de seguridad de una aplicación (posibles vías de hacking).
  10. Destructive Tests: Verifican la robustez de un sistema al introducir datos inválidos o hacer comportamientos bizarros y anormales. Algunos de estos pueden ser una forma de Stress Tests.
  11. Recovery Tests: Verifica la recuperación del sistema después de que un error inesperado ocurra. Por ejemplo: un usuario desconecta el cable de red, el formato de los datos recibidos es incorrecto (podría ser incluso un hacker).
  12. Test-driven Development o TDD es un proceso de desarrollo en el cual los tests se hacen antes que el código (codificación guiada por tests). Esta es la última moda relacionada con tests y no creo que sea solo una moda, es una forma de programar que de llegar a implantarse finalmente en las empresas puede llegar a cambiar la forma en la que programamos para siempre, de la misma forma que lo hizo la Programación Orientada a Objetos en su momento o el copy & paste en su otro momento.

Os invito a añadir otros tipos de tests que conozcáis y no estén en la lista. ¡Feliz Testing!

Más información

JorgeCasals

Jorge Casals, estudió Cibernética en Cuba.

Es un fiel seguidor de la Programación Orientada a Objetos, los principios SOLID y los Patrones de Diseño.

Actualmente, trabaja como Analista-Programador en Sogeti.

Anuncios

Deja tu comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: