Categorías de las pruebas de software

Unitarias: Pruebas aplicadas a un módulo aislado o unidad de código.

Integración: Pruebas desarrolladas a un grupo de módulos para asegurar que los datos y el control sean intercambiados adecuadamente entre módulos.

Sistema: Una combinación predeterminada de pruebas para asegurarse de que el sistema alcanza los requerimientos.

Aceptación: Prueba que asegura que el sistema alcanza las necesidades de la organización y los del usuario o cliente final.

Regresión: Son pruebas realizadas después de que se han realizados las modificaciones para asegurar de que no se hayan ingresado cambios indeseados.

Error. La gente comete errores o equivocaciones. Los errores tienden a propagarse; un error en la etapa de requerimientos puede acrecentarse durante el diseño y aumentar aún más durante la codificación.

Defecto. El defecto es el resultado de un error. De forma más precisa podría decirse que un defecto es la representación de un error, representación que queda expresado en forma de texto, diagrama de flujo, código fuente, etc. Los sinónimos utilizados son bug y falta. Los defectos pueden ser difíciles de detectar. Cuando se tiene una omisión el defecto consiste en que algo que debería estar presente no lo está. Por lo que podría decirse que existen dos tipos de defectos: por omisión y por comisión. El defecto por comisión tiene que ver con una representación incorrecta de lo solicitado. El defecto por comisión ocurre al momento de ingresar información. De estas dos el defecto por omisión es más difícil de detectar y resolver.

Falla. La falla aparece al momento en que se ejecuta un defecto. Este por lo tanto sólo se da para una representación ejecutable y en defectos por comisión. Entonces, ¿qué hacer con los defectos que nunca se ejecutan o no se ejecutan por mucho tiempo? Una opción aceptable es realizar buenas revisiones, que pueden prevenir fallas y encontrar defectos por omisión.

Casos de prueba. Estructura que permita probar todos los procesos posibles del sistema para encontrar sus inadecuaciones con los requerimientos y normas establecidas, con el menor esfuerzo y tiempo posibles. Es un conjunto de entradas, condiciones de ejecución y resultados esperados desarrollados para un objetivo particular como, por ejemplo, ejercitar un camino concreto de un programa o verificar el cumplimiento de un determinado requisito.

Verificación. Son todas las actividades a través del ciclo de vida que aseguran que los productos internos en el proceso cumplan con sus especificaciones.

Validación. Asegura que el producto final cumple con las especificaciones establecidas.

Pruebas estáticas. Son las realizadas sin la ejecución del código.

Pruebas dinámicas. Son realizadas con la ejecución del código.

Pruebas funcionales. Pruebas a partir de los requerimientos (qué es lo que se supone que hace). Se asegura de que los requerimientos sean cumplidos adecuadamente por el software.

Pruebas estructurales. Pruebas sobre la estructura del sistema (cómo el sistema fue implementado). Se asegura de que el producto diseñado es estructuralmente lógico.

Pruebas manuales. Son pruebas realizadas por personas.

Pruebas automatizadas. Son pruebas realizadas por la computadora.

Pruebas de caja negra. Pruebas basadas en especificaciones externas sin el conocimiento previo de cómo se encuentra construido.

Pruebas de caja blanca. Pruebas basadas en el conocimiento de la estructura interna y lógica.

Fuente: Apuntes de Ingeniería del Software de la FCA de la UNAM