Pruebas de caja negra y caja blanca
¿Qué son las pruebas de caja negra y de caja blanca?
-
Pruebas de Caja Negra:
- También llamadas pruebas de comportamiento.
- Se enfocan en los requisitos funcionales del software.
- No consideran la estructura interna, el código o la implementación del programa.
- Buscan verificar que el software cumpla con las especificaciones y funcione correctamente desde la perspectiva del usuario.
- Se aplican típicamente en las últimas etapas del proceso de pruebas.
-
Pruebas de Caja Blanca:
- También llamadas pruebas estructurales.
- Se enfocan en la estructura interna del programa, el código fuente y el flujo de control.
- Buscan verificar que todas las rutas de código sean ejecutadas, identificar código muerto y asegurar que la implementación interna sea correcta.
- Se realizan examinando el código directamente.
- Se aplican típicamente en las primeras etapas del proceso de pruebas, como las pruebas unitarias.
Técnicas más comunes de pruebas de caja negra y caja blanca
-
Técnicas de Pruebas de Caja Negra:
- Partición de Equivalencia: Divide el dominio de entrada en clases de datos de prueba válidos e inválidos, asumiendo que si un valor de una clase es válido/inválido, los demás también lo serán.
- Análisis de Valores Límite: Complementa la partición de equivalencia, centrándose en los valores justo en los límites de cada clase, ya que son puntos propensos a errores.
- Pruebas de Grafos de Causa y Efecto: Diseña casos de prueba identificando relaciones de causa (condiciones de entrada) y efecto (resultados del sistema).
- Tablas de Decisión: Representa lógicamente condiciones y acciones, útil para diseñar casos de prueba en funciones con múltiples condiciones.
- Transición de Estado: Se usa para sistemas que pueden cambiar de estado en respuesta a eventos, probando todas las transiciones y estados posibles.
-
Técnicas de Pruebas de Caja Blanca:
- Cobertura de Sentencia: Asegura que cada sentencia (línea de código ejecutable) del programa sea ejecutada al menos una vez por los casos de prueba.
- Cobertura de Decisión/Rama: Asegura que cada decisión (e.g.,
if
,while
) tenga sus dos ramas (verdadera y falsa) ejecutadas al menos una vez. - Cobertura de Condición: Para cada decisión, asegura que cada condición individual dentro de ella sea evaluada como verdadera y falsa.
- Cobertura de Camino: Intenta ejecutar cada camino posible a través de la estructura de control del programa. (Esta suele ser la más exhaustiva y, a menudo, poco práctica de lograr al 100%).
¿Qué se debe tener en cuenta a la hora de hacer una prueba de caja negra y caja blanca?
Para Pruebas de Caja Negra:
- Requisitos funcionales: Se deben tener claros y completos los requisitos y especificaciones del software, ya que las pruebas se basan en ellos.
- Dominio de la información: Es crucial entender las entradas válidas e inválidas, los rangos de datos, las condiciones de error y los resultados esperados.
- Perspectiva del usuario: Las pruebas deben simular el comportamiento del usuario y cómo interactuaría con el sistema.
- Identificación de errores: Se busca encontrar funciones incorrectas o faltantes, errores de interfaz, problemas con estructuras de datos externas, errores de rendimiento y errores de inicialización/terminación.
- Complementariedad: Entender que estas pruebas son un complemento a las de caja blanca, no un sustituto.
Para Pruebas de Caja Blanca:
- Acceso al código fuente: Es indispensable tener acceso al código y entender su estructura interna.
- Conocimiento del lenguaje y lógica: El probador debe tener habilidades de programación para analizar el código y diseñar pruebas que ejerciten rutas específicas.
- Cobertura de código: El objetivo principal es lograr una alta cobertura de código (sentencias, decisiones, condiciones, caminos) para asegurar que se prueben todas las partes del programa.
- Detección temprana de defectos: Permiten encontrar errores en una etapa temprana del desarrollo, lo que reduce significativamente el costo de corrección.
- Optimización del código: Ayudan a identificar código muerto o inalcanzable.
- Herramientas de análisis: A menudo se usan herramientas de análisis estático y dinámico para ayudar a identificar rutas de código y medir la cobertura.
Comentarios
Publicar un comentario