Modelo de casos de uso En el curso “Documentación y reportes”, en la lección “Documentación”, vimos que los casos de uso son un tipo de documento con el que se puede encontrar un tester. Definiremos algunos conceptos y un ejemplo de este modelo del cual podemos derivar casos de prueba. Jacobson define un "caso de uso" como un escenario que describe el uso del sistema por un actor para lograr un objetivo específico. Por actor se refiere a usuario, desempeñando un rol en el sistema buscando cumplir con un objetivo en un contexto particular. Un escenario es una secuencia de pasos que describen la interacción entre el actor y el sistema. Un diagrama de casos de uso muestra la relación entre los actores y los casos de uso. Un caso de uso es una descripción que ilustra, paso a paso, cómo los actores tienen la intención comportamiento del de usar sistema el sistema, desde el esencialmente punto de vista capturando del el usuario. Un caso de uso puede especificarse en una tabla, como se muestra a continuación: Por ejemplo el caso de uso “Alquilar película” puede representarse: Un caso de uso es una descripción que ilustra, paso a paso, cómo los actores tienen la intención comportamiento del de usar sistema el sistema, desde el esencialmente punto de vista capturando del Las principales características de los casos de uso y sus escenarios: Modelan la interacción entre un actor y el sistema Son iniciados por un actor Describen una secuencia de acciones Capturan requerimientos funcionales el usuario. Representan un flujo completo y significativo de eventos El flujo principal de un caso de uso, representa el flujo más importante de eventos. Es el que llamamos el “camino feliz”, porque es cuando no ocurren errores ni excepciones. Luego de tener definido el flujo principal, es más sencillo identificar los flujos alternativos en cada uno de los pasos. No existe un estándar de cómo especificar un caso de uso, por lo que cuando nos enfrentamos a un caso de uso, tenemos que ser críticos y decidir si tenemos toda la información que necesitamos para diseñar casos de prueba a partir del nivel de detalle de su especificación. Un caso de uso podemos representarlo como un grafo, en el que se representa el flujo principal (FP) y los distintos flujos alternativos (A1, A2, A3, A4 o FA1,...,FA4). Se ilustra a continuación un caso de uso modelado con un grafo. ¿Cómo se procede para derivar casos de prueba de los casos de uso? Diseño de casos de prueba Un primer paso consiste en identificar los escenarios posibles, recorriendo todo los flujos que lo componen, desde el principio al fin del caso de uso. El pasaje del flujo principal a un flujo alternativo, el eventual retorno al flujo principal o el tránsito a otro flujo alternativo se produce porque cambian las condiciones de ejecución del caso de uso en función de los valores que toman las variables involucradas. En el ejemplo del video, se pasa del flujo principal al flujo alternativo según el valor de la variable sanción. Los escenarios se pueden identificar fácilmente a partir del caso de uso modelado como un grafo. Expresado de otra forma, se identifican los siguientes escenarios: Una vez identificados los escenarios es preciso profundizar en las condiciones de ejecución, o sea identificar las variables involucradas, que denominaremos operacionales. Un primer problema es que los casos de uso describen la interación entre el actor y el sistema, en la que intervienen distintas variables, pero en general, no indican los dominios de las variables. Pero éstos son muy importantes para diseñar casos de prueba eficaces, por lo tanto, es fundamental definirlos. Otra dificultad consiste en que pueden existir variables del ambiente o del estado del sistema no explicitadas en el caso de uso. En el ejemplo del video, no se menciona la cantidad de ejemplares de la película que hay en el video ni si están todos prestados o hay alguno disponible. Por lo tanto hay que hacer el esfuerzo por identificar todas las variables operacionales, o sea las variables de entrada, salida y condiciones ambientales que: o implican un comportamiento significativamente diferente de un actor o motivan una respuesta significativamente diferente del sistema o resumen el estado de la unidad bajo prueba Estas variables operacionales, dan paso a los diferentes escenarios y sus valores se utilizan para diseñar los casos de prueba específicos. Por lo tanto para derivar los casos de prueba de los casos de uso procedemos a: Identificar los escenarios Identificar las variables operacionales Definir el dominio de éstas e identificar los valores significativos para cada variable Seleccionar casos de prueba, considerando los escenarios Asignarle valores a las variables Otros elementos a tener en cuenta es la frecuencia relativa de cada caso de uso así como las dependencias funcionales entre los casos de uso. A los efectos del cubrimiento e intensidad de las pruebas no es lo mismo un caso de uso que será ejecutado una vez cada seis meses por pocos usuarios, que los casos de uso que se ejecutan cotidianamente por la mayoría de los usuarios. También tenemos que analizar el riesgo de cada uno de los casos de uso. Recuerden que los casos de uso pueden ser los componentes del inventario de pruebas. Con respecto a las dependencias funcionales es importante diseñar pruebas que consideren la relación entre distintos casos de uso. En el ejemplo del video habría que considerar algunos alquileres sin devoluciones en tiempo y forma para generar sanciones, así como algunos alquileres de películas cuyos ejemplares no hayan sido devueltos aún, alquileres y devoluciones sucesivas, etc. Considerando estos aspectos podemos hablar entonces de casos de uso extendidos para el diseño de los casos de prueba. Los casos de uso proporcionan parte de la información necesaria para testing. Se pueden derivar casos de prueba para: los flujos esperados de eventos todos los otros flujos de eventos otros requerimientos o características descritas en la documentación de usuario que puedan vincularse a casos de uso En Ejemplo CP de CU, se detalla un ejemplo de diseño de los casos de prueba a partir de un caso de uso. Resumen Ventajas de utilizar el modelo de casos de uso: Su uso se ha extendido y consolidado Reflejan el punto de vista del cliente/usuario, las características del éxito o fracaso de la unidad Los casos de uso extendidos contribuyen a completar la información necesaria Ayudan a detectar casos de uso inconsistentes, incompletos o ambiguos La principal desventaja es que no hay acuerdo sobre el nivel apropiado de abstracción y especificidad de los casos de uso. Por lo tanto en las etapas de diseño de casos de prueba hay que resolver las ambigüedades. Finalmente, veamos cómo podemos enmarcar la técnica de casos de uso en la concepción general de las técnicas de diseño de casos de prueba que adoptamos: Modelo de la realidad o Un criterio de cobertura o Recorrer todos los escenarios Un estrategia de selección o Casos de uso Relación operacional lógicamente completa y mínima Una teoría de errores o Variada