En testing rara vez podemos probar todos los datos posibles. Si un campo acepta edades entre 18 y 65, no sería eficiente probar todos los valores uno por uno. Necesitamos seleccionar datos representativos.
La técnica de clases de equivalencia, también llamada partición de equivalencia, ayuda a dividir los datos en grupos que deberían comportarse de manera similar. Luego elegimos uno o algunos valores representativos de cada grupo.
Esta técnica permite diseñar pruebas más ordenadas, reducir casos repetidos y cubrir tanto datos válidos como inválidos.
Una clase de equivalencia es un conjunto de valores que, según las reglas del sistema, deberían recibir el mismo tratamiento.
Ejemplo: si un campo edad acepta valores entre 18 y 65, podemos formar estas clases:
En lugar de probar todas las edades posibles, elegimos valores representativos. Por ejemplo: 17, 30 y 70.
Las clases de equivalencia ayudan porque muchos datos producen el mismo tipo de respuesta. Si el sistema rechaza edades menores de 18, probablemente rechace 10, 15 y 17 por la misma razón.
La técnica permite:
Es una técnica de caja negra porque se basa en requisitos y comportamiento esperado, no en el código interno.
Normalmente identificamos dos grandes tipos de clases:
| Tipo de clase | Descripción | Ejemplo |
|---|---|---|
| Válida | Conjunto de valores que el sistema debe aceptar. | Edad entre 18 y 65. |
| Inválida | Conjunto de valores que el sistema debe rechazar o manejar como error. | Edad menor que 18 o mayor que 65. |
Probar solo clases válidas no alcanza. También debemos comprobar que el sistema rechace datos inválidos de manera correcta.
Una forma práctica de aplicar la técnica es seguir estos pasos:
El paso más importante es entender la regla. Si la regla es ambigua, las clases también serán ambiguas.
Regla:
Clases de equivalencia:
| Clase | Rango | Tipo | Valor representante | Resultado esperado |
|---|---|---|---|---|
| CE-1 | Menor que 18 | Inválida | 17 | El sistema debe rechazar el registro. |
| CE-2 | Entre 18 y 65 | Válida | 30 | El sistema debe permitir continuar. |
| CE-3 | Mayor que 65 | Inválida | 70 | El sistema debe rechazar el registro. |
Con tres casos cubrimos los grupos principales de comportamiento. En el próximo tema veremos valores límite, donde probaremos específicamente 18 y 65.
Regla:
Clases posibles:
Valores representantes:
| Dato | Clase | Resultado esperado |
|---|---|---|
| abc123 | Menos de 8 caracteres | Rechazar contraseña. |
| Clave1234 | Entre 8 y 20 caracteres | Aceptar contraseña si cumple el resto de reglas. |
| Clave12345678901234567890 | Más de 20 caracteres | Rechazar contraseña. |
Si además existen reglas sobre mayúsculas, números o símbolos, deberemos crear clases adicionales para esas condiciones.
No todas las clases son numéricas. También podemos aplicar la técnica a categorías.
Regla:
Clases:
Cada clase representa una condición de permisos. Elegimos un usuario representante de cada tipo y verificamos el resultado esperado.
Las clases de equivalencia también sirven para estados.
Regla:
| Clase | Estados | Tipo | Resultado esperado |
|---|---|---|---|
| CE-1 | Pendiente, Confirmada | Válida | Permitir cancelación. |
| CE-2 | Enviada, Entregada, Anulada | Inválida | Rechazar cancelación. |
Podríamos elegir un representante de cada clase, aunque si el riesgo es alto tal vez convenga probar todos los estados.
Una clase de equivalencia debe agrupar valores que realmente deberían comportarse igual. Si agrupamos valores distintos en exceso, podemos ocultar defectos.
Ejemplo: si un campo acepta archivos PDF, JPG y PNG, podríamos pensar que todos son "archivos válidos". Pero tal vez el sistema procesa de manera distinta cada formato. En ese caso conviene separarlos:
La técnica requiere criterio. No todo lo válido pertenece necesariamente a la misma clase.
A veces un campo tiene varias reglas simultáneas. Por ejemplo:
En este caso no alcanza con crear clases solo por longitud. También debemos considerar clases relacionadas con composición:
Cuando hay muchas condiciones combinadas, puede ser útil complementar con tablas de decisión, técnica que veremos más adelante.
Las clases de equivalencia y los valores límite están muy relacionadas, pero no son lo mismo.
Ejemplo para edad de 18 a 65:
Primero podemos identificar clases. Luego, para mayor precisión, analizamos sus límites.
Una vez identificadas las clases, debemos convertirlas en casos de prueba concretos.
Ejemplo:
| Clase | Dato elegido | Caso de prueba | Resultado esperado |
|---|---|---|---|
| Edad menor que 18 | 17 | Intentar registrarse con edad 17. | El sistema debe rechazar el registro. |
| Edad entre 18 y 65 | 30 | Intentar registrarse con edad 30. | El sistema debe permitir continuar. |
| Edad mayor que 65 | 70 | Intentar registrarse con edad 70. | El sistema debe rechazar el registro. |
La clase orienta la selección del dato; el caso describe la verificación concreta.
Las clases de equivalencia tienen varias ventajas:
Es una de las primeras técnicas que conviene aprender porque aparece en muchos contextos de testing.
También tiene límites:
Por eso suele combinarse con otras técnicas de diseño de pruebas.
Al aplicar clases de equivalencia, algunos errores frecuentes son:
La técnica es simple, pero necesita atención para no generar huecos de cobertura.
Para aplicar bien clases de equivalencia conviene:
Las clases de equivalencia son una técnica fundamental para diseñar pruebas con criterio. Permiten dividir los datos en grupos representativos y seleccionar casos que aporten valor sin ejecutar combinaciones innecesarias.
Esta técnica es especialmente útil en formularios, validaciones, permisos, estados, rangos numéricos y reglas de negocio. Su mayor fuerza está en ordenar el análisis de datos válidos e inválidos.
En el próximo tema estudiaremos valores límite, una técnica complementaria que se enfoca en los bordes donde suelen aparecer muchos defectos.