Gestión de equipos

¿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.

Acerca de Sogeti España

Como parte del Grupo Capgemini, Sogeti opera en más de 100 localizaciones a nivel mundial. Trabajando estrechamente con clientes y socios para aprovechar al máximo las oportunidades de la tecnología, Sogeti combina agilidad y velocidad de implementación para diseñar soluciones innovadoras enfocadas al futuro en Digital Assurance & Testing, Cloud y Ciberseguridad, y todo ello, impulsado por IA y automatización. Con su enfoque práctico y su pasión por la tecnología, Sogeti ayuda a las organizaciones a implementar su transformación digital a gran velocidad. Si quieres conocer nuestro "Value in the making", visítanos en www.sogeti.es

0 comments on “¿TESTEAR? NO, NO HAY TIEMPO

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. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: