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

Entradas populares