!Fuzz Testing! Empieza a aplicarlo ahora.
Yo soy de la mentalidad de, entre más rápido comencemos a probar, ahorraremos mas para nuestra empresas o cliente. Es mejor ser proactivo y evitar que pasen defectos a la siguiente fase/sprint. Pero, ¿cómo nos adelantamos a probar?
Hay una manera de hacer esto de forma rápida: Fuzz Testing.
¿Qué es el Fuzz Testing y cómo ayuda?
En algunos tipos de pruebas, el resultado más importante es ver qué tan bien se comporta el código cuando las cosas salen mal, es decir, el manejo de errores. Aquí es donde el Fuzz Testing puede ayudar. En lugar de construir pruebas con una entrada conocida y una salida esperada, una prueba fuzz toma una entrada aleatoria desconocida, y la salida es “que el sistema maneje el error correctamente”.
Hay dos formas básicas de realizar Fuzz Testing, según el tipo de datos de entrada que se esté utilizando: aleatorio indirecto y aleatorio dirigido. Estos abordan el patrón común que tienen la mayoría de los programas de validar los datos de entrada antes de utilizarlos.
Una buena aplicación del Fuzz Testing combinará elementos de ambos tipos de datos aleatorios, aquí detallamos algunos ejemplos.
Testing Aleatorio indirecto
Este tipo trata de detener datos incorrectos como de filtrar y permitir que los datos correctos lleguen al resto del sistema. En este tipo de pruebas se utilizan datos completamente aleatorios, cualquier longitud, cualquier contenido. Podría ser un megabyte de caracteres Unicode o un solo carácter. No hay patrón para eso (Ya se ha visto como algunos celulares se bloquean al no soportar algún carácter. no diré marcas, empiezan con A y terminan con pple).
El objetivo de usar este tipo de datos es encontrar rápidamente si hay condiciones inesperadas en la validación no soportadas. Los nichos que podrían causar un defecto en estas validaciones de datos, probablemente serán donde se hicieron algunas suposiciones (Dicen que la suposición es el origen del fracaso XD), como:
Longitud de datos
Si el método A llama al método B, y el método B tiene una restricción de 50 caracteres, pero el método A es capaz de pasar más que eso, entonces se debe agregar lógica al método A para filtrar o truncar esos datos.
Cadenas con Tokens
Por ejemplo, comas adicionales en una cadena. Esto puede conducir a un número incorrecto de tokens después de una división de cadena, lo que podría causar un bloqueo más tarde.
Tipos de datos inesperados
Si se supone que los datos son siempre alfanuméricos o siempre un número entero, proporcionar tipos de dato inesperados puede provocar un error. El hecho de que se suponga que los datos tienen cierto formato no significa que siempre lo serán, ya que las especificaciones pueden cambiar.
Testing Aleatorio Directo
Este tipo de Fuzz Testing funciona tomando muestras de buenos datos y cambiándolos una pequeña cantidad antes de pasarlos por el sistema (Datos parcialmente correctos). Este tipo de pruebas permitirá adentrarnos más en cómo funciona el código internamente. Los tipos de defectos que se pueden encontrar son similares a los que se encuentran con fuzzing aleatorio indirecto, pero la diferencia es dónde se encuentran.
Conclusión:
Finalmente, esto es solo una probadita de como funciona el Fuzz Testing,
Este tipo de pruebas pueden parecer simples, pero un equipo de pruebas ambicioso lo usará para encontrar rápidamente defectos en partes importantes que requieran seguridad.
Si deseas saber mas sobre Fuzz Testing, puedes encontrar mucha información en Google. Recuerda que el auto aprendizaje te mantendrá actualizado y te ayudará a encontrar mejores oportunidades.