Los diferentes tipos de testing en el desarrollo de software
En este artículo vamos a ver qué tipos de testing existen con relación al desarrollo de software.
Vamos a aprender en qué consisten y en qué se diferencian tales tipos, como por ejemplo: unit testing, integration testing, functional testing, acceptance testing, y muchos más.
Existen muchos tipos de testing, o pruebas de software, que podemos usar para confirmar que nuestro software continúa funcionando correctamente tras introducir cambios nuevos sobre nuestro código fuente.
No todas las pruebas son iguales. Es por ello que en este artículo vamos a ver cómo difieren las principales pruebas de software.
Manual vs Testing automatizado
De manera general, lo primero que debemos tener en cuenta es que existen pruebas de software manuales y pruebas de software automatizadas.
Las pruebas manuales son llevadas a cabo por personas, quienes navegan e interactúan con el software (usando herramientas adecuadas para cada caso).
Estas pruebas resultan costosas, ya que se requiere contar con un profesional encargado de esta labor; para configurar un entorno y así mismo ejecutar las pruebas.
Como es de esperarse, estas pruebas están expuestas a errores humanos: por ejemplo, se pueden cometer errores tipográficos u omitir pasos durante la prueba.
Las pruebas automatizadas, por el contrario, son realizadas por máquinas, que ejecutan un "test script" que ya ha sido escrito previamente.
Estos tests (o pruebas) pueden variar mucho en cuanto a complejidad:
- desde verificar que el método de una clase específica funcione correctamente,
- hasta asegurar que una secuencia de acciones complejas en la UI se lleven acabo correctamente y devuelvan los resultados esperados.
Estas pruebas son más rápidas y confiables que las que se llevan a cabo manualmente – pero la calidad de estas pruebas automatizadas depende de qué tan bien escritos se encuentren los "tests scripts" (código que determina qué es lo que se hará en la prueba).
Los diferentes tipos de tests
Veamos los diferentes tipos de prueba que existen (hay más, pero éstas son las más importantes).
Pruebas Unitarias(Unit test)
Las pruebas unitarias son a bajo nivel (cercanas al código fuente de nuestra aplicación).
Este tipo de testing consiste en probar de forma individual las funciones y/o métodos (de las clases, componentes y/o módulos que son usados por nuestro software).
Pruebas de Integración (Integration tests)
Las pruebas de integración verifican que los diferentes módulos y/o servicios usados por nuestra aplicación funcionen en armonía cuando trabajan en conjunto.
Por ejemplo,
- pueden probar la interacción con una o múltples bases de datos,
- o asegurar que los microservicios operen como se espera.
Las pruebas de integración son típicamente el paso siguiente a las pruebas unitarias.
Pruebas Funcionales (Functional tests)
Las pruebas funcionales se centran en los requerimientos de negocio de una aplicación.
Estas pruebas verifican la salida (resultado) de una acción, sin prestar atención a los estados intermedios del sistema mientras se lleva a cabo la ejecución.
A veces existe cierta confusión entre "integration tests" y "functional tests", ya que ambos requieren que múltiples componentes interactúen entre sí.
Pruebas de regresión (Regression testing)
Las pruebas de regresión verifican un conjunto de escenarios que funcionaron correctamente en el pasado, para asegurar que continúen así.
Pruebas de humo (Smoke testing)
Las pruebas de humo son pruebas que verifican la funcionalidad básica de una aplicación.
- Se pretende que sean pruebas rápidas de ejecutar,
- y su objetivo es asegurar que las características más importantes del sistema funcionan como se espera.
Pruebas de aceptación (Acceptance testing)
Las pruebas de aceptación son pruebas formales, ejecutadas para verificar si un sistema satisface sus requerimientos de negocio.
Conclusión
Así como es importante verificar que nuestros usuarios pueden usar nuestra aplicación (pueden iniciar sesión, enviar mensajes, y/o actualizar datos), es igual de importante verificar que nuestro sistema siga funcionando adecuadamente cuando se ingresen datos incorrectos o se realicen acciones inesperadas.
Necesitamos anticipar qué ocurrirá cuando un usuario cometa un error
- ingresando datos incoheretes,
- intente guardar un formulario sin completar todos los campos,
- o vaya de un paso a otro sin seguir una secuencia, con o sin malas intenciones.
Así mismo, necesitamos verificar si es posible para un usuario comprometer datos (es decir, tener acceso a recursos que no deben).
No hay comentarios:
Publicar un comentario