La prueba negativa en las pruebas de software es una técnica que verifica cómo reacciona su aplicación ante comportamientos inesperados o datos no válidos. Este tipo de pruebas puede ayudar a los equipos de control de calidad a mejorar la solidez y estabilidad de su software mediante la detección de excepciones que provocan bloqueos, cuelgues u otros resultados no deseados.
En este artículo, exploraremos qué es la prueba negativa de software, por qué es importante y algunos de los distintos enfoques, técnicas y herramientas que puede utilizar para esta técnica.
¿Qué son las pruebas negativas de software?
La prueba negativa es una técnica de prueba de software que alimenta intencionadamente un sistema con entradas no válidas o datos inesperados para ver cómo maneja estos escenarios. Este enfoque, también conocido como prueba de fallos o prueba de ruta de errores, simula los diversos escenarios del mundo real a los que se enfrentará su aplicación, como la introducción por parte de los usuarios de fechas o caracteres no válidos o el uso de determinadas funcionalidades de formas que usted nunca pretendió.
La mayoría de los tipos de pruebas utilizan datos válidos para probar una aplicación. Sin embargo, las pruebas negativas adoptan un enfoque diferente, probando alrededor de los bordes y más allá de las entradas típicas y viendo cómo la aplicación maneja las excepciones.
Es importante comprobar que la aplicación funciona según lo previsto. Pero, por otro lado, también es vital comprender lo que ocurre cuando los usuarios se salen de la reserva, sobre todo si estos usos involuntarios provocan caídas, bloqueos u otros defectos.
Diferencia entre pruebas positivas y negativas
pruebas de software
Como ya hemos señalado, las pruebas negativas utilizan datos inesperados o no válidos para verificar el comportamiento de un sistema. En cambio, las pruebas positivas impulsan los datos esperados o válidos para verificar que el sistema funciona como se espera.
En otras palabras:
- Las pruebas positivas le ayudan a saber si su aplicación funciona según lo previsto
- Las pruebas negativas determinan si su aplicación puede hacer frente a eventos inesperados
Tanto las pruebas positivas como las negativas en las pruebas de software son necesarias si quiere probar su aplicación de forma rigurosa.
¿Por qué son vitales las pruebas negativas de software?
Cuando los desarrolladores crean software, tienen una idea clara de cómo esperan que el usuario lo utilice. Sin embargo, los usuarios no siempre siguen las normas. A menudo, intentan hacer clic en botones que no existen, introducen letras en campos numéricos o introducen datos que usted no espera.
El objetivo de las pruebas negativas es tener en cuenta estos casos extremos que no pueden descubrirse mediante técnicas de pruebas positivas, como las pruebas
unidad
,
sistema
o
pruebas de integración
. Se requiere un pensamiento poco convencional para idear “bolas curvas” que lanzar al sistema. Sin embargo, el resultado neto es una aplicación más estable y robusta.
¿Para qué sirven las pruebas negativas?
en pruebas de software?
Las pruebas negativas tienen objetivos similares a los de otros tipos de pruebas de software. A saber, descubrir fallos, defectos y vulnerabilidades en una aplicación. Sin embargo, desempeña un papel especial en la búsqueda de defectos que no pueden descubrirse mediante el uso de datos válidos. Estas son algunas de las razones para adoptar un enfoque de pruebas negativas.
1. Exposición de defectos
El objetivo principal de las pruebas negativas de software es descubrir defectos derivados de datos no válidos o entradas inesperadas. Permite a los probadores adoptar un enfoque más proactivo en la detección de fallos y garantizar que el software cumple las expectativas.
2. Seguridad
Las entradas inesperadas o los datos no válidos pueden exponer vulnerabilidades de seguridad. Probar y resolver estos casos extremos conduce a una aplicación más segura y robusta al reducir la posibilidad de ataques maliciosos, fallos de inyección o intentos de acceso no autorizados.
3. 3. Tratamiento de errores
Las pruebas negativas son útiles para validar la gestión de errores. No se trata sólo de garantizar que el sistema se mantenga estable tras encontrar entradas o datos inesperados, sino también de cómo responde a estos sucesos, por ejemplo produciendo mensajes de error para garantizar que el usuario final sepa que los datos no son válidos.
4. Mejorar la cobertura de las pruebas
Las pruebas positivas y negativas en las pruebas de software son enormemente complementarias. Ambos cubren diferentes elementos de la introducción de datos, lo que significa que sus pruebas son más completas.
5. Mejor experiencia de usuario
Las pruebas negativas ayudan a descubrir el origen de los mensajes de error, los bloqueos y otros comportamientos inesperados que pueden afectar negativamente a la experiencia del usuario.
Diferencia entre positivo y negativo
pruebas en ingeniería de software
Como ya hemos mencionado, las pruebas negativas envían datos inesperados o no válidos para verificar el comportamiento de un sistema. Las pruebas positivas, por su parte, envían datos esperados o válidos para verificar que el sistema funciona como se espera.
Las diferencias entre las pruebas positivas y negativas incluyen:
1. Objetivos:
Las pruebas positivas verifican si el software funciona según lo previsto; las negativas tratan de entender qué ocurre en escenarios no previstos.
2. Datos:
En las pruebas positivas se utilizan datos válidos, y en las negativas, entradas no válidas, valores extremos y formatos inesperados.
3. Enfoque:
Las pruebas positivas se centran en las situaciones de éxito, mientras que las negativas se centran más en las situaciones de fracaso.
Diferentes tipos de pruebas negativas
La prueba negativa es un concepto que abarca varios enfoques diferentes para validar la calidad y la integridad de una aplicación. Aquí tienes siete tipos de pruebas negativas que debes conocer.
#1. Pruebas de valores límite
Las pruebas de valores límite pretenden probar el software con entradas que se encuentran en los límites o bordes del rango de entrada. Comprueba tanto los valores máximos como los mínimos previstos, pero también comprueba un poco más allá de estas entradas.
Ejemplo: Un campo de entrada acepta números entre 1-9. Una prueba de valor límite introducirá tanto 1 como 9, pero también probará 0 y 10.
#2. Comprobación del valor de entrada
Las pruebas de valores de entrada determinan cómo responderá el sistema a entradas inesperadas o no válidas. Algunas de las entradas que probará son:
- Tipos de datos incorrectos
- Valores fuera de rango
- Caracteres especiales
- Campos vacíos.
Ejemplo: Una casilla de entrada sólo requiere un número, por lo que la prueba introducirá una letra y verá cómo responde el sistema.
#3. Pruebas de carga
Pruebas de carga
ayuda a los encargados de las pruebas a evaluar cómo responderá el sistema en condiciones de gran tensión o carga, como grandes conjuntos de datos o elevados volúmenes de tráfico.
Las herramientas de automatización de pruebas
pueden simular estas condiciones extremas para comprender cómo reacciona el sistema bajo coacción.
Ejemplo: El probador simulará miles de usuarios concurrentes accediendo a un sitio web.
#4. Pruebas de excepción
Este tipo de pruebas explora cómo responderá el sistema ante eventos excepcionales o errores. Algunas de las pruebas son
- Simulación de caídas del sistema
- Fallos en la red
- Errores en la base de datos
- Problemas de espacio en disco
- Archivos perdidos.
Ejemplo: La prueba podría explorar qué ocurre cuando un usuario está descargando un archivo de la aplicación y se corta Internet.
#5. Pruebas de seguridad
Las pruebas de seguridad utilizan un enfoque de pruebas negativas para resaltar y comprender las vulnerabilidades del software que pueden quedar expuestas por entradas no válidas o inesperadas. Este enfoque prueba ataques comunes, tales como:
- Inyección SQL
- Secuencias de comandos en sitios cruzados (XSS)
- Desbordamientos de búfer.
Ejemplo: Una prueba de seguridad podría intentar inyectar código malicioso en un campo de entrada del usuario.
#6. Pruebas de la interfaz de usuario
Este tipo de pruebas se centra en los errores que se producen cuando el usuario interactúa con el software. Algunas de las cosas que intentará determinar incluyen:
- Respuestas inesperadas a las interacciones de los usuarios
- Mensajes de error incorrectos
- Problemas de navegación
Ejemplo: La prueba explorará qué ocurre cuando se realizan determinadas acciones fuera de secuencia.
#7. Pruebas de integridad de datos
Las pruebas de integridad de los datos garantizan su exactitud y coherencia en diversas operaciones de la aplicación. Algunas de las cosas que se prueban son:
- Posibles corrupciones de datos
- Escenarios de pérdida de datos
- Modificaciones involuntarias de datos
Ejemplo: La prueba verificará que los datos siguen siendo los mismos después de una transmisión.
Como puede ver, hay muchos enfoques diferentes para las pruebas negativas. Lo que todas tienen en común es el uso de entradas inesperadas o datos no válidos para ver cómo funciona la aplicación en condiciones atípicas.
Ventajas de las pruebas negativas
Las pruebas negativas consisten en comprender cómo funciona su aplicación cuando surgen situaciones inesperadas. He aquí algunas de las principales ventajas de utilizar este enfoque.
- Le ayuda a comprender el impacto que tendrán en su aplicación las entradas inesperadas o los datos no válidos. ¿Se estrellará? ¿Escupir un mensaje de error inexacto?
- Las pruebas negativas forman parte de un planteamiento responsable de Garantía de Calidad, ya que tratan de identificar los puntos débiles del sistema.
- Las pruebas negativas ponen a prueba el programa informático ante situaciones imprevistas o inesperadas con las que se encontrará en la práctica.
- Una vez más, las pruebas negativas son un componente esencial de un enfoque exhaustivo de la seguridad, ya que ponen de relieve los posibles vectores de ataque que podrían aprovechar los ciberatacantes.
Desventajas de las pruebas negativas
Las pruebas negativas ofrecen muchas ventajas, pero también tienen algunos inconvenientes que hay que superar.
- Unas pruebas negativas exhaustivas pueden requerir hardware y software adicionales, lo que puede aumentar los costes de las pruebas. Para los equipos con un presupuesto ajustado, esto puede ser una desventaja.
- Las pruebas negativas pueden llevar bastante tiempo porque requieren la creación de muchos casos de prueba para cubrir las diversas permutaciones de entradas a las que se enfrentará el software en producción.
- Hay límites a la cantidad de situaciones impredecibles que se pueden cubrir con pruebas negativas. De hecho, algunas situaciones pueden ser tan inesperadas que los probadores no pueden tenerlas en cuenta.
- La automatización de los casos de prueba negativos es todo un reto. Sin embargo, con el software adecuado, como ZAPTEST, el proceso es mucho más manejable.
Retos de las pruebas negativas
Las pruebas negativas son cruciales si se quiere construir un software robusto y fiable, capaz de soportar las tensiones y presiones de la interacción con el usuario. Sin embargo, la aplicación de este enfoque plantea algunas dificultades que hay que tener en cuenta.
Desglosemos algunos de los retos más persistentes.
1. Identificación de escenarios negativos en las pruebas de software
Cobertura suficiente:
Uno de los mayores retos de las pruebas negativas es asegurarse de cubrir suficientes escenarios inesperados. Hay muchos escenarios y permutaciones negativos, por lo que considerarlos todos requiere adoptar un enfoque creativo para imaginar cómo interactuarán los usuarios con el software.
Priorización:
Con tantos posibles escenarios negativos que analizar, los encargados de las pruebas no siempre saben por dónde empezar. Algunos criterios sólidos para evaluar qué priorizar incluyen la previsión:
- Situaciones con alta probabilidad de defectos
- La gravedad del resultado de los defectos.
2. Diseño de casos de prueba negativos adecuados
Validación de entrada:
El diseño de casos de prueba negativos sólidos requiere un conocimiento bastante exhaustivo del comportamiento, la arquitectura y las limitaciones de su sistema. Probar el software requiere utilizar datos e insumos cuidadosamente estudiados. Aunque adoptar un enfoque aleatorio puede ayudarle a revelar algunos defectos, palidece en comparación con un enfoque más preciso y sistemático de las pruebas negativas.
Diversidad de datos:
Dependiendo de las particularidades de su sistema, es posible que necesite realizar pruebas con un conjunto de datos bastante diverso. De hecho, existen muchos formatos de datos diferentes, como números, texto, fechas, etc., cada uno de los cuales podría aceptar su aplicación. El reto consiste en diseñar casos de prueba que tengan en cuenta cada formato y, en particular, cada variación de datos no válidos. Esta situación puede llevar bastante tiempo a los equipos de pruebas.
3. Eficacia y automatización de pruebas
Lleva mucho tiempo:
El objetivo de las pruebas positivas es validar el software en función de los resultados esperados. Las pruebas negativas, en cambio, deben ahondar en lo inesperado y explorar posibles escenarios. Recorrer territorio desconocido lleva más tiempo. En consecuencia, si desea obtener los resultados completos que se obtienen con las pruebas negativas, debe estar dispuesto a invertir algunas horas más.
Complejidad de la automatización:
Las pruebas negativas pueden requerir mucho tiempo y recursos. Como tal, es un trabajo perfecto para la automatización de pruebas de software. Sin embargo, hay que superar algunas complejidades. Por ejemplo, diseñar casos de prueba que definan los resultados esperados para entradas inesperadas requiere cierta experiencia y conocimientos. Además, es posible que su marco de trabajo actual para pruebas de automatización no admita los datos no válidos que desea introducir en su aplicación, lo que añade una capa más de complejidad.
4. 4. Evaluación de los resultados
Falsos positivos:
Calibrar las pruebas para garantizar un equilibrio satisfactorio entre precisión y exhaustividad es un problema familiar para los evaluadores de negativos. En algunas situaciones, un tratamiento de errores demasiado sensible confundirá erróneamente entradas válidas con entradas negativas, lo que hará que se pierda tiempo en problemas que no son relevantes.
Resultados ambiguos:
Cuando un sistema recibe una entrada no válida, puede provocar fallos, errores o bloqueos. En muchos casos, esto es señal inequívoca de la existencia de un error. Sin embargo, en otros, es una prueba de un caso extremo no gestionado que los desarrolladores no tuvieron en cuenta. Distinguir entre estas distintas situaciones es importante, pero investigar la verdadera causa lleva mucho tiempo.
Gestión de datos:
Las pruebas negativas requieren una cantidad considerable de datos. Esta información sobre las pruebas debe generarse y mantenerse. En escenarios de desarrollo con plazos ajustados, es un trabajo extra que hay que tener en cuenta.
5. 5. Cuestiones de organización
Falta de experiencia en pruebas negativas:
Aunque las pruebas negativas gozan de gran popularidad, muchos probadores carecen de los conocimientos y la experiencia necesarios para aplicar este tipo de pruebas de forma exhaustiva. El diseño de determinados casos de prueba negativos es menos intuitivo que su equivalente en casos de prueba positivos. Además, la automatización de las pruebas puede resultar complicada si no se cuenta con los conocimientos adecuados.
Presión empresarial:
Las partes interesadas, los responsables de las pruebas y los directivos deben comprender el papel fundamental que desempeñan las pruebas negativas en el desarrollo de aplicaciones sólidas. No apreciar su importancia puede llevar a presionar para centrarse en las pruebas positivas a costa de las negativas.
Está claro que son varios los retos a los que se enfrentan los equipos que quieren aprovechar las ventajas de las pruebas negativas. Sin embargo, con el enfoque adecuado y las herramientas de pruebas de software adecuadas, puede superar estos problemas y crear un software que supere las expectativas de los usuarios.
Cómo escribir casos de prueba negativos de pruebas de software
Redactar casos de pruebas negativas de software requiere cierta experiencia y pensamiento creativo. He aquí una guía paso a paso para ayudarle a crear estos casos de prueba críticos.
#1. Establezca sus objetivos
Antes de escribir sus casos de prueba negativa de pruebas de software, debe comprender por qué desea realizar pruebas negativas. No todas las aplicaciones se benefician de las pruebas negativas.
Por tanto, entienda lo que quiere conseguir. Las pruebas negativas están diseñadas para descubrir errores y fallos derivados de situaciones o condiciones inesperadas de interacción con el usuario.
#2. Esbozar posibles escenarios negativos
A continuación, debe tener en cuenta el tipo de situaciones negativas que pueden producirse cuando los usuarios interactúan con su software. La investigación durante este paso es crucial. Algunas áreas que debería explorar son:
- Requisitos del sistema
- Casos de uso típicos
- Características y funciones de la aplicación
Analice estas situaciones y elabore una lista de escenarios en los que la aplicación podría no funcionar como usted pretende.
A continuación, considere los escenarios de validación de entradas críticas. Normalmente, se trata de formularios de introducción de datos, campos de inicio de sesión, etc.
Por último, tenga en cuenta la multitud de formas poco convencionales en que los usuarios pueden interactuar con su software y los imprevistos que pueden producir resultados adversos, como desconexiones de la red, cierres bruscos del sistema, transferencias masivas de datos, etc.
Una vez que haya documentado tantos escenarios como sea posible, es hora de determinar los resultados esperados de estos escenarios inesperados.
#3. Esbozar los resultados esperados
Cada caso de prueba debe tener un resultado esperado, y un caso de prueba negativo no es diferente. La mejor práctica en este caso es escribir cada escenario negativo y determinar cuál debería ser el resultado.
Algunos de los posibles resultados pueden ser:
- Mensajes de error precisos e informativos
- Redirecciones adecuadas
- Gestión eficaz del sistema, por ejemplo, evitando que el sistema se bloquee o se cuelgue.
#4. Seleccione las entradas a probar
Ahora, es el momento de ver qué entradas necesitas probar. Estas entradas deben ser las que tienen más probabilidades de causar un error u otros comportamientos negativos.
Algunos datos que debes incluir son:
- Valores fuera de rango (valores negativos en un campo de edad, etc.)
- Datos no válidos (letras en un campo numérico, etc.)
- Caracteres o símbolos inesperados
- Caracteres especiales
- Datos que faltan
#5. Escriba sus casos de prueba
Una vez reunidos todos los escenarios, es hora de escribir los casos de prueba. Ahora, con las pruebas negativas, hay un número casi ilimitado de casos de prueba que se pueden escribir. Al fin y al cabo, en este tipo de pruebas se trata de averiguar qué ocurre cuando la gente utiliza el software de formas que no eran las previstas. Sin embargo, los plazos obligan a reducir la lista de posibles casos a las situaciones que tienen más probabilidades de causar problemas.
Como siempre, escriba sus casos de prueba en un lenguaje claro, conciso y objetivo. Aquí no hay lugar para la ambigüedad.
He aquí un buen formato para sus casos de prueba negativos.
- Utilizar un ID de caso de prueba
- Describa con precisión lo que se está probando
- Tenga en cuenta cualquier condición previa para su prueba negativa
- Esbozar el conjunto de etapas
- Establecer resultados claros y objetivos
- Anote el resultado real de su prueba
#6. Programar la prueba
Ahora tiene que programar sus pruebas. Una vez más, es importante dar prioridad a los escenarios que tienen los resultados adversos más graves, como las colisiones, o en los que es más probable que se descubran problemas.
Ejemplo de caso de prueba negativo
He aquí un ejemplo de caso de prueba negativo.
ID del caso de prueba: TC001
Descripción: Verificar que se muestra un mensaje de error si el usuario introduce una dirección de correo electrónico no válida.
Precondiciones: El usuario debe estar en la página de inicio de sesión de la aplicación
Pasos: 1. Introduzca una dirección de correo electrónico no válida. 2. Pulse “Iniciar sesión”.
Resultado esperado: Cuando el usuario pulsa “Iniciar sesión”, aparece un mensaje de error que dice “dirección de correo electrónico incorrecta introducida”.
Resultado: Registre lo que sucedió cuando se seleccionó “Iniciar sesión”.
Ejemplos de escenarios negativos en las pruebas de software
He aquí algunos escenarios típicos que puede verificar utilizando métodos de pruebas negativas.
1. Tipos de datos y campos
Si ha rellenado un formulario en línea, sabrá que estas casillas están configuradas para aceptar determinados tipos de datos. Algunos son sólo números, mientras que otros aceptan fechas, texto u otros tipos de datos.
La prueba negativa de estas casillas consiste en enviar datos no válidos, por ejemplo, introducir letras en un campo numérico.
2. Campos obligatorios
Una vez más, los campos obligatorios son características comunes de formularios y aplicaciones. Son una herramienta práctica para garantizar que se recopila toda la información crítica antes de que el usuario pase a la siguiente fase.
Un buen caso de prueba para estos escenarios consiste en ver qué ocurre cuando estos campos se dejan en blanco. En un escenario ideal, debería activarse un mensaje de error, instando al usuario a rellenar el campo requerido.
3. Número adecuado de caracteres
Si tiene una aplicación de páginas web en pruebas, es posible que tenga un campo de datos que requiera un número limitado de caracteres. Puede tratarse de nombres de usuario, números de teléfono, números de registro, etc.
Puede crear casos de prueba negativos para estos campos escribiendo pruebas que introduzcan más caracteres de los permitidos para ver cómo responde la aplicación.
4. Límites de los datos
Algunos formularios tendrán campos con límites fijos. Por ejemplo, si quiere que alguien valore algo sobre 100, los límites de los datos serían 1-100.
Cree un caso de prueba negativo en el que intente introducir 0, 101 u otros valores negativos o positivos de 1 a 100.
Buenas prácticas para las pruebas negativas
Existen varias prácticas recomendadas para garantizar unas pruebas negativas de alta calidad. Aquí tienes algunos consejos que te ayudarán a conseguirlo.
1. Defina sus entradas no válidas:
Revise la documentación de desarrollo, los casos de uso y la interfaz de usuario y la interfaz de usuario para comprender e identificar posibles entradas no válidas. Busque tipos de datos no válidos, valores extremos, datos que faltan, campos vacíos, formatos inesperados, etc.
2. Utilizar el análisis del valor límite:
Como ya se ha mencionado, esboza tus valores límite para encontrar casos límite que puedan provocar reacciones inesperadas.
3. Partición por equivalencia de los empleados:
Observa tus dominios de entrada y divídelos en particiones de equivalencia de valores válidos e inválidos. Este proceso ayuda a reducir el número de casos de prueba que tendrá que escribir porque si una pieza equivalente de datos no válidos causa problemas para una entrada, es probable que se represente en toda la clase.
4. Imitar a los malos usuarios:
Las pruebas positivas verifican el comportamiento esperado del usuario. Las pruebas negativas exploran lo que ocurre cuando la gente hace un mal uso de tu aplicación. Por lo tanto, piense en los diferentes escenarios en los que esto puede suceder y reprodúzcalos en sus casos de prueba.
5. Deje que el riesgo y el impacto guíen sus pruebas:
Ningún probador dispone de tiempo ilimitado. En algún momento, tendrás que tomar decisiones difíciles porque no puedes prever (ni siquiera conocer) todos los resultados inesperados. Cuando tenga que decidir qué tipos de pruebas negativas realizar, dé prioridad a las áreas que supongan un mayor riesgo o impacto negativo para su producto.
6. Verificación del tratamiento de errores:
Asegúrese de que la gestión de errores forma parte de sus pruebas, verificando que los mensajes de error son útiles y precisos.
7. Automatice todo lo posible:
La automatización es experta en tareas mundanas y repetitivas. Sin embargo, las pruebas negativas siguen requiriendo un enfoque manual para las pruebas exploratorias y la búsqueda de casos extremos.
Las mejores herramientas de pruebas negativas para 2024
Aunque las pruebas negativas de software son comunes en todo el sector, faltan herramientas específicas para este trabajo. Uno de los principales motivos es la versatilidad de las pruebas negativas. Es más, muchas de las mismas herramientas que se utilizan para las pruebas positivas sirven para las negativas cuando se ajustan los datos de entrada.
ZAPTEST es la mejor herramienta para las pruebas negativas por su naturaleza versátil y modular. Es fácil de usar y personalizar, y gracias a sus capacidades multiplataforma y multiaplicación, ofrece una flexibilidad difícil de superar.
Pruebas basadas en datos y
pruebas de mutación
hacen que ZAPTEST sea perfecto para las pruebas negativas. Además, gracias a su RPA podrá simular usuarios reales, reutilizar pruebas y elaborar informes y documentación con facilidad. En pocas palabras, la capacidad de ZAPTEST para ejecutar software de automatización de última generación y software de automatización de procesos robóticos lo convierte en una ventanilla única para cualquier tarea de automatización, incluidas las pruebas negativas.
Reflexiones finales
Las pruebas negativas de software ayudan a los equipos a comprender cómo gestionará su aplicación las entradas inesperadas y los datos no válidos. Mientras que las pruebas positivas comprueban si el software funciona según lo previsto, las pruebas negativas le ayudan a averiguar qué ocurre cuando los usuarios seleccionan las entradas y los datos de forma incorrecta. Ambos enfoques son importantes si se desea una aplicación sólida y robusta que pueda soportar las tensiones y presiones de la interacción de diversos usuarios.