En este artículo conoceremos las pruebas de caja blanca. Aprenderemos acerca de cuál es su objetivo, en qué situaciones son ideales usarlas y qué debemos conocer antes de utilizarlas.
El objetivo de las pruebas de caja blanca es realizar pruebas que cubran la estructura interna de un sistema, por estructura interna nos referimos a código, arquitectura y flujos de trabajo. En las pruebas de caja blanca, el código es visible para los testers, por lo que también se denominan pruebas de caja transparente o pruebas de caja abierta.
La profundidad de las pruebas de caja blanca se puede medir a través de la cobertura estructural. La cobertura estructural es la medida que se utiliza para saber si todas las rutas dentro de un módulo se han ejecutado al menos una vez (Esto será explicado más a detalle en otro artículo acerca de las técnicas de caja blanca).
Para realizar pruebas de caja blanca que sean eficaces se debe poner en práctica lo siguiente:
Se debe tener conocimiento del código: Entender el lenguaje de programación de nuestro sistema y lo que realiza el código es imprescindible para realizar pruebas de caja blanca.
Crear casos de pruebas confiables: Aunque este tipo de pruebas está relacionado con el funcionamiento interno de la aplicación, en ninguna circunstancia los casos de prueba se deben basar en lo que vemos del código. Los casos de prueba deben basarse en las especificaciones que ya conocemos, así cuando se ejecuten las pruebas estaremos confiados en que nuestro sistema cumple el apropiado flujo de trabajo y que el código es lógicamente correcto.
¿En qué nos ayudan las pruebas de caja blanca?
Son ideales para detectar:
Rutas rotas o mal estructuradas en el código
Errores de lógica en el código
Diferencias entre el diseño y la implementación
La incorrecta funcionalidad de los bucles y condicionales
Fugas de memoria
Si la aplicación tiene el rendimiento esperado
Fallos en el almacenamiento de datos
Tipos de pruebas de caja blanca
Una de las pruebas de caja blanca más utilizadas son las pruebas unitarias, generalmente realizadas por el desarrollador, estas pruebas se enfocan en los componentes, unidades o módulos, es decir, los elementos más pequeños del software. Algunos objetivos de estas pruebas son verificar que los comportamientos funcionales y no funcionales del componente son los diseñados y especificados, encontrar defectos, prevenir la propagación de defectos en otros niveles de prueba.
Ejemplo:
Para este pedazo de código:
Tenemos 2 casos de prueba que nos permitirán ejecutar las dos condiciones:
a = 1, b = 2
a = -1, b = -2
Utilizando Jest, nuestro unit test quedaría de la siguiente manera:
Errores comunes
Es un error muy común es confundir las pruebas de caja blanca con las pruebas estáticas, el objetivo principal de las pruebas de caja blanca es tener una cobertura de la estructura interna de nuestro sistema, mientras que las pruebas estáticas se encargan de la revisión de productos de trabajo como documentos de requerimientos, casos de prueba, planes de prueba, código, guías de usuario, así que aunque realizar Code Review involucra la vista del código, esto no es considerado como una prueba de caja blanca, sino como una prueba estática.
Cualquier pregunta acerca del tema, no dudes en contactarme.
Para conocer acerca del proceso de pruebas visita mi artículo anterior ---> Proceso de pruebas de software
Fuentes: Syllabus ISTQB Foundation Level, Guru99
Comments