En la ingeniería de software , el diseño de pruebas es la actividad de derivar y especificar casos de prueba desde las condiciones de prueba hasta el software de prueba .
Definición
Una condición de prueba es una declaración sobre el objeto de prueba. Las condiciones de prueba pueden establecerse para cualquier parte de un componente o sistema que pueda verificarse: funciones, transacciones, características, atributos de calidad o elementos estructurales.
El desafío fundamental del diseño de pruebas es que hay infinitas pruebas diferentes que puede ejecutar, pero no hay tiempo suficiente para ejecutarlas todas. Debe seleccionarse un subconjunto de pruebas; lo suficientemente pequeño para ejecutarse, pero lo suficientemente bien elegido como para que las pruebas encuentren errores y expongan otra información relacionada con la calidad. [1]
El diseño de pruebas es uno de los requisitos previos más importantes de la calidad del software. Un buen diseño de prueba admite:
- definir y mejorar los procesos y procedimientos relacionados con la calidad ( aseguramiento de la calidad );
- evaluar la calidad del producto en función de las expectativas y necesidades del cliente ( control de calidad );
- encontrar defectos en el producto (prueba de software).
Los requisitos previos esenciales del diseño de pruebas son: [2]
- Especificación adecuada (bases de prueba).
- Análisis de riesgo y complejidad.
- Datos históricos de sus desarrollos anteriores (si existe).
Las bases de prueba, como los requisitos o las historias de usuario, determinan qué se debe probar (objetos de prueba y condiciones de prueba). Las bases de prueba implican algunas técnicas de diseño de prueba que se deben usar o no.
El análisis de riesgos es inevitable para decidir la exhaustividad de las pruebas. Cuanto más riesgo tenga el uso de la función / objeto, más exhaustivas serán las pruebas necesarias. Lo mismo puede decirse de la complejidad. El análisis de riesgo y complejidad determina las técnicas de diseño de prueba que se aplicarán para una especificación determinada.
Los datos históricos de sus desarrollos anteriores ayudan a establecer el mejor conjunto de técnicas de diseño de prueba para alcanzar un costo óptimo y una alta calidad juntos. En ausencia de datos históricos, se pueden hacer algunas suposiciones, que deben perfeccionarse para proyectos posteriores.
Sobre la base de estos requisitos previos, se puede implementar una estrategia de diseño de prueba óptima.
El resultado del diseño de prueba es un conjunto de casos de prueba basados en la especificación. Estos casos de prueba se pueden diseñar antes de que comience la implementación y deben ser independientes de la implementación. Probar la primera forma de diseño de prueba es muy importante, ya que apoya de manera eficiente la prevención de defectos. Según la aplicación y la cobertura de prueba actual, se pueden crear más casos de prueba (pero no es un diseño de prueba).
En la práctica, se deben aplicar más técnicas de diseño de pruebas juntas para especificaciones complejas.
En conjunto, el diseño de la prueba no depende de la habilidad extraordinaria (casi mágica) de la persona que crea la prueba, sino que se basa en principios bien entendidos. [3]
Diseño de prueba automático
El software puede generar automáticamente conjuntos de pruebas o casos de prueba completos que exponen errores reales mediante la verificación de modelos o la ejecución simbólica . [4] La verificación del modelo puede garantizar que se ejecuten todas las rutas de un programa simple, mientras que la ejecución simbólica puede detectar errores y generar un caso de prueba que expondrá el error cuando el software se ejecute utilizando este caso de prueba.
Sin embargo, por muy bueno que pueda ser el diseño de prueba automático, no es apropiado para todas las circunstancias. Si la complejidad se vuelve demasiado alta, entonces el diseño de pruebas humanas debe entrar en juego, ya que es mucho más flexible y puede concentrarse en generar conjuntos de pruebas de mayor nivel.
Referencias
- ^ Diseño de prueba: un libro de trabajo de BBST , por Cem Caner y Rebecca L Fiedler, julio de 2016
- ^ Diseño de pruebas prácticas: selección de técnicas de diseño de pruebas tradicionales y automatizadas , por István Forgács y Attila Kovács, agosto de 2019
- ^ Guía para profesionales del diseño de pruebas de software , por Lee Copeland, enero de 2004
- ^ KLEE: Generación automática y sin asistencia de pruebas de alta cobertura para programas de sistemas complejos , por Cristian Cadar, Daniel Dunbar, Dawson Engler de la Universidad de Stanford , 2008