Pruebas de caja blanca

White-box testing / Glass-box testing

White cat inside of a box

Las pruebas de caja blanca son posibles cuando quien prueba tiene acceso al código fuente de la aplicación y la experiencia necesaria para analizarlo.

Su opuesto son las pruebas de caja negra, donde quien prueba solo tiene acceso a la capa externa: la interfaz de la aplicación.

Ejemplo de lógica interna de la aplicación

El servicio, dependiendo del valor pasado en el taste parámetro, devuelve una lista de caramelos u otra.

candies(taste) {

    if taste equals MINT ignorando mayúsculas y minúsculas {
        then return response ["Frescura Cósmica", "Nebulosa de Menta"]
    }

    else if taste equals CITRUS ignorando mayúsculas y minúsculas {
        then return response ["Cometa Explosivo"]
    }

    else return response ["Armonía Universal"]
}

Los corchetes [ ] representan un array de datos homogéneos; en nuestro caso, una lista de nombres de caramelos.

Técnicas de pruebas de caja blanca

Las principales técnicas de pruebas de caja blanca son:

Pruebas de condiciones

(Condition Testing)

if (taste == MINT or taste == CITRUS) {
    process();
} else {
    processDefault();
}

Comprueba distintos estados y combinaciones de condiciones, incluida cada parte de condiciones complejas.

Pruebas de caminos

(Path Testing)

if (taste == MINT or taste == CITRUS) {
    process(); //puede causar un error
} else {
    processDefault();
}

Comprueba todos los caminos posibles de ejecución del programa.

Cubre las comprobaciones de las pruebas de condiciones y también puede tener en cuenta escenarios donde ocurre una situación excepcional durante la ejecución del código.

Cobertura de código

(Code Coverage Testing)

if (taste == MINT or taste == CITRUS) {
    process();
} else {
    processDefault();
}

Busca ejecutar cada línea de código al menos una vez durante las pruebas.

Una línea se considera cubierta incluso si solo se evaluó una parte de la condición. Más información.

Ordena las técnicas por aumento del número de comprobaciones.

Pruebas de condiciones

Condition testing

Para que sea más claro, construyamos un diagrama de flujo basado en la lógica descrita en el pseudocódigo original.

if, else if y else son operadores condicionales.

Cada condición (MINT, CITRUS) puede ser verdadera () o falsa (no) — estos son los posibles estados de la condición.

La transición a la comprobación de la condición CITRUS ocurre solo si el estado de la condición MINT es false (no).

Enumeremos en una tabla todas las combinaciones posibles de estados de las condiciones.

Estas son las comprobaciones que deben realizarse al usar pruebas de condiciones.

Condition testing block schema
Comprobación Condición MINT Condición CITRUS
1
2 no
3 no no
Tarea
¡Tarea disponible para usuarios premium!

Desbloquea el acceso para aprender sin límites.

Acceso completo a todas las tareas prácticas
Verificación de respuestas
Intentos ilimitados
Sidebar arrow

INTRODUCCIÓN

CONCEPTOS BÁSICOS

NIVELES DE PRUEBAS

PRUEBAS DE UI

DISEÑO DE PRUEBAS

DOCUMENTACIÓN DE PRUEBAS

AUTENTICACIÓN Y AUTORIZACIÓN

POSTMAN

BASES DE DATOS

PRUEBAS DE RELEASE

ANÁLISIS DE LA APLICACIÓN

PREPARACIÓN PARA ENTREVISTAS

Cómo escribir un CV Preguntas frecuentes de entrevista Test Entrevista simulada