Proyecto de desarrollo de una plataforma para la gestión de casos de prueba de software El objetivo de este proyecto es construir una plataforma que sistematice y facilite las actividades de prueba en los equipos de desarrollo de software. La plataforma esta centrada en la gestión de los casos de prueba y se conecta con otras herramientas para la ejecución y evaluación de las pruebas. Problema El elemento principal de a las actividades de prueba es el caso de prueba. Las técnicas de prueba proponen distintas estrategias para diseñar o evaluar casos, ya que en el diseño de los casos se define la efectividad de la prueba. Las actividades de ejecución, análisis y reporte vuelven a utilizar al caso de prueba como instrumento. Al igual que el desarrollo de software, el diseño de casos de prueba es una actividad que requiere inteligencia y creatividad. Por eso el diseño de casos es realizado necesariamente por personas que dominan una técnica de prueba y tienen conocimiento de programa objetivo. El volumen de casos de prueba para una aplicación suele ser muy grande, por lo que estos se agrupan en conjuntos para su gestión. La gestión de casos incluye su registro, ejecución y evaluación. Actualmente existen numerosas herramientas que se enfocan en una parte específica del proceso de prueba, por ejemplo: grabación y reproducción de acciones, cobertura de código, mutación de programas, pruebas de sobrecarga, etc. Sin embargo, la gestión de los casos de prueba se realiza a menudo en forma manual y no integrada con las otras actividades del proceso de prueba. Para el registro de casos de prueba suelen utilizarse formatos poco estructurados como planillas de distintos formatos. Esto impide que la evaluación de los conjuntos de prueba sea sistemática y no se guarden datos sobre su efectividad o nivel de cobertura. Además como las aplicaciones pueden tener distintos modelos de ejecución, el pasaje de los datos contenidos en los casos de prueba a la etapa de ejecución suele ser una actividad compleja aun estando parcialmente automatizada. Plataforma para gestión de casos de prueba Para gestionar los casos de prueba los equipos de desarrollo de software necesitan una infraestructura que les permita integrar las distintas actividades de la prueba. El proceso de prueba de software puede dividirse en cuatro etapas: Diseño (generación) de casos de prueba Evaluación de conjuntos de prueba Ejecución y análisis de resultados Reporte de defectos El sistema cubre las tres primeras etapas del proceso y esta abierta a la integración con herramientas de reporte y seguimiento de defectos. Gestión: definición de estrategias, conjuntos y niveles de cobertura. Evaluación de conjuntos Ejecución Edición remota de CP IU (Web) línea de comando xUnit Edición remota de CP Repositorio de casos de prueba Programa objetivo script Edición remota de CP Otro ejecutor Funciones 1. Diseñar y registrar casos de prueba El registro debe poder hacerse por varios usuarios y en forma remota. En este punto es importante la facilidad de uso del sistema para el tester. Una restricción para esta función es que no requiera instalación en la terminal donde se definen los casos de prueba, o sea una interfaz de usuario web. 2. Definir conjuntos de casos Los casos se agrupan en conjuntos para poder gestionarlos. Un conjunto puede ser caso de prueba generados por cierto criterio de prueba o para un área especifica del sistema objetivo. La definición de conjuntos puede hacerse en forma remota por parte del diseñador o directamente sobre el repositorio de casos ya generados. 3. Ejecutar las pruebas según el modelo de la aplicación La ejecución de las pruebas depende del modelo de la aplicación. El programa objetivo de la prueba puede ser invocado por línea de comando, un componente al que se le pasa un script, llamados directos a métodos, interfaz de usuario gráfica, etc. Estos modelos definen la forma en que se ejecutan los casos de prueba en el programa objetivo. 4. Evaluar y ajustar las pruebas en base a mediciones Existen varios criterios para asegurar la completitud y profundidad de un conjunto de pruebas. Los más simples son los criterios de cobertura. Estos criterios permiten hacer una evaluación para mejorar los casos de prueba. También hay métricas básicas de la prueba que pueden ser tomas a partir del repositorio para facilitar la gestión de casos. Número de casos Tamaño de los programas probados Nivel de cobertura alcanzada Número de defectos por versión del programa Efectividad histórica de casos y conjuntos de prueba 5. Control de sesión y definición de reglas para el proceso de prueba Otra función de la plataforma es controlar las sesiones de diseño y ejecución de las pruebas y definir reglas que produzcan avisos para el probador en base a las mediciones de las pruebas realizadas. Por ejemplo: medir los tiempos de diseño y comparar con la efectividad alcanzada, definir un aviso para el diseñador cuando e nivel de cobertura sea bajo. Alcance del proyecto El alcance del producto que se desarrollará dentro del proyecto será variable, según la estimación de esfuerzo que se realizará al comienzo del proyecto y los recursos disponibles. Las funciones definidas se pueden separar en tres grupos 1-2, 3 y 4-5. El alcance del desarrollo puede incluir uno o varios de estos grupos de funcionalidad según el tamaño del equipo de desarrollo. También los modelos de ejecución definidos en la funcionalidad 3 son modulares y las métricas de control de la funcionalidad 4 pueden ampliarse o reducirse para ajustar el alcance del proyecto. La prioridad de los requerimientos funcionales del producto esta dada por el orden dado en la sección anterior. Puntos de investigación Para la construcción de esta plataforma de prueba, se debe profundizar en dos áreas de conocimiento distintas. Por un lado en el área de ingeniería de software, para poder modelar el proceso de prueba. En segundo lugar en la tecnología de software que permita construir la arquitectura del producto dada las restricciones del mismo. Ingeniería de software Profundizar en el proceso de prueba de software para modelar sus actividades. Identificar métricas relevantes para gestionar el proceso de prueba. Investigar sobre criterios de cobertura, evaluación y ejecución de pruebas. Tecnología de software Investigar mecanismos que faciliten la interacción con el usuario en un entorno distribuido y con poco esfuerzo de instalación. Por ejemplo HTML generado dinámicamente, junto con componentes AJAX o Flash. Modelado de datos para el repositorio de casos de prueba. Interacción con otros programas para ejecución de las pruebas. Uso del producto La plataforma tiene como objetivo utilizarse académicamente para una investigación empírica sobre efectividad de técnicas de prueba de software. La realización de experimentos controlados en ingeniería de software es muy costosa ya que requiere que un número grande de personas apliquen cierta técnica de diseño de casos para luego recolectar y análisis los casos de prueba generados. La gestión del proceso de prueba, en particular en el registro y evaluación de los casos, es una actividad que se realiza de forma poco sistemática y sin herramientas de apoyo en las organizaciones productoras de software. Esta plataforma puede ser usada industrialmente por equipos de desarrollo de software para apoyar las actividades de prueba.