Ir al contenido
wannacode

Pruebas basadas en la experiencia

En resumen: La experiencia sabe dónde suelen estar los errores: el cero, lo negativo, lo muy grande, el doble clic, la medianoche, los restos de la lógica vieja. La predicción de errores lo convierte en ataques. Las pruebas exploratorias aprenden el sistema mientras lo prueban, con una misión, en una sesión de tiempo limitado, con notas. Una lista de comprobación guarda lo que el equipo ha aprendido. Las tres encuentran lo que la regla no dice, y por eso complementan a las demás técnicas.

Problema

Diez minutos, tres errores

El envío se ha probado con particiones y límites. Los descuentos, con una tabla de decisión. El pedido, con sus transiciones. Todo pasa.

Una compañera de soporte, que ha trabajado en tres tiendas en línea, se sienta diez minutos con él. Pulsa «Pagar» dos veces seguidas: dos pedidos, dos pagos. Introduce el código con un espacio delante: «El código ha caducado», aunque no ha caducado. Pone 150 € en el carrito y paga 4,90 € de envío.

Ninguno de los tres errores sale de una regla. Salen de la experiencia de lo que suele romperse.

La idea

Técnicas basadas en la experiencia

El último grupo de técnicas no parte de la regla ni parte del código. Parte de la experiencia del tester: qué errores ha visto, dónde, en qué sistemas.

  • Predicción de errores: pruebas dirigidas a los lugares donde, por experiencia, suele haber errores.
  • Pruebas exploratorias: aprendes el sistema mientras lo pruebas, y cada resultado orienta la siguiente prueba.
  • Pruebas con listas de comprobación: la experiencia del equipo, escrita en forma de preguntas.

Encuentran lo que la regla no dice. Su debilidad es que dependen de la persona y no dan ninguna medida de «cuánto está cubierto». Por eso complementan las técnicas de las lecciones anteriores en lugar de sustituirlas.

La idea

Predicción de errores

Los testers con experiencia llevan una lista en la cabeza: dónde suele haber un error. Una lista para una tienda:

  • cero y vacío: un carrito vacío, un campo de código vacío, 0 unidades;
  • negativo y absurdo: -1 unidad, un total de 999 999 €;
  • muy grande: un pedido de 250 €, cuando todas las pruebas llegan hasta 80 €;
  • texto escrito de otra manera: un código en minúsculas, con un espacio delante, pegado con un salto de línea;
  • una acción repetida: un doble clic en «Pagar», «atrás» después de pagar, el mismo código en dos pestañas;
  • tiempo: la medianoche del último día del código, zonas horarias, el 29 de febrero;
  • restos: lógica vieja que nadie quitó («desde 100 € otra vez 4,90»);
  • lo que queda después de un error: ¿un rechazo vacía el carrito?, ¿queda a medias un pedido?

Cuando la lista se pasa de forma sistemática contra el sistema, cada línea se convierte en un ataque (fault attack). Algunos abren preguntas que la regla no responde: ¿debe valer un código en minúsculas? Eso no lo decide el tester, lo decide el dueño.

Más precisamente, para curiosos

ISTQB CTFL v4.0.1 describe las técnicas basadas en la experiencia en la sección 4.4: predicción de errores (con los ataques de fallos como manera sistemática de aplicarla), pruebas exploratorias y pruebas con listas de comprobación. La lista de conjeturas sale de la experiencia del tester, del historial de defectos del sistema y de los tipos de error conocidos en sistemas parecidos.

Pruébalo

Ataque: cero y mucho

De la lista de ataques toma «cero» y «muy grande». Escríbelos como pruebas del envío.

La regla: El envío es gratis en un pedido desde 50 € (incluidos), si no, cuesta 4,90 €. Un carrito vacío no se puede pedir.

EntradaEsperadoEl sistema correcto
#Total del carritoRechazadoEnvío

Una celda de resultado vacía no se comprueba. Los importes se escriben como 49,99.

La idea

Pruebas exploratorias

En las pruebas exploratorias no escribes los casos de prueba de antemano. Aprendes el sistema, diseñas y ejecutas las pruebas a la vez. Si ves algo raro, la siguiente prueba va allí.

No significa «hacer clic al azar». Tres cosas hacen que funcione en lugar de ser un paseo:

  • Una misión (charter): un objetivo para la sesión. Una plantilla práctica: «Explora [qué] con [qué] para descubrir [qué]». Por ejemplo: «Explora el código promocional con códigos caducados, usados y en minúsculas para descubrir cómo le dice la tienda al cliente por qué el código no se aplica».
  • Una sesión de tiempo limitado: normalmente de 60 a 90 minutos, sin interrupciones, solo sobre la misión. Si ves algo fuera de ella, lo anotas para una sesión posterior.
  • Notas: qué probaste, cómo, qué encontraste, qué preguntas tienes. Al final hay una puesta en común (debrief) con el responsable de pruebas: qué se encontró, qué queda, cuál es la siguiente misión.
Más precisamente, para curiosos

La plantilla «Explora … con … para descubrir …» es del libro «Explore It!» de Elisabeth Hendrickson (2013). Probar en sesiones con misiones y puestas en común (session-based test management) lo describieron Jonathan y James Bach hacia el año 2000. CTFL v4.0.1 dice que las pruebas exploratorias son más útiles cuando la especificación es pobre o inadecuada, hay poco tiempo, o como complemento de técnicas más formales. Y que funcionan mejor con testers con experiencia que conocen el dominio.

Pruébalo

La misión y las notas

1. ¿Cuál es la mejor misión?
2. Durante la sesión notas que el carrito a veces muestra el total viejo después de cambiar la dirección. No está en la misión. ¿Qué haces?
3. ¿Qué entra en las notas de la sesión?

La idea

Pruebas con listas de comprobación

Una lista de ataques en la cabeza de una compañera ayuda a un equipo. Escrita, ayuda a todos. Las pruebas con listas de comprobación pasan una lista de preguntas o condiciones contra el sistema.

Una lista para cada formulario nuevo de la tienda:

  • un campo vacío, el texto más largo permitido, un carácter más;
  • espacios al principio y al final, minúsculas y mayúsculas;
  • cirílico, latino, caracteres especiales;
  • un doble clic en el botón, «atrás» después de enviar;
  • con el teclado, sin ratón; con un lector de pantalla;
  • el mensaje de error dice qué hay que corregir.

Es pariente de la lista de comprobación de las revisiones, solo que para el sistema en marcha y no para el documento. Y tiene el mismo riesgo: una lista vieja se sigue de forma mecánica, y los errores nuevos se le escapan. Por eso se actualiza con cada defecto que se coló.

Pruébalo

La sesión

Ordena una sesión exploratoria desde la misión hasta el siguiente paso.

  1. El siguiente paso: informes de defecto, preguntas al dueño, misiones nuevas
  2. La misión: qué, con qué y qué buscas
  3. La puesta en común: con el responsable de pruebas, qué se encontró y qué queda
  4. La sesión: de 60 a 90 minutos sin interrupciones, solo sobre la misión
  5. Las notas: qué se probó, hallazgos, preguntas, ideas

Ejercicio

Ataques al límite

1. Lo negativo y lo que queda. Los dos ataques de la lista: una cantidad negativa y «qué queda en el carrito después de un rechazo».

Escribe los ataques al límite del carrito: una cantidad negativa y añadir por encima del límite. Comprueba también lo que queda en el carrito.

La regla: En el carrito puede haber como mucho 10 unidades de un producto. Añadir por encima de 10 se rechaza con un mensaje, y el carrito queda igual. Se añade al menos 1 unidad.

EntradaEsperadoEl sistema correcto
#En el carritoAñadoRechazadoEn el carrito después

Una celda de resultado vacía no se comprueba. Los importes se escriben como 49,99.

Test

Ponte a prueba

1. ¿Qué es la predicción de errores?
2. ¿En qué se diferencian las pruebas exploratorias de escribir los casos de prueba de antemano?
3. ¿Por qué las técnicas basadas en la experiencia no sustituyen a las particiones y los límites?
4. ¿Cuándo son más útiles las pruebas exploratorias?
5. ¿Cuál es el riesgo de una lista de comprobación?

Creado por Ivo Gergov como parte de la campaña de Evo Tech por una educación accesible en programación ·