Empresa Financiera Herramientas de SW Servicios Resulta importante mencionar que ésta es una empresa cuya actividad principal está enfocada a satisfacer las necesidades financieras de los clientes, a través de productos y servicios bancarios, utilizado las herramientas de software como un medio para brindar estos productos y servicios de manera confiable y eficiente Ciertamente el proceso actual de pruebas de Software en la empresa que represento aun se encuentra en un nivel poco maduro, en relación con otras empresas dedicadas al desarrollo de software, sin embargo el área de calidad ha evolucionado constantemente, siempre tratando de minimizar los errores en producción y en pro de garantizar la continuidad del negocio. Siendo las pruebas parte fundamental en la cadena de valor del desarrollo de software para minimizar el riesgo de errores o fallas antes de que los sistemas sean utilizados por los usuarios o clientes finales, convirtiéndose éste en el propósito y alcance de dicho proceso en el ciclo de vida de un proyecto de software. Verificar la calidad y funcionamiento de los desarrollos y mantenimientos de los sistemas y encontrar las deficiencias y fallas de los mismos antes de su liberación a producción son los objetivos primordiales del proceso. Han existido en la empresa factores que han contribuido a minimizar el protagonismo del proceso de calidad de software: La falta de cultura entre muchos desarrolladores sobre la importancia de las pruebas de software. Los costos necesarios que se deben invertir en la calidad del software. El “time to market” Las actividades que se desarrollan dentro del Departamento de Gestión de Calidad son las siguientes: 1. Revisión de Documentación 2. Ejecución Pruebas de Aceptación Documento en el que se diseñan casos de pruebas, éstos a su vez están conformados por escenarios de pruebas, los cuales será ejecutados, en una etapa posterior. Este es el único documento que se revisa de manera formal, como parte del las actividades del área de Gestión de Calidad, sin embargo al llevar a cabo la revisión del plan de pruebas, debe revisarse indirectamente los documentos: Especificación de Requerimientos de Sistema. Especificación de Requerimientos de Software (Diagrama de Casos de Uso, Casos de Uso en Modelo Extendido). Objetivo de la Revisión En la revisión se amplia y se mejora el plan de pruebas tomando como referencia los documentos mencionados. Lo que se busca en ésta revisión es que se estén cubriendo todos los posibles escenarios a probar, se define las prioridades de los escenarios y se asegura que el documento cumpla con los estándares tanto de forma como de fondo, definidos por la empresa. Además de acuerdo a la cantidad de escenarios que conformen el plan de pruebas, se realiza la estimación del tiempo que se requiere para posteriormente ejecutar las pruebas. La estrategia para ejecutar las pruebas, constituye en la ejecución de los casos de prueba diseñados en el plan de pruebas y algunas otras pruebas que no hayan sido documentadas, pero que partiendo de la experiencia pueden aportar valor. Las pruebas se realizan prácticamente en la etapa final del desarrollo, antes de salir a producción. Una vez que el proyecto se encuentre en ésta etapa, se realiza la coordinación con el analista y el líder de negocio para la ejecución de las pruebas. Las pruebas se ejecutan en un ambiente de pruebas, el cual es similar al ambiente de producción. Este ambiente es previamente configurado y solicitado por el analista, a un área dedicada a administrar las versiones de ambientes y servidores de prueba. En paralelo con ésta actividad el analista debe preparar los datos de pruebas que se requieren para la ejecución de las pruebas. La ejecución de las pruebas se lleva a cabo en conjunto con el analista programador y el líder de negocio que valida que la aplicación cumpla con lo definido y acordado en los requerimientos en la etapa de diseño. En caso de que se identifiquen errores o deficiencias de la aplicación que se está evaluando, se reporta al analista programador y se documenta para poder darle seguimiento a los incidentes detectados. El proyecto se devuelve a la etapa de programación para que los defectos sean corregidos. Una vez que el analista corrige los defectos identificados, debe ejecutase nuevamente las pruebas cuyo resultado no fue satisfactorio, en caso de que sea requerido se repiten otras pruebas adicionales para garantiza que las correcciones no afectaran la funcionalidad ya certificada exitosamente. Una vez finalizada la revisión y certificada la aplicación en conformidad con los requerimientos y concepciones reales del diseño, se procede a dar el visto bueno para seguir el flujo de desarrollo y finalmente que el proyecto salga a producción. No existe un proceso de pruebas definido y publicado para la organización. Resistencia al proceso de pruebas, calidad versus tiempo de entrega. Documentos de Requerimientos de Sistema y Documento de Requerimientos de Software mal diseñados. No hay repositorios eficaces para la documentación de los casos de prueba que permitan la reutilización de los mismos. Ambientes de prueba limitados e insuficientes. Problemas con la conectividad con terceros y disponibilidad de ambientes de prueba de terceros. No existen estándares visuales documentados para la interfaz de las aplicaciones con los usuarios. El proceso de pruebas se ejecuta en las etapas finales del proyecto. Datos de prueba difíciles de recolectar. Falta de administración de defectos. Disponibilidad de recursos (Gestores de Calidad). versus demanda. Baja calidad del software. No hay seguimiento de las mejoras recomendadas en el proceso de pruebas para futuros proyectos. No se cuenta con herramientas automatizadas para la ejecución de pruebas. El proceso de pruebas se ejecuta en las etapas finales del proyecto. Las pruebas que realiza el departamento de Gestión de Calidad son pruebas de caja negra. Las pruebas de caja negra por su lado, son parte integral del proceso de Desarrollo que se lleva a cabo en la empresa, por lo que ocupan un lugar preponderante. Entrada Salidas Funciones Pruebas de Caja Negra: Dentro de esta categoría existen una serie de tipos de pruebas, entre las que se mencionan: Pruebas Funcionales Pruebas de Regresión Pruebas de Valores Límite Pruebas de Integración Pruebas Funcionales Evalúan el conjunto de características y capacidades de los componentes del sistema. Aseguran el trabajo apropiado de los requisitos funcionales, incluyendo la navegación, entrada de datos, procesamiento y obtención de resultados. Se verifica lo siguiente: Que se aplique apropiadamente cada regla de negocio. Que los resultados esperados ocurran cuando se usen datos válidos. Que sean desplegados los mensajes apropiados de error y precaución cuando se usan datos inválidos. Pruebas de Regresión Son una estrategia de prueba en la cual las pruebas que se han ejecutado anteriormente se vuelven a realizar, esta vez, sobre en una nueva versión modificada del producto de software. Estas pruebas buscan asegurar la calidad después de añadir la nueva funcionalidad a un componente que se había evaluado anteriormente. El propósito de estas pruebas es asegurar que: Los defectos identificados en la ejecución anterior de la prueba se ha corregido. Los cambios realizados no han introducido nuevos defectos o reintroducido defectos anteriores. Pruebas de Valores Límites Pruebas diseñadas para evaluar el manejo de error con valores límites o valores extremos. Si una condición de entrada está en un rango de valores entre A y B, se deben diseñar pruebas para los límites A y B, así como para los valores dentro de los límites y por encima de estos. Pruebas de Integración Las pruebas de integración se llevan a cabo durante la construcción del sistema, involucran a un número creciente de módulos y terminan probando el sistema como conjunto. Se prueban todos los módulos asociados. Se realizan con el fin de encontrar fallos en las interfaces entre nuestro sistema y otros con los que interacciona. Pruebas de Carga de Ambiente Estas pruebas son ejecutadas por los analistas programadores, no por el área de Gestión de Calidad. Las pruebas de carga estudian el programa o componente de software en condiciones limitadas de volumen, estrés y almacenaje. Se utiliza la herramienta WebLoad para ejecutar éstas pruebas. Pruebas de Caja Blanca Son llamadas también caminatas de código. Estas pruebas no son ejecutadas por los Gestores de Calidad, sino son implementadas por los Líderes Técnicos, con ellas se valida la lógica de implementación en el código fuente programado o modificado por sus subalternos. Actualmente en la ejecución de pruebas, no se están utilizando herramientas automatizadas, sin embargo se está evaluando la necesidad de las mismas y analizando las siguientes: ARCAD Software VERIFIER EXTRACT RATIONAL IBM Rational Robot ORIGINAL SOFTWARE 1 Qualify 2. Test-bench 3. Test-drive Tal y como participa actualmente el área de Gestión de Calidad en el proceso de desarrollo, las métricas se obtienen tomado como referencia lo siguiente: Satisfacción del Cliente (mediante una encuesta sobre el servicio recibido). Existe un SLA (Service Level Agreement) de tiempo definido para la atención de los servicios de Gestión de Calidad. Dado que el software es uno de los activos más importantes para la operativa de la empresa y con el debe garantizarse la continuidad del negocio, esto ha propiciando un mayor apoyo de las otras gerencias al área de Calidad de Software. Por esta razón se realizó un análisis exhaustivo sobre las necesidades de la empresa en relación a la calidad del software y el nivel de madurez en éste campo. Como resultado de éste análisis se propuso un nuevo proceso de Calidad de Software, siguiendo el esquema de Centro de Excelencia (CoE), este es un proceso robusto y maduro, el cual se ajusta a las necesidades de cada área de desarrollo. Objetivo del Proceso: Lograr que los productos se entreguen con niveles consistentes de calidad. Que la funcionalidad de los productos cumpla con las expectativas de los clientes. Verificar que los requerimientos tengan un nivel de cumplimiento con los objetivos definidos por el cliente. Validar la funcionalidad de los módulos, sistemas e interfaces definidas dentro del alcance del proyecto.