En el área de QA (Quality Assurance o Aseguramiento de Calidad) existen muchos tipo de pruebas y divisiones de pruebas de software. En este artículo hablare de las pruebas de software llamadas white box (caja blanca) vs black box (caja negra) testing.
Las white box testing o pruebas de caja blanca son las pruebas que se basan en el conocimiento sobre la estructura del sistema mientras que las black box testing o pruebas de caja negra son las pruebas que se basan en el conocimiento sobre las especificaciones del sistema.
Sin embargo, estas pruebas no se limitan a una prueba simple, sino a toda una serie de actividades que garantizan una mejor calidad.
¿Qué es white box testing?
Las pruebas white box testing o pruebas de caja blanca (también llamadas pruebas estructurales o pruebas de caja de vidrio) se encargan de verificar si el código fuente se ha preparado correctamente, por lo que es de suma importancia que la persona o encargado de realizar estas prueba tenga un alto conocimiento en programación. Comúnmente es el desarrollador quien escribió el código.
Dentro de las white box testing existen dos tipos básicos:
- Statement coverage testing: las statement coverage testing o pruebas de cobertura de declaraciones, proporcionan los datos probados de manera que se garantice que cada instrucción de su código se haya ejecutado al menos una vez.
- Decision coverage testing: las decision coverage testing o pruebas de cobertura de decisiones son las pruebas de todas las desiciones que el software pueda tomar.
Herramientas para las white box testing
Existen muchas herramientas que ofrecen la posibilidad de hacer pruebas simples de white box, entre las más populares podemos encontrar la librería Jest la cual permite realizar pruebas unitarias y por otra parte la herramienta code2flow permite transformar el código en gráficos legibles a fin facilitar la comprensión de las decisiones de su aplicación.
Beneficios de white box testing
- Pruebas automatizadas
- Precisión en las pruebas
- Determinación exacta en donde ocurrió el error
- Optimización de código en base a errores ocultos
- Pruebas incluso antes de la interfaz de usuario
Desventajas de white box testing
- Las personas encargadas de realizar estas pruebas deben tener conocimientos en programación a fin de dar estructura al código mal hecho.
- En ocasiones no es posible probar todas las condiciones existentes.
- El solo centrarse en el código existente puede resultar en omitir algunas deficiencias de funcionalidad sobre todo cuando el o los desarrolladores malinterpreto el requerimiento del usuario.
¿Qué es black box testing?
Las pruebas black box testing o pruebas de caja negra son la serie de pruebas en las que la a rea de Quality Assurance (QA) verifican que la aplicación funcione correctamente sin conocer la estructura interna del código, pero con muy buen conocimiento de los requisitos. Este tipo de pruebas son una validación de los requisitos funcionales. Asimismo las black box testing se realizan en base a la documentación del software, incluida una descripción de las funcionalidades implementadas y sus requisitos.
Las back box testing se pueden dividir en:
- Functional testing: Las functional testing o pruebas de funcionalidad de software, son las que como su mismo nombre lo dice son las pruebas de funcionalidad de todo el software, en otras palabras “lo que hace el sistema”.
- Non-functional testing: Las non-functional testing o pruebas no funcionales son las pruebas de rendimiento, usablidad y seguridad, también conocidas como «cómo funciona el sistema”.
- Experience-based testing: Las experience-based testing o pruebas basadas en la experiencia son pruebas en las que la persona encargada validan el software utilizando su experiencia con proyectos similares en el pasado e intuición de posibles errores, este tipo de pruebas comúnmente son un complemente a las dos anteriores.
¿Cuál es el propósito de las black box testing?
El propósito principal de las black box es verificar si el software se ha implementado de acuerdo con los requisitos, cumple con las expectativas del usuario y si no contiene errores.
Las black box testing comúnmente responden a estas preguntas:
- ¿Todas las funcionalidades funcionan correctamente?
- ¿Todos los datos presentados son correctos?
- ¿El usuario puede pasar sin problemas por todo el flujo?
- ¿Están completos todas las funcionalidades?
- ¿La aplicación es amigable?
¿Cómo se realizan las black box testing?
Las black box testing requieren de ciertos preparativos, por lo que es importante que la persona encargada tenga conocimientos o sea un especialista en Quality Assurance a fin de:
- Analisar requisitos y especificaciones del software
- Conocer la aplicación en su conjunto
- Preparar de casos de prueba
Una vez realizados los puntos anteriores, la persona encargada se encargara de realizar casos de prueba, elaborar un análisis detallado de los resultados, informar en caso de que cualquier ocurra y volver a probar todos cuando se corrijan los errores.
Este proceso parece largo pero tiene un principal objetivo: comparar el producto con los requisitos. Si se encuentra alguna diferencia, cada persona en todos el proyecto recibirá esta información y podrá hacer las correcciones necesarias de forma mucho más rápida y eficiente.
¿Cómo preparar los datos y los casos de prueba para las pruebas de caja negra?
El análisis de los datos de entrada y salida y la preparación de casos de prueba permite reducir el número de casos realizados con valores precisos, los cuales fueron determinados en función de los requisitos.
Las técnicas mas comunes para diseñar casos de prueba en las pruebas funcionales son:
Valores límite
Los valores límite son valores exactos de entrada y salida (los valores que el usuario ingresa en los campos de la aplicación) que están dentro del limite o en la parte intermedia de las clases de equivalencia.
Clases de equivalencia
Las clases de equivalencia es en donde cada caso de prueba, pretende cubrir el mayor número de entradas posible.
Tabla de decisiones
Es donde se crean los casos a partir de una tabla que muestre la combinación de entradas y salidas con los resultados esperados.
Beneficios de black box testing
- Realizado desde las perspectiva del usuario
- Búsqueda de diferencias entre la implementación y la especificación
- Los especialistas en Quality Assurance no tiene que profundizar en la estructura interna de la aplicación
- Se puede crear documentación que incluya los casos de prueba
- Los casos de prueba se pueden automatizar
Desventajas de black box testing
- Los requisitos o especificaciones pueden no ser claros, dificultando la escritura de casos de prueba
- No existe certeza de que todas las áreas hayan sido probadas ya que no es posible probar todo, pero cada prueba adicional reduce el riesgo de errores.
¿Cuál es mejor?
Dentro del área de pruebas de software no existe una prueba exclusiva, por lo que no hay un mejor enfoque. Si bien existen algunas similitudes entre las black box y las white box testing, ambas se pueden utilizar.
Sin embargo, la mayor diferencia es el área de aplicación bajo prueba y quién puede realizar las pruebas. Las white box testing requieren mucho más conocimiento técnico (comúnmente los desarrolladores), mientras que las black box testing pueden realizarlas por personas de Quality Assurance sin necesidad de contar con grandes conocimientos técnicos.