Pruebas por pares (pairwise)
En resumen: Todas las combinaciones crecen como un producto: 3 × 3 × 3 × 3 = 81. Las pruebas por pares solo piden que cada par de valores de dos parámetros se encuentre en al menos una prueba, y aquí bastan 9. La experiencia muestra que la mayoría de los errores dependen de uno o dos parámetros. Los que dependen de tres a la vez, los pares pueden perderlos.
Problema
27 pruebas o 9
La tienda empieza a vender en Portugal y Francia. El tester tiene que comprobar el pedido con cada método de pago, cada método de envío y cada país:
- pago: tarjeta, contra entrega, transferencia bancaria;
- envío: a domicilio, a una oficina de mensajería, a un casillero;
- país: España, Portugal, Francia.
Todas las combinaciones son 3 × 3 × 3 = 27. Un pedido manual de principio a fin lleva 10 minutos. Cuatro horas y media. Mañana llega un cuarto parámetro, el dispositivo (teléfono, tableta, computadora), y pasa a ser 81.
Probarlo todo es imposible también aquí, solo que más rápido.
La idea
Pares
La mayoría de los errores no dependen de todo a la vez. Dependen de un valor («la transferencia bancaria no funciona») o de dos («el pago contra entrega no funciona para Francia»). Los errores que solo se muestran con tres valores exactos a la vez son más raros.
Las pruebas por pares (pairwise) se apoyan en eso. No piden todas las combinaciones. Piden que cada par de valores de cada dos parámetros se encuentre en al menos una prueba. Tarjeta con oficina, tarjeta con Francia, oficina con Francia, y así todos los pares.
Aquí bastan 9 pruebas, para tres parámetros y para cuatro:
| # | Pago | Envío | País | Dispositivo |
|---|---|---|---|---|
| 1 | tarjeta | a domicilio | España | teléfono |
| 2 | tarjeta | a oficina | Portugal | tableta |
| 3 | tarjeta | a casillero | Francia | computadora |
| 4 | contra entrega | a domicilio | Portugal | computadora |
| 5 | contra entrega | a oficina | Francia | teléfono |
| 6 | contra entrega | a casillero | España | tableta |
| 7 | transferencia | a domicilio | Francia | tableta |
| 8 | transferencia | a oficina | España | computadora |
| 9 | transferencia | a casillero | Portugal | teléfono |
Toma cualquier par de columnas. Cada uno de sus nueve pares está en algún lugar de la tabla, exactamente una vez. 81 combinaciones, 9 pruebas.
Pruébalo
¿Cuántas?
La idea
Lo que se les escapa
Los pares son una apuesta. Si el error se muestra solo con tres valores a la vez (contra entrega, a casillero, Francia), y esa terna no está entre las nueve filas, se escapa.
Así que la técnica no sirve para todo:
- para muchos parámetros casi independientes es excelente: configuraciones, navegadores y dispositivos, métodos de pago y de envío;
- para una regla con un número están los valores límite, para combinaciones que la regla enumera está la tabla de decisión, para un camino está la máquina de estados;
- para ternas arriesgadas se añaden pruebas a mano, o se construye una tabla de ternas.
También hay combinaciones imposibles. Si, por ejemplo, no se ofrece el pago contra entrega en un casillero, ese par está prohibido, y la tabla se construye sin él. Y una prueba aparte comprueba que la tienda de verdad no lo permite.
La tabla de arriba es fácil porque todos los parámetros tienen tres valores. En la vida real no es así, y las tablas se construyen con una herramienta, no a mano.
Más precisamente, para curiosos
En ISTQB CTFL v4.0 las pruebas por pares no forman parte del plan de estudios: allí las técnicas de caja negra son cuatro (particiones, límites, tablas de decisión, transiciones). Las técnicas combinatorias, como las pruebas por pares y el árbol de clasificación, están en los planes de estudios de nivel superior, para el analista de pruebas (Advanced Level Test Analyst). Están aquí porque se usan a diario, y porque responden a la pregunta «qué hago cuando la tabla de decisión pasa a tener 1024 columnas».
La idea de que la mayoría de los fallos los provoca la interacción de pocos parámetros la respaldan estudios del NIST sobre sistemas reales. Hay muchas herramientas para tablas por pares: por ejemplo PICT, de Microsoft, que es de código abierto. También admiten restricciones (pares prohibidos) y intensidades mayores: cada terna, cada cuaterna.
La tabla de la lección es un array ortogonal L9: 9 filas para 4 parámetros con 3 valores cada uno. En él cada par aparece exactamente una vez. Las herramientas suelen producir tablas en las que algunos pares se repiten, porque los parámetros tienen números distintos de valores.
Ejercicio
El par que falta
1. La tabla rota. Alguien cambió una fila de la tabla por pares.
Test
Ponte a prueba
Lecciones relacionadas
Sección «Lecciones relacionadas»- Se basa en: Por qué fallan los programas · Particiones de equivalencia · Tablas de decisión
- Ejercicios sobre el tema: Técnicas de diseño de pruebas