Skip to content

3. Técnicas de caja negra

Temas del programa: 3.2.5, 3.2.6 y 3.2.7

Partición de equivalencia: ¿qué problema resuelve?

Section titled “Partición de equivalencia: ¿qué problema resuelve?”

RN-01 acepta 1 a 14, pero el campo puede recibir cualquier cosa: -1 000, 0, 7, 15, 2.5, “abc”, vacío.

Sin técnica

Se prueban 3, 5 y 7: tres casos que aportan lo mismo, y nadie probó "abc".

Con técnica

Pocos casos, sin repetir esfuerzo y sin dejar comportamientos sin probar.

Las pruebas exhaustivas no existen (Unidad I): hay que elegir bien.

Divide el dominio de una entrada (o salida) en clases: grupos que el sistema debe tratar igual.

Supuesto: si un valor de la clase revela un defecto, los demás también lo harían. Por eso basta un representante por clase.

  • Cobertura del dominio: todo valor cae en alguna clase.
  • Sin traslape: ningún valor cae en dos clases.
  • Válidas (la regla las acepta) e inválidas (fuera de rango, tipo incorrecto, vacío).
La especificación indica…VálidasInválidas
Un rango (1 a 14)1: dentro2: debajo y encima
Un número de elementos (1 a 3 autores)1: permitido2: ninguno y demasiados
Un conjunto (ESTUDIANTE, DOCENTE)1 por valor1: fuera del conjunto
Una condición obligatoria1: se cumple1: no se cumple
Siempre—Tipo incorrecto, vacío

Reglas prácticas de Myers et al. (REF-U3-01). Si sospechas que valores de una clase se tratan distinto, divídela.

Ejemplo — RN-01 (días de préstamo, 1 a 14)

Section titled “Ejemplo — RN-01 (días de préstamo, 1 a 14)”
ClaseTipoDescripciónRepresentanteEsperado
CE-1VálidaEntero entre 1 y 147Aceptado
CE-2InválidaEntero menor que 1-3Rechazado
CE-3InválidaEntero mayor que 1420Rechazado
CE-4InválidaNo entero2.5Rechazado
CE-5InválidaNo numérico“abc”Rechazado
CE-6InválidaVacío(vacío)Rechazado
Dato inválido ≠ rechazo de negocio

ESTUDIANTE con 3 libros: dato válido, resultado de rechazo. Libros = -1: dato inválido. Son clases distintas.

Una clase inválida por caso

Si un caso mezcla dos inválidas y se rechaza, no sabes cuál causó el rechazo (enmascaramiento).

Clase de salidaCondiciónESTUDIANTEEsperado
CS-1 Sin multadiasRetraso ≤ 00 días0 MXN
CS-2 ProporcionalLa multa no supera el tope3 días15 MXN
CS-3 En el topeLa multa calculada supera 10025 días100 MXN

La frontera entre CS-2 y CS-3 depende del tipo de usuario: el ESTUDIANTE llega antes al tope.

Variantes: débil o fuerte, normal o robusta

Section titled “Variantes: débil o fuerte, normal o robusta”
VarianteConstrucciónRN-04 (tipo × días)
Débil normalCada clase válida al menos una vez3
Fuerte normalTodas las combinaciones de válidas6
Débil robustaDébil + un caso por clase inválida5
Fuerte robustaTodas las combinaciones de todas12

La débil supone que los defectos dependen de una sola entrada. Si el resultado depende de cómo se combinan, usa la fuerte o una tabla de decisión (Jorgensen, REF-U3-02).

FUNCIÓN validarDias(dias)
1 SI dias < 1 ENTONCES RETORNAR "RECHAZADO"
4 SI dias > 10 ENTONCES RETORNAR "REQUIERE AUTORIZACIÓN" ← no está en RN-01
7 SI dias > 14 ENTONCES RETORNAR "RECHAZADO"
10 RETORNAR "ACEPTADO"

7 y 12 están en la misma clase, pero el código los trata distinto. El representante 7 no lo ve. Lo revelan los valores límite (14) y la caja blanca (línea 4 sin ejecutar).

Análisis de valores límite: ¿qué problema resuelve?

Section titled “Análisis de valores límite: ¿qué problema resuelve?”

“Entre 1 y 14 inclusive” se traduce a <, <=, >, >=. Un símbolo mal escrito cambia el comportamiento solo en los bordes.

Valores límite (BVA): además de un representante, prueba los valores en la frontera entre clases contiguas.

Solo aplica a clases ordenadas: números, fechas, horas, cantidades, longitudes.

VersiónLínea con defecto¿7, -3 o 20 lo detectan?Lo detecta
M1SI dias <= 1No1
M2SI dias >= 14No14
M3SI dias > 15No15
M4SI dias < 0No0
Dos valores por frontera

RN-01: 0, 1 y 14, 15

Tres valores por frontera

RN-01: 0, 1, 2 y 13, 14, 15

Ejemplo genérico: “hasta 10 MB” programado como tamaño = 10. Con 10 y 11 no se detecta. Con 9 sí.

Con varias entradas: normal 4n + 1, robusto 6n + 1, peor caso 5ⁿ (Jorgensen, REF-U3-02).

Tablas de decisión: ¿qué problema resuelven?

Section titled “Tablas de decisión: ¿qué problema resuelven?”
Combinaciones

Si el resultado depende de varias condiciones, el defecto puede estar en una combinación que nadie probó.

Huecos de la especificación

Las reglas en lenguaje natural dicen qué pasa si todo está bien, no qué pasa en cada combinación de fallas.

│ R1 │ R2 │ R3 │ R4 │ ← reglas: una combinación cada una
─────────────────────────┼────┼────┼────┼────┤
C1: compra ≥ 500 MXN │ S │ S │ N │ N │ ← condiciones
C2: cliente registrado │ S │ N │ S │ N │
─────────────────────────┼────┼────┼────┼────┤
A1: envío gratuito │ X │ │ │ │ ← acciones
A2: cobrar envío │ │ X │ X │ X │

n condiciones Sí/No → 2ⁿ reglas. Llenado sistemático: la primera condición alterna cada 2ⁿ⁻¹ columnas. La última, en cada columna.

Por qué no basta “un caso bueno y uno malo”

Section titled “Por qué no basta “un caso bueno y uno malo””
Correcto: SI montoCompra >= 500 Y registrado ENTONCES "GRATUITO"
Defecto: SI montoCompra >= 500 O registrado ENTONCES "GRATUITO"
ReglaEsperadoCon el defecto¿Detecta?
R1 (S, S)GratuitoGratuitoNo
R2 (S, N)CobrarGratuitoSí
R3 (N, S)CobrarGratuitoSí
R4 (N, N)CobrarCobrarNo

Si una condición no cambia las acciones, se marca con — y las columnas se fusionan: R3 y R4 → (N, —).

Comprobación: cada — en una condición Sí/No vale 2. La suma debe dar 2ⁿ: 1 + 1 + 2 = 4 ✓. Si da más, hay traslape. Si da menos, falta una combinación.

Reduce solo si la especificación lo justifica: si R3 y R4 muestran mensajes distintos, no se fusionan.

Entrada extendida y combinaciones imposibles

Section titled “Entrada extendida y combinaciones imposibles”
Entrada extendida

Condición con más de dos valores: tipo de cliente PREMIUM / REGISTRADO / INVITADO × compra ≥ 500 → 3 × 2 = 6 reglas.

Combinaciones imposibles

"compra ≥ 500 = N" y "compra ≥ 1 000 = S" no pueden ocurrir juntas: se marcan como imposibles y no generan casos.

La tabla también es una herramienta de análisis

Section titled “La tabla también es una herramienta de análisis”

Al construirla aparecen combinaciones que la especificación no resuelve. Es un hallazgo aunque no hayas ejecutado nada: se pregunta, no se supone, y se registra como riesgo de prueba.

Con muchas condiciones la tabla crece (6 condiciones → 64 reglas): reduce cuando se justifique, separa en subreglas o prioriza por riesgo.

Si la regla…Técnica
Restringe a un conjunto o tipo de valoresPartición
Restringe un dato ordenado a un rango o cantidadPartición + valores límite
Produce tramos distintos de una salidaPartición de salidas + valores límite
Combina dos o más condiciones para decidirTabla de decisión (+ valores límite en las condiciones numéricas)

En los proyectos base: cantidad frente a existencia (B), cupo (C) y horario dentro de la disponibilidad (A). Por ejemplo: solicitar cita, generar pedido, inscribirse.

Las técnicas de este bloque se practican en el Laboratorio 1 — Técnicas de caja negra: primero con reglas del SPB y después con las reglas y los escenarios de tu proyecto base.

Continúa con 4. Caja blanca y caja gris.