MANEJO DE CALIDAD EN LAS PRUEBAS
Palabras clave: calidad de los casos de prueba, casos de prueba, prueba del software.
INTRODUCCIÓN
La gestión de proyectos es un complejo sistema de procedimientos de gestión, prácticas, tecnologías y conocimientos, en el que es necesaria la experiencia para gestionarlos con éxito. La gestión de proyectos de software es una actividad lineal en la Ingeniería de Software. Se inicia antes que cualquier actividad técnica comience y continúa durante todas las etapas de desarrollo hasta el mantenimiento.
Gestionar el desarrollo de software como un proyecto es muy importante; se trata de integrar personas ―desarrolladores, clientes―, problemas ―requisitos del cliente―, y procesos
―metodología para encontrar los requisitos―; es decir, integrar las tres P: Personas, Procesos y Problemas, como se observa en la Figura 1 (Jalote, 2002).
Para desarrollar productos software de calidad, la prueba es una de las tareas más importantes y, cuando se aplica linealmente en el ciclo de vida del producto, desempeña un papel crucial en la gestión de proyectos. Las pruebas evalúan el producto para determinar que cumple con el objetivo previsto, por lo que es necesario diseñar un plan de pruebas que se adapte y sea coherente con la metodología de desarrollo, que proporcione un enfoque de fácil acceso a la estructura para verificar los requisitos y cuantificar su rendimiento, y que identifique las diferencias entre los resultados previstos y los reales ―errores o fallas―; es el proceso por medio del cual se evalúa la correcta interpretación y aplicación de los requisitos especificados. Un buen plan de pruebas es el conocido como PDCA (Yongkui and Guofeng, 2009), que contempla las siguientes actividades:
Este artículo detalla cómo evitar los contratiempos que se originan cuando los casos de prueba se diseñan pobremente, y describe cómo mejorar ese diseño para incrementar la productividad, la facilidad de uso, la fiabilidad de la programación y la gestión de valor. Además, se busca explicar qué son y para qué sirven los casos de prueba, así como la lista de estándares que se utilizan para identificar áreas de riesgo y mejorarlos para aplicaciones futuras. Se desarrolla un caso de estudio que demuestra cómo utilizar los casos de prueba para mejorar la capacidad de la prueba y la productividad, resolver los problemas más comunes en calidad y cómo aprovechar las ventajas de los casos de prueba, que se pueden poner en práctica en la industria del software.
ESTADO ACTUAL DE LA PRÁCTICA DEL DESARROLLO DE SOFTWARE
Toda persona, alguna vez, ha sufrido algún error del software, sea en una factura liquidada indebidamente o la pérdida de todo un día de trabajo; estos problemas se deben a la complejidad misma del software, que dificulta el desarrollo de sistemas e incrementa la probabilidad de que existan errores aun luego de finalizado y entregado al cliente. Actualmente, la capacidad de los ingenieros de software para medir la fiabilidad de sus productos es inferior a la necesaria en el enfoque de la calidad (Gibbs, 1994), por lo que es deseable que estos ingenieros puedan demostrar matemáticamente la correctitud de sus programas, de la misma forma que otras ramas de la ingeniería lo pueden hacer. Otros ingenieros pueden recurrir al análisis matemático para conocer de antemano el comportamiento de sus productos en elmundo real, para descubrir sus errores antes que estén operativos. No obstante, las matemáticas tradicionales utilizadas para describir sistemas físicos no tienen aplicabilidad en el universo de los computadores, en el que se debe recurrir a la matemática discreta, un área reciente, poco investigada, y que gobierna el campo de los sistemas software (Roventa and Spircu, 2008).
Es debido a esas imposibilidades que los ingenieros de software no pueden aplicar los métodos matemáticos rigurosos a sus productos, y deben recurrir a métodos de verificación empírica en los que hacen funcionar los programas y observan su comportamiento directamente, para luego depurarlos cada vez que aparece un error; de esta forma la fiabilidad de los productos se va incrementando a lo largo del proceso.
Estos métodos no garantizan la ausencia de errores, y pueden existir errores en otros componentes del programa que no se ejecutan en ese momento. Por lo tanto, la recomendación es que el producto software se evalúe de forma paralela a su desarrollo, en un proceso de evaluación/comprobación de los diferentes productos en cada fase del ciclo de vida, y en el que participen desarrolladores y clientes.
Se concluye entonces que el logro de programas perfectos es por el momento una meta inalcanzable. “Existe, actualmente, la imposibilidad práctica de conseguir software totalmente libre de defectos” (Littlewood and Strigini, 1993), por lo que se debe aceptar que, debido a las actuales limitaciones en lo relacionado con el desarrollo de sistemas software, esta práctica debe investigarse más y más cada día; de hecho, existen autores que sugieren que “[…] debido a la entidad no física del software, los errores en los programas son inherentes a su naturaleza” (Huang et al., 1994), y de hecho, hasta el software de más alto factor crítico contiene errores remanentes.
En su investigación, Edward Adams analizó el número de errores en una base de datos, que se suponía de cobertura mundial, en un equivalente a miles de años de uso sobre un sistema de cómputo. Descubrió que uno de cada tres errores del programa llegan a producir un fallo tan sólo una vez cada 5.000 años. Claro está que emplear tiempo para detectar los errores que se producirán más allá de 75 años es inaceptable (Adams, 1984).
LOS CASOS DE PRUEBA EN LA INGENIERÍA DE SOFTWARE
Para desarrollar software de calidad y libre de errores, el plan de pruebas y los casos de prueba son muy importantes. El Software Test Plan ―STP― se diseña para determinar el ambiente de aplicación de los recursos y el calendario de las actividades de las pruebas, se debe identificar el dominio y sus características a probar, lo mismo que el tipo de pruebas a realizar. Un caso de prueba bien diseñado tiene gran posibilidad de llegar a resultados más fiables y eficientes, mejorar el rendimiento del sistema, y reducir los costos en tres categorías:
1) productividad ― menos tiempo para escribir y mantener los casos
2) capacidad de prueba ―menos tiempo para ejecutarlos
y 3) programar la fiabilidad ―estimaciones más fiables y efectivas― (Perry, 1995).
La prueba del software consta de tres pasos: el entorno de la prueba, desarrollar y ejecutar scripts, y analizar los resultados (IEEE, 2008);
*El plan de pruebas “describe el alcance y enfoque de las actividades de pruebas previstas, e identifica las características a ser probadas" (Elaine and Vocolos, 2000);
*Y el diseño de las pruebas "especifica los detalles del método de prueba para una característica del software e identifica las pruebas correspondientes" (IEEE, 2008-1).
El estándar 829 de IEEE (IEEE, 2008-2) recomienda que un plan de pruebas debe incluir: Una lista de características y sus combinaciones a probar Una declaración general de enfoque para cada característica o combinación de características , Identificación de la prueba de diseño asociada con cada una de las características y sus combinaciones.
El proceso de escribir casos de prueba y establecer su estándar es un logro especial muy dinámico, y es necesario que se enseñe, aplique, controle, mida y mejore continuamente.
Componentes de los casos de prueba
Un caso de prueba es un conjunto de acciones con resultados y salidas previstas basadas en los requisitos de especificación del sistema; sus componentes son:
1. Propósito: de la prueba o descripción del requisito que se está probando
2. Método: o forma como se probará
3. Versión: o configuración de la prueba, versión de la aplicación en prueba, el hardware, el software, el sistema operativo, los archivos de datos, entre otros
4. Resultados: acciones y resultados esperados o entradas y salidas
5. Documentación: de la prueba y sus anexos.
En cada nivel de la prueba, estos componentes deben probarse utilizando casos de prueba para pruebas de unidad, pruebas de integración, pruebas del sistema, pruebas Alpha y Beta,…, además, son útiles para las pruebas de rendimiento, pruebas funcionales y pruebas estructurales. Factores de calidad de los casos de prueba La calidad es un conjunto de métricas estándar o listas de control, y representa lo que los clientes buscan en un producto.
Un caso de prueba debe cumplir con los siguientes factores de calidad:
1. Correcto. Ser apropiado para los probadores y el entorno. Si teóricamente es razonable, pero exige algo que ninguno de los probadores tiene, se caerá por su propio peso.
2. Exacto. Demostrar que su descripción se puede probar.
3. Económico. Tener sólo los pasos o los campos necesarios para su propósito.
4. Confiable y repetible. Ser un experimento controlado con el que se obtiene el mismo resultado cada vez que se ejecute, sin importa qué se pruebe.
5. Rastreable. Saber qué requisitos del caso de uso se prueban.
6. Medible. Este es un ejercicio muy útil para quienes escriben pruebas, para verificar constantemente dónde están, si pierden alguno de los elementos, o si no se cumple un estándar.
Formato de los casos de prueba
1. Paso a paso. Este formato se utiliza en: La mayoría de las reglas de procesamiento Casos de prueba únicos y diferentes Interfaces GUI Escenarios de movimiento en interfaces diferentes Entradas y salidas complicadas para representar en matrices.
2. Matrices. Sus usos más productivos son: Formularios con información muy variada, mismos campos, valores y archivos de entrada diferentes Mismas entradas, diferentes plataformas, navegadores y configuraciones Pantallas basadas en caracteres Entradas y salidas con mejor representación matricial.
3. Scripts automatizados. La decisión de utilizar software para automatizar las pruebas depende de la organización y del proyecto que se esté probando.
Existen algunas cuestiones técnicas que deben concretarse y que varían de una herramienta a otra. El beneficio real de automatizar las pruebas se obtiene en la fase de mantenimiento del ciclo de vida del software; en ese momento, los scripts se pueden ejecutar repetidamente, incluso sin supervisión, y el ahorro en tiempo y dinero es sustancial (Moller and Paulish, 1993). Un caso de prueba paso a paso tiende a ser más verbal, y el de matrices más numérico. A menudo, la ruta más productiva es utilizarlos todos. Los dos primeros se utilizan para las pruebas unitarias, de integración y del sistema; y el automatizado, para pruebas de regresión (Voas, 1993).
MEJORAMIENTO DE LOS CASOS DE PRUEBA
Comprobabilidad de los Casos de Prueba, En la prueba es fácil de probar, con precisión, lo que significa que si el probador sigue las instrucciones, el resultado de aprobado o fallido será correcto. Se puede medir fácilmente por medio del tiempo que se tarda en ejecutar la prueba, y si el probador tiene que buscar o no aclaraciones en el proceso de prueba.
Lenguaje para mejorar la comprobabilidad. Los pasos de los casos de prueba deben ser escritos en forma activa. El probador debe saber qué hacer, y cómo hacerlo. Por ejemplo, navegar en la página de la tienda online y preparar la lista de lo que va a comprar, para comparar los precios y la variedad con los datos disponibles. Hacer clic en
No hay comentarios:
Publicar un comentario