METODOLOGA PARA LA REALIZACIN DE PRUEBAS DE SOFTWARE
Juan David Rodrguez Jaramillo
Paula Andrea Lpez Gutirrez
Trabajo de grado para optar al ttulo de Ingeniero de Sistemas
Asesor RAFAEL RINCN BERMDEZ Magster en Matemticas Aplicadas Magster en Sistemas de Calidad
DEPARTAMENTO DE INFORMATICA Y SISTEMAS ESCUELA DE INGENIERA UNIVERSIDAD EAFIT MEDELLN 2004 TABLA DE CONTENIDO INTRODUCCIN ............................................................................................................. 6 1. QU ES CALIDAD................................................................................................... 9 2. QU SON LAS PRUEBAS................................................................................... 12 3. IMPORTANCIA DE LAS PRUEBAS DE SOFTWARE..................................... 13 4. FUNDAMENTOS DE LAS PRUEBAS DE SOFTWARE.................................. 16 5. TCNICAS DE DISEO DE CASOS DE PRUEBAS ...................................... 18 6. ESTRATEGIAS DE PRUEBA DEL SOFTWARE.............................................. 32 6.1 Pruebas de unidad ............................................................................................. 32 6.2 Pruebas de integracin...................................................................................... 33 7. LOS MODELOS INTERNACIONALES Y LAS PRUEBAS.............................. 34 8. METODOLOGA DE PRUEBAS DE SOFTWARE ........................................... 38 FASE 1: PLANEAR....................................................................................................... 39 1. RECOLECCIN DE INFORMACIN................................................................. 40 1.1 Preparacin de la entrevista .............................................................................. 40 1.1.1 Identificar los participantes....................................................................... 40 1.1.2 Definir la Agenda...................................................................................... 41 1.2 Desarrollo de la entrevista ................................................................................ 41 1.2.1 Entender el proyecto ................................................................................. 42 1.2.2 Entender los objetivos del proyecto.......................................................... 43 1.2.3 Entender la planeacin del proyecto......................................................... 43 1.2.4 Conocer la metodologa de desarrollo ...................................................... 44 1.2.5 Conocer las reglas de negocio................................................................... 45 1.2.6 Anlisis de riesgos .................................................................................... 46 1.3 Reporte de resultados........................................................................................ 46 1.3.1 Resumen de la entrevista .......................................................................... 46 1.3.2 Resultados de la entrevista........................................................................ 47 2. PLANEACIN DE LAS PRUEBAS..................................................................... 48 2.1 Definir el identificador del plan........................................................................ 48 2.2 Preparar la introduccin.................................................................................... 49 2.3 Identificar los requerimientos ........................................................................... 49 2.4 Identificar los tipos de prueba........................................................................... 50 2.5 Identificar cundo terminar las pruebas............................................................ 51 2.6 Establecer la estrategia de pruebas de regresin............................................... 52 2.7 Definir los entregables ...................................................................................... 52 2.8 Organizar el equipo de pruebas......................................................................... 54 2.9 Establecer el ambiente de pruebas .................................................................... 55 2.10 Seleccionar las herramientas de pruebas........................................................... 56 2.11 Programar las pruebas....................................................................................... 56 2.12 Establecer los procedimientos para el registro de errores................................. 56 2.13 Definicin de los objetivos de las mtricas....................................................... 58 2.14 Revisar y aprobar el diseo............................................................................... 60 2.14.1 Programar y preparar la revisin............................................................... 60 2.14.2 Aprobacin................................................................................................ 61 FASE 2: HACER ........................................................................................................... 62 3. DISEO DE CASOS DE PRUEBA. .................................................................... 63 2 3.1 Disear las pruebas de funcin. ........................................................................ 63 3.1.1 Refinar los requerimientos de pruebas funcionales. ................................. 63 3.1.2 Construir una matriz de funcin/prueba ................................................... 66 3.2 Disear pruebas de GUI. (Interfaz grfica de usuario) ..................................... 67 3.2.1 Definir componentes GUI de la aplicacin............................................... 68 3.2.2 Disear pruebas de GUI............................................................................ 70 3.3 Definir las pruebas de sistema y de aceptacin. ............................................... 71 3.3.1 Identificar las pruebas potenciales del sistema ......................................... 71 3.3.2 Disear pruebas de fragmentos del sistema. ............................................. 73 3.3.3 Identificar pruebas potenciales de Aceptacin ......................................... 73 3.4 Revisar y aprobar el diseo............................................................................... 74 3.4.1 Programar y preparar la revisin............................................................... 74 3.4.2 Aprobacin................................................................................................ 74 4. DESARROLLO DE LAS PRUEBAS.................................................................... 75 4.1 Desarrollar formatos de pruebas ....................................................................... 75 4.1.1 Desarrollar formatos de pruebas de GUI .................................................. 75 4.1.2 Desarrollar formatos de las pruebas de fragmentos del sistema............... 76 4.2 Revisar y aprobar el desarrollo de las pruebas.................................................. 77 4.2.1 Programar y preparar la revisin............................................................... 77 4.2.2 Aprobacin................................................................................................ 77 FASES 2 y 3: HACER Y VERIFICAR......................................................................... 78 5. EVALUACIN Y EJECUCIN DE LAS PRUEBAS. ........................................ 79 5.1 Ejecucin y Documentacin de las pruebas. (HACER) .................................. 79 5.1.1 Ejecucin de las pruebas de regresin. ..................................................... 79 5.1.2 Ejecutar una nueva sesin de pruebas....................................................... 80 5.1.3 Documentar los defectos arrojados por las pruebas.................................. 80 5.2 Evaluacin de las pruebas. (VERIFICAR) ...................................................... 81 5.2.1 Analizar las mtricas................................................................................. 81 5.2.2 Refinar el cronograma de pruebas. ........................................................... 82 5.2.3 Identificar los cambios en requerimientos. ............................................... 83 FASE 4: ACTUAR.......................................................................................................... 84 6. PREPARAR LAS SIGUIENTES PRUEBAS...................................................... 85 6.1 Refinar las pruebas............................................................................................ 85 6.1.1 Actualizar la matriz funcin / prueba....................................................... 85 6.1.2 Actualizar las pruebas de fragmentos del sistema. ................................... 85 6.1.3 Actualizar las pruebas de aceptacin. ....................................................... 85 6.2 Examinar el equipo y el ambiente de pruebas .................................................. 86 6.2.1 Evaluar el equipo de prueba...................................................................... 86 6.2.2 Evaluar el ambiente de pruebas ................................................................ 86 6.3 Publicar reportes intermedios ........................................................................... 87 FASES 1,2,3 y 4: PLANEAR, HACER, VERIFICAR Y ACTUAR........................... 90 7. DIRIGIR LAS PRUEBAS DEL SISTEMA........................................................... 91 7.1 Completar el plan de pruebas del sistema......................................................... 91 7.1.1 Finalizar los tipos de prueba del sistema .................................................. 91 7.1.2 Programar pruebas del sistema ................................................................. 92 7.1.3 Equipo para las pruebas del sistema ......................................................... 92 3 7.1.4 Estabilizar el ambiente de pruebas:........................................................... 93 7.2 Tipos de pruebas del sistema ............................................................................ 94 7.2.1 Pruebas de rendimiento............................................................................. 94 7.2.2 Pruebas de seguridad................................................................................. 96 7.2.3 Pruebas de volumen.................................................................................. 97 7.2.4 Pruebas de estrs....................................................................................... 97 7.2.5 Pruebas de compatibilidad........................................................................ 97 7.2.6 Pruebas de Documentacin....................................................................... 98 7.2.7 Pruebas de Backup y Recuperacin.......................................................... 99 7.2.8 Pruebas de instalacin............................................................................... 99 7.3 Revisar y aprobar las pruebas del sistema. ....................................................... 99 7.3.1 Programar y preparar la revisin............................................................... 99 7.3.2 Aprobacin.............................................................................................. 100 7.4 Ejecutar las pruebas del sistema ..................................................................... 100 7.4.1 Volver a probar fallos anteriores del sistema.......................................... 100 7.4.2 Ejecutar las pruebas del sistema. ............................................................ 101 7.4.3 Documentar los defectos arrojados por las pruebas................................ 101 8. DIRIGIR LAS PRUEBAS DE ACEPTACIN................................................... 102 8.1 Completar la planeacin de las pruebas de aceptacin. .................................. 102 8.1.1 Identificar los tipos de pruebas de aceptacin. ....................................... 102 8.1.2 Finalizar el cronograma de las pruebas de aceptacin............................ 102 8.1.3 Organizar el equipo de pruebas de aceptacin........................................ 104 8.1.4 Establecer el ambiente de pruebas de aceptacin. .................................. 104 8.1.5 Instalar las herramientas para las pruebas de aceptacin........................ 105 8.2 Completar los casos de pruebas de aceptacin. .............................................. 106 8.2.1 Identificar el subconjunto de pruebas del sistema que se utilizarn para pruebas de aceptacin. ............................................................................................ 106 8.2.2 Disear y escribir pruebas de aceptacin adicionales............................. 107 8.3 Revisar el plan de pruebas de aceptacin. ...................................................... 107 8.3.1 Programar y llevar a cabo la revisin. .................................................... 107 8.3.2 Aprobar el plan de pruebas de aceptacin. ............................................. 108 8.4 Ejecutar las pruebas de aceptacin. ................................................................ 108 8.4.1 Ejecutar las pruebas de aceptacin de los errores encontrados en las pruebas anteriores. .................................................................................................. 108 8.4.2 Ejecutar las actuales pruebas de aceptacin............................................ 109 8.4.3 Documentar los defectos de aceptacin. ................................................. 110 9. RESUMEN DE PRUEBAS Y REPORTE FINAL............................................. 111 9.1 Resumen y consolidacin de la informacin de pruebas. ............................... 111 9.1.1 Pruebas ejecutadas y terminadas............................................................. 111 9.1.2 Consolidar los errores por casos de prueba y funciones. ........................ 111 9.1.3 Documentar errores no corregidos.......................................................... 111 9.2 Reporte final.................................................................................................... 112 9.2.1 Resumir las actividades y eventos durante el desarrollo de las pruebas. 112 9.3 Crear y analizar grficos de mtricas.............................................................. 112 9.4 Conclusiones y Recomendaciones.................................................................. 120 9.4.1 Programar y preparar la revisin............................................................. 120 4 9.4.2 Aprobacin.............................................................................................. 120 CONCLUSIONES......................................................................................................... 122 BIBLIOGRAFA........................................................................................................... 125
5
INTRODUCCIN
Actualmente en la mayora de empresas desarrolladoras de software se est elaborando y entregando software que presenta una gran cantidad de errores, si bien es un problema que se puede presentar por diversas razones como las malas prcticas de programacin o un proceso a veces desorganizado que se lleva en la construccin del software, entre otros, es un problema que crece cada vez ms, en la medida en que no se aplica un completo y efectivo proceso de pruebas en ninguna de las fases del desarrollo, permitiendo as que los productos tengan errores y no satisfagan completamente los requerimientos del usuario. Esto afecta en gran medida los procesos que se llevan a cabo tanto en la empresa desarrolladora como en el cliente y finalmente la imagen proyectada a ste.
Los procesos de ambas empresas (desarrolladora y cliente) se ven afectados ya que frecuentemente se ve la necesidad de devolver los productos que supuestamente han sido terminados exitosamente, debido a que presentan varios tipos de errores, estos pueden ser tan pequeos que simplemente se tienen en cuenta para futuras entregas, o pueden ser tan graves que afecten la funcionalidad del sistema e impliquen hacer un reproceso del desarrollo que haba sido llevado a cabo con anterioridad, lo que hace que no se entregue el trabajo a tiempo y que se acumulen otros y por ende que aumenten los costos, no slo para el cliente sino tambin para la empresa.
Finalmente, se observa que los problemas que se generan durante todas las fases del desarrollo y que generan los errores y el no cumplimiento de los requerimientos iniciales, se ven aumentados con la falta de una metodologa clara para la realizacin de pruebas del software. Esto hace que los productos no sean correctos ni confiables.
6 Por tanto, es indispensable implementar una metodologa clara y que se pueda integrar con la diferentes metodologas de desarrollo para lograr detectar y corregir las fallas y problemas durante las distintas fases del ciclo de vida del software, y lograr as cumplir con los requerimientos especificados para los productos.
En este proyecto, se contemplan varios aspectos relacionados con la realizacin de pruebas antes del desarrollo de la metodologa.
En los primeros captulos, se hablar del concepto de calidad de software y la importancia que tiene sta en los proyectos y productos desarrollados. Se habla tambin acerca de qu son las pruebas de software, los principios y los objetivos de las pruebas y las tcnicas de diseo de los casos de prueba como son: pruebas de caja blanca, caja negra, etc.
En el capitulo 6, trataremos acerca de los modelos internacionales y las pruebas, y cmo las caractersticas mencionadas se relacionan con la metodologa propuesta.
Por ltimo, se explican cada uno de los pasos de la metodologa desarrollada, basada en el ciclo PHVA, Planear, Hacer, Verificar y Actuar.
La fase Planear, comienza con la definicin de los objetivos de las pruebas o lo que se espera como resultado del proceso de pruebas. Se describen los elementos de la estrategia de pruebas y el plan de pruebas.
La fase Hacer, describe como disear y ejecutar los casos de pruebas incluidos en el plan de pruebas.
7 La fase Verificar, comprende la importancia de la evaluacin, las mtricas y los reportes. En este punto se analizan los resultados que han arrojado los casos de prueba ejecutados.
La fase Actuar, provee la gua para la actualizacin o realizacin de los casos de prueba. Tambin sobre mejoras en los procesos o preparacin para un nuevo ciclo de pruebas.
8 1. QU ES CALIDAD
La calidad es un aspecto especialmente importante en el desarrollo de software. El inters por la calidad es cada vez mayor, ya que los clientes se vuelven ms selectivos y comienzan a rechazar los productos poco fiables o que realmente no dan respuesta a sus necesidades.
A la hora de definir la calidad del software se pueden adoptar diferentes conceptos.
La calidad del software es el grado con el que un sistema, componente o proceso cumple los requerimientos especificados y las necesidades o expectativas del cliente o usuario 1
Concordancia con los requerimientos funcionales y de rendimiento explcitamente establecidos, con los estndares de desarrollo explcitamente documentados y con las caractersticas implcitas que se espera de todo software desarrollado profesionalmente. 2
El estndar de la IEEE para la calidad de software define el trmino calidad del software como: 3
La totalidad de rasgos y caractersticas de un producto de software que se refieren a su habilidad para satisfacer necesidades especficas.
El grado en el cual el software posee una combinacin deseada de atributos.
1 IEEE, Std. 610-1990. 2 Pressman, Roger S. Ingeniera del software Un enfoque prctico. Quinta Edicin. 2002. 3 IEEE Std 729 1983. Glossary of Software Engineering Terminology 9 El grado en el cual un usuario o cliente percibe que el software cumple con sus expectativas.
Las caractersticas del software que determinan el grado en el cual dicho software en uso cumple con las expectativas del cliente.
Capacidad del producto software para satisfacer los requisitos establecidos 4
Lo que est claro a partir de estas definiciones es que la calidad es algo relativo. Siempre va a depender de los requisitos o necesidades que se desee satisfacer. Por eso, la evaluacin de la calidad de un producto siempre va a implicar una comparacin entre unos requisitos preestablecidos y el producto realmente desarrollado.
Tambin es importante diferenciar entre la calidad del producto de software y la calidad del proceso de desarrollo. Las metas que se establezcan para la calidad del producto van a determinar las metas a establecer para la calidad del proceso de desarrollo, ya que la calidad del producto va a estar en funcin de la calidad del proceso implementado. Sin un buen proceso de desarrollo es casi imposible obtener un buen producto.
Es importante destacar que la calidad de un producto software debe ser considerada en todos sus estados de evolucin (especificaciones, requerimientos, anlisis, diseo, cdigo, ...). La meta es por consiguiente prevenir defectos o inconsistencias desde los primeros pasos o etapas del desarrollo. Para esto se deben seguir procesos asociados en alguna metodologa de desarrollo. La Calidad de un producto de software no se consigue evaluando ste cuando ya est terminado completamente, cuando los problemas de calidad ya no tienen solucin o la solucin es muy costosa.
4 DoD 2168 10 El aseguramiento de la calidad rebaja los costos del desarrollo debido a que los defectos se encuentran ms rpido y pueden ser corregidos. Aunque al principio requiere mayor inversin, a largo plazo va a generar productos con mayor calidad y menos costos de soporte y mantenimiento
El costo total del aseguramiento de la calidad se puede ver como la suma de cuatro componentes, el primero es el costo de la prevencin, es decir, de las acciones que se realizan para prevenir defectos en las etapas del desarrollo; el segundo, es el costo de inspeccin, son aquellas acciones en que se mide, se evala y se auditan los productos para que cumplan con los estndares y especificaciones; el tercer componente es el costo que generan las fallas y los errores encontrados antes de liberar el producto; y por ltimo el costo de los errores que se detectan despus de liberado el producto. stos pueden ser los ms graves, ya que deterioran la imagen de la compaa.
11 2. QU SON LAS PRUEBAS
Los procesos de prueba o testing son una herramienta que asegura que un sistema hace lo que tiene que hacer. Probar es una prctica habitual de todo proceso productivo, que bsicamente consiste en comprobar que un producto tiene las caractersticas deseadas. Prcticamente todos los productos que llegan al mercado son probados: se "prueban" los materiales que van a forma parte de un producto, se "prueba" que las partes a ensamblar tienen las dimensiones adecuadas y se "prueba", por ejemplo, que el producto final tiene la resistencia adecuada. Es decir, a lo largo del proceso productivo de cualquier producto se hacen comprobaciones que hacen que el producto final sea el adecuado.
En el caso del software ocurre lo mismo. El proceso de desarrollo de software consta de una serie de etapas. En cada etapa se van desarrollando y ensamblando partes que al final van a conformar el producto final. Al igual que ocurre en un proceso productivo normal, cada una de estas partes debe ser "probada". Al igual que ocurre en un proceso productivo, la naturaleza y el tipo de pruebas a realizar con el software vara a media que el desarrollo avanza.
12 3. IMPORTANCIA DE LAS PRUEBAS DE SOFTWARE
El software se ha convertido en la base de los negocios modernos y de la interconexin entre los miembros de una sociedad, pues se encuentra estrechamente unido a todos los aparatos de nuestra vida cotidiana, por esta razn, es necesario desarrollar software con calidad que se adapte a los requerimientos de los usuarios para ser ms competitivos en el medio en que se desenvuelven.
A medida que los equipos de desarrollo de software crecen y los proyectos se vuelven ms complejos, las pruebas de calidad en aplicaciones evolucionan mucho ms all de simplemente depurar la aplicacin para posteriormente migrarla a produccin.
Los sistemas actuales han crecido en tamao, complejidad e importancia, cada vez se hacen menos frecuentes los proyectos donde una sola persona es la encargada de crear todo un sistema. Ahora se necesita todo un equipo de personas que siguen alguna metodologa. En resumen, cada vez se hace ms difcil crear y dar mantenimiento a un sistema, y an es ms difcil crear un sistema con la calidad que requiere el ambiente altamente competitivo de las organizaciones.
Para cualquier metodologa, la fase de Pruebas de Software es la actividad ms visible en el proceso de Aseguramiento de la Calidad en Software, la cual quiz sea la parte ms crtica en un proyecto de desarrollo. No se trata de inspeccionar rpidamente los mens de una aplicacin, no se trata de detectar algn defecto, se trata de asegurarse que el producto satisface las necesidades del cliente anticipndose a la aparicin de algn error.
Este es el objetivo principal de un proceso de pruebas de software: documentar el error, localizarlo, buscar sus causas, repararlo y generar acciones para 13 prevenirlos. Las pruebas a un programa pueden revelar la presencia de algn defecto, pero nunca su ausencia, una prueba con xito ser la que encuentre algn error antes de que lo haga el usuario final.
En muchas de las empresas de software, el proceso de pruebas se realiza mientras se est construyendo la aplicacin, pocas tienen definida una metodologa propia para esta fase, pues requiere de una considerable cantidad de tiempo, esfuerzo y recursos.
En el mundo de la computacin tan cambiante de hoy, y sobre todo de gran evolucin tecnolgica, y en vista de las exigencias que ha trado la globalizacin, se ha hecho necesario desarrollar metodologas para asegurar la calidad de los productos de software y obtener un mejoramiento continuo de todos los procesos relacionados con el desarrollo de software.
El desarrollo de software tiene slo algunas dcadas; mientras los constructores tienen procedimientos bien establecidos, la industria del software est an definiendo sus caminos, buscando la manera adecuada de desarrollarse. Considerar las propuestas basadas en la experiencia de los dems nos permitir desarrollarnos con mayor velocidad; por ello hablaremos de las ltimas tendencias de las pruebas de software.
Anteriormente, las pruebas de software se consideraban slo una actividad que realizaba el programador para encontrar fallas en sus productos; con el paso de los aos se ha determinado la importancia que tienen para garantizar el tiempo, el costo y la calidad del producto, de tal forma que actualmente comprende un proceso cuyo propsito principal es evaluar la funcionalidad del software respecto de los requerimientos establecidos al inicio.
El proceso de realizacin de pruebas se percibe con frecuencia como un proceso problemtico e incontrolable. Realizar pruebas conlleva mucho ms 14 tiempo, cuesta mucho ms de lo planeado y ofrece insuficiente informacin sobre la calidad del proceso de pruebas y, por lo tanto, de la calidad del sistema de informacin que est siendo probado, as como de los riesgos para el proceso de negocio en s mismo. Pero, qu se puede hacer al respecto?
Muchas organizaciones se dan cuenta de que mejorar el proceso de pruebas puede resolver estos problemas. Sin embargo, en la prctica, resulta difcil definir qu pasos se deben realizar para mejorar y controlar dicho proceso, y en qu orden deben ser realizados.
La prueba es un elemento crtico para la calidad del software. La importancia de los costos asociados con los errores promueve la definicin y aplicacin de un proceso de pruebas minuciosas y bien planificadas. Las pruebas permiten validar y verificar el software, entendiendo como validacin del software el proceso que determina si el software satisface los requisitos, y verificacin como el proceso que determina si los productos de una fase satisfacen las condiciones de dicha fase.
En este proyecto se pretende aclarar cmo debe ser el proceso de realizacin de pruebas de software con el fin de lograr productos de alta calidad en las empresas.
15 4. FUNDAMENTOS DE LAS PRUEBAS DE SOFTWARE
OBJETIVOS DE LAS PRUEBAS.
1. La prueba es el proceso de ejecucin de un programa con la intencin de descubrir un error. 2. Un buen caso de prueba es aquel que tiene una alta probabilidad de mostrar un error no descubierto hasta entonces. 3. Una prueba tiene xito si descubre un error no detectado hasta entonces.
Los objetivos anteriores quitan la idea que normalmente se tiene de que una prueba tiene xito si no descubre errores.
Si la prueba se lleva a cabo con xito (de acuerdo a lo establecido anteriormente), descubrir errores en el software. Adicionalmente, la prueba demuestra hasta qu punto las funciones del software parecen funcionar de acuerdo con las especificaciones y parecen alcanzar los requisitos de rendimiento. Adems, los datos que se van recogiendo a medida que se lleva a cabo la prueba proporcionan una buena indicacin de la fiabilidad del software.
PRINCIPIOS DE LAS PRUEBAS
Antes de comenzar el proceso de pruebas, se deben entender los principios bsicos que guan las pruebas del software, a continuacin se presenta un conjunto til de principios de prueba:
A todas las pruebas se les debera poder hacer un seguimiento hasta los requisitos del cliente. Como se ha visto hasta ahora, el objetivo de las pruebas del software es descubrir errores. Se entiende que los defectos 16 ms graves (desde el punto de vista del cliente) son aquellos que impiden al programa cumplir sus requisitos. Las pruebas deberan planificarse mucho antes de que empiecen. La planificacin de las pruebas puede empezar cuando este completo el modelo de requisitos. La definicin detallada de los casos de prueba puede empezar cuando el modelo de diseo se haya terminado. Por tanto, se pueden planificar y disear las pruebas antes de generar ningn cdigo. El principio de Pareto es aplicable a la prueba del software. El principio de Pareto implica que al 80% de todos de todos los errores descubiertos durante las pruebas se les puede hacer un seguimiento hasta un 20% de todos los mdulos del programa. El problema es aislar los mdulos defectuosos y probarlos concienzudamente. Las pruebas deberan empezar por lo pequeo y progresar hacia lo grande. Las primeras planeadas y ejecutadas se centran generalmente en mdulos individuales del programa. A medida que avanzan las pruebas, el objetivo se centra en encontrar errores en grupos integrados de mdulos y finalmente en el sistema entero. No son posibles las pruebas exhaustivas. El nmero de permutaciones de caminos para incluso un programa de tamao moderado es excepcionalmente grande. Por este motivo, es imposible ejecutar todas las combinaciones de caminos durante las pruebas. Sin embargo, es posible cubrir adecuadamente la lgica del programa y asegurarse de que se han aplicado todas las condiciones en el diseo a nivel de componente. Para ser ms eficaces, las pruebas deberan ser realizadas por un equipo independiente. Al decir eficaces se refiere a realizar pruebas con la ms alta probabilidad de encontrar errores, las cuales no son buenas si son ejecutadas por los creadores del programa.
17 5. TCNICAS DE DISEO DE CASOS DE PRUEBAS
El diseo de casos de prueba est totalmente influenciado por la imposibilidad de probar exhaustivamente el software, por lo que las tcnicas de diseo de casos de prueba tienen como objetivo conseguir una confianza aceptable en que se detectarn los defectos o errores existentes (ya que la seguridad total slo puede obtenerse de la prueba exhaustiva, que no es practicable) sin necesidad de consumir una cantidad excesiva de recursos. Toda la disciplina de pruebas debe moverse, por lo tanto, en un equilibrio entre la disponibilidad de recursos y la confianza que aportan los casos para descubrir los defectos existentes.
Ya que no se puede probar todas las posibilidades de funcionamiento del software, la idea fundamental para el diseo de casos de prueba consiste en elegir algunas de ellas que, por sus caractersticas, se consideren representativas del resto. As, se asume que si no se detectan defectos en el software al ejecutar dichos casos, podemos tener un cierto nivel de confianza en que el programa no tiene defectos. La dificultad de esta idea es saber elegir los casos que se deben ejecutar, por lo que es necesario recurrir a ciertos criterios de eleccin, conociendo la funcin especfica para la que fue diseado el producto (pruebas de caja negra), o conociendo el funcionamiento del producto (pruebas de caja blanca).
18 Pruebas de caja blanca
Figura 1. Pruebas de Caja Blanca
Se llaman tambin pruebas estructurales, en este tipo, las condiciones de las pruebas son diseadas examinando el cdigo. El encargado de disear las pruebas se gua por la estructura del programa o sistema, examinando la lgica y sin tener en cuenta los requerimientos especficos. Luego de analizar el cdigo, se usa toda esta informacin sobre su estructura para derivar los datos de prueba.
El objetivo de este tipo de pruebas es elegir y recorrer una serie de importantes caminos lgicos y probar las estructuras de datos ms importantes.
En resumen, las pruebas de caja blanca usan la estructura de control del diseo procedimental para obtener los casos de prueba. Estos casos deben garantizar:
Que se ejercita por lo menos una vez todos los caminos independientes de cada mdulo. Que se ejerciten todas las decisiones lgicas en sus vertientes verdadera y falsa. Que se ejecuten todos los bucles en sus lmites operacionales. 19 Que se ejerciten las estructuras internas de datos para asegurar su validez.
El enfoque del diseo de casos debe basarse en la eleccin de caminos (se define camino como la secuencia de sentencias encadenadas desde la sentencia inicial del programa hasta su sentencia final) importantes que ofrezcan una seguridad aceptable en descubrir los defectos, y para ello se utilizan los diferentes criterios de cobertura lgica.
Una posible clasificacin de criterios de cobertura lgica es la siguiente:
Cobertura de sentencias: Se trata de generar los casos de prueba necesarios para que cada sentencia o instruccin del programa se ejecute al menos una vez.
Cobertura de decisiones: Consiste en escribir casos suficientes para que cada decisin tenga, por lo menos una vez, un resultado verdadero y, al menos una vez, uno falso. En general, una ejecucin de pruebas que cumple la cobertura de decisiones cumple tambin la cobertura de sentencias.
Cobertura de condiciones: Se trata de disear tantos casos como sea necesario para que cada condicin de cada decisin adopte el valor verdadero al menos una vez y el falso al menos una vez. No podemos asegurar que si se cumple la cobertura de condiciones se cumple necesariamente la de decisiones.
Criterios de decisin/condicin: Consiste en exigir el criterio de cobertura de condiciones obligando a que se cumpla tambin el criterio de decisiones.
20 Criterio de condicin mltiple: En el caso de que se considere que la evaluacin de las condiciones de cada decisin no se realiza de forma simultnea, se podra considerar que cada decisin multicondicional se descompone en varias decisiones unicondicionales. En este caso se debe conseguir que todas las combinaciones posibles de resultado (verdadero/ falso) de cada condicin en cada decisin se ejecuten al menos una vez.
La cobertura de caminos (secuencia de sentencias) es el criterio ms elevado que se puede plantear, es decir que cada uno de los posibles caminos del programa se debe ejecutar al menos una vez. Sin embargo el nmero de caminos en un programa pequeo puede ser impracticable para las pruebas, por lo que para reducir el nmero de caminos a probar, se habla del concepto de camino de prueba, que es un camino del programa que atraviesa, como mximo, una vez el interior de cada bucle que encuentra.
La idea en que se basa consiste en que ejecutar un bucle ms de una vez no supone una mayor seguridad de detectar defectos en l. Sin embargo, algunos especialistas recomiendan que se pruebe cada bucle tres veces, una sin entrar en su interior, otra ejecutndolo una vez y otra ms ejecutndolo dos veces. Esto ltimo es interesante para comprobar cmo se comporta a partir de los valores de datos procedentes, no del exterior del bucle (como en la primera iteracin), sino de las operaciones de su interior.
Si se trabaja con los caminos de pruebas, existe la posibilidad de cuantificar el nmero total de caminos utilizando algoritmos basados en matrices que representan el grafo de flujo del programa. As, existen diversos mtodos basados en ecuaciones, expresiones regulares y matrices que permiten tanto calcular el nmero de caminos como enumerar dichos caminos expresados como series de arcos del grafo de flujo. Saber cul es el nmero de caminos del grafo de un programa ayuda a planificar las pruebas y a asignar recursos a las 21 mismas, ya que indica el nmero de ejecuciones necesarias. Tambin sirve de comprobacin a la hora de enumerar los caminos.
Se destacan las siguientes variantes de pruebas de caja blanca:
Prueba del camino bsico: Es una tcnica para obtener casos de prueba. Permite obtener una medida de la complejidad lgica del diseo procedimental y usarla para definir un conjunto bsico de caminos de ejecucin que garanticen que cada sentencia del programa se recorre al menos una vez (cobertura de sentencias). Esta medida puede ser usada como gua a la hora de definir un conjunto bsico de caminos de ejecucin (diseo de casos de prueba).
Prueba de condicin: Tcnica de prueba de caja blanca que se centra en la prueba de cada una de las condiciones del programa. Las estrategias de prueba de condiciones tienen generalmente, dos ventajas. La primera, que la cobertura de la prueba de una condicin es sencilla. La segunda, que la cobertura de la prueba de las condiciones de un programa da una orientacin para generar pruebas adicionales del programa. El propsito de la prueba de condiciones es detectar, no slo los errores en las condiciones de un programa, sino tambin otros errores en dicho programa.
Prueba de flujo de datos: Tcnica de prueba de caja blanca que selecciona caminos de prueba de un programa de acuerdo con la ubicacin de las definiciones y los usos de las variables del programa. Dado que las sentencias de un programa estn relacionadas entre s de acuerdo con las definiciones de las variables, el enfoque de prueba de flujo de datos es efectivo para la proteccin contra errores.
22 Prueba de bucles: Tcnica de prueba de caja blanca que se centra exclusivamente en la validez de las construcciones de bucles, para lo cual distingue tratamientos para los diferentes bucles: bucles simples, bucles concatenados, bucles anidados y bucles no estructurados.
Pruebas de caja negra
Figura 2. Pruebas de Caja Negra
Tambin denominadas pruebas de comportamiento. Considera el sistema como una caja negra, cuyo comportamiento es determinado nicamente a partir de sus entradas y salidas. Estn diseadas basadas en la funcionalidad del producto, para qu fue creado y qu hace.
El encargado de realizar las pruebas de caja negra debe tener informacin de los datos de entrada y observar qu pasa con la respuesta o salidas del sistema, sin tener en cuenta cmo trabaja ste en su interior.
Una prueba de Caja Negra examina algunos aspectos del modelo fundamental del sistema sin tener mucho en cuenta la estructura lgica interna del software.
23 Tipos de errores que detecta:
Funciones incorrectas o ausentes. Errores de la interfaz. Errores en estructuras de datos o accesos a bases de datos. Errores de rendimiento. Errores de inicializacin y terminacin.
Las ventajas que presentan este tipo de mtodos de prueba son dos:
Reducen el nmero de casos de prueba que se deben disear. Detectan clases de errores en vez de errores simples.
Mtodo de la particin equivalente
Consiste en dividir el dominio de entrada de un programa en clases de datos, de los que se pueden generar casos de prueba. Los datos de entrada y los resultados de salida se pueden agrupar en clases diferentes, en las que todos los miembros de dicha clase estn relacionados.
Cada una de estas clases es una particin de equivalencia en la que el programa se comporta de la misma forma para cada miembro de la clase. Las clases de equivalencia pueden ser vlidas y no vlidas.
Se debe intentar dividir el dominio de entrada en un nmero finito de clases de equivalencia, tal que probar un valor representativo de cada clase es equivalente a probar cualquier otro valor, es decir: Si un caso de prueba es tal que en una clase de equivalencia detecta un error, todos los dems posibles casos de prueba en la misma clase detectarn el mismo error.
24 Si un caso de prueba no detecta error, podemos pensar que ningn otro caso de prueba en esa clase encontrar el error.
Identificacin de las clases de equivalencia.
Se identifican dividiendo en dos o ms grupos cada condicin de entrada, pueden ser:
Un valor numrico especfico. Un rango de valores. Nmero de valores. Un conjunto de valores relacionados: Una condicin booleana.
Mtodo basado en grafos El primer paso en la prueba de caja negra es entender los objetos que se modelan en el software (entendiendo por objeto a los objetos de datos y a los objetos de programa tales como subsistemas,.). Una vez que se ha llevado a cabo esto, el siguiente paso es definir una serie de pruebas que verifiquen que todos los objetos tienen entre ellos las relaciones esperadas. Dicho de otra manera, la prueba del software empieza creando un grafo de objetos importantes y sus relaciones, y despus diseando una serie de pruebas que cubran el grafo de manera que se ejerciten todos los objetos y sus relaciones para descubrir los errores.
Anlisis de valores lmite
Mediante la experiencia se ha podido constatar que los errores tienden a darse ms en los lmites del campo de entrada que en el centro. Por ello se ha desarrollado el anlisis de valores lmite como tcnica de prueba de caja negra, la cual lleva a una eleccin de casos de prueba que ejerciten los valores lmite, y 25 que complementa de esta manera la tcnica de particin equivalente. As en lugar de seleccionar cualquier elemento de una clase de equivalencia, esta tcnica lleva a la eleccin de casos de prueba en los extremos de la clase, y adems de centrarse solamente en las condiciones de entrada, se obtienen casos de prueba tambin para el campo de salida.
Prueba de comparacin
Hay situaciones en las que la fiabilidad del software es algo absolutamente crtica. En ese tipo de aplicaciones, a menudo se utiliza hardware y software redundante para minimizar la posibilidad de error. Cuando se desarrolla software redundante, varios equipos separados desarrollan versiones independientes de una aplicacin, usando las mismas especificaciones. En esas situaciones, se deben probar todas las versiones con los mismos datos de prueba, para asegurar que todas proporcionan una salida idntica. Luego, se ejecutan todas las versiones en paralelo y se hace una comparacin en tiempo real de los resultados, para garantizar la consistencia.
Con las lecciones aprendidas de los sistemas redundantes, los investigadores han sugerido que, para las aplicaciones crticas, se deben desarrollar versiones de software independientes, incluso aunque slo se vaya a distribuir una de las versiones en el sistema final basado en computadora. Esas versiones independientes son la base de esta tcnica de prueba de caja negra. Si las salidas producidas por las distintas versiones son idnticas, se asume que todas las implementaciones son correctas. Si la salida es diferente, se investigan todas las aplicaciones en una o ms versiones.
Prueba de la tabla ortogonal
Hay muchas aplicaciones en que el dominio de entrada es relativamente limitado. Es decir, el nmero de parmetros de entrada es pequeo y los 26 valores de cada uno de los parmetros estn claramente delimitados. Cuando estos nmeros son muy pequeos, es posible considerar cada permutacin de entrada y comprobar exhaustivamente el proceso del dominio de entrada. En cualquier caso, cuando el nmero de valores de entrada crece y el nmero de valores diferentes para cada elemento de dato se incrementa, la prueba exhaustiva se hace impracticable o imposible.
La prueba de la tabla ortogonal puede aplicarse a problemas en que el dominio de entrada es relativamente pequeo pero demasiado grande para posibilitar pruebas exhaustivas, siendo particularmente til al encontrar errores asociados con fallos localizados, como por ejemplo una categora de error asociada con defectos de la lgica dentro de un componente software. De manera que esta tcnica proporciona una buena cobertura de prueba con bastantes menos casos de prueba que en la estrategia exhaustiva.
Conjetura de errores
Tcnica de prueba de caja negra que consiste en enumerar una lista de equivocaciones que pueden cometer los desarrolladores y de las situaciones propensas a ciertos errores. Despus se generan casos de prueba con base en dicha lista, que se suelen corresponder con defectos que aparecen comnmente y no con aspectos funcionales.
Esta tcnica tambin se ha denominado generacin de casos (o valores) especiales, ya que no se obtienen con base en otros mtodos sino mediante la intuicin o la experiencia.
Utilizacin de casos de uso del sistema para la realizacin de pruebas de caja negra.
27 Una buena prctica para la realizacin de pruebas de caja negra, es disear los casos de prueba basndose en los casos de uso de las funcionalidades que sern probadas. La utilizacin de los casos de uso para el diseo de los casos de prueba, le facilitar al tester la realizacin de las pruebas ya que ste puede tener mas conocimiento acerca de las funcionalidades a probar, acercar de cmo debe responder el sistema ante determinadas acciones, pues en un caso de uso se encuentran indicados los posibles escenarios de xito y/o fallo permitindole al tester tener una idea mas acertada de las entradas que debe generarle al sistema con el fin de validar que la funcionalidad se encuentre correcta.
A continuacin se presenta un ejemplo de un caso de uso de la funcionalidad Procesar venta de un punto de venta, seguidamente se presenta un ejemplo de cmo usar el caso de uso como un caso de prueba.
CASO DE USO UC1: Procesar Venta. Actor principal: Cajero. Precondiciones: El cajero se identifica y se autentica. Garantas de xito (Postcondiciones): Se registra la venta. El impuesto se calcula de manera correcta. Se actualizan la contabilidad y el inventario. Se registran las comisiones. Se genera el recibo. Se registran las autorizaciones de pago aprobadas. Escenario principal de xito (o flujo bsico): 1. El cliente llega a un terminal PDV con artculos que comprar. 2. El cajero comienza una nueva venta. 3. El cajero introduce el identificador del artculo. 4. El sistema registra la lnea de venta y presenta la descripcin del artculo, precio y suma parcial. El precio se calcula a partir de un conjunto de reglas de precios. El cajero repite los pasos 3 4 hasta que se indique. 5. El sistema presenta el total con los impuestos calculados. 28 6. El cajero le dice al cliente el total y pide que le pague. 7. El cliente paga y el sistema gestiona el pago. 8. El sistema registra la venta completa y enva la informacin de la venta y el pago al sistema de contabilidad externo y al sistema de inventario. 9. el sistema presenta el recibo. 10. El cliente se va con el recibo y la mercanca. Extensiones (o flujos alternos): 3a. Identificador no vlido: 1. El sistema seala el error y rechaza la entrada. 3b. Hay muchos artculos de la misma categora y tener en cuenta una nica identidad del artculo no es importante: 1. El cajero puede introducir el identificador de la categora del artculo y la cantidad. 3-6a. El cliente le pide al cajero que elimine un artculo de la compra. 1. El cajero introduce el identificador del artculo para eliminarlo de la compra. 2. El sistema muestra la suma parcial actualizada. 3-6b. El cliente le pide al cajero que cancele la venta. 1. El cajero cancela la venta en el sistema. 4a. El sistema genera el precio de un artculo que no es el deseado. (ej: el cliente se queja por algo y se le ofrece un precio mas bajo). 1. El cajero introduce el precio alternativo. 2. El sistema presenta el nuevo precio. Lista de tecnologa y variaciones de datos: 3a. El identificador del artculo se introduce mediante un escner lser de cdigo de barras o a travs del teclado.
En el caso de uso anterior se observan diferentes secciones que indican cmo es el proceso y qu se debe tener en cuenta para su correcto funcionamiento, adems presenta la seccin de flujos alternos, que le da al tester una idea acerca de otras condiciones adicionales que deben ser probadas. A continuacin 29 se presenta el ejemplo de un formato para la realizacin de pruebas usando el caso de uso anterior:
Caso de PruebaProcesar Venta. TesterJohn Fecha10/12/2004 Actor principalCajero. PrecondicionesEl cajero se identifica y se autentica. Garantas de xito (Postcondiciones) Se registra la venta. El impuesto se calcula de manera correcta. Se actualizan la contabilidad y el inventario. Se registran las comisiones. Se genera el recibo. Se registran las autorizaciones de pago aprobadas. Curso Normal de Eventos Accin del usuario Respuesta del sistema Fall / Pas 1. El cliente llega a un terminal PDV con artculos que comprar.
2. El cajero comienza una nueva venta.
3. El cajero introduce el identificador del artculo. 4. El sistema registra la lnea de venta y presenta la descripcin del artculo, precio y suma parcial. El precio se calcula a partir de un conjunto de reglas de precios.
El cajero repite los pasos 3 4 hasta que se indique. 5. El sistema presenta el total con los impuestos calculados.
6. El cajero le dice al cliente el total y pide que le pague.
7. El cliente paga y el cajero introduce el pago 8. El sistema gestiona el pago: registra la venta completa y enva la informacin de la venta y el pago al sistema de contabilidad externo y al sistema de inventario.
9. el sistema presenta el recibo. Flujos alternos 3a. Identificador no vlido: El sistema seala el error y rechaza la entrada.
3b. Hay muchos artculos de la misma categora y tener en cuenta una nica identidad del artculo no es importante: El cajero puede introducir el identificador de la categora del artculo y la cantidad.
30 3-6a. El cliente le pide al cajero que elimine un artculo de la compra: El cajero introduce el identificador del artculo para eliminarlo de la compra y el sistema muestra la suma parcial actualizada.
3-6b. El cliente le pide al cajero que cancele la venta. El cajero puede cancelar la venta en el sistema.
4a. El sistema genera el precio de un artculo que no es el deseado. (ej: el cliente se queja por algo y se le ofrece un precio mas bajo): El cajero introduce el precio alternativo y el sistema presenta el nuevo precio.
Lista de tecnologa y variaciones de datos: 3a. El identificador del artculo se introduce mediante un escner lser de cdigo de barras o a travs del teclado.
En este formato se puede indicar mediante una entrada de Pas o Fall en la columna de la derecha si los pasos de la funcionalidad probada se encontraron correctos o no. En los pasos que no generan respuesta del sistema se puede ingresar N.A (No Aplica).
31 6. ESTRATEGIAS DE PRUEBA DEL SOFTWARE
Una estrategia de casos de prueba del software integra las tcnicas de diseo de casos de prueba en una serie de pasos bien planificados que dan como resultado una correcta construccin del software. Cualquier estrategia de prueba debe incorporar la planificacin de la prueba, el diseo de casos de prueba, la ejecucin de las pruebas y la agrupacin y evaluacin de los datos resultantes.
6.1 Pruebas de unidad
La prueba de unidad centra el proceso de verificacin en la menor unidad del diseo del software: mdulos. Se trata de las pruebas formales que permiten declarar que un mdulo est listo y terminado (no las informales que se realizan mientras se desarrollan los mdulos)
Hablamos de una unidad de prueba para referirnos a uno o ms mdulos que cumplen las siguientes condiciones [IEEE, 1986a]:
Todos son del mismo programa. Al menos uno de ellos no ha sido probado. El conjunto de mdulos es el objeto de un proceso de prueba.
La prueba de unidad puede abarcar desde un mdulo hasta un grupo de mdulos.
Algunas pruebas que pueden hacerse como pruebas de unidad son:
Pruebas de interfaz. Pruebas de estructuras de datos. Pruebas de condiciones lmite. 32 Pruebas de caminos independientes, Pruebas de caminos de manejo de errores.
6.2 Pruebas de integracin
Implican una progresin ordenada de pruebas que van desde los componentes o mdulos y que culminan en el sistema completo.
El orden de integracin elegido afecta a diversos factores, como lo siguientes:
La forma de preparar casos. Las herramientas necesarias. El orden de codificar y probar los mdulos. El coste de la depuracin. El coste de preparacin de casos.
Tipos fundamentales de integracin
Integracin incremental: Se combina el siguiente mdulo que se debe probar con el conjunto de mdulos que ya han sido probados
Ascendente: Se comienza por los mdulos hoja. Descendente: Se comienza por el mdulo raz.
Integracin no incremental: Se prueba cada mdulo por separado y luego se integran todos de una vez y se prueba el programa completo
33 7. LOS MODELOS INTERNACIONALES Y LAS PRUEBAS
CMMI ha sido concebido por el SEI (Software Engineering Institute) como modelo para determinar y mejorar la capacidad de los procesos en las organizaciones, con el objetivo de desarrollar productos de calidad de manera consistente y predecible. CMMI integra las disciplinas de ingeniera de software e ingeniera de sistemas en un nico marco de referencia. CMMI incorpora material de las ltimas versiones de estndares y modelos como los relacionados con ingeniera de software: ISO/IEC TR 15504, ISO/IEC 12207, CMMI-SW, entre otros. CMMI es un modelo descriptivo que detalla los atributos esenciales que deberan caracterizar a una organizacin en un determinado nivel de maduracin. Es un modelo normativo donde las prcticas detalladas caracterizan los tipos normales de comportamiento esperables en una organizacin que ejecuta proyectos a gran escala. La mejora continua de los procesos se basa en muchos pasos pequeos y evolutivos en vez de innovaciones revolucionarias. CMMI proporciona un marco para organizar estos pasos evolutivos dentro de cinco niveles de maduracin que sientan fundamentos sucesivos para la mejora continua del proceso, cada uno de ellos queda caracterizado por la presencia (o ausencia) de determinadas prcticas. Cada nivel comprende un conjunto de objetivos que, una vez alcanzados, estabilizan un componente importante del proceso de software. Al alcanzar cada nivel del marco de madurez se establece un componente diferente en el proceso de software, resultando en un incremento en la capacidad de proceso de la organizacin. Los niveles se observan a continuacin: 34
Figura 3. Niveles de Madurez de CMMI
Realizado: En este nivel hay pocos procesos definidos o ninguno. Administrado: En este nivel las organizaciones tienen procesos bsicos para administrar sus proyectos; se monitorean costos, planes y funcionalidad. Definido: Hay un proceso estndar que integra prcticas de gestin e ingeniera. Cuantitativamente Administrado: El proceso facilita la obtencin de mediciones detalladas del desempeo del proceso y de la calidad de los productos desarrollados. Optimizado: El proceso est bajo control estadstico y en un ciclo de mejora continua. 35 CMMI cuenta con 23 PAs (process areas) clasificadas en los siguientes grupos:
Procesos administrativos: Los procesos administrativos se utilizan para establecer la visin, metas, estrategia y la direccin de la empresa. Los procesos administrativos iniciados, planean y realizan las actividades que conllevarn al logro de los objetivos de la empresa, de la organizacin, o del proyecto. Supervisan la ejecucin de los otros procesos en el modelo. Procesos del ciclo de vida: Estos procesos son usados para desarrollar, mantener y operar un servicio o producto con el fin de proveer y sostener los servicios y las necesidades del cliente. Procesos de soporte: estos procesos son usados por otras PAs cuando estas los necesitan y contribuyen al xito y la calidad de los dems procesos.
Dentro de los procesos del ciclo de vida se encuentra la PA 08: Pruebas del sistema y evaluacin; que permite confirmar que los servicios y los productos adquiridos y/o desarrollados satisfacen los requerimientos y necesidades operacionales, e identifican y documentan el estado actual y potencial de los defectos que puede presentar un producto o servicio.
Los objetivos de la PA 08 son:
Establecer los requerimientos, mtodos y el ambiente para la evaluacin del sistema para proporcionar una base objetiva para determinar si los productos y los servicios cumplen con los requerimientos y pueden ser aceptados. Realizar las evaluaciones como fue planeado. Transmitir los anlisis de las evaluaciones mediante los resultados de stas para soportar la aceptacin o las acciones correctivas del sistema.
36 A continuacin se presentan las prcticas llevadas a cabo en esta PA y cmo estn relacionadas con la metodologa propuesta:
BP 08.01 Estrategia de Evaluacin. Prctica relacionada con el paso de Planeacin de las pruebas. BP 08.02 Procedimientos de Evaluacin. Prctica relacionada con el paso Evaluacin y ejecucin de las pruebas. BP 08.03 Establecer y mantener el ambiente de evaluacin. Prctica relacionada con los pasos: Planeacin de las pruebas y Preparar las siguientes pruebas. BP 08.04 Evaluar el crecimiento del producto. Esta prctica est relacionada con toda la base de la metodologa, la cual es cclica y est basada en el mejoramiento continuo del producto. BP 08.05 Verificar productos finales. Esta prctica est relacionada con el paso Dirigir las pruebas del sistema. BP 08.06 Validar productos finales. Esta prctica est relacionada con el paso Dirigir las pruebas de aceptacin BP 08.07 Analizar resultados de la evaluacin. Esta prctica est relacionada con los pasos Preparar las siguientes pruebas y Resumen de pruebas y reporte final.
37 8. METODOLOGA DE PRUEBAS DE SOFTWARE
En un ambiente de desarrollo de software es importante realizar pruebas durante todo el ciclo de vida de los proyectos. La metodologa de pruebas que se presenta a continuacin se puede ver como un proceso de mejoramiento continuo que debe ser integrado con la metodologa de desarrollo. La integracin de estos procesos conlleva a prevenir y detectar defectos durante las diferentes fases del desarrollo y a prevenir avances sin haber realizados las pruebas necesarias para el aseguramiento de la calidad.
El siguiente modelo presenta las distintas etapas de la metodologa de pruebas de software. Dichas etapas se encuentran inmersas dentro del ciclo PHVA (Planear, Hacer, Verificar y Actuar).
Figura 4. Pasos Metodologa de Pruebas
38 FASE 1: PLANEAR
Figura 5. Fase: Planear (PHVA)
La etapa uno (Recoleccin de la informacin) y la etapa dos (Planeacin de las pruebas) se encuentran en la fase Planear.
A continuacin se detallan las actividades que se llevan a cabo en cada una de estas etapas:
39 1. RECOLECCIN DE INFORMACIN
El propsito de la fase de recoleccin de informacin es obtener informacin relevante del proyecto de desarrollo de software, para entender qu se quiere realizar, cules son los objetivos y qu alcance tiene el proyecto. Toda esta informacin ser utilizada para empezar la elaboracin o construccin del plan de pruebas.
1.1 Preparacin de la entrevista
Para la realizacin de la entrevista a los participantes (que sern identificados en el siguiente punto), es importante definir los objetivos y el alcance que va a tener sta. Antes de su realizacin debe asegurarse que los participantes tengan claro el motivo y los objetivos de la entrevista.
1.1.1 Identificar los participantes
Para realizar una buena entrevista y que sta abarque los temas necesarios, se deben definir bien sus participantes. De ah la importancia de que estn involucradas personas de las diferentes reas, como el rea de calidad, desarrollo y lderes de proyectos.
En el rea de calidad se deben elegir mximo dos personas, una que tenga el papel de dirigir la entrevista y otro que lleve registro o nota de la informacin que se vaya generando. Esto con el fin de que el entrevistador tenga un mayor enfoque en la obtencin de informacin. Es recomendable que el encargado de dirigir la entrevista, sea la persona lder y responsable de las actividades de pruebas de todo el proyecto.
40 El responsable de tomar nota durante la entrevista se debe encargar de que queden registrados los temas, supuestos y preguntas que se lleven a cabo durante toda la entrevista. Adems esta persona servir de soporte al entrevistador.
Tambin el encargado de tomar nota debe ser uno de los ingenieros de pruebas o lder de pruebas que se asignen al proyecto.
Por parte del rea de desarrollo, deben estar en la entrevista, el lder del proyecto y uno de los miembros del grupo de programadores. Esto con el fin de tener los diferentes puntos de vista de los involucrados en el proyecto.
1.1.2 Definir la Agenda
Uno de los factores importantes para el xito de la entrevista, es definir la agenda. Esta agenda debe ser construida previamente por el entrevistador y debe ser aceptada por los dems participantes.
La agenda debe contener los puntos necesarios para que la entrevista cumpla con el objetivo de recopilar la informacin suficiente para el aseguramiento de la calidad del proyecto y la elaboracin de un plan de pruebas. La agenda debe contener una introduccin, los temas a tratar y por ltimo, el resumen y las conclusiones de la entrevista.
1.2 Desarrollo de la entrevista
El desarrollo de la entrevista est a cargo del entrevistador, quien debe ser la persona que presente la agenda que se va a seguir y lleve el control durante todo su desarrollo. Durante la entrevista se deben tratar todos los temas 41 propuestos y se debe llevar el control del tiempo que se tiene programado para cada actividad o tema que se va a realizar.
Tambin el entrevistador debe presentarse ante los participantes, comunicar sus funciones como lder, los objetivos de la entrevista y pedir a cada uno de los asistentes que hablen acerca de sus funciones en el proyecto y de las responsabilidades que tienen asignadas.
1.2.1 Entender el proyecto
Luego de presentar la agenda y los objetivos de la entrevista, sta se debe centrar en entender el proyecto. Para ello, se deben realizar una serie de preguntas de informacin general y bsica del proyecto como:
Cul es el proyecto del que se va a hablar? Cules son los objetivos generales del proyecto? Es un proyecto nuevo, en desarrollo o de mantenimiento? Cundo empieza el proyecto? (nuevos proyectos) Qu tiempo se tiene estimado para el proyecto? Quines son los participantes en el proyecto? Qu recursos estn asignados a cada participante? Cules son las responsabilidades de cada participante? Quines son los usuarios del proyecto? Cules son los principales problemas o riesgos del proyecto? Cul es el presupuesto del proyecto?
42 1.2.2 Entender los objetivos del proyecto
Entender los objetivos del proyecto es una tarea necesaria para construir un buen plan de pruebas. El propsito de esta tarea es entender el alcance, las necesidades y los requerimientos del proyecto.
Algunas preguntas que se pueden realizar para tal propsito son:
Qu tipo de proyecto se est realizando, o se va a realizar? Por qu se va a realizar? Qu anlisis o qu modelos se han hecho del sistema? Qu tipo de usuarios lo van a utilizar? Cules van a ser las funciones del sistema? Qu se va a hacer y qu no? Qu funciones se van a implementar? Qu beneficios tiene el proyecto para los usuarios? Entregas programadas?
1.2.3 Entender la planeacin del proyecto
El propsito es entender en qu estado est el proyecto y qu planes se han hecho para su desarrollo, esto ayudar a planear los esfuerzos que se tienen que realizar para las pruebas. Tambin es necesario conocer las actividades y tareas que se realizarn y los recursos que se emplearn para el proyecto.
Para obtener esta informacin se pueden realizar preguntas como:
En qu estado se encuentra el proyecto? Hay algn plan de trabajo para el proyecto? Qu actividades o tareas hay programadas? 43 Cules son las actividades principales planeadas? Horas estimadas? El tiempo estimado para el desarrollo es apropiado? Qu tan detallado es el plan de trabajo? Estn asignados los recursos para cada actividad del plan de trabajo? El plan de trabajo es actualizado peridicamente? Cules son los mayores riesgos estimados?
1.2.4 Conocer la metodologa de desarrollo
En todo proyecto de desarrollo de software, la planeacin y ejecucin de las pruebas debe estar integrada con el ciclo de vida y con la metodologa que se utilice para el desarrollo del proyecto.
Considerar las pruebas como una funcin aparte del desarrollo puede llevar a un mayor riesgo de pasar por alto errores y aumentar el costo para resolverlos. Integrando las pruebas a la metodologa de desarrollo, se asignarn los recursos apropiadamente y se evitar que algunas actividades continen sin haber realizado las pruebas necesarias.
Adems, las actividades de pruebas necesariamente tendrn que afectar la metodologa de desarrollo, agregando o modificando algunas tareas. Debe conocerse tambin, cundo se pueden comenzar las pruebas y cules sern las actividades planeadas para corregir los errores detectados.
Algunas preguntas que se pueden realizar son:
Qu metodologa de desarrollo es usada usualmente por la organizacin? Cul metodologa va a ser utilizada para el proyecto? 44 Cules son los pasos o actividades principales de la metodologa? Qu tanto se sigue esta metodologa? Qu estndares se siguen? Qu documentacin se lleva?
1.2.5 Conocer las reglas de negocio
Cada organizacin, dependiendo de la metodologa que utilice en el desarrollo de los productos de software, tiene diferentes formas de hacer la toma de requerimientos de un proyecto. La especificacin de los requerimientos define las funciones del producto en un ambiente especfico.
El entrevistador o lder de pruebas, debe evaluar los requerimientos del proyecto de desarrollo de software, y estos deben quedar lo suficientemente claros para as, conocer qu se supone que debe realizar la aplicacin, planear el diseo de las pruebas y estimar los requisitos que requieren la implementacin de estas.
Las preguntas que se deben realizar para obtener informacin sobre los requerimientos y reglas del negocio son:
Qu tipo de aplicacin es? ( Financiera, control de inventarios, ventas, etc.) Cules son las principales funciones que debe realizar el sistema? (Se deben pedir detalles de cada funcin.) Para qu sistema operativo se va a desarrollar? Qu interfaces sern utilizadas? Qu plataforma ser utilizada? Requerimientos mnimos del sistema? ( Espacio en disco, memoria RAM, otros requerimientos.) Cul es el rendimiento esperado? 45 Qu reglas o polticas de seguridad se deben cumplir? Qu polticas o qu restricciones se deben cumplir? Qu otros aspectos se deben probar?
1.2.6 Anlisis de riesgos
El propsito de esta tarea es analizar qu tipo de riesgos tiene la aplicacin y qu tipo criticidad tiene cada mdulo del proyecto. Esto puede ayudar a identificar y realizar pruebas ms exhaustivas en estas aplicaciones.
Para obtener esta informacin se pueden realizar estas preguntas:
Cules son los mdulos principales del proyecto? Cul es el tamao del proyecto? Qu impacto tiene el proyecto en el cliente? Qu tipo de cliente es? Nmero de usuarios del sistema? Qu prediccin hay de costos para el usuario por fallos de la aplicacin?
1.3 Reporte de resultados
Al terminar la entrevista se deben llevar a cabo 2 actividades, la primera hacer el resumen de lo hablado y luego elaborar los reportes apropiados con la informacin obtenida.
1.3.1 Resumen de la entrevista
Luego de terminar las preguntas elaboradas durante la entrevista, se deben revisar los puntos de la agenda que se tena prevista. Si todos no han sido cumplidos, y se requiere una prxima reunin, sta se debe programar en ese 46 momento, ya que todos lo miembros estn presentes y se pueden poner de acuerdo. En caso de que la agenda se haya cumplido, los participantes pueden hacer los comentarios adicionales que tengan.
El encargado de llevar nota de los temas tratados en la entrevista se debe encargar de elaborar un reporte claro y organizado, con el orden en que se realiz la entrevista y hacerlo llegar a las reas de la empresa que lo requieran.
1.3.2 Resultados de la entrevista
En este paso, el objetivo es que los participantes de la entrevista estn de acuerdo, tengan claro y entiendan el proyecto. Luego de ser distribuido el reporte, los participantes pueden hacer sus comentarios o sugerencias para modificar el reporte. Una vez que todos aprueben el documento, este ser distribuido de nuevo a las reas de la organizacin que lo requieran.
47 2. PLANEACIN DE LAS PRUEBAS
La planeacin de las pruebas es una de las etapas ms importantes de un proceso de pruebas y por lo tanto de la metodologa, ya que puede proveer la forma ms organizada de probar el software. En esta fase se elabora el plan de pruebas, que es el documento que ayuda a manejar todo el proceso de pruebas.
El plan de pruebas debe ser simple, completo, actualizado y debe estar al alcance de todos los participantes del desarrollo para poder hacer su aprobacin y utilizarlo como retroalimentacin. Un buen plan de pruebas minimiza la redundancia de pruebas, provee procedimientos de trabajo para el monitoreo y rastreo del comportamiento o estado de las pruebas. Contiene tambin una definicin clara de los roles y responsabilidades de las partes involucradas en el proceso de pruebas.
Siguiendo un buen plan de pruebas hay buenas oportunidades de encontrar la mayora de los defectos y cubrir la mayor parte del cdigo.
CONSTRUIR EL PLAN DE PRUEBAS
El propsito del plan de pruebas es explicitar el alcance, el enfoque, los recursos requeridos, el calendario, los responsables y el manejo de los riesgos de un proceso de pruebas. Este plan de pruebas debe ser realizado y / o actualizado en cada una de las etapas del ciclo de desarrollo para que se realicen pruebas de acuerdo a la fase o estado en que se encuentra el proyecto.
2.1 Definir el identificador del plan
Todo plan de pruebas debe llevar un identificador nico, ste debe preferiblemente tener alguna forma mnemnica que permita relacionarlo con su 48 alcance. Adems deber llevar a fecha y la versin del plan, ya que puede ser modificado durante la ejecucin de las pruebas.
2.2 Preparar la introduccin
La primera parte del plan de pruebas debe ser la introduccin, en donde describe por qu el plan va a ser desarrollado y cules son sus objetivos. Tambin se da una descripcin del proyecto o del problema que se va a tratar y del entorno en que va a ser desarrollado, y explica los eventos que llevaron a desarrollar el plan. Estos pueden incluir implementacin de procesos de mejoramiento, o la adicin de nuevas funcionalidades.
Adems, los riesgos de la aplicacin, el alcance, los objetivos, el propsito y los factores de xito deben ser documentados en la introduccin.
Cualquier otra documentacin, como la especificacin de requerimientos, especificaciones funcionales, especificaciones de diseo, planes de trabajo, modelos de datos deben ser listados y se debe describir su estado.
Adicionalmente en la introduccin se deben mencionar los riesgos que pueden tener las pruebas.
2.3 Identificar los requerimientos
Esta seccin del plan de pruebas lista los requerimientos que deben ser probados. Cualquier requerimiento que no sea nombrado est fuera del alcance del plan de pruebas.
49 Se deben identificar todas las funciones que deben ser probadas, como crear, editar o borrar registros. Ac se puede hacer referencia a otro documento donde sean nombrados todos los requerimientos del sistema.
Tambin, comprende las pruebas de la interfaz de usuario, la descomposicin jerrquica de las funciones ( estructura de los mens, el flujo que siguen, etc.), el diseo de las ventanas y el estndar que sigue su diseo.
2.4 Identificar los tipos de prueba
En este paso, se describe cmo los objetivos de cada tipo de prueba que va a ser parte del plan de pruebas van a ser cumplidos. Los tipos de pruebas pueden ser entre otros:
Pruebas de unidad. Pruebas funcionales. Pruebas de integracin. Pruebas de volumen. Pruebas de estrs. Pruebas de rendimiento. Pruebas globales del sistema.
Para cada tipo de prueba se debe detallar lo siguiente:
Objetivo: EL objetivo principal de la prueba. Tcnica: Documentar cmo los casos de prueba van a ser desarrollados, las herramientas que se van a utilizar, cmo se van a ejecutar, y los datos que van a ser usados. Consideraciones especiales: Configuraciones o detalles nicos o especiales que se deben tener en cuenta como, datos, ambiente fsico o 50 de software, o cualquier otro que deba tenerse en cuenta para el xito de las pruebas. Criterio de terminacin: Documentar cundo se dan por terminadas las pruebas. Definir cundo y cmo se deben realizar nuevamente las pruebas: Luego de cambios, mejoras o correcciones. Herramientas: Documentar las herramientas que se van a utilizar.
El tipo de pruebas que se van a disear depende totalmente de los objetivos de las aplicaciones que van a ser desarrolladas y la fase en que sta se encuentre. Sin embargo, se deben realizar pruebas funcionales de la aplicacin, que asegure que se cumple los objetivos para lo que fue desarrollada, pruebas de la interfaz de usuario y pruebas luego de encontrar y corregir cada error, o luego de implementar alguna nueva mejora.
2.5 Identificar cundo terminar las pruebas
Uno de los principales problemas que se encuentra al realizar pruebas es identificar cundo terminarlas ya que por ejemplo es imposible determinar cundo un programa o una aplicacin est libre de defectos.
Existen algunos criterios para terminar las pruebas:
Termina el tiempo estimado para realizar las pruebas Se encuentra un nmero especificado de errores. Todas las pruebas programadas han terminado. Combinacin de las anteriores.
La mayora de los proyectos deberan utilizar una combinacin de los criterios anteriores. 51 2.6 Establecer la estrategia de pruebas de regresin.
Probar la aplicacin cada que se realice un cambio, cada que se haga la correccin de un error, o cada que se haga una mejora en una nueva versin es una de las estrategias que se debe adoptar. Estas pruebas se deben realizar para confirmar que los cambios que se le han hecho a la aplicacin no afectaron los dems mdulos o no tuvieron efectos no esperados en el comportamiento del programa. Correcciones de errores que tengan relacin con el flujo de control o con la lgica y errores de interfaces son un ejemplo de cundo se debe volver a probar.
Debido a que realizar de nuevo todas las pruebas cada que haya un cambio no es posible, se pueden establecer polticas para poder hacer una buena eleccin de qu pruebas o tipos de pruebas se van a repetir.
A tener en cuenta:
Pruebas que puedan ser automatizadas son buenas candidatas para repetirse luego de cada cambio a la aplicacin. Se deben repetir pruebas que fueron diseadas antes de hacerse el o los cambios. Se deben hacer pruebas que sean diseadas luego de los cambios.
2.7 Definir los entregables
Como resultado de los diferentes pasos del ciclo de pruebas se generan algunos documentos que se deben entregar. Algunos entregables pueden ser:
Plan de pruebas: Define los objetivos, el alcance, la estrategia y los tipos de pruebas que se van a desarrollar. 52 Mtricas: Documento con los aspectos que se van a medir durante el desarrollo de las pruebas. Casos de pruebas: Formato con informacin de los casos de prueba. (Figura 6) Reportes intermedios: Reporte que se hace luego de ejecutar las pruebas en cada fase del proceso de pruebas. ( Seccin: 6.3 ) Reporte Final: Reporte del resultado final de las pruebas. Este reporte se elabora luego de terminar todo el proceso de pruebas. ( Seccin: 9 ) Reporte de errores: Formatos con la informacin de los errores descubiertos durante el proceso de pruebas. ( Seccin: 2.11 )
Figura 6. Formato de Casos de prueba 53 2.8 Organizar el equipo de pruebas
El grupo de trabajo que haga parte del equipo de pruebas debe ser escogido entre las personas de la empresa que tengan un buen grado de experiencia y de talento. Idealmente, estos individuos deben ser profesionales del rea de aseguramiento de calidad, pero pueden tambin representar el grupo de usuarios, tcnicos, administradores de bases de datos, externos, etc. Estos ltimos son particularmente buenos en la fase final de aceptamiento del sistema.
Durante el desarrollo de las pruebas se definen dos responsabilidades principales: probar las aplicaciones, esto hace parte de las tareas del equipo de pruebas, y ocuparse de las actividades globales concernientes con las pruebas, de esto se encarga el lder del grupo.
El lder debe encargarse tambin de dirigir el equipo de pruebas, ser el intermediario entre los desarrolladores y los ingenieros de pruebas. Adems entre otras responsabilidades estn:
Definir los objetivos de las pruebas. Definir los recursos que se van a utilizar para las pruebas. Crear los procedimientos de pruebas. Desarrollar y mantener el plan de pruebas. Disear los casos de pruebas. Realizar reportes. Definir los roles de los integrantes del equipo de pruebas. Asegurarse de la calidad del proceso de pruebas.
Entre las principales responsabilidades del equipo de pruebas estn:
Ejecutar los casos de pruebas de acuerdo con el plan de pruebas. Evaluar los resultados de las pruebas. 54 Reportar los errores. Documentar los errores.
Luego de encontrar errores en las aplicaciones y documentarlos junto con el camino que llev a que estos aparecieran, se deben reportar al rea de desarrollo para que sean corregidos. Una vez el grupo de desarrolladores haya corregido estos errores, el equipo de probadores debe volver a ejecutar las pruebas que llevaron a la aparicin de los errores en un principio.
2.9 Establecer el ambiente de pruebas
El propsito de un buen ambiente de pruebas es dotar a los encargados del aseguramiento de calidad de la infraestructura necesaria para las actividades de pruebas. Para esto se debe estabilizar y revisar el ambiente antes de su implementacin.
Es importante dentro del ambiente de pruebas contar con la tecnologa adecuada y las herramientas de pruebas adecuadas. Esta tecnologa incluye la plataforma de hardware, la infraestructura de red con todos sus componentes, el sistema operativo, y cualquier otra herramienta de software que se requiera.
El espacio fsico donde sea ubicado el equipo de pruebas debe ser definido, es recomendable que ste quede cerca del equipo de desarrollo, para que se facilite la comunicacin y puedan interactuar fcilmente para llegar a fines comunes.
El hardware y el software necesarios, debern ser configurados adecuadamente para llevar a cabo las pruebas exitosamente.
55 2.10 Seleccionar las herramientas de pruebas
Para la seleccin de las herramientas, se debe tener en cuenta que las escogidas deben ser las que ms se adapten al ambiente de pruebas, y al tipo de aplicacin que se vaya a probar. Estas herramientas son un factor importante en el xito de las pruebas.
En el plan de pruebas se debe especificar qu herramientas se van a utilizar y quien es el proveedor de dicha herramienta. Igualmente los encargados de utilizarlas debern revisar y aprobar el uso de ellas ya que la seleccin y el uso deben ir de acuerdo con el plan de pruebas.
La seleccin de estas herramientas puede ser por la experiencia que se tenga en su utilizacin o en la experiencia del equipo de pruebas.
2.11 Programar las pruebas
En este punto se especifica cundo cada mdulo de la aplicacin va a estar listo para ser probado, el tiempo estimado para realizar dichas pruebas, fecha de inicio y fecha estimada de finalizacin. Tambin se especifica el flujo de actividades de pruebas y el responsable de realizar dichas actividades.
Se deben tener en cuenta todas las fases de la metodologa de desarrollo para que los procesos se realicen en paralelo.
2.12 Establecer los procedimientos para el registro de errores
Durante toda la fase de pruebas se descubren defectos. De estos defectos debe almacenarse o guardarse toda su informacin, como dnde fue encontrado y el estado en que se encuentra:
56 Abierto: An no se ha asignado para correccin. En revisin: Se encuentra siendo revisado por el equipo de desarrollo. Listo para prueba: Se debe probar de nuevo. Cerrado: El error ha sido corregido y probado nuevamente.
La informacin acerca de los defectos debe estar al alcance de los desarrolladores y es til para tener las estadsticas de errores o el estado general de una aplicacin. Como por ejemplo cuntos errores se han encontrado y cuntos se encuentran sin corregir en el sistema.
Bsicamente la informacin que se debe suministrar es:
Identificador del error. Nombre del error. Descripcin del error. Fecha en que fue descubierto. Tipo de error. ( funcional, interfaz, lgico...) Severidad del error. Circunstancias en las que se encontr el error. Datos ingresados. Ambiente donde ocurri. Diagnstico del error (cdigo). Efecto que tiene el error en el programa. Comentarios adicionales.
57 2.13 Definicin de los objetivos de las mtricas
Definir las mtricas
Michael [99] define las mtricas de software como La aplicacin continua de mediciones basadas en tcnicas para el proceso de desarrollo del software y sus productos para suministrar informacin relevante a tiempo, as el administrador junto con el empleo de estas tcnicas mejorar el proceso y sus productos. Las mtricas de software proveen la informacin necesaria para la toma de decisiones tcnicas.
Se puede decir que una mtrica tiene las siguientes caractersticas:
Medible. Independiente. Contable. Precisa
El objetivo de recolectar mtricas es hacer el proceso de pruebas ms eficiente. Esto se consigue analizando los datos arrojados por el proceso de pruebas y aplicando las acciones necesarias que se tomen a partir de estos resultados para resolver los errores.
Algunas mtricas que se pueden utilizar son:
Anlisis de defectos: Cada defecto debe ser analizado para identificar su causa, cmo fue detectado, en dnde, y por quin. Efectividad de las pruebas: Que tan bien se estn realizando las pruebas. Correccin de errores: Cuantos errores se han corregido completamente y cuantos no. 58 Estimacin de costo y esfuerzo. Estado de las pruebas.
El siguiente es un ejemplo del contenido de un plan de pruebas:
1. Introduccin 1.1 Propsito 1.2 Resumen del proyecto 1.3 Documentacin del proyecto 1.4 Riesgos 2. Alcance 2.1 Alcance de las pruebas 2.2 Requerimientos del sistema 2.2.1 Requerimientos funcionales 2.2.2 Requerimientos no funcionales 2.3 Pruebas de interfaz 2.4 Pruebas de sistema y aceptacin 2.4.1 Pruebas de rendimiento 2.4.2 Pruebas de seguridad 2.4.3 Pruebas de volumen 2.4.4 Pruebas de estrs 2.4.5 Pruebas de compatibilidad 2.4.6 Pruebas de usabilidad 2.4.7 Pruebas de documentacin 2.4.8 Pruebas de backup y recuperacin 2.4.9 Pruebas de instalacin 2.5 Pruebas de regresin 2.6 Pruebas fuera del alcance 3. Pruebas 3.1 Estructura de las pruebas 3.2 Datos 59 3.3 Interfaz 3.4 Ambiente de pruebas 3.5 Dependencias 3.6 Estrategia de regresin 3.7 Seguimiento de errores 3.8 Solucin de errores 3.9 Recursos 3.9.1 Personal de pruebas 3.9.2 Ambiente de pruebas 3.9.3 Herramientas 3.10 Programacin de las pruebas 3.11 Administracin de la configuracin 3.12 Entregables 3.13 Mtricas 3.14 Criterio de terminacin de las pruebas 3.15 Reportes 3.16 Aprobacin
2.14 Revisar y aprobar el diseo
2.14.1 Programar y preparar la revisin
La revisin del plan de pruebas debe ser programada de tal manera que se logre tener un avance entre ellas. Es importante que los participantes tengan la ltima copia del plan de pruebas.
En la reunin que se lleve a cabo para la revisin, se debe primero hacer la introduccin sobre los temas que se van a tratar. Luego de esto, deben centrarse en cada uno puntos y discutir sus detalles.
60 La agenda realizada para la revisin debe contemplar el tiempo estimado para terminar todos los puntos. En caso de no terminarse se debe programar una siguiente reunin.
El propsito de esta revisin es lograr que se apruebe el plan de pruebas tanto por el gerente del proyecto como por los desarrolladores. Cualquier sugerencia o cambio debe ser realizado e incorporado al plan de pruebas.
2.14.2 Aprobacin
El plan de pruebas debe ser revisado por todos los responsables de su ejecucin, y debe ser aprobado por el equipo de pruebas, lderes del proyecto y lderes de desarrollo.
Es recomendable hacer una reunin donde se apruebe entre todos el plan de pruebas.
61 FASE 2: HACER
Figura 7: Fase: Hacer (PHVA)
La etapa tres (Diseo de casos de prueba) y la etapa cuatro (Planeacin de las pruebas) se encuentran en la fase Hacer.
A continuacin se detallan las actividades que se llevan a cabo en cada una de estas etapas:
62 3. DISEO DE CASOS DE PRUEBA.
El principal objetivo del diseo de casos de prueba es obtener un conjunto de pruebas que tengan la mayor probabilidad de descubrir los defectos del software.
3.1 Disear las pruebas de funcin.
Para realizar esta actividad, se deben realizar las siguientes tareas:
3.1.1 Refinar los requerimientos de pruebas funcionales.
En este punto las especificaciones funcionales deben estar terminadas. Una especificacin funcional es una lista detallada de las funciones del negocio, la cual adems contiene la estructura y los estndares de las ventanas, los mnimos requisitos del sistema para soportar la aplicacin, los tipos de actividades que se realizan y perfiles de usuario, definiendo as con este conjunto de datos las funciones bsicas del sistema y la forma en que el usuario interacta con ste.
Una funcin de negocio es un aspecto controlable del negocio y es un pequeo componente del sistema, cada uno de estos debe ser nombrado y descrito utilizando el verbo objeto que indique la funcin que se quiere especificar del sistema (Ej. cerrar caja). El criterio a usar para determinar la ejecucin exitosa de cada funcin debe ser indicado.
Una especificacin funcional es usada para ilustrar los procesos (funciones del negocio) en una estructura jerrquica con sucesivos niveles de detalle. Los procesos elementales no son descompuestos en la especificacin (Ver tabla 1). La especificacin funcional sirve como base para las pruebas funcionales, las 63 cuales tendrn mnimo un caso de prueba por cada nivel en la jerarqua. Algunos ejemplos de funciones son: listar clientes, listar cuentas de un cliente, pagar cuenta, generar factura, etc.
Las funciones de negocio constituyen el total de la aplicacin en varias interfaces; una buena manera de recolectar esta informacin (las diferentes funciones) es mediante la descomposicin detallada de los procesos y/o la elaboracin de un flujo de datos del negocio.
Requerimientos de Prueba Funcionales (Administracin)
Procesamiento de Ordenes Crear Orden Llenar Orden Editar Orden Borrar Orden Ver Detalle
Administracin de Clientes Crear Cliente Editar Cliente Borrar Cliente
Administracin Financiera Recibir Pago de Cliente Depositar Pago Pagar Nmina Tabla 1. Especificacin Funcional
64 La estructura funcional de una ventana describe cmo sern implementadas las funciones en este ambiente, qu informacin se presenta al usuario, las restricciones, las posibles acciones en la ventana. Un ejemplo de una estructura funcional puede ser:
Estructura Funcional de las ventanas de procesamiento de Ordenes.
Ventana principal de procesamiento de ordenes.
a. Esta ventana presenta el listado de las ordenes existentes en el sistema. b. El listado de ordenes se presenta ordenado ascendentemente por nmero de orden. c. La informacin presentada es de solo lectura. d. Por cada orden en el listado, se presentan los siguientes datos: 1. Nmero de Orden. 2. Nombre del Cliente. 3. Identificacin del Cliente. 4. Fecha de creacin de la Orden. 5. Nmero de factura. 6. Valor total 7. Icono que permite ver detalle de la Orden haciendo un click. e. Al hacer doble click sobre un nmero de orden, se desplegar la ventana de edicin de orden, en la cual es posible modificar la informacin. f. No se genera scroll horizontal. g. En la parte inferior del listado, a la izquierda aparece botn Regresar para ubicarse nuevamente en el men principal, y a la derecha botn Nuevo para crear nueva orden.
65 3.1.2 Construir una matriz de funcin/prueba
En este punto, se debe construir una matriz que relacione cada funcionalidad de la aplicacin con el caso de prueba correspondiente, ilustrando de esta forma, cul caso de prueba debe ser usado para cada funcionalidad. (Ver tabla 2).
La matriz es utilizada para llevar el control de los casos de prueba que deben ser usados durante la ejecucin de las pruebas y adicionalmente puede ser utilizada durante el mantenimiento de la aplicacin, por ejemplo, si una funcin es cambiada, el equipo de mantenimiento puede utilizar la matriz para determinar cul caso de prueba debe ser ejecutado o modificado. En la matriz, las funcionalidades son listadas verticalmente y los casos de prueba horizontalmente por cada funcionalidad, los casos de prueba son registrados en la matriz con su nmero.
66
CASO DE PRUEBA
FUNCIONALIDAD
1
2
3 Procesamiento de ordenes Crear Orden CO01 CO02 Llenar Orden ALO01 Editar Orden EO01 EO02 EO03 Borrar Orden BO01 BO02 Ver Detalle VD01 Administracin de Clientes Crear Cliente ACC01 ACC02 Editar Cliente EC01 EC02 Borrar Cliente BC01 Administracin Financiera Recibir Pago de Cliente RPC01 RPC02 RPC03 Depositar Pago ADP01 ADP02 Pagar Nmina PN01 Tabla 2. Matriz de funcin/prueba
Es importante diferenciar cules casos de prueba se ejecutan manualmente y cules automticamente; para esto se puede definir un estndar en la asignacin del cdigo del caso de prueba, como en el ejemplo, los casos de prueba que son automticos comienzan por la letra A y van seguidos por las iniciales del nombre de la funcionalidad.
3.2 Disear pruebas de GUI. (Interfaz grfica de usuario)
El objetivo de un buen diseo de GUI debe ser consecuente con la amigabilidad (apariencia y facilidad de uso) de la aplicacin para los usuarios. Un buen 67 diseo de GUI tiene dos componentes clave: interaccin y apariencia. La interaccin esta asociada a la manera como el usuario interacta con la aplicacin, y la apariencia a cmo luce la interfase para el usuario.
Las pruebas de GUI conciernen a la confirmacin de una correcta navegacin por la aplicacin, las siguientes son algunos aspectos del diseo de GUI que el encargado de realizar las pruebas debe tener en cuenta mientras prueba la aplicacin:
Nueve directivas para un buen diseo de GUI:
1. Involucrar a los usuarios. 2. Comprender la cultura y experiencia de los usuarios. 3. Realizar prototipos continuamente para validar los requerimientos. 4. Permitir que el diseo sea conducido por el flujo de trabajo del negocio de los usuarios. 5. Crear la GUI y las ayudas concurrentemente. 6. No contar con que los usuarios recuerden comandos secretos o funciones. 7. Anticipar errores y no culpar al usuario. 8. Recordarle al usuario continuamente el estado de la aplicacin. 9. Hacerlo fcil.
3.2.1 Definir componentes GUI de la aplicacin.
La interfaz grfica de usuario (GUI) provee mltiples canales de comunicacin usando palabras, grficos, animacin, sonido y video. Cinco componentes base de la interfaz de usuario son: ventanas, mens, formas, conos y controles.
68 Ventanas: En un ambiente de ventanas, todas las interacciones del usuario con la aplicacin ocurren a travs de ventanas. Esto incluye una ventana principal, junto con un nmero de ventanas secundarias generadas de la principal. Mens: los mens se presentan en una variedad de estilos y formas, por ejemplo: mens de accin (radio botones), listas desplegables, mens de opciones, mens en cascada. Formas: Las formas son ventanas en las cuales el usuario puede adicionar informacin. Iconos: Los conos son valiosos por su fcil reconocimiento, aprendizaje y facilidad de navegacin a travs de la aplicacin. Controles: un componente de control aparece en una ventana que permite al usuario interactuar con la aplicacin y se identifica por medio de su correspondiente accin. Los controles incluyen barras de mens, listas desplegables, radio botones, cajas de chequeo, entre otros.
Un acercamiento para el diseo de pruebas de GUI incluye definir y nombrar cada componente de GUI por su nombre, como es presentado en la tabla 3. En el siguiente paso es desarrollada una lista de chequeo de componentes de GUI, la cual puede ser usada para verificar cada componente.
Tabla 3. Matriz de Prueba de Componentes GUI 69 3.2.2 Disear pruebas de GUI
En la tarea anterior, los componentes de aplicacin GUI fueron definidos, nombrados y categorizados en la matriz de prueba de componentes GUI. En la presente tarea es elaborada una lista de chequeo para verificar cada componente GUI. La lista debe cubrir todas las posibles interacciones y puede o no aplicar a un componente particular.
Lista de chequeo:
Los siguientes son algunos tems para verificar en la GUI:
Acceso con doble click. Acceso con un click. Acceso por medio de un men. Acceso mediante la barra de herramientas. Opciones del click derecho del mouse. Vnculos de ayuda. Barra de botones. Iconos de acceso. Posibilidad de mltiples ventanas abiertas. Cambiar la medida de las ventanas. Aceptacin de valores vlidos en formularios. Manejo de valores invlidos en los formularios. Minimizacin y maximizacin de las ventanas. Color. Tabulacin de secuencias. Cajas de chequeo. Fuentes. Arrastrar y soltar. Cancelar. 70 Salir. Aceptar. Teclas rpidas. Desplegar y plegar rboles.
Adicionalmente a los chequeos de componentes de GUI, se tiene un estndar de diseo de GUI, el cual es esencial para asegurar que se siguen unas reglas de construccin con el fin de lograr los niveles de consistencia deseados. Los siguientes son algunos de los estndares GUI:
Usar colores llamativos. Alineamiento de ventanas y tablas. Funciones y teclas rpidas. Consistencia en la ubicacin de los elementos en las ventanas. Consistencia en los colores y grficos usados. Presentacin de mensajes de error y caractersticas de las ayudas. Secuencia lgica de objetos. Consistencia en el tipo de letra.
3.3 Definir las pruebas de sistema y de aceptacin.
3.3.1 Identificar las pruebas potenciales del sistema
Las pruebas de sistema se encuentran en el nivel ms alto de la fase de pruebas ya que estas evalan la funcionalidad del sistema como un todo, su rendimiento y su adaptabilidad. Estas pruebas normalmente son ejecutadas internamente y son orientadas a las caractersticas tcnicas, por el contrario, las pruebas de aceptacin son pruebas orientadas a los usuarios.
71 Las pruebas de sistema consisten en una o ms pruebas que se basan en los objetivos iniciales de la aplicacin y que fueron definidos en la entrevista que fue realizada en la fase de recoleccin de la informacin. El propsito de esta tarea es identificar y seleccionar las pruebas del sistema que van a ser realizadas y no como estas se van a implementar.
Pruebas de rendimiento: La finalidad de estas pruebas es verificar y validar que los requerimientos de rendimiento que fueron establecidos sean cumplidos. Como por ejemplo tiempos de respuesta, la tasa de transacciones y otros requerimientos de tiempo.
Pruebas de seguridad: Estas se realizan para probar la seguridad que sea implementada en la aplicacin para garantizar la integridad y al confidencialidad de la informacin.
Pruebas de volumen: Probar la aplicacin con volmenes grandes de datos para verificar que sea capaz de manejarlos.
Pruebas de estrs: Probar la aplicacin en condiciones que sobrecarguen los recursos. Se debe observar principalmente el tiempo de respuesta.
Pruebas de compatibilidad: Probar la compatibilidad de la aplicacin con otras aplicaciones o con otros sistemas.
Pruebas de usabilidad: Determinar que tan bien los usuarios van a entender y a usar la aplicacin.
Pruebas de la documentacin: Asegurarse que la documentacin es apropiada y gue correctamente por la aplicacin a los usuarios.
72 Pruebas de Backup: Verificar la capacidad del sistema para tener respaldo de los datos en caso de un fallo de software o hardware.
Pruebas de recuperacin: Verificar la viabilidad del sistema para recuperarse luego de una falla de software o hardware.
Pruebas de instalacin: Probar la instalacin y que esta sea exitosa.
3.3.2 Disear pruebas de fragmentos del sistema.
Una Prueba de fragmentos del sistema es la divisin de una prueba del sistema que puede realizarse durante el desarrollo de la aplicacin. El objetivo de estas pruebas es identificar tempranamente problemas o defectos que se pueden ver reflejados en las pruebas del sistema.
Algunas pruebas de sistema que pueden ser fragmentadas son: pruebas de seguridad, de rendimiento, usabilidad, documentacin y procedimientos. Por el contrario, no pueden ser fragmentadas pruebas de instalacin, recuperacin, etc.
3.3.3 Identificar pruebas potenciales de Aceptacin
Las Pruebas de aceptacin son pruebas que corren los usuarios para verificar que la aplicacin cumple con los requerimientos especificados. El objetivo de estas pruebas es demostrar que el sistema funciona. En ellas se hace menos nfasis en las caractersticas tcnicas y se centra en si la aplicacin es til para el usuario final.
73 3.4 Revisar y aprobar el diseo
3.4.1 Programar y preparar la revisin
La revisin del diseo de pruebas debe ser programada de tal manera que se logre tener un avance entre ellas. Es importante que los participantes tengan la ltima copia del documento con el diseo de las pruebas.
En la reunin que se lleve a cabo para la revisin, se debe primero hacer la introduccin sobre los temas que se van a tratar. Luego de esto, deben centrarse en cada uno de los puntos y discutir sus detalles.
La agenda realizada para la revisin debe contemplar el tiempo estimado para terminar todos los puntos. En caso de no terminarse, se debe programar una siguiente reunin.
El propsito de esta revisin es lograr que se apruebe el diseo de las pruebas tanto por el gerente del proyecto como por los desarrolladores. Cualquier sugerencia o cambio debe ser realizado e incorporado al diseo de las pruebas.
3.4.2 Aprobacin
El objetivo de la aprobacin es lograr que los participantes del proyecto estn de acuerdo con el diseo de las pruebas. Esta aprobacin se debe realizar por escrito y debe estar firmada por el gerente del proyecto, el lder de pruebas y el lder de los desarrolladores. Se debe tambin elaborar y entregar un documento donde encuentre la ultima copia del diseo de las pruebas con las sugerencias y los cambios que se llevaron a cabo. Finalmente se debe indicar que durante el ciclo de vida del proyecto el documento podr ser modificado.
74 4. DESARROLLO DE LAS PRUEBAS
El objetivo de esta etapa es documentar y transformar en formatos cada uno de los casos de prueba para su posterior utilizacin en la ejecucin de las pruebas.
4.1 Desarrollar formatos de pruebas
4.1.1 Desarrollar formatos de pruebas de GUI
En un paso previo fue construida la matriz funcin/prueba que referencia los casos de prueba con las funciones de la aplicacin. Las funciones son listadas verticalmente y los casos de pruebas son listados horizontalmente.
En este paso los casos de prueba son documentados y transformados en formatos de pruebas que puedan ser reutilizados y que contengan los datos de las pruebas.
El formato de los casos de pruebas debe contener la siguiente informacin:
El nombre del caso de prueba Nmero del caso. La funcin que se va a probar. El objetivo del caso de prueba. Los pasos del caso de prueba. Los resultados esperados. Estado del caso ( pas / fall ) Nombre de quin realiza la prueba Fecha de realizacin de la prueba.
75 El siguiente formato se puede tomar como muestra de recoleccin de informacin de los casos de prueba
Tabla 4. Formato de casos de prueba
4.1.2 Desarrollar formatos de las pruebas de fragmentos del sistema
En un paso previo se disearon las pruebas de fragmentos del sistema. Estas son pruebas de partes ms pequeas de la aplicacin o prueban funcionalidades especificas del sistema.
En este paso los casos de prueba son documentados y transformados en formatos de pruebas que puedan reutilizados. Un formato similar al visto en pruebas GUI puede ser utilizado para documentar estos casos.
Es importante resaltar que debido a que en las pruebas de fragmentos del sistema se involucran aspectos como rendimiento y seguridad, los objetivos y los pasos podrn ser ms amplios y dicientes que los objetivos de pruebas de GUI.
76 4.2 Revisar y aprobar el desarrollo de las pruebas
4.2.1 Programar y preparar la revisin
La revisin del desarrollo de pruebas debe ser programada de tal manera que se logre tener un avance entre ellas. Es importante que los participantes tengan la ltima copia del documento del desarrollo de las pruebas.
La agenda realizada para la revisin debe contemplar el tiempo estimado para la revisin de todos los puntos. En caso de no terminarse se debe programar una siguiente reunin.
El propsito de esta revisin es lograr que se apruebe el desarrollo de las pruebas tanto por el gerente del proyecto como por los desarrolladores. Cualquier sugerencia o cambio debe ser realizado e incorporado al desarrollo de las pruebas.
4.2.2 Aprobacin
El objetivo de la aprobacin es lograr que los participantes del proyecto estn de acuerdo con el desarrollo de las pruebas. Esta aprobacin se debe realizar por escrito y debe estar firmada por el gerente del proyecto, el lder de pruebas y el lder de los desarrolladores. Se debe tambin elaborar y entregar un documento donde se encuentre la ltima copia del diseo y desarrollo de las pruebas con las sugerencias y los cambios que se llevaron a cabo. Finalmente se debe indicar que durante el ciclo de vida del proyecto el documento podr ser modificado.
77 FASES 2 y 3: HACER Y VERIFICAR
Figura 8: Fases: Hacer y Verificar (PHVA)
La etapa cinco de la metodologa de pruebas (Evaluacin y ejecucin de las pruebas) hace parte de las fases 2 y 3 (Hacer y verificar) del ciclo PHVA.
A continuacin se detallan las actividades que se llevan a cabo en esta etapa:
78 5. EVALUACIN Y EJECUCIN DE LAS PRUEBAS.
El objetivo de esta etapa es ejecutar los casos de pruebas y evaluar los resultados obtenidos.
5.1 Ejecucin y Documentacin de las pruebas. (HACER)
5.1.1 Ejecucin de las pruebas de regresin.
El objetivo de esta actividad es ejecutar nuevamente las pruebas que arrojaron errores anteriormente o las pruebas de funcionalidades que han sufrido modificaciones. De esta manera se verifican las correcciones y se pueden detectar errores en la aplicacin ocasionados por correcciones o modificaciones al cdigo.
A lo largo de la vida del software, debe ser mantenido y dispuesto para su utilizacin un conjunto de casos de prueba. Estos casos de prueba deben ser lo suficientemente completos de tal modo que las funcionalidades de la aplicacin puedan ser probadas a fondo. Mediante una matriz de reexaminacin (retest) se pueden ubicar fcilmente los casos de prueba que sern utilizados para probar los defectos encontrados en pruebas pasadas.
Una matriz de reexaminacin relaciona los casos de prueba con las funciones de la aplicacin. Una entrada de chequeo en la matriz indica que el caso de prueba es ejecutado nuevamente cuando la funcin (unidad del programa) sea modificada debido a mejoras o correcciones. La matriz de reexaminacin puede ser construida al inicio de las pruebas y debe ser mantenida durante las siguientes pruebas, debido a que las funciones de la aplicacin pueden ser modificadas durante el ciclo de desarrollo; pueden existir nuevos casos de 79 prueba que deben ser creados y chequeados en la matriz para la realizacin de las pruebas.
Si al ejecutar un caso de prueba (realizar la prueba) de la matriz se obtienen los resultados esperados, el estado del defecto en el reporte de defectos debe ser cambiado a Cerrado.
5.1.2 Ejecutar una nueva sesin de pruebas.
El objetivo de esta actividad es ejecutar las pruebas (casos de prueba) que fueron creadas desde la ltima ejecucin de pruebas realizada, pues en este lapso de tiempo el equipo de pruebas ha actualizado el plan de pruebas, la matriz de pruebas de GUI, los scripts (pruebas automticas), las pruebas de fragmentos del sistema y las pruebas de aceptacin, en preparacin para las siguientes pruebas. En este punto todas estas pruebas son ejecutadas.
5.1.3 Documentar los defectos arrojados por las pruebas.
Durante la ejecucin de las pruebas, los resultados deben ser reportados en la base de datos de defectos. Los defectos generalmente estn relacionados con casos de prueba individuales que ya han sido ejecutados. El objetivo de esta tarea es elaborar un registro completo de los defectos encontrados, se debe tener en cuenta que algunos defectos ya pueden estar registrados, por lo que se debe concentrar, recolectar y consolidar toda la informacin relacionada con el defecto. Es recomendable realizar el registro de los defectos digitalmente ya que de esta forma es ms fcil hacerles seguimiento y localizar los defectos duplicados.
80 5.2 Evaluacin de las pruebas. (VERIFICAR)
5.2.1 Analizar las mtricas.
El uso de mtricas nos ayuda a soportar el proceso de desarrollo y a tomar decisiones con mas efectividad. El objetivo de esta tarea es aplicar los principios de las mtricas para tener un buen control sobre el proceso de pruebas.
En una actividad anterior se identificaron las mtricas que van a ser utilizadas, y durante las pruebas se ha recogido informacin que permite realizar un anlisis de los resultados obtenidos, esto incluye la cuantificacin de las mtricas y la elaboracin de grficos con estos datos.
La siguiente es la informacin clave que un lder de pruebas necesita para saber que las pruebas han sido finalizadas:
Estado de la ejecucin de los casos de prueba.
Cuntos casos de prueba fueron ejecutados, cuntos no fueron ejecutados y cuntos descubrieron defectos. Estas preguntas proveen informacin acerca de la productividad de las pruebas. Si los casos de prueba no han sido ejecutados oportunamente, esto puede indicar la necesidad de asignar ms personal al proyecto.
Anlisis de la diferencia de defectos.
Cul es la diferencia entre el nmero de defectos que han sido descubiertos y los que han sido corregidos. Esto provee informacin acerca de la habilidad de los desarrolladores para la correccin de defectos oportunamente. Si 81 existe una diferencia relativamente alta, esto puede indicar que quiz ms desarrolladores deban ser asignados al proyecto.
Estado de la severidad de los defectos.
En este punto se debe evaluar cmo es la distribucin de la severidad de los defectos (Ej. : severidad crtica, mayor y menor). Cuntos defectos con severidad crtica, mayor y menor se encuentran abiertos, cuntos se han resuelto. Si por ejemplo se encuentra un alto porcentaje de defectos con severidad crtica abiertos, probablemente exista un nmero considerable de caractersticas de la arquitectura y del diseo con debilidades.
Anlisis de la curva ingreso de defectos.
Graficar el nmero de defectos descubiertos peridicamente con el fin de conocer los defectos que ingresan en cada lapso de tiempo y tomar medidas segn la inclinacin de la curva, si sta se aproxima a cero indica que los defectos estn disminuyendo, de lo contrario se concluye que el descubrimiento de defectos es aun muy robusto y que muchos ms defectos pueden ser descubiertos en las siguientes pruebas.
5.2.2 Refinar el cronograma de pruebas.
Con anterioridad fue elaborado un cronograma de pruebas que incluye los pasos de las pruebas, las fechas de inicio y de finalizacin y las responsabilidades. Durante el transcurso del desarrollo, el cronograma de las pruebas debe ser continuamente monitoreado. El objetivo de esta actividad es actualizar el cronograma con el fin de reflejar el estado actual; estas actividades son responsabilidad del lder de pruebas:
Comparar el progreso actual contra el progreso planeado. 82 Evaluar los resultados para determinar el resultado de las pruebas. Tomar las acciones apropiadas basado en la evaluacin.
Si el progreso de las pruebas no est segn lo planeado, el lder de pruebas debe determinar los factores que ocasionaron el retrazo; generalmente una causa de esto es la subestimacin del esfuerzo a invertir en las pruebas. Otro factor puede ser el descubrimiento desmedido de defectos, causando que gran parte del esfuerzo sea invertido en probar nuevamente la correccin de stos.
5.2.3 Identificar los cambios en requerimientos.
Con anterioridad los requerimientos funcionales fueron analizados mediante una descomposicin jerrquica funcional, la estructura funcional y los estndares de las ventanas y los requerimientos mnimos del sistema.
Durante el proceso de desarrollo, nuevos requerimientos pueden ser introducidos, tales como:
Nuevas interfaces o componentes GUI Modificacin de funciones. Nuevas funciones. Eliminacin de funciones. Nuevos requerimientos de sistema, Ej. hardware.
Cada nuevo requerimiento debe ser identificado, registrado, analizado y actualizado en el plan, el diseo y los scripts de pruebas.
83 FASE 4: ACTUAR
Figura 9: Fase: Actuar (PHVA)
La etapa seis de la metodologa de pruebas (Preparar las siguientes pruebas) hace parte de las fases 4 (Actuar) del ciclo PHVA.
A continuacin se detallan las actividades que se llevan a cabo en esta etapa:
84 6. PREPARAR LAS SIGUIENTES PRUEBAS
El objetivo de esta actividad es preparar un nuevo ciclo de pruebas segn los nuevos requerimientos y los resultados de las pruebas anteriores. 6.1 Refinar las pruebas.
6.1.1 Actualizar la matriz funcin / prueba.
El propsito de esta tarea es actualizar el diseo de las pruebas y la matriz de funcin / prueba con los nuevos requerimientos. En el caso de la matriz las nuevas funciones se aaden verticalmente y los nuevos casos de prueba horizontalmente.
Para las pruebas de GUI, se deben actualizar los formatos aadiendo los nuevos casos de prueba que resulten de los nuevos requerimientos.
6.1.2 Actualizar las pruebas de fragmentos del sistema.
En un paso anterior fueron definidas las pruebas de fragmentos del sistema. El objetivo de estas pruebas es encontrar posibles problemas que pueda tener el sistema.
El objetivo de esta tarea, es entonces, actualizar las pruebas de fragmentos del sistema de acuerdo con los nuevos requerimientos.
6.1.3 Actualizar las pruebas de aceptacin.
En un punto anterior se definieron las posibles pruebas de aceptacin. Estas pruebas son posibles pruebas orientadas al usuario que lo llevan a comprobar que la aplicacin cumple con los requerimientos especificados. 85 El objetivo de este paso es actualizar las pruebas de aceptacin de acuerdo con los nuevos requerimientos.
6.2 Examinar el equipo y el ambiente de pruebas
6.2.1 Evaluar el equipo de prueba
Antes de comenzar un nuevo ciclo de pruebas, se debe evaluar el equipo de pruebas en cuanto a productividad, cumplimiento y calidad. El lder del equipo de pruebas debe mirar que casos de prueba se llevaron a cabo de acuerdo con el plan de pruebas. Debe tambin evaluar el cumplimiento de las tareas que se haban programado y sacar conclusiones de cmo ha sido el comportamiento del equipo. Si es necesario, el lder de pruebas debe integrar nuevos participante en el equipo o cambiar a alguno para mejorar el rendimiento y la productividad del grupo.
6.2.2 Evaluar el ambiente de pruebas
En un paso anterior se defini el ambiente de pruebas. Este ambiente provee la infraestructura necesaria para llevar a cabo las pruebas durante toda las fases del desarrollo.
El objetivo de este paso es revisar el adecuado funcionamiento de este ambiente y realizar los cambios que sean necesarios de acuerdo con los nuevos requerimientos.
Los principales componentes de un ambiente de pruebas incluyen las herramientas de software, la tecnologa y el hardware. Tambin es necesario revisar la configuracin tanto de las herramientas como del sistema operativo y el hardware. 86
Algunos posibles cambios al ambiente de pruebas pueden ser:
Extender el laboratorio de pruebas. Nuevas herramientas de pruebas. Nuevo hardware requerido. Cambios en las configuraciones de red. Nuevo software.
6.3 Publicar reportes intermedios
Luego de realizar un ciclo de pruebas se deben realizar reportes que indiquen el estado de las pruebas. Estos reportes deben ser realizados por el equipo de pruebas, el lder de pruebas y el representante del grupo de desarrolladores. El objetivo es identificar mejoras que se puedan realizar para el siguiente ciclo.
El reporte del estado de ejecucin de los casos de prueba puede ayudar a identificar el estado de la aplicacin y a hacer predicciones de cundo puede estar lista la liberacin de una nueva versin. (Figura 10.)
Se puede tambin con este reporte observar si hay muchos casos de pruebas que no han sido ejecutados, y esto llevara a incrementar la productividad del equipo de pruebas o de los recursos del ambiente de pruebas. Otro punto que puede revelar el informe es el nmero de casos de pruebas que no se han corregido o que corren con errores.
Otro reporte que puede ser til, es la distribucin de los errores encontrados divididos en tres categoras: crtica, media, baja. ( Figura 11. )
87 Estado de los casos de pruebas 0 10 20 30 40 50 60 casos completados casos con errores casos no ejecutados Porcentaje
Figura 10: Estado casos de prueba
En esta figura se observa que el 50 % de los casos de prueba se han completado sin errores, el 21 % han arrojado errores y el 29 % no se han ejecutado todava. Esto puede significar que son necesarios ms recursos para evacuar un mayor nmero de casos de prueba y poder liberar una nueva versin mas rpidamente.
88 Severidad de los errores 0 5 10 15 20 25 30 35 40 45 Critica Media Baja Porcentaje
Figura 11: Severidad de los errores
En este grfico se observa que el 33% de los errores encontrados son crticos, esto puede indicar errores en las fases de diseo o en la arquitectura del sistema.
89 FASES 1,2,3 y 4: PLANEAR, HACER, VERIFICAR Y ACTUAR
Figura 12: Fases: Planear, Hacer, Verificar y Actuar (PHVA)
La etapa siete de la metodologa de pruebas (Dirigir las pruebas del sistema) y la etapa 8 (Dirigir las pruebas de aceptacin) hacen parte de las fases 1,2,3 y 4 (Planear, hacer, verificar y actuar) del ciclo PHVA.
A continuacin se detallan las actividades que se llevan a cabo en estas etapas:
90 7. DIRIGIR LAS PRUEBAS DEL SISTEMA
Las pruebas del sistema evalan el comportamiento, la funcionalidad y el rendimiento de la aplicacin vindola como un todo. Estas pruebas consisten en pruebas de estrs, volumen, rendimiento, seguridad, recuperacin, etc. El objetivo de esta tarea es discutir cmo se deben preparar las pruebas, cmo disearlas, ejecutarlas y reportar los errores encontrados.
7.1 Completar el plan de pruebas del sistema
7.1.1 Finalizar los tipos de prueba del sistema
En los pasos anteriores se ejecutaron las pruebas de fragmentos del sistema. Cada una de ellas se elabor durante las distintas fases del proyecto. Ahora, el objetivo de esta tarea es seleccionar las pruebas globales del sistema que van a ser desarrolladas. Estas pruebas se basan o se plantean segn los objetivos originales del proyecto que fueron definidos durante la fase de recoleccin de la informacin.
Durante esta fase se debe definir el orden en que se van a ejecutar estas pruebas. Un ejemplo de esto puede ser
Pruebas del rendimiento del sistema. Pruebas que manejen un nivel alto de volumen de datos. Pruebas de estrs.
Luego:
Pruebas de seguridad del sistema. Pruebas de Backup y recuperacin. 91 Y por ltimo:
Pruebas de compatibilidad con otros mdulos o sistemas. Pruebas a la documentacin. Pruebas de instalacin.
Tambin, en esta fase se define qu pruebas se pueden realizar con herramientas automticas. La ventaja de estas pruebas es que pueden ser repetitivas y con ellas se pueden realizar ms exhaustivamente pruebas de estrs por ejemplo.
7.1.2 Programar pruebas del sistema
En este paso lo que se debe hacer es programar cada una de las tareas que se deben realizar para la ejecucin de las pruebas del sistema. Se debe especificar la fecha de inicio y la fecha en la que se deben terminar, as como tambin se debe nombrar el responsable de cada prueba.
7.1.3 Equipo para las pruebas del sistema
El equipo de pruebas del sistema es el encargado de disear, ejecutar y evaluar los resultados de las pruebas. Est encargado tambin de reportar los errores y las anomalas al grupo de desarrollo siguiendo, los procedimientos anteriormente mencionados. Luego de que los errores sean corregidos el equipo de pruebas de volver a ejecutar las pruebas para comprobar que no hayan afectado otras funcionalidades de la aplicacin o para corroborar que las fallas se han corregido.
92 En el equipo de pruebas debe haber un lder encargado de:
Organizar el equipo de trabajo. Estabilizar y adecuar el ambiente de trabajo. Organizar las polticas y estndares a utilizar. Trabajar de acuerdo con el plan de pruebas. Coordinar la documentacin.
7.1.4 Estabilizar el ambiente de pruebas:
El propsito de un buen ambiente de pruebas es dotar a los encargados del aseguramiento de calidad de la infraestructura necesaria para las actividades de pruebas.
Es importante dentro del ambiente de pruebas contar con la tecnologa adecuada y las herramientas de pruebas adecuadas. Esta tecnologa incluye la plataforma de hardware, la infraestructura de red con todos sus componentes, el sistema operativo, y cualquier otra herramienta de software que se requiera.
El espacio fsico donde sea ubicado el equipo de pruebas debe ser definido, es recomendable que ste quede cerca del equipo de desarrollo, para que se facilite la comunicacin y puedan interactuar fcilmente para llegar a fines comunes.
El hardware y el software necesarios, debern ser configurados adecuadamente para llevar a cabo las pruebas exitosamente.
93 7.2 Tipos de pruebas del sistema
Durante esta fase los tipos de pruebas del sistema son diseados y documentados.
7.2.1 Pruebas de rendimiento
El objetivo de las pruebas de rendimiento es medir el comportamiento del sistema en cuanto al cumplimiento de objetivos tales como tiempos de respuesta esperados. Los resultados obtenidos deben ser comparados con los resultados esperados y documentar las diferencias que haya.
Las pruebas de rendimiento pueden ser una combinacin de pruebas de caja negra y pruebas de caja blanca. En el primero de los casos se pueden realizar cargas masivas de datos o realizar operaciones globales en la aplicacin. Para las pruebas de caja blanca es necesario definir qu mdulos, instrucciones o tareas especficas se quieren probar.
Algunas medidas que se pueden tomar en cuenta para la evaluacin de pruebas de rendimiento son:
Uso del procesador. Lectura / Escritura en discos. Nmero de Lecturas / Escrituras por instruccin. Velocidad de respuesta en red. Utilizacin de memoria. Tiempo medio de ejecucin por mdulo. Porcentaje de tiempos de espera. Espera entre mdulos. Tiempo de inicio de la aplicacin o mdulos. Tiempo de respuesta del sistema a las instrucciones. 94 Nmero de transacciones por minuto.
Las pruebas de rendimiento asumen que la aplicacin funciona, es estable y slida. Por tanto, es importante eliminar tantas variables como sea posible de las pruebas. Por ejemplo, los errores en el cdigo pueden crear la apariencia de un problema de rendimiento o incluso enmascarar un problema de rendimiento. Para comparar con precisin los resultados de diferentes pasadas de las pruebas de rendimiento, la aplicacin debe funcionar correctamente. Es especialmente importante restablecer la funcionalidad de la aplicacin si el proceso de ajuste ha modificado la implementacin de un componente. La aplicacin debe pasar las pruebas de funcionalidad para poder probar su rendimiento. Adems de los cambios de la aplicacin, puede haber cambios inesperados en el hardware, el trfico de la red, la configuracin del software, los dispositivos del sistema, etc.
Para ajustar correctamente el rendimiento, deben mantenerse registros precisos y completos de cada ejecucin de las pruebas. Los registros deben incluir: La configuracin exacta del sistema, especialmente los cambios de pasadas anteriores de las pruebas. Los datos sin formato y los resultados calculados de las herramientas de supervisin del rendimiento. Estos registros no indican slo si la aplicacin cumple los objetivos de rendimiento, sino que ayudan a identificar las posibles causas de problemas futuros de rendimiento.
Durante cada ejecucin de las pruebas, se deben ejecutar exactamente el mismo conjunto de pruebas de rendimiento; de lo contrario, no es posible discernir si los resultados diferentes se deben a cambios en las pruebas o a cambios en la aplicacin. Automatizar el conjunto de pruebas de rendimiento en la medida de lo posible ayuda a eliminar diferencias de operador. 95 Otros factores aparentemente benignos causan impacto en los resultados de las pruebas de rendimiento, como el tiempo que se ejecuta la aplicacin antes de comenzar la prueba.
7.2.2 Pruebas de seguridad
El objetivo de las pruebas de seguridad es evaluar que la aplicacin tenga las funciones adecuadas para asegurar la integridad y confidencialidad de la informacin.
Uno de los puntos que debe probarse es el acceso a los recursos de la aplicacin. Analizar diferentes caminos de usar un recurso con fines ilcitos o dainos. Tambin es importante probar que la informacin slo pueda ser cambiada o manipulada segn el tipo de usuarios o segn el mdulo de la aplicacin.
Otros aspectos que se deben tener en cuenta son:
Acceso de usuarios al sistema. Polticas de vencimiento o bloqueo de passwords de usuarios. Roles de los usuarios. Accesos remotos. Las acciones maliciosas que puedan causar perdidas o daos.. Que daos pueden ocurrir a la informacin en caso de acciones maliciosas. Funciones o controles que se deben tener en cuenta para prevenir acciones que puedan causar daos o perdidas en la informacin. Funciones de seguridad para resguardar la informacin en caso de errores humanos Funciones de auditoria. 96 7.2.3 Pruebas de volumen
El objetivo de las pruebas de volumen es exponer el sistema a grandes volmenes de datos y comprobar que sea capaz de manejarlo y comportarse de la manera esperada.
Las pruebas de volumen extienden el sistema a sus lmites de diseo con grandes volmenes de transacciones, datos, etc. Examina el funcionamiento del sistema cuando est trabajando con grandes volmenes de datos y con cantidades de datos no permitidas.
7.2.4 Pruebas de estrs
El objetivo de las pruebas de estrs es comprobar el comportamiento del sistema aumentando la carga de procesamiento y de los recursos. Principalmente se pueden observar los tiempos de respuesta y el cumplimiento de los objetivos de la aplicacin.
Las pruebas de estrs ayudan a descubrir errores sutiles que, de otro modo, no se detectaran hasta que se hubiese implementado la aplicacin. Estas pruebas son pruebas del lmite del sistema, por ejemplo la mxima cantidad de usuarios concurrentes.
7.2.5 Pruebas de compatibilidad
El objetivo de estas pruebas es chequear la compatibilidad de la aplicacin con otros mdulos de la aplicacin, otras aplicaciones u otros sistemas. Estos tipos de pruebas se deben realizar antes de salir a produccin, en ellos se encontraran defectos que pueden no encontrarse en el ambiente de pruebas.
97 Un ejemplo de este tipo de pruebas es cuando la aplicacin comparte datos con otras aplicaciones o est instalada en el mismo servidor con otros sistemas compartiendo recursos como memoria.
7.2.6 Pruebas de Documentacin
El objetivo de las pruebas de documentacin es verificar que la documentacin del usuario sea correcta y que los procedimientos que se indican en ella funcionen adecuadamente.
Una buena documentacin ayuda a rebajar los costos de post venta ya que los usuarios pueden resolver preguntas fcilmente sin tener que llamar a soporte.
Durante estas pruebas se debe seguir paso a paso las funciones que indica el manual y pueden ser realizadas por usuarios finales, ya que para ellos es realizada y es necesario comprobar su comprensin.
Algunas recomendaciones pueden ser:
Usar la documentacin como fuente para la elaboracin de casos de pruebas. Usar el sistema exactamente como dice la documentacin. Probar todos los puntos y recomendaciones del manual. Documentar los errores encontrados. Asegurarse que la documentacin contemple todas las funcionalidades del sistema. Asegurarse que no se hable en terminologa muy tcnica.
98 7.2.7 Pruebas de Backup y Recuperacin
El objetivo de estas pruebas es ver la facilidad del sistema para realizar respaldo y recuperacin de los datos y de la aplicacin en caso de un desastre o fallo de hardware o software.
Algunas recomendaciones para estas pruebas son:
Hacer backup de todos los archivos. Realizar respaldos de las bases de datos. Realizar backup automticos si estos estn contemplados. Verificar procedimientos de seguridad durante el backup. Realizar el procedimiento completo de backup. Restaurar parcialmente backups anteriores. Restaurar completamente backups anteriores. Realizar restauraciones automticas.
7.2.8 Pruebas de instalacin
El objetivo de estas pruebas es comprobar que la aplicacin se instale correctamente. Tambin se deben incluir pruebas de desinstalacin y reinstalacin y comprobar su funcionamiento.
7.3 Revisar y aprobar las pruebas del sistema.
7.3.1 Programar y preparar la revisin
La revisin de la planeacin de pruebas del sistema debe ser programada. Es importante que los participantes de la reunin para la revisin tengan la ltima copia del documento del plan de pruebas del sistema. 99
La agenda realizada para la revisin debe contemplar el tiempo estimado para la revisin de todos los puntos. En caso de no terminarse se debe programar una siguiente reunin.
El propsito de esta revisin es lograr que se apruebe el plan de pruebas del sistema tanto por el gerente del proyecto como por los desarrolladores. Cualquier sugerencia o cambio debe ser realizado e incorporado al documento.
7.3.2 Aprobacin
El objetivo de esta actividad es que sea aprobado el diseo de las pruebas del sistema por el equipo de calidad y el equipo de desarrollo. Esta aprobacin se debe realizar por escrito y debe estar firmada por el gerente del proyecto, el lder de pruebas y el lder de los desarrolladores. Se debe tambin elaborar y entregar un documento donde se encuentre la ltima copia del diseo de las pruebas con las sugerencias y los cambios que se llevaron a cabo. Finalmente se debe indicar que durante el ciclo de vida del proyecto el documento podr ser modificado.
7.4 Ejecutar las pruebas del sistema
7.4.1 Volver a probar fallos anteriores del sistema
El objetivo de esta tarea es realizar nuevamente las pruebas donde se descubrieron errores. Algunos casos de pruebas son mantenidos durante todo el ciclo de vida del proyecto. Estos casos se deben realizar para comprobar que se cumplen todas las funcionalidades del sistema, enfocndose en las funciones que se han modificado o que han sido objeto de correcciones.
100 Mediante una matriz de reexaminacin (retest) se pueden ubicar fcilmente los casos de prueba que sern utilizados para probar los defectos encontrados en pruebas pasadas.
7.4.2 Ejecutar las pruebas del sistema.
El objetivo de esta actividad es ejecutar las pruebas (casos de prueba) que fueron creadas desde la ltima ejecucin de pruebas realizada, pues en este lapso de tiempo, el equipo de pruebas ha actualizado el plan de pruebas, la matriz de pruebas de GUI, los scripts (pruebas automticas), las pruebas de fragmentos del sistema y las pruebas de aceptacin, en preparacin para las siguientes pruebas. En este punto todas estas pruebas son ejecutadas.
7.4.3 Documentar los defectos arrojados por las pruebas.
Durante la ejecucin de las pruebas, los resultados deben ser reportados en la base de datos de defectos. Los defectos generalmente estn relacionados con casos de prueba individuales que ya han sido ejecutados. El objetivo de esta tarea es elaborar un registro completo de los defectos encontrados, se debe tener en cuenta que algunos defectos ya pueden estar registrados, por lo que se debe concentrar en recolectar y consolidar toda la informacin relacionada con el defecto. Es recomendable realizar el registro de los defectos digitalmente ya que de esta forma es ms fcil hacerles seguimiento y localizar los defectos duplicados.
101 8. DIRIGIR LAS PRUEBAS DE ACEPTACIN
Las pruebas de aceptacin son pruebas ejecutadas por un usuario para demostrar que la aplicacin cumple con los objetivos del negocio y requerimientos del sistema. Usualmente estn compuestas por subconjuntos de pruebas del sistema. A continuacin se indica cmo preparar, disear y ejecutar las pruebas de aceptacin y adicionalmente cmo reportar los defectos descubiertos durante las pruebas.
8.1 Completar la planeacin de las pruebas de aceptacin.
8.1.1 Identificar los tipos de pruebas de aceptacin.
En esta actividad, la lista de la clasificacin de las pruebas iniciales de aceptacin es refinada y son seleccionadas las pruebas que sern ejecutadas.
Las pruebas de aceptacin demuestran la habilidad de la aplicacin para reunir todos los requerimientos del usuario. El objetivo de estas pruebas es demostrar que la aplicacin funciona, en este punto se hace menos nfasis en las caractersticas tcnicas y ms en verificar que el sistema es adecuado para el usuario final. Las pruebas generalmente son ejecutadas por usuarios, quienes en ocasiones definen pruebas especiales como pruebas de carga o de estrs con el fin de sobrepasar los lmites del sistema.
8.1.2 Finalizar el cronograma de las pruebas de aceptacin.
En esta actividad el cronograma de las pruebas de aceptacin debe ser finalizado incluyendo los pasos de las pruebas, fechas de inicio, finalizacin y responsables. El cronograma adicionalmente debe describir cmo ser revisado, cmo se le har seguimiento y cmo ser aprobado. 102
Para las pruebas de aceptacin, el equipo de pruebas usualmente est conformado por usuarios delegados. Sin embargo el mbito del equipo de pruebas y las herramientas para las pruebas son probablemente los usados durante las pruebas del sistema. A continuacin se presenta un ejemplo de un cronograma de pruebas de aceptacin:
Paso de la prueba Fecha de inicio Fecha de finalizacin Responsable Organizacin general Organizar el equipo de pruebas de aceptacin. 08/01/2004 08/07/2004 John, Director de pruebas Establecer el ambiente para las pruebas de aceptacin 08/08/2004 08/09/2004 John, Director de pruebas Establecer las herramientas para las pruebas de aceptacin 08/10/2004 08/10/2004 Juan, Tester Pruebas de Aceptacin Diseo / Escritura de las pruebas 12/11/2004 12/15/2004 Juan (usuario), Testers Revisin de las pruebas 12/16/2004 12/16/2004 Jhon, Director de pruebas Ejecucin de las pruebas 12/17/2004 12/22/2004 Juan (usuario), Testers Probar nuevamente los defectos de aceptacin 12/23/2004 12/25/2004 Juan (usuario), Testers Tabla 5: Cronograma de pruebas
103 8.1.3 Organizar el equipo de pruebas de aceptacin.
El equipo de pruebas de aceptacin es responsable de disear y ejecutar las pruebas, evaluar los resultados de las pruebas y reportar cualquier defecto usando el sistema de seguimiento de defectos. Cuando los desarrolladores corrigen los defectos, el equipo de pruebas prueba nuevamente los puntos en los que se encontraron, para asegurar la correccin. El equipo de pruebas de aceptacin usualmente cuenta con un representante de los usuarios de la aplicacin que finalmente es quien acepta el sistema.
El equipo de pruebas de aceptacin es liderado por un director de pruebas, que tiene las siguientes responsabilidades:
Organizar el equipo de pruebas. Establecer el ambiente para las pruebas. Definir las polticas de pruebas, procedimientos y estndares. Asegurar la preparacin de las pruebas. Trabajar en el plan de pruebas y controlar el proyecto. Hacer seguimiento de costos de las pruebas. Asegurar que la documentacin de las pruebas es exacta y oportuna. Coordinar el equipo.
8.1.4 Establecer el ambiente de pruebas de aceptacin.
Durante esta actividad se finaliza el ambiente para las pruebas de aceptacin, el cual generalmente es el mismo que se us para las pruebas del sistema. El propsito del ambiente de pruebas es proveer la infraestructura necesaria para las actividades de prueba. Para esta tarea las necesidades del ambiente de pruebas se establecen y se repasan antes de su implementacin.
104 Los componentes principales del ambiente de pruebas incluyen la facilidad, la tecnologa, y las herramientas de las pruebas. El componente facilidad de las pruebas se refiere a la disposicin y configuracin fsica. La tecnologa se refiere al hardware, redes y sus componentes, sistema operativo, entre otros. El componente herramientas se refiere a cualquier software de pruebas especializado, herramientas de pruebas automatizadas, libreras de pruebas y software de soporte.
La facilidad de las pruebas y el lugar de trabajo deben ser establecidos. Este puede extenderse de una configuracin individual del lugar de trabajo a un laboratorio de pruebas formal; de cualquier forma, es importante que los probadores estn juntos y cerca del equipo de desarrollo. Esto facilita la comunicacin y la tenencia del sentido de una meta comn.
El hardware y el software de pruebas deben ser instalados. Esto en coordinacin con los vendedores, los usuarios y el personal de tecnologa de informacin. Puede ser necesario probar el hardware y coordinar con los vendedores de hardware, adicionalmente las redes de comunicaciones necesitan ser instaladas y ser probadas.
8.1.5 Instalar las herramientas para las pruebas de aceptacin.
Durante esta actividad, las herramientas para las pruebas de aceptacin son instaladas y verificadas. Se debe realizar una ejecucin de los casos de prueba y de los scripts de las pruebas para verificar que las herramientas estn listas para las pruebas de aceptacin. Algunas otras consideraciones para tener en cuenta en la preparacin de las herramientas son:
Capacitar al equipo de pruebas en el uso de las herramientas. Verificar compatibilidad de las herramientas con el ambiente de operacin. 105 Asegurar espacio en disco para las herramientas. Garantizar comunicacin directa con el proveedor de las herramientas. Verificar si es necesario modificar los procedimientos de las pruebas para acomodarse a las herramientas. Instalar la ltima versin de las herramientas.
8.2 Completar los casos de pruebas de aceptacin.
En esta actividad, los casos de prueba de aceptacin se disean y se escriben. Los casos de prueba funcionales, se transforman en casos reutilizables para pruebas de aceptacin con los datos de prueba creados.
8.2.1 Identificar el subconjunto de pruebas del sistema que se utilizarn para pruebas de aceptacin.
Los casos de prueba de aceptacin generalmente (no siempre) son desarrollados por el usuario final y normalmente no son responsabilidad de la empresa desarrolladora, porque las pruebas de aceptacin comparan los requisitos originales del sistema y las necesidades de los usuarios. Es la prueba final para que los usuarios acepten o rechacen el sistema. Los usuarios finales proveen los recursos de las pruebas y realizan sus propias pruebas. Pueden o no utilizar el mismo ambiente de pruebas que fue utilizado durante las pruebas del sistema, depende de s las pruebas sern ejecutadas en el ambiente de trabajo del usuario final o no.
Generalmente, las pruebas de aceptacin consisten en un subconjunto de las pruebas del sistema que se han diseado ya durante las pruebas del sistema. Por tanto, la tarea actual consiste en identificar cules de las pruebas del sistema sern utilizadas para las pruebas de aceptacin.
106 8.2.2 Disear y escribir pruebas de aceptacin adicionales
Las pruebas de sistema que se ejecutarn nuevamente durante las pruebas de aceptacin, pueden ser complementadas con condiciones especiales para maximizar la aceptabilidad del sistema. Por ejemplo, una prueba de aceptacin pudo requerir que un cierto rendimiento de procesamiento est sostenido por un perodo de tiempo con lmites de tolerancia aceptables del tiempo de respuesta.
Otras pruebas no diseadas durante las pruebas del sistema pueden ser previstas por el usuario, pues ste tiene mas conocimiento acerca de los requisitos y las operaciones del negocio, puede que el usuario descubra defectos que solamente un usuario final ve. Esto tambin ayuda al usuario a estar listo para lo que se va a instalar y a poner en produccin realmente de manera que no se creen falsas expectativas.
El diseo de las pruebas de aceptacin puede incluir el uso de datos coherentes, porque probablemente se dar ms fcilmente la aceptacin de los resultados de las pruebas si se parecen a los datos reales del usuario.
8.3 Revisar el plan de pruebas de aceptacin.
8.3.1 Programar y llevar a cabo la revisin.
La revisin del plan de pruebas de aceptacin se debe programar antes de la revisin real y los participantes deben tener la ltima versin del plan de pruebas.
Como con cualquier entrevista o revisin, se deben tener en cuenta cuatro elementos. El primero define qu ser discutido; el segundo presenta los detalles; el tercero resume y el cuarto se refiere a la puntualidad.
107 El revisor debe indicar la duracin estimada para la revisin y aclarar que si el tiempo expira antes de terminar todos los puntos de la agenda deber ser programada otra revisin para continuar.
El propsito de esta actividad es que los desarrolladores y el gerente del proyecto convengan y acepten el plan de pruebas. Si hay algunos cambios sugeridos al plan de pruebas durante la revisin, estos deben ser incorporados en el plan.
8.3.2 Aprobar el plan de pruebas de aceptacin.
La aprobacin del plan de pruebas es crtica ya que ayuda a proporcionar los acuerdos necesarios entre las pruebas, los desarrolladores, y el gerente del proyecto. Esta aprobacin se debe realizar por escrito y debe estar firmada por el gerente del proyecto, el lder de pruebas y el lder de los desarrolladores. Se debe adjuntar al documento el ltimo plan de pruebas e indicar que se han incorporado todos los comentarios al respecto y que si no se habla nada al respecto se asume que todos estn de acuerdo con el plan.
8.4 Ejecutar las pruebas de aceptacin.
8.4.1 Ejecutar las pruebas de aceptacin de los errores encontrados en las pruebas anteriores.
El propsito de esta tarea es ejecutar nuevamente las pruebas que descubrieron defectos en las anteriores pruebas de aceptacin. Estas pruebas detectan los errores causados por modificaciones o correcciones realizadas al software.
Los casos de prueba deben ser bastante completos de manera que se cubran todas las funcionalidades de la aplicacin a fondo. El problema se enfoca en 108 cmo localizar esos casos de prueba para probar los defectos descubiertos durante las pruebas anteriores, un buen mecanismo es la matriz de reexaminacin.
Como se mencion anteriormente, una matriz de reexaminacin relaciona los casos de prueba con las funciones (o las unidades del programa). Un chequeo en la matriz indica que el caso de prueba debe ser reexaminado cada vez que la funcin (o la unidad del programa) sea modificada debido a una mejora o a una correccin. Ninguna entrada significa que la prueba no necesita ser ejecutada nuevamente. La matriz de reexaminacin puede ser construida antes de las primeras pruebas y debe ser actualizada y usada durante las siguientes pruebas. Mientras que las funciones (o las unidades del programa) se modifican durante el desarrollo, los casos existentes o nuevos de prueba necesitan ser creados e ingresados en la matriz de reexaminacin en la preparacin para las siguientes pruebas.
Si se observa que algunas funciones estn estables y no han tenido modificaciones recientes, se puede retirar (s existe) su chequeo de la matriz de reexaminacin.
8.4.2 Ejecutar las actuales pruebas de aceptacin.
El propsito de esta tarea es ejecutar las pruebas de aceptacin creadas desde la ltima ejecucin de pruebas. Durante este lapso de tiempo, el equipo de pruebas debe haber puesto al da las funciones/GUI, los fragmentos del sistema, y las pruebas de aceptacin en la preparacin para estas pruebas.
109 8.4.3 Documentar los defectos de aceptacin.
Durante la ejecucin de las pruebas de aceptacin, los resultados de las pruebas deben ser reportados en la base de datos de defectos. Estos defectos generalmente estn relacionados con casos de prueba individuales que han sido ejecutados, sin embargo, variaciones a los casos de prueba formales a menudo descubren otros defectos. El objetivo de esta actividad es producir un expediente completo de los defectos descubiertos. Si el paso de la ejecucin se ha registrado correctamente, los defectos ya se deben encontrar registrados en la base de datos, si este es el caso, el objetivo se convierte en recoger y consolidar la informacin del defecto.
Existen herramientas que se pueden utilizar para consolidar y registrar defectos dependiendo de los mtodos de la ejecucin de la prueba. Si los defectos se registran en papel, la consolidacin implica recoger y organizar todos los papeles. Si los defectos se registran electrnicamente, las caractersticas de bsqueda pueden localizar fcilmente los defectos duplicados.
110 9. RESUMEN DE PRUEBAS Y REPORTE FINAL
9.1 Resumen y consolidacin de la informacin de pruebas.
9.1.1 Pruebas ejecutadas y terminadas
El objetivo de esta tarea es que el equipo de pruebas, con base en el plan de pruebas, verifique que todas los casos y todas las pruebas hayan sido ejecutadas y que todos los errores hayan sido resueltos. Para esto, se deben basar en los documentos que se han generado durante todo el desarrollo de las pruebas y el estado en que se encuentran los errores. Si hay algn error que no ha sido resuelto se debe dar mayor nfasis a l y se debe disponer de los recursos necesarios para estabilizar la aplicacin.
9.1.2 Consolidar los errores por casos de prueba y funciones.
En esta fase, el equipo de pruebas debe consolidar la informacin que se encuentra en la documentacin de los errores, donde se especifica en qu estado se encuentra el error. Se debe especificar el caso de prueba exacto en que ocurri el error y el nmero de errores para dicho caso.
9.1.3 Documentar errores no corregidos
Para los errores que no han sido corregidos, se debe especificar tambin el caso de prueba y la funcin en donde ocurri. Esto se debe documentar en la matriz de prueba / funcin.
111 9.2 Reporte final
En esta etapa se prepara y se construye el reporte donde se sumariza el resultado de todo el ciclo de pruebas. Este reporte servir como un punto base para conocer la estabilidad de la aplicacin.
9.2.1 Resumir las actividades y eventos durante el desarrollo de las pruebas.
Se debe resumir informacin sobre:
El equipo de pruebas: Especificar quines conforman el equipo de pruebas, qu papel desempea cada uno dentro del equipo y qu cargo tienen. ( ej. Diseador de pruebas, ejecutor, etc. ) El ambiente de pruebas: Describir el ambiente de hardware y software en que se ejecutaron las pruebas, como tecnologas utilizadas, herramientas, redes, etc. Tipos de pruebas: Especificar qu tipos de pruebas se utilizaron y cuntas por cada tipo ( pruebas de sistema, pruebas de aceptacin, etc. ) Eventos: Indicar qu eventos externos e internos afectaron el desarrollo de las pruebas y qu impacto tuvieron sobre la aplicacin.
9.3 Crear y analizar grficos de mtricas.
El objetivo de esta tarea es analizar las mtricas que se midieron durante el ciclo de pruebas del proyecto. Para ello se deben crear grficos que ayuden a un mejor anlisis y comprensin de los resultados de las pruebas. Este anlisis sirve como instrumento para determinar la calidad y la aceptabilidad del sistema as como para futuros proyectos.
Algunas mtricas y grficos sugeridos son: 112 Seguimiento de errores
En este grfico se puede hacer un seguimiento de los errores en el tiempo. Analizando el comportamiento de los errores que entran, los abiertos y los corregidos . Por ejemplo si la cantidad de errores abierto debe tender a bajar, de lo contrario la efectividad del equipo de pruebas puede estar fallando.
Figura 13: Seguimiento de errores
Defectos por funcin:
Analizar el nmero de defectos encontrados por cada una de las funciones o grupos de funciones de la aplicacin. Con esta medida se puede identificar cuales funciones presentaron ms problemas y encontrar as posibles causas de esto; por ejemplo un mal diseo de los requerimientos. ( tabla 6 )
113
FUNCIONALIDAD
Nmero de defectos
Porcentaje Procesamiento de ordenes Crear Orden 10 20 Llenar Orden 8 16 Editar Orden 3 6 Borrar Orden 4 8 Ver Detalle 7 14 Administracin de Clientes Crear Cliente 4 8 Editar Cliente 4 8 Borrar Cliente 3 6 Administracin Financiera Recibir Pago de Cliente 0 0 Depositar Pago 3 6 Pagar Nmina 4 8 Total 50 100 Tabla 6: Defectos por funcin
Severidad de los errores encontrados
El objetivo de esta mtrica es mostrar los errores encontrados divididos segn su severidad y el efecto en la aplicacin. En este reporte se observa que los errores crticos en las pruebas finales fueron pocos y que la aplicacin en general present errores de severidad baja. ( Figura 13 )
114 Severidad de los errores 0 10 20 30 40 50 60 70 80 90 Critica Media Baja Porcentaje
Figura 14: Severidad de errores
Diferencia entre errores encontrados y errores corregidos
Este grfico debe mostrar la mayor similitud posible entre la lnea de errores encontrados y errores corregidos. Al final del desarrollo, la diferencia que haya entre las dos ser una buena medida de la calidad de la aplicacin.
Causas del error
El objetivo es mostrar el porcentaje de las causas de los defectos, como por ejemplo: conectividad, arquitectura, base de datos, etc.
En el siguiente grfico se puede observar que un gran porcentaje de los errores est relacionado con la funcionalidad del sistema. Esto puede indicar problemas en la toma de requerimientos o en el diseo de las funcionalidades. ( Figura 14) 115
Figura 15: Causas del error
Quin encontr los errores
El objetivo es mostrar quin encontr los errores de la aplicacin, como por ejemplo clientes externos, el equipo de calidad, etc. La mayora de los errores deben ser encontrados por el equipo de calidad. En caso de que terceros o usuarios internos sean los que descubren los errores, se debe revisar el papel del equipo de calidad y pruebas.
116 Estado final de la ejecucin de los casos de prueba
El reporte del estado final de la ejecucin de los casos de prueba muestra qu casos han sido resueltos y nos indican si la aplicacin esta lista para su liberacin a produccin. Al final, en este reporte se debe indicar que todos las funcionalidades han sido probadas y estn correctas; si se encuentra alguna excepcin esta debe estar completamente documentada. (Figura 15)
Estado de los casos de pruebas 0 20 40 60 80 100 casos completados casos con errores casos no ejecutados Porcentaje
Figura 16: Estado Final de los casos de prueba
Reporte de defectos en las pruebas globales del sistema.
En este reporte se ilustran en que tipo de pruebas se encontraron los errores en la etapa de pruebas globales del sistema. (Figura 16)
117
Figura 17: Defectos en pruebas del sistema.
En este reporte se puede observar que el 25% de los errores se encontraron en las pruebas de rendimiento. Esto puede indicar que la infraestructura en donde corre la aplicacin no es la adecuada o requiere una mejora.
118 Reporte de defectos en las pruebas de aceptacin
El objetivo de este reporte es demostrar que la aplicacin cumple con los objetivos del negocio y requerimientos del sistema y que la aplicacin funciona. Este reporte puede estar compuesto por los tipos de prueba del sistema. Al final la mayor parte de los requerimientos deben quedar segn las exigencias de los usuarios.
Figura 18: Defectos en pruebas de aceptacin
119 9.4 Conclusiones y Recomendaciones
En esta seccin del reporte final, el equipo de pruebas y el grupo de calidad deben concluir en qu aspectos se fall y deben hacer las recomendaciones para futuras mejoras.
Las conclusiones y recomendaciones deben ser ledas por los participantes del proceso para comprobar que sean correctas y que se puedan realizar. Cada conclusin y recomendacin debe ser documentada.
9.4.1 Programar y preparar la revisin
La revisin del reporte final debe ser programada. Es importante que los participantes de la reunin para la revisin tengan la ltima copia del reporte final.
La agenda realizada para la revisin debe contemplar el tiempo estimado para la revisin de todos los puntos. En caso de no terminarse se debe programar una siguiente reunin.
El propsito de esta revisin es lograr que se apruebe el reporte final, tanto por el gerente del proyecto como por los desarrolladores. Cualquier sugerencia o cambio deber ser revisado y anexado al documento.
9.4.2 Aprobacin
El objetivo de la aprobacin es lograr que los participantes del proyecto estn de acuerdo con el reporte. Esta aprobacin se debe realizar por escrito y debe estar firmada por el gerente del proyecto, el lder de pruebas y el lder de los desarrolladores. Se debe tambin elaborar y entregar un documento donde se 120 encuentre la ltima copia del reporte final con las sugerencias y los cambios que se llevaron a cabo.
121 CONCLUSIONES
La mejora del proceso de pruebas requiere un alto grado de conocimiento y experiencia por parte del personal involucrado, al menos en las reas de pruebas, organizacin y administracin de cambios.
El diseo de pruebas es uno de los mecanismos ms efectivos de prevencin de errores ya que el objetivo de esta actividad es crear pruebas tiles que puedan descubrir y eliminar problemas en cada etapa del desarrollo.
Muchas organizaciones no realizan actividades de verificacin tales como inspecciones del software, planeacin y diseo temprano de las pruebas. Estas actividades proporcionan informacin oportuna para reducir defectos cuando es menos costoso fijar y mejorar los mtodos, tcnicas y procesos en el desarrollo. Adicionalmente, brindan la informacin necesaria para preparar la siguiente fase de las pruebas hacindolas ms completas y enfocndose siempre en el mejoramiento continuo.
Menos defectos en software conducen a menos esfuerzo en la ejecucin de las pruebas, cuantas menos pruebas encuentren defectos, menos pruebas necesitan ser realizadas de nuevo debido a que se corrigen menos defectos.
La realizacin de pruebas ineficazmente, o peor aun, la ausencia de un proceso claro para la ejecucin de stas puede ser perjudicial para las empresas, ya que se invierte tiempo y dinero que finalmente se pierde en esfuerzos que no dan resultados y no mejoran el proceso. La implementacin de la metodologa para la realizacin de pruebas contribuye al mejoramiento continuo del proceso y asegura que el tiempo y dinero invertido en las pruebas es consumido eficaz y eficientemente. 122
La realizacin de pruebas de software es una parte importante del proceso de desarrollo de software. No es una simple actividad que se lleva a cabo despus de la implementacin del cdigo pues es parte de cada etapa del ciclo de vida. Una estrategia de pruebas exitosa debe comenzar desde la especificacin de los requerimientos. Los detalles de las pruebas sern especificados a travs de los diseos de alto y bajo nivel del sistema y las pruebas sern llevadas a cabo por un grupo de pruebas y por los desarrolladores durante el ciclo de vida del desarrollo. Como con las otras actividades en el ciclo de vida del software, las pruebas tienen sus propios objetivos. Mientras los sistemas de software son ms complejos, la importancia y la efectividad de los esfuerzos invertidos en las pruebas deben incrementarse.
Las empresas dedicadas al desarrollo de software intentan aumentar la calidad de sus productos para evitar los problemas inherentes a sus procesos: plazos y presupuestos incumplidos, insatisfaccin del usuario, escasa productividad y la baja calidad en el software producido. Las empresas son conscientes de que el mercado valora, cada da ms, la calidad. Por tanto, las compaas exigen la disminucin de errores y penalizan los retrasos en entregas y las cancelaciones de proyectos. El problema esta en que a menudo los profesionales no saben cmo aumentar la calidad de sus desarrollos de software de una forma eficaz. Una herramienta clave para conseguir una aplicacin de alta calidad y libre de errores es contar con un proceso de pruebas efectivo. Lamentablemente, y aunque es una de las tcnicas fundamentales de aseguramiento de calidad, al proceso de pruebas no se le suele dar la importancia que merece, lo que significa que las empresas no cuentan con una buena metodologa y/o con las herramientas adecuadas para disear e implementar un proceso de pruebas adecuado a sus necesidades. 123
Debido a la complejidad de probar una aplicacin, la etapa de pruebas puede llegar a ser de las ms lentas del proceso de desarrollo de software. Sin embargo, si un proceso de pruebas se desarrolla siguiendo una planificacin, una metodologa y unas herramientas adecuadas se pueden conseguir importantes disminuciones en los costos de desarrollo y mantenimiento del software, as como una reduccin en el nmero de errores.
124 BIBLIOGRAFA
Pressman, Roger S. (2002). Ingeniera del Software: Un enfoque prctico; Quinta edicin. Mc Graw-Hill, Madrid.
Putnam, Lawrence H. & Myers, Ware (1996). Executive Briefing: Controlling Software Development. IEEE Computer Society Press. Los Alamitos, CA.
Raynus, Joseph (1999). Software Process Improvement with CMM. Artech House, Inc. Norwood, MA.
Sanders, Joc & Curran, Eugene (1994). Software Quality. A Framework for Success in Software Development and Support. ACM Press, Dublin, Ireland.
Sommerville, Ian (2002). Ingeniera de Software; Sexta edicin. Pearson Educacin, Mxico, D. F.