Pruebas negativas ¡Dales su debida Importancia!
Las pruebas de software se tratan de validar si una aplicación funciona como se esperaba. Utiliza muchos tipos diferentes de pruebas para llegar allí, como pruebas unitarias, pruebas de integración, pruebas funcionales, pruebas de desempeño, pruebas de humo o pruebas de regresión, pero todas estas se dividen en una de dos categorías: pruebas positivas y pruebas negativas.
Si bien la mayoría de los Testers comprenden la necesidad de realizar pruebas de software positivas (verificar si una aplicación determinada funciona como se esperaba), muchos subestiman la importancia de las pruebas negativas.
Las pruebas positivas prueban escenarios positivos, por ejemplo, “happy paths” con datos válidos, mientras que las pruebas negativas, ayudan a determinar las condiciones bajo las cuales fallará una aplicación.
¿Que son las Pruebas negativas?
Con pruebas positivas, pruebas una aplicación con un conjunto de datos válido y esperado. Por lo general, ejecutas tus pruebas y luego validas si la aplicación se comporta como se esperaba con esos datos. No esperas excepciones al hacer pruebas positivas.
Sin embargo, a diferencia de las pruebas positivas, en las pruebas negativas arrojar un error no se considera un evento inesperado. Las excepciones no son bienvenidas, pero se esperan ya que estás probando tu aplicación con datos no válidos.
Las pruebas negativas muestran cómo tu aplicación maneja datos no válidos. Por ejemplo, pruebas el software insertando datos no válidos y comparas la salida esperada con la entrada incorrecta, para asegurarte de que tu aplicación no se bloquee.
Las pruebas negativas no son en realidad “negativas”, piensa en ellas como pruebas del mundo real. Cuando realizas pruebas positivas y negativas, el resultado es un software mejor y sin errores.
Por lo tanto, convierte las pruebas negativas en una parte integral de tu estrategia de prueba.
¿Porque algunos testers se resisten a hacer Pruebas negativas?
Muchos Testers se resisten a escribir o hacer pruebas negativas porque sienten que podría ser una pérdida de tiempo y energía y que retrasará el lanzamiento del software.
A otros les preocupa que se involucren tanto con las pruebas negativas que las pruebas positivas de la funcionalidad básica de la aplicación no se completen.
Y hay algo de verdad en eso: si estás escribiendo y ejecutando demasiadas pruebas negativas, el Release podría verse afectado con retrasos. Para realizar pruebas negativas, necesitamos testers con experiencia.
Pruebas negativas en la práctica: ¿Cómo se realizan?
Por lo general, un equipo de Testers tiene la tarea de realizar pruebas negativas. Necesitas dos cosas para comenzar: casos de prueba negativos y datos no válidos para probar. Escribe casos de prueba negativos que satisfacen múltiples escenarios y prueba esos escenarios negativos utilizando datos no válidos.
Aquí hay dos técnicas comunes para pruebas negativas:
Análisis de valor límite
En esta estrategia, escribe los casos de prueba para valores fuera de los límites. Por ejemplo, si está probando un campo de texto que acepta caracteres y que tiene un límite de 1 a 50 caracteres, sus límites serán 1 y 50.
Partición de equivalencia
Aquí agrupas los valores de entrada en diferentes particiones y pruebas algunos valores en cada partición. Como ejemplo, si el campo de texto acepta datos entre 1 y 50 caracteres, las particiones serán 0 a 1, 1 a 50 y 50 a 100.
La partición de equivalencia es un tipo de prueba de caja negra que puedes usar para probar la funcionalidad de una aplicación. Al realizarlo, necesitas menos casos de prueba sin comprometer la funcionalidad de la aplicación.
Un ejemplo del mundo real
Supón que tienes una pantalla de inicio de sesión en una aplicación con dos cuadros de texto, uno para el nombre de usuario y otro para la contraseña, con los siguientes requisitos:
- El nombre de usuario no puede estar en blanco y solo serán caracteres.
- El nombre de usuario puede tener un máximo de 10 caracteres.
- La contraseña no puede estar en blanco y puede incluir cualquier combinación de las letras a-z y A-Z y los números 0-9. No se permiten otros caracteres.
- La contraseña puede tener un máximo de 10 caracteres.
Los escenarios de prueba positivos incluyen estos:
- Nombre de usuario: ABCEDFGHIJKL (más de 10 caracteres)
- Contraseña: abcdefgh100 (más de 10 caracteres)
- Nombre de usuario: joydip (validar nombre de usuario con datos válidos)
- Contraseña: abcde123 (validar contraseña con datos de entrada válidos)
- Verificar si el usuario puede iniciar sesión con credenciales válidas
Por otro lado, los escenarios de prueba negativos incluyen estos:
- Nombre de usuario: 123 * _ (caracteres especiales y números en el nombre de usuario)
- Contraseña: \ {^ * & (caracteres especiales y espacios en blanco en la contraseña)
- Presionar el botón Atrás en tu navegador web
- Validar nombre de usuario y contraseña contra ataque de inyección SQL
La intención de ingresar dichos caracteres es verificar si la aplicación puede manejar comportamientos inesperados o entradas no válidas, en otras palabras, pruebas negativas, lo que a su vez ayuda a garantizar la calidad.
Mejores Practicas
La capacidad de una aplicación para soportar pruebas negativas contribuye en gran medida a garantizar que estén creando aplicaciones estables y confiables.
Al escribir pruebas negativas, ten en cuenta los límites. Debes tener los casos de uso contigo y una buena comprensión de los requerimientos funcionales de la aplicación antes de escribir pruebas negativas.
Escribe pruebas positivas cuando estén creando la aplicación. Escribe pruebas negativas para mejorar la cobertura del código.
Incrementa tu experiencia en Pruebas negativas
Las pruebas negativas, aunque importantes, a menudo se descuidan porque los equipos carecen de las habilidades necesarias para hacerlo. No dejes que eso te detenga. Las pruebas negativas y positivas son igualmente importantes, así que aprovecha ambas para asegurarte de que tus aplicaciones sean confiables y estables.
Si bien no hay herramientas de prueba disponibles específicamente para pruebas negativas, puedes usar herramientas de prueba generales como Selenium o Cucumber para escribir scripts de automatización. Lo importante es solo comenzar.
Saludos Testers…