Generalidades

Nombre:

Pruebas automatizadas de software

Créditos

2

Semanas

8 semanas ( 8-12 horas por semana)

Tipo:

High Touch. Encuentros síncronos semanales,

Profesor responsable

Mario Linares Camilo Escobar

Prerrequisitos

Programación básica en python

Objetivos de Aprendizaje

Al finalizar el curso el estudiante estará en capacidad de:

1. Diseñar estrategias de pruebas que involucren pruebas manuales, de reconocimiento y de "extremo a extremo" (E2E), en el contexto dado por una aplicación bajo pruebas.

2. Construir pruebas de reconocimiento y E2E usando frameworks de automatización existentes.

3. Ejecutar pruebas de reconocimiento y E2E usando frameworks de automatización existentes.

Descripción

Asegurar la calidad del software es una labor de alta importancia para los equipos de desarrollo, dado que el costo de una falla en el software va más allá de la pérdida de confort al usar un sistema; los costos pueden incluir pérdidas significativas de dinero, e incluso afectar la salud de los usuarios. Así mismo, hacer pruebas es una labor que puede llegar a ser costosa y difícil si se hace totalmente de forma manual, dado que el espacio de estados y entradas que se deben experimentar para probar una aplicación es usualmente grande y complejo. Por lo tanto, las estrategias de pruebas deben obtener el mayor provecho de pruebas que se puedan realizar de forma automatizada, para tratar de ejecutar el mayor número posible de estados y entradas. Este curso es un primer paso para diseñar esas estrategias que buscan balancear esfuerzos manuales y automatizados para realizar pruebas de software. Se aprenderán conceptos y técnicas de pruebas automatizadas, estrategias de pruebas, pruebas exploratorias, pruebas de reconocimiento, y pruebas de "extremo a extremo".

Las principales tecnologías que se usarán son:

Lenguaje Programación: JavaScript

Herramientas: Cypress, Cucumber, ResembleJS, FakeJS, Podam, RIPx

IDE: Visual Studio Code

Apoyo: Github, OBS, editores de texto, Padlet, issue trackers

Estrategia global de evaluación

El curso tendrá como actividad central de evaluación el diseño y desarrollo, por parejas, de una estrategia de pruebas que incluye pruebas automatizadas para una aplicación web. Esta estrategia, como entregable de fin de curso, se irá construyendo de forma incremental con los diferentes ejercicios y prácticas de cada semana sobre esa misma aplicación. Al construir una estrategia de forma incremental, los estudiantes tendrán la posibilidad de (i) analizar y evaluar las fortalezas y debilidades de cada una de las técnicas y herramientas vistas; y (ii) mejorar la estrategia propuesta con base en la retroalimentación obtenida y los contenidos vistos.

Adicionalmente, se evaluarán actividades individuales y por parejas, que permitirán hacer prácticas sobre los temas, procesos y herramientas estudiadas.

En cada semana, habrá cuestionarios individuales orientados a verificar el avance en relación con objetivos de la semana y en la última semana cada estudiante presentará un examen final.

Estructura del curso

A lo largo de 8 semanas aprenderás diferentes conceptos y técnicas, y realizarás diferentes actividades orientadas a entender las ventajas y limitaciones de diferentes enfoques de pruebas. Las actividades incluyen análisis de casos, lecturas, talleres, ejercicios, presentación de testimonios de profesionales en la industria. En particular, este curso se enfoca en pruebas exploratorias, de reconocimiento, y de "extremo a extremo". El estudiante tendrá la oportunidad de trabajar con diversas herramientas como Cypress, Cucumber, ResembleJS, FakeJS, Podam, RIPx. Más allá de los enfoques el mensaje principal de este curso es el diseño de estrategias de pruebas de forma estratégica. Para esto, el curso también incluye un proyecto orientado a diseñar, construir y ejecutar pruebas manuales y automatizadas sobre una aplicación web. Este curso también incluye un proyecto, orientado a diseñar, construir y ejecutar pruebas manuales y automatizadas sobre una aplicación web.

Objetivos

1. Identificar las técnicas para medir la calidad de una aplicación de software.

2. Entender el impacto de no hacer pruebas de software.

3. Entender el propósito de las pruebas exploratorias de software.

4. Ejecutar pruebas exploratorias de software.

Descripción

Esta semana está compuesta por seis lecciones:

1. Introducción

2. Técnicas de calidad

3. Costo de la omisión de pruebas

4. Inicio en el mundo de las pruebas

5. Proyecto

6. Cierre de la semana 1

A través de las lecciones, por medio de videos y lecturas, se presentan los conceptos básicos sobre pruebas de software con el objetivo de contextualizar al estudiante comprender su impacto en los procesos de desarrollo. Además, por medio de diferentes tutoriales se explican las herramientas que se usarán, y los procesos a seguir para iniciar el proyecto transversal y alcanzar los propósitos de la semana. En el cierre, se incluye una recapitulación de los aspectos más relevantes de la semana, además de los testimonios de invitados de la industria acerca del costo de no hacer pruebas.

Sesión sincrónica

En la sesión sincrónica de la semana se resolverán dudas de los estudiantes y se realizará un ejercicio de lectura de reportes postmortem.

Objetivos

1. Diferenciar pruebas manuales, automáticas y automatizadas.

2. Entender la diferencia entre niveles y tipos de pruebas.

3. Analizar las ventajas y desventajas de los patrones y antipatrones de distribución de pruebas.

Descripción

Esta semana está compuesta por cinco lecciones:

1. Introducción

2. Automatizado vs. Manual

3. Patrones de distribución

4. Proyecto

5. Cierre de la semana 2

A través de las lecciones, por medio de videos y lecturas, se presentan los conceptos más relevantes sobre las pruebas automatizadas. Con el fin de poner en contexto real los conceptos estudiados, los estudiantes, por parejas, harán un acercamiento a profesionales en el área para comprender cómo se ven en sus ámbitos de desempeño los patrones de distribución estudiados. En el cierre, se retoman aspectos relevantes de la semana y, además, se presentan testimonios sobre cómo distribuir esfuerzos manuales y automatizados.

Sesión sincrónica

En la sesión sincrónica, además de resolver inquietudes, se analizarán de manera grupal algunos casos, con miras a afianzar lo estudiado en la semana anterior.

Objetivos

1. Diferenciar los tipos de pruebas automatizadas.

2. Entender los aspectos que se deben incluir en una estrategia de pruebas.

Descripción

Esta semana está compuesta por seis lecciones:

1. Introducción

2. ¿Qué es una estrategia de pruebas?

3. ¿Cuándo hacer pruebas?

4. Estrategia de pruebas

5. Proyecto

6. Cierre de la semana 3

A través de las lecciones, por medio de videos y lecturas, se presentan los componentes de una estrategia de pruebas y su importancia. Para esto, discutirán sobre estrategias de pruebas en casos hipotéticos, analizando las mejores opciones. Continuando el ejercicio por parejas, crearán una estrategia de pruebas, para la aplicación seleccionada, con base en las pruebas exploratorias realizadas en la semana 1 y con dos presupuestos de pruebas dados. El cierre de esta semana incluye testimonios sobre cómo definir una estrategia de pruebas y sus beneficios. Además, los estudiantes diligencian una bitácora en la que, a partir del trabajo realizado hasta el momento, reflexionan sobre la importancia de la estrategia de pruebas e identifican sus componentes más importantes y cómo implementar esto en su quehacer diario.

Sesión sincrónica

En la sesión sincrónica, además de resolver inquietudes, se analizarán de manera grupal algunos casos, con miras a afianzar lo estudiado en la semana anterior. Principalmente se buscará abordar: justificación del uso de pruebas unitarias; elementos para decidir entre automatizar y realizar manualmente; y pruebas de integración con servidores herméticos.

Objetivos

1. Entender el propósito de las pruebas de reconocimiento.

2. Construir herramientas para generar pruebas de reconocimiento.

3. Realizar pruebas de reconocimiento usando herramientas de automatización.

4. Analizar las limitaciones, beneficios y desventajas de diferentes herramientas para pruebas de reconocimiento.

Descripción

Esta semana está compuesta por cinco lecciones:

1. Introducción

2. Monkeys y Fuzzers

3. Exploración sistemática con Ripperss

4. Proyecto

5. Cierre de la semana 4

A través de las lecciones, por medio de videos y lecturas, se presentan los conceptos clave de las pruebas de reconocimiento. Desarrollarán Monkeys y ejecutarán Rippers a modo de práctica, para lo cual contarán con ejemplos, tutoriales y ejercicios orientadores. Además, continuando el ejercicio por parejas con una aplicación bajo pruebas específica, ejecutarán Monkey y Rippers en esta; posteriormente, analizarán las ventajas y desventaja de cada tipo de herramienta (Monkey vs Rippers). En el cierre, se recogen los conceptos más relevantes de la semana y, adicionalmente, se evalúa el uso de pruebas de reconocimiento dentro de una estrategia de pruebas, con testimonio de experto. Como parte del cierre, los estudiantes diligencian una bitácora en la que, a partir de todo el trabajo realizado hasta el momento, identifiquen la importancia de la estrategia de pruebas, los elementos más importantes a considerar en ella y cómo implementar eso en su quehacer diario.

Sesión sincrónica

En la sesión sincrónica, se retomará una de las actividades de la semana anterior sobre estrategias de pruebas, con el fin de continuar el análisis de ventajas y desventajas de las soluciones propuestas por los compañeros, para tomar decisiones sobre la solución planteada por cada pareja.

Semana 5: Pruebas extremo a extremo

Objetivos

1. Entender el propósito de las pruebas de "extremo a extremo".

2. Diseñar escenarios de pruebas "de extremo a extremo" utilizando un lenguaje estructurado.

3. Construir pruebas "de extremo a extremo" utilizando patrones, definiciones de pasos, y escenarios.

Descripción

Esta semana está compuesta por cinco lecciones:

1. Introducción

2. Conceptos básicos pruebas de extremo a extremo

3. Escenarios y pruebas BDT

4. Proyecto

5. Cierre de la semana 5

A través de las lecciones, por medio de videos y lecturas, se presentan los conceptos clave de las pruebas de extremo a extremo y algunas de las herramientas que se usarán. Harán escenarios y pruebas con y sin BDT, con varias herramientas como Cypress, Cucumber y Kraken. Para esto, contarán con ejemplos, tutoriales y ejercicios orientadores. Además, realizarán pruebas automatizadas E2E usando patrones y escenarios, para la aplicación en la que vienen trabajando por parejas, según unas especificaciones dadas. En el cierre, además de la recapitulación de los aspectos más relevantes de la semana, se evalúa el uso de pruebas de extremo a extremo y BDT en una estrategia de pruebas, a través del testimonio de experto.

Sesión sincrónica

La sesión sincrónica de esta semana se dedicará a la retroalimentación de las entregas realizadas hasta el momento. Dado que el trabajo con la aplicación específica es transversal, la retroalimentación en este momento favorecerá las actividades de las siguientes semanas.

Objetivos

1. Entender el propósito de los tipos de pruebas de regresión.

2. Ejecutar pruebas "de extremo a extremo" con y sin regresión visual.

3. Diseñar una estrategia de pruebas para una aplicación objetivo.

Descripción

Esta semana está compuesta por cinco lecciones:

1. Introducción

2. Pruebas de regresión

3. Pruebas de regresión visual

4. Proyecto

5. Cierre de la semana 6

A través de las lecciones, por medio de videos y lecturas, se presentan los conceptos clave de las pruebas de extremo a extremo y regresión visual, y algunas herramientas. Crearán scripts en Cypress y Kraken para hacer pruebas VRT. Para esto, contarán con ejemplos, tutoriales y ejercicios orientadores. Realizarán pruebas de regresión visual, con diferentes versiones de la aplicación en la que vienen trabajando por parejas, haciendo uso de las pruebas de extremo a extremo generadas la semana anterior. Adicionalmente, generarán un reporte web donde se muestre el resultado de las pruebas VRT, el cual incluirá pantallazos de la aplicación original y la nueva versión, y las diferencias visuales junto con los datos extraídos al hacer uso de la herramienta Resemble.JS. En el cierre, además de la recapitulación de los aspectos más relevantes de la semana, se evalúa el uso de pruebas de extremo a extremo y VRT en una estrategia de pruebas, a través del testimonio de experto.

Sesión sincrónica

La sesión sincrónica estará dispuesta para trabajar en una dinámica de grupos que permita evaluar las ventajas y desventajas de los diferentes tipos de prueba que se han estudiado hasta ahora en el curso. De manera que, al finalizar la actividad, se cuente con un artefacto que represente los acuerdos del grupo completo en relación con esos aspectos para los diferentes tipos de prueba.

Objetivos

1. Utilizar técnicas y herramientas de generación de datos de prueba.

2. Construir y ejecutar pruebas automatizadas para una aplicación objetivo.

Descripción

Esta semana está compuesta por cuatro lecciones:

1. Introducción

2. Generación de datos

3. Proyecto

4. Cierre de la semana 7

A través de las lecciones, por medio de videos y lecturas, se presentan los conceptos clave sobre generación de datos para pruebas, y algunas herramientas. Partiendo del trabajo de semanas anteriores, ajustarán los scripts para incluir escenarios que involucren la generación de datos de manera automática. Para esto, contarán con ejemplos, tutoriales y ejercicios orientadores. En relación con la aplicación en la que vienen trabajando por parejas, con sus diferentes versiones, realizarán pruebas de regresión visual, generando 300 escenarios de validación. En el cierre, además de la recapitulación de los aspectos más relevantes de la semana, se evalúa el uso de pruebas de extremo a extremo, VRT y generación de datos en una estrategia de pruebas, a través del testimonio de experto.

Sesión sincrónica

La sesión sincrónica estará dispuesta para permitir la transferencia de conocimiento entre los grupos. Para esto, contarán con una guía de análisis de la estrategia de pruebas y de revisión de código de pruebas automatizadas para aplicarla al trabajo de otras parejas. A partir del ejercicio, al finalizar, consolidarán acciones de mejora.

Objetivos

• Construir y ejecutar pruebas automatizadas para una aplicación objetivo.

• Analizar el proceso de construcción de pruebas automatizadas: limitaciones, ventajas, desventajas, costos.

Descripción

Esta semana está compuesta por tres lecciones:

1. Introducción

2. Proyecto

3. Cierre del curso

Esta semana estará principalmente dedicada a que cada pareja culmine su estrategia de pruebas que incorpora lo visto a lo largo del curso, el reporte de evolución de estrategias, el reporte de resultados de pruebas y la bitácora de proceso. Al finalizar, cada pareja presentará un video con su reporte; también revisará y comentará los videos de otros grupos. Con el mismo criterio de revisión de la actividad sincrónica de la semana anterior, comentarán sobre los videos revisados.

En esta semana se hará una evaluación final que incorpora el contenido completo del curso.

Sesión sincrónica

La sesión sincrónica de esta semana se dedicará a asesorías para los estudiantes para su entrega final.