Más allá de boundaries de una variable

El BVA (Lección 3.2) testea una variable a la vez. Pero el software real tiene espacios de entrada definidos por relaciones entre múltiples variables. Considera un sistema de aprobación de préstamos:

  • Aprobado si: income >= 30000 AND debt_ratio < 0.4 AND credit_score >= 650

Esto crea un dominio de entrada tridimensional. El boundary no es un solo punto sino una superficie en espacio 3D. Testear cada variable independientemente (como hace BVA) pierde defectos que ocurren en la intersección de boundaries.

El análisis de dominio, formalizado por Beizer y luego por Binder, extiende BVA para manejar estos espacios de entrada multidimensionales sistemáticamente.

Conceptos fundamentales

Dominio de entrada

El conjunto de todas las combinaciones de entrada posibles.

Boundary de dominio

Una condición que divide el espacio de entrada en regiones con diferentes comportamientos.

Puntos On y Off

On point: Un valor exactamente en el boundary.

Off point: Un valor mínimamente diferente del on point, al otro lado del boundary.

BoundaryOn PointOff Point
x <= 10 (dominio es x <= 10)10 (en dominio)11 (fuera)
x < 10 (dominio es x < 10)9 (en dominio)10 (fuera)
x >= 5 (dominio es x >= 5)5 (en dominio)4 (fuera)
x > 5 (dominio es x > 5)6 (en dominio)5 (fuera)

In Points

Valores claramente dentro del dominio — lejos de boundaries.

Out Points

Valores claramente fuera del dominio.

Tipos de errores de dominio

Desplazamiento de boundary

El boundary está en la posición incorrecta. Debería ser x <= 100 pero se implementó como x <= 99.

Error de closure

El boundary tiene el tipo incorrecto. Debería ser x <= 10 pero se implementó como x < 10.

Boundary faltante

Un boundary que debería existir está ausente.

Boundary extra

Un boundary existe que no debería.

Boundary inclinado

Para boundaries multi-variable como x + y <= 100, el boundary tiene la pendiente incorrecta.

El método de análisis de dominio

Paso 1: Identificar variables y boundaries

Ejemplo: Cotización de seguro

  • Variables: age (18-80), driving_years (0-62), accidents (0-10)
  • Boundaries: age >= 25, driving_years >= 3, accidents <= 2 → tarifa estándar

Paso 2: Para cada boundary, seleccionar puntos On y Off

BoundaryVariableOn PointOff Point
age >= 25age2524
driving_years >= 3driving_years32
accidents <= 2accidents23

Paso 3: Construir la matriz de dominio

Testagedriving_yearsaccidentsBoundary testeadoEsperado
125100age ONEstándar
224100age OFFTarifa alta
33530years ONEstándar
43520years OFFTarifa alta
535102accidents ONEstándar
635103accidents OFFTarifa alta
735100IN pointEstándar

Esto requiere 2 tests por boundary más 1 in-point = 2B + 1 total.

Boundaries multi-variable

Ejemplo: Envío gratis si quantity * price >= 100

On points en la línea quantity * price = 100: (10, 10), (20, 5), (50, 2) Off points justo debajo: (10, 9.99), (20, 4.99), (50, 1.99)

Testea múltiples pares on/off a lo largo del boundary para detectar errores de inclinación.

Ejercicio: Análisis de dominio

Problema 1

Una calculadora de tarifas de estacionamiento usa estas reglas:

  • Primera hora: $5.00
  • Horas 2-4: $3.00/hora
  • Horas 5-8: $2.00/hora
  • Horas 9-24: $1.50/hora
  • Más de 24 horas: $1.00/hora
  • Cargo máximo: $50/día
Solución

Boundaries:

#BoundaryOn PointOff Point
1duration = 11.01.01
2duration = 44.04.01
3duration = 88.08.01
4duration = 2424.024.01
5cargo máximo = $50en el topejusto sobre tope

Test cases:

#durationCosto esperadoTestea
10.5$5.00IN point
21.0$5.00ON boundary 1
31.01$5.00 + $0.03OFF boundary 1
44.0$14.00ON boundary 2
54.01$14.02OFF boundary 2
68.0$22.00ON boundary 3
724.0$46.00ON boundary 4
848$50.00 (tope)Boundary de cargo máximo

Problema 2

Una app de fitness categoriza usuarios por dos variables:

  • BMI: bajo peso (<18.5), normal (18.5-24.9), sobrepeso (25-29.9), obeso (>=30)
  • Nivel de actividad: sedentario (<150 min/semana), moderado (150-300), activo (>300)
Solución

Boundaries:

#VariableBoundaryOnOff
1BMI18.518.518.4
2BMI25.024.925.0
3BMI30.029.930.0
4Actividad150150149
5Actividad300300301

Matriz de dominio (12 regiones = 4 BMI x 3 actividad):

#BMIActividadCategoría
118.4100Bajo peso + Sedentario
218.5100Normal + Sedentario
322.0149Normal + Sedentario (OFF boundary actividad)
422.0150Normal + Moderado (ON boundary actividad)
522.0225Normal + Moderado (IN point)
624.9225Normal + Moderado (ON boundary BMI)
725.0225Sobrepeso + Moderado
830.0225Obeso + Moderado

Cuándo usar análisis de dominio

Usa análisis de dominio cuando:

  • Múltiples variables interactúan para determinar comportamiento
  • Los boundaries involucran relaciones entre variables
  • Necesitas detectar errores off-by-one, closure y desplazamiento

Prefiere BVA simple cuando:

  • Las variables son independientes
  • Los boundaries de una variable son suficientes

Puntos clave

  • El análisis de dominio extiende BVA a espacios de entrada multi-variable
  • Los on points están exactamente en boundaries; los off points están mínimamente al otro lado
  • Testea 2 puntos por boundary (on + off) más puntos interiores = 2B + 1 mínimo
  • Cuatro tipos de error: desplazamiento, closure, boundary faltante, boundary inclinado
  • Construye matrices de dominio variando un boundary mientras mantienes otros en valores interiores
  • Para boundaries multi-variable, testea múltiples pares on/off para detectar errores de inclinación