Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Módulo 1 / Encuentro 3/20 Principios del testing y ciclos de vida de desarrollo OBJETIVOS DELMÓDULO 1 ¿Qué habilidades desarrollarás? ● Aprendizaje cooperativo entre pares ● Atención al detalle ● Fundamentos de la lógica de programación ● Manejo y priorización de la información ● Herramientas mínimas de seguridad de la información ¿Qué herramientas técnicas aprenderás? ● Comprensión sobre el mundo del testing ● Principios generales del testing ● Proceso de testing ● Ciclo del testing ● Terminología específica de la disciplina. 1 *No es necesario solicitar permiso de edición del documento, si deseas puedes crear una copia �Archivo > Crear una copia] * Introducción ¡Te damos la bienvenida a tu tercer encuentro de trabajo! Seguramente conoces la dinámica de trabajo, es aquella que te permite presentarte y conocer gente increíble. Juntos construyen una gran red de profesionales dispuestos a colaborar. Recordá ofrecerles pulsos a quien haya hecho un gran trabajo de cooperación con tu aprendizaje o con el del equipo. No olvides que es tu oportunidad para destacarte y conseguir tus propios pulsos. ¡Ya sabes lo que tienes que hacer! ¡Demos comienzo a la actividad del día de hoy! 1. Presentación del equipo: Toma tan solo unos minutos y cambia la experiencia de todo el equipo. Indica tu nombre y de dónde vienes. Si lo creen necesario, aquí les dejamos una pregunta para abrir la sesión: ¿Cuál es el desafío más importante del área QA? Utilicen unos 10 minutos para compartir estas breves presentaciones. ¿Opinan todos de la misma manera? 2 Ejercicio #1 Comencemos activando algunas ideas previas. Ready? Set? ¡Go! Responde V o F según corresponda y justifiquen la respuesta. a) El testing pone de manifiesto la presencia, no la ausencia de defectos b) El testing exhaustivo no es posible c) Las testing temprano ahorra tiempo y dinero d) El testing depende del contexto e) La ausencia de errores es una falacia Solución → ¿Cómo les fue? sus respuestas fueron acertadas? ¿Alguna de las afirmaciones generó inquietud? ¡Recuerden que pueden solicitar un mentor cuando deseen! ¿NECESITAS UN EJEMPLO? Te proponemos el siguiente desafío para que converses con tu equipo del día. ¿Estás preparado? ¡Es hora de interpretar el rol de TESTER! - ¿Podemos comprobar (y asegurar) que un software tiene cero defectos? ¿Es viable? ¿Se les ocurre algún ejemplo? - Si quisiéramos testear de manera exhaustiva la creación correcta de un password que contenga: al menos 8 dígitos, una letra mayúscula, una letra minúscula, un número y un símbolo, cuantas combinaciones deberíamos probar? ¿Cuántos casos de prueba serían? ¿Cuánto tiempo asignaríamos a esa tarea? ¿Valdría la pena documentar y ejecutar esa cantidad de pruebas? ¿Cómo se cubre la funcionalidad “crear password”? - ¿En qué momento sería menos costoso detectar defectos en el software? ¿Durante la etapa de desarrollo o durante las etapas de testing? - ¿Cómo evaluarías el riesgo asociado a una funcionalidad a testear? 3 https://docs.google.com/document/d/1w2HYOTQU-NPzpjSLCAn30R8shhaJUcn7QdJzxwx2T9g/edit?usp=sharing Seguramente habrán llegado a varias conclusiones. Al finalizar el encuentro haremos una puesta en común de las preguntas 1 y 3. MATERIAL DE LECTURA ¡Los 7 principios de testing! Los principios o reglas -en cualquier disciplina- orientan, estructuran y guían metodologías de trabajo. Es decir, nos ayudan a orientar la práctica profesional. Les presentamos los 7 principios del testing: 1 El testing pone de manifiesto la presencia -no la ausencia- de defectos 2 El testing exhaustivo es imposible 3 El testing temprano ahorra tiempo y dinero 4 Defectos agrupados 5 Pesticide paradox 6 El testing es dependiente del contexto 7 La ausencia de errores es una falacia Analicemos cada uno de ellos en profundidad. �1� El testing pone de manifiesto la presencia -no la ausencia- de defectos A través de las pruebas es posible encontrar defectos, visibilizarlos y evidenciarlos. Sin embargo, es IMPOSIBLE confirmar la INEXISTENCIA de algún defecto silencioso, no descubierto en pruebas o validaciones. Nunca puede determinarse la “ausencia total de fallos”. ¿NECESITAS UN EJEMPLO? En ocasiones los fallos se dan por razones no funcionales: 4 Secreto de la industria 1� Un sitio web podría fallar por razones relacionadas a la seguridad (fue hackeado). También puede fallar por razones de performance, por ejemplo no soportar la carga/ tráfico de usuarios. ¡MANOS A LA OBRA! Ejercicio #2 Teniendo en cuenta los siguientes sistemas: ● Un portfolio de obras de arte digital ● Un registro de personas. Este sistema guarda datos personales y permite que cada usuario ingrese con diferentes niveles de acceso según el tipo de clave. Enumeren - según orden de prioridad- las siguientes condiciones de prueba: 1. Que todas las fotos tengan texto alternativo 2. Que los formularios usen metodología de envío POST 3. Que el título principal �H1� este en el color definido en el mock up 4. Que los párrafos <p> estén escritos en letra roboto 5. Que no se pueda ingresar nadie que sin cuenta creada previamente 6. Que el usuario que ingresa pueda ver aquello con lo que se corresponde su nivel de acceso. 7. Que el contraste de colores sea suficiente como para que cualquier persona pueda leer los textos e instrucciones, aún aquellos con problemas de visión 8. Que el sitio pueda leerse y ser navegable con un lector de pantallas (screen reader) 9. Que las imágenes estén alineadas según la maqueta o mockup. Pueden descargar la siguiente plantilla para realizar esta actividad Revisa aquí las respuestas. ¿Cómo les fue? 5 https://docs.google.com/document/d/1Lv2T5RhCGRaTt-izewW4xdmdErDI2DbyCyHwKSWEJo0/edit https://docs.google.com/document/d/1Af3vKo650F7Trly7ZJFl6OfIOy7K4PdB0OjDo40Vwa4/edit?usp=sharing �2� El testing exhaustivo es imposible Mientras usamos un sistema pueden ocurrir diversas situaciones. Algunas serán propias del contexto y/o del espacio en donde vivimos y otras inherentes al software. ¿NECESITAS UN EJEMPLO? Estás comprando un pasaje en micro on line. Luego de seleccionar empresa, fechas de viaje, y reserva de asientos debes completar el formulario de pago para abonar con tu tarjeta de crédito. En ese momento suena el teléfono y mantienes una conversación de 20 minutos. Al finalizar vuelves a la página del sitio y decides terminar de completar el formulario- ¿Qué sucederá? - ¿Se enviará el formulario correctamente al clickear “enviar”? - ¿El sistema debería esperar media hora o varios días “abierto”? - ¿El sistema debería timeoutear1 y pedirme que vuelva a ingresar todos los datos de cero? ¿Es necesario que el equipo de desarrollo dedique esfuerzos en anticipar ese tipo de situaciones excepcionales? Veamos otros ejemplos ¿Qué ocurre si me quedo sin conexión a internet mientras intento comprar entradas a un concierto? ¿La transacción debería cancelarse? ¿O almacenar los datos en mi perfil? ¿Y en el caso de una transferencia bancaria? Secreto de la industria 2� En algunos casos puede que el comportamiento del sistema frente a una situación excepcional ni siquiera esté definido. Sobre todo si la probabilidad de que esa situación excepcional suceda es muy baja. En la mayoría de los sistemas -a menos que sea extremadamente simple- es imposible testear todos las combinaciones de datos y escenarios. De hacerlo, podríamos poner en riesgo la eficiencia del plan de pruebas. 1 Es la acción de realizar time out. Se refiere a que una página excede el tiempo de espera. 6 Para seleccionar qué pruebas testear y cuales no, hay que tener en cuenta los objetivos principales del sistema y los riesgos asociados al fallo de sus diferentes componentes. �3� El testing temprano ahorra tiempo y dinero Luego de todo lo analizado, pareciera claro entonces que mientras más temprano comiencen las pruebas de testing, menos costoso será corregir los bugs encontrados. En ocasiones, si los tester tienen disponible el sistema para la revisión del plan de pruebas puedenencontrar menor cantidad de bugs en el código. ¡Pro tip alert! De ser posible, es bueno comunicar al equipo de desarrollo las pruebas que pensamos llevar a cabo. Es probable que los desarrolladores - al tener una idea de los escenarios de prueba que prevemos, los consideren en su trabajo y por ende existan menos bugs. Iniciando las tareas de testing y análisis con anticipación, evitamos que los errores que aparecen en las etapas tempranas del proceso de desarrollo migren a etapas más avanzadas. La siguiente imagen los ayudará a graficar esta situación. 2 2 http://systemsemantics.com/2014/08/the-cost-of-bugs/ 7 http://systemsemantics.com/2014/08/the-cost-of-bugs/ �4� Defectos agrupados Es probable que la mayor cantidad de defectos se concentren en algunas áreas del sistema. Quizás en aquellas que revisten mayor complejidad o que fueron modificadas múltiples veces. También puede deberse al trabajo de desarrolladores con menor experiencia (solo por nombrar algunos factores) Si bien es importante testear las áreas del sistema más conflictivas o que tiendan a tener defectos, esto no implica dejar de lado la ejecución de pruebas sobre otras partes que -a simple vista- parecen menos complejas. ¿A qué área nos referimos ? ¿Cuáles creen que podrían ser aquellas en donde suelen agruparse más defectos? �5� Pesticide paradox/ Paradoja del pesticida ¿Conoces la frase que se le atribuye a Albert Einstein: "Si buscas resultados distintos, no hagas siempre lo mismo”? Trasladamos el espíritu de la misma, a nuestro campo de estudio: repetir una y otra vez las pruebas no servirá para encontrar defectos nuevos. Las pruebas de regresión tienen por objetivo revisar que los cambios introducidos en el sistema no rompan lo que funcionaba correctamente. Para esto, es necesario revisar estas pruebas y asegurar que sean relevantes para los requerimientos nuevos. Si el sistema y sus funcionalidades van modificándose con el tiempo, las pruebas deben adaptarse a esos cambios. �6� El testing es dependiente del contexto Qué tipo de pruebas implementar y cómo llevarlas a cabo dependerá de aquello que se está testeando. Una aplicación web que permite el ingreso de datos personales requerirá más pruebas y foco en ciertos aspectos que un sitio web que sólo visualiza información. Un sistema de navegación de un avión va a necesitar pruebas más exhaustivas que los dos sistemas mencionados anteriormente. 8 ¡MANOS A LA OBRA! Ejercicio #3 ¿Cuál crees que sea el factor que determina la cantidad de pruebas a realizar en un sistema? Discutan la respuesta en el equipo �7� La ausencia de errores es una falacia3 Que no se hayan descubierto errores en un sistema, antes, durante o al finalizar el testeo no implica que el sistema carece de bugs. El testing busca que el sistema que revisamos alcance niveles de calidad y sea aceptable (según los criterios establecidos) además de cumplir con los requisitos solicitados al inicio del desarrollo del sistema. MATERIAL DE LECTURA ¡Un esfuerzo más! Sabemos que el encuentro de hoy requiere de habilidades de lectura y concentración. Hoy debes focalizarse en aprender material teórico. ¡Vienes muy bien! Te pedimos un esfuerzo más para conocer todo lo que queremos enseñarte. Toma una pausa de 10 minutos si lo consideras necesario. Conversa con tus compañeros de equipo, respira, mueve tu cuerpo por un rato. Recarga energía para continuar.🧘🧎 3 Falacia: argumento que parece válido, pero no lo es. 9 Proceso de testing Un poco de contexto… Ya sabemos que el testing es un proceso que no implica “hacer siempre lo mismo”. Las pruebas se realizan según la naturaleza del sistema o proyecto en el que se trabaja: qué, cómo y cuánto testear varía. Por otra parte, cada empresa u organización tiene procedimientos propios. La organización del proceso de testing dependerá de algunos factores tales como: ● Procesos, políticas y estándares propios de la empresa/organización en el que se trabaja. ● El tipo de metodología de desarrollo que utilice el equipo. ● El tipo de producto en desarrollo, es decir su dominio ● Los riesgos asociados al producto o sistema ● Tiempo y presupuesto ● La preponderancia del área para una organización. Como hemos mencionado anteriormente, las actividades del área de testing son mucho más que solo “ejecutar pruebas”. Hay otras responsabilidades que debemos asumir. Algunas de ellas son: ● Planificación ● Monitoreo y control ● Análisis ● Diseño ● Implementación ● Ejecución ● Completitud (test completion) Es común que en el proceso de testing haya iteraciones entre alguna de estas actividades. Además, el tipo de iteración se modifica según la metodología de desarrollo en uso. Secreto de la industria 3� No todas las empresas desarrollan estas actividades en su totalidad ni las nombran del mismo modo. 10 Si ya trabajas como QA es probable que hayas realizado alguna de estas, conozcas su clasificación o no. Diversidad de perfiles: Las habilidades para cada una de estas actividades, ¿serán similares? ¿Cuál elegirías para desarrollarte profesionalmente? Veamos en profundidad cada una de las actividades y responsabilidades: 1 Test planning. – planificación de las pruebas En la etapa de planificación se define cómo abordar y organizar las tareas relacionadas al testing durante el desarrollo del producto. Además se dividen las funciones, responsabilidades y se asignan las tareas y se coordina la agenda de trabajo En esta etapa se analizan y deciden la infraestructura y las herramientas para realizar las pruebas. Atendiendo al tipo de producto con el que se trabajará (junto a otras variables tales como tiempo, presupuesto, etc) se decide y diagraman las actividades, tiempos, roles y criterios para identificar la completitud4 de las pruebas. Como toda etapa de planificación puede recibir ajustes en caso de ser necesario. 4 Es el criterio que se debe cumplir para dar por terminadas las tareas de test. 11 Secreto de la industria 4� En una metodología de trabajo ágil, al comienzo de cada ciclo o sprint se planifican las tareas de desarrollo y se deciden qué historias de usuario ingresan. Para cada historia se realiza una estimación de tiempo (de manera grupal) que debe incluir el esfuerzo de testing. 2 Test monitoring and control – monitoreo y control de las pruebas Esta función implica monitorear el avance de las pruebas cotejando con los objetivos definidos en el plan de pruebas. En caso de que no se cumplan, deberán tomarse todas las decisiones necesarias para el logro de los mismos. Es posible que en algunos proyectos sea necesario emitir “reportes de progreso” e involucrar a las personas para que estén al tanto de los avances o en caso de ser necesario un ajuste en las acciones. En todo caso es bueno tener a las personas involucradas que correspondan al tanto de los avances sobre todo cuando haga falta implementar algún tipo de ajuste para alcanzar algún deadline. Es interesante tener en cuenta qué tipo de audiencia recibirá nuestros reportes. Esto nos permitirá incluir la información pertinente para cada uno. Seguramente, un cliente no recibirá el mismo reporte que el equipo de desarrollo. 3 Test Analysis - análisis La etapa de análisis consiste en revisar la base para los tests y para identificar qué es lo que hay que testear. Incluye revisar todo aquello que consideremos “insumo”: historias de usuario, casos de uso, requerimientos funcionales y no funcionales, especificaciones o specs, documentación funcional, diagramas, UMLs, hojas de implementación, tablas, reportes etc. Estos, deben ser claros, precisos y consistentes (es decir, sin contradicciones). De la revisión de todo lo disponible para análisis se identifica: ● Qué testear ● El orden de prioridades ● Las condiciones a tener en cuenta ● Los primeros defectos. 12 Es importante (y muy útil) generar trazabilidad entre las condiciones identificadas para las pruebas y los elementos de la base para los tests (test basis) que dieron lugar a dichas condiciones. De esta manera, si algose modifica conocemos con exactitud qué otros materiales deberían ajustarse también. ¿NECESITAS UN EJEMPLO? Como parte de los requerimientos, un cliente solicitó que cuando los usuarios se registren en su sitio, deben recibir un email automático con la siguiente leyenda “Bienvenido a nuestro sitio”. Es probable que tengamos un test que evalúe la condición mencionada. Es decir, un test que evalúe que el usuario recibe el mail indicado. Supongamos que el cliente cambia de opinión y lo que en realidad desea es que cuando una persona nueva -que no se había registrado antes- se registra para asistir a un evento, se le envíe el siguiente mail: “Bienvenido a nuestro sitio”. Ahora bien, si esa persona (que ya estaba registrada) intenta hacerlo por segunda vez (quizás con otro mail, pero mismo ID, SSN, nro de pasaporte, etc) se le debe mostrar la siguiente leyenda “gracias por volver. Por favor revisa la configuración de tu cuenta para corroborar que las notificaciones llegarán al email deseado” Además si una persona (ya registrada en el sitio) lo hace para otro evento, las condiciones indican que se envíe otro mail con un contenido diferente, por ejemplo “Gracias por inscribirte al evento x” ¡MANOS A LA OBRA! Ejercicio #1 1. Cuando se presentan cambios en la especificación, debemos revisar y modificar las pruebas que ya teníamos: ¿Qué cambiarían en la prueba? ¿Agregarían algunas? ¿cuántas? ¿cuáles? 2. Ofrezcan sus respuestas a un compañero. Al recibirla deberán comparar y proponer alternativas a esas respuestas (en caso de ser necesario). 3. Realicen una puesta en común en el equipo. 4. Pueden ver la solución aquí 5. ¿Cómo les fue? Ejercicio #2 13 https://docs.google.com/document/d/1mcRHFddV8LjN7LMddtj2aUIDk1sbQO6a3HgPb7EEVSs/edit ¿Cuál es el costo de corregir defectos encontrados en la documentación en relación al costo de que avancen y lleguen a otras etapas del ciclo de desarrollo? Pueden ver la solución aquí Hay algunas técnicas de testing que, sobre todo al principio de tu carrera, pueden ser útiles para esta etapa ya que pueden ayudarte a visualizar condiciones para las pruebas que a simple vista no resulten tan obvias. Las detallaremos más adelante. Secreto de la industria 5� En una metodología de trabajo ágil, se seleccionan las pruebas que deberían quedar como pruebas de regresión y se analizan si estas deberían actualizarse o editarse. 4 Test design – Diseño de casos de prueba En esta etapa profundizamos los detalles y definimos cómo se realiza el testeo. Se diseñan casos de prueba y grupos de casos de prueba para las condiciones identificadas en la etapa anterior. Cada caso de prueba debe explicitar: Los pasos para probar cada condición Los datos necesarios en caso de que sea necesario ingresarlos Los detalles a tener en cuenta para ejecutar la prueba concreta (tipo de usuario si es relevante para la prueba, registro sobre el cual se hace la prueba si aplica o si es relevante, etc) El resultado esperado de cada prueba. Se deben crear la cantidad de casos de prueba necesarios para probar cada condición. ¿NECESITAS UN EJEMPLO? Condición: “ Para pagos en efectivo, aplicar un 10% de descuento sobre el total de la compra” Esta condición podría dar lugar a tantos casos de prueba como métodos de pago existiesen al menos dos casos de prueba: 14 https://docs.google.com/document/d/1XIuW6GKmu8QMqj7c5F7lBX8o-cG6FC84IkcxR3qE2NU/edit a) Se abona en efectivo y en el resultado se debe observar el 10% de descuento. b) Se abona con cualquier método de pago (distinto al efectivo) y su resultado esperado NO incluye el. Es importante generar trazabilidad entre los casos de prueba creados en esta instancia y las condiciones para las cuales se está creando los casos de prueba. A su vez, los casos de prueba deben haber quedado vinculados a la base para los tests (nuestro insumo fundamental de análisis). Creando casos de prueba también podríamos identificar escenarios para los cuales el resultado esperado no es claro. ¿NECESITAS UN EJEMPLO? Estas son algunas de las preguntas que podríamos hacer: ¿Transferencia bancaria cuenta como pago en efectivo? ¿Tarjeta de débito cuenta como pago en efectivo? ¿Se aplica el descuento para alguno de esos métodos de pago? ¿Pago en efectivo es únicamente con billetes o mediante transacción personal? ¡SUPER TIP! Lo ideal es tomar nota de todas las preguntas funcionales que nos surgen y comunicarlas de manera ordenada a quien corresponda. Sugerimos que todo el trabajo del tester esté documentado y registrado y la comunicación unificada mediante canales oficiales. Ejercicio #3 ● Analicen la descripción de requerimientos que se encuentra en el recuadro debajo. ● Identifiquen si la información está completa. ● Redacten las preguntas que consideren y decidan a quién se las harían. ● Realicen una puesta en común en común. ● Pueden ver la solución aquí 15 https://docs.google.com/document/d/1HRnL_x9UBmAh5MJLvzC6pGJTWNvnpmaPt6R-E8KRVsI/edit Sitio: E-commerce de venta minorista y mayorista de telas por metro y por rollo. ● El sitio debe permitir cobro por transferencia bancaria, tarjeta de débito y crédito. ● Debe enviar mensaje de confirmación de compra exitosa. ● Envío de email con listado de los items comprados, total de la compra, información de método de pago utilizado y estado del pago, link de tracking de envío. ● Mensaje de pago rechazado SUPER TIP High level test case – low level test case Puede suceder que en ciclos de Desarrollo ágil (o trabajando con restricciones de tiempo) sea difícil escribir todos los casos de prueba con el detalle requerido para cada caso de prueba. Deberíamos entonces documentar al menos los escenarios de prueba (high level test case) es decir los que corresponden a las condiciones diferentes que tenemos que probar. Esto se realiza escribiendo generalidades y evitando los sets de datos específicos que deberían encontrarse en cada caso de prueba. Como ventaja se encuentra el menor tiempo empleado y la utilización de este escrito como guía para no olvidar el testeo de ninguna condición del sistema. Si la ejecución de las pruebas la realiza otra persona con poco conocimiento en el sistema se lo considera esto no sería útil, entonces se lo considera una desventaja. 5 Test implementation - implementación En esta etapa (puede suceder de manera independiente o simultánea con las otras) se vinculan los casos de pruebas creados con la ejecución de los casos de prueba (es decir con hacer correr las pruebas). Aquí analizamos si contamos con todo lo necesario para ejecutar las pruebas: - ¿Tenemos procedimientos de prueba creados y priorizados? - ¿Hace falta crear algún script de automatización? - ¿Tenemos suites de prueba en base a los procedimientos de prueba? - ¿Hace falta crear alguna agenda de ejecución de suits de prueba para ser más eficientes en la ejecución? - ¿Necesitamos y tenemos ambientes de prueba con configuraciones específicas para correr las pruebas? 16 - ¿Tenemos listos los datos y registros necesarios para correr las pruebas?* - ¿Hay trazabilidad entre todos los elementos que fuimos creando a partir de otros? ¿NECESITAS UN EJEMPLO? Casos de prueba: Probar que no puedo registrarme si ya tengo un usuario creado con el mismo email. En el ambiente de prueba debería tener el email que voy a usar creado en el sistema que voy a testear. La precondición para mi prueba seria: “En el sistema ya hay un usuario creado con el email xxxx” Ejercicio #4 Teniendo en cuenta la solución del ejercicio anterior (e-commerce). ¿Qué revisarían en la etapa de implementación y qué información agregarían para cumplir con la ejecución? ● Compartan con el resto del equipo. ¿Todos alcanzaron las mismas conclusiones? Podes ver las soluciones aquí 6 Test execution – Ejecución de las pruebas Llamamos a esta es la etapa ecuación de las pruebas ya que es en la cual se “corren los tests” manualmente o con herramientas de ejecución de pruebas Las suites de prueba se corren tal como se detallan en la agenda de ejecución. Ademáses necesario: Identificar la versión del sistema que se está testeando Comparar el comportamiento obtenido con el comportamiento esperado para cada caso de prueba (cuando las pruebas corren de manera automática esto debería hacerlo el script creado para cada prueba) y registrar el resultado de cada una (PASS / FAIL) En el caso de falla de una prueba (es decir que el comportamiento obtenido no fue el esperado) se debe analizar si estamos ante la presencia de un falso positivo o si se encontró algún defecto. En ese caso, se reporta para su corrección. Revisar la trazabilidad y/o actualizar lo que corresponda (tracking) 17 https://docs.google.com/document/d/1Cc6nHwKgZDEhmxYZ9BLFPnQtKF34s_aRV_bFr6R3Grk/edit?usp=sharing Volver a ejecutar pruebas cuando corresponda (i.e.: luego de que corregir un bug) Como resultado de esta etapa, pueden surgir los siguientes productos: Estado de cada test Passed Failed Blocked* Reportes de errores Ejercicio #5 ¿En qué situación un caso de prueba podría quedar marcado como bloqueado? Pueden ver la solución aquí 7 Test completion Esta etapa hace alusión a la finalización de la ejecución de las pruebas. También se la denomina “de completitud de las pruebas” En inglés las referencias a esta etapa se pueden encontrar como: test completion (completitud de las pruebas), completion criteria (criterio de completitud), exit criterio (criterio de salida), definition of done (definición de hecho). Qué acciones reviste esta etapa: ● Revisar que los defectos reportados estén cerrados o mover al backlog lo necesario (pedidos de cambio o reportes de bug). ● Crear un reporte resumiendo los resultados de los tests. ● Guardar y archivar el ambiente y la infraestructura para la ejecución de los tests que podría rehusarse a futuro. ● Analizar si existe algún espacio de mejora en base a la experiencia del proceso terminado. Ejercicio #6 18 https://docs.google.com/document/d/1jjpGPfUvXDgYMfsaKd57w5V76VILbvgRQTakDF63Hoo/edit Pedidos de cambio o reportes de bug [change request / feature request or bug report] Imaginen que atravesaron por las etapas de análisis y ejecución de pruebas y que encontraron algunos comportamientos no esperados. ¿En qué situación reportan un bug? ¿Cuándo podrían crear una nueva historia, un pedido de cambio o un pedido de ajuste de funcionalidad? Puedes ver la solución aquí ¿NECESITAS UN EJEMPLO? Encuentras algo que parece un bug. Sin embargo, al reportarlo, el desarrollador no está de acuerdo. A su vez, el responsable �PO, FA, etc) solicita que reporten aquello que encontré como bug. Una buena manera de resolver ese conflicto es con una breve reunión entre: QA, FA, Tester para revisar el escenario y acordar cómo tratarlo. En un equipo de desarrollo el abordaje del trabajo es siempre colaborativo, la meta es escucharnos, entendernos y construir y jamás competir. TIP ALERT La comunicación es fundamental para evitar malos entendidos y comprender cómo continuar frente a ciertos inconvenientes. Recuerda: Organiza reuniones y encuentros para aclarar las diferencias o para explicar aquello que consideres necesario ¡Se viene un momento de esfuerzo! Ánimo, sabemos que hoy fue un día intenso: mucha lectura, análisis, reflexión y varios ejercicios. Queremos que desarrollen su perfil al máximo. Aquí les ofrecemos las mejores oportunidades para que lo logren🙂 Ejercicio #7 A continuación les presentamos dos sistemas: 19 https://docs.google.com/document/d/1AjsWwXqmMqzAzPlb65vlsogCQ5aQE_oDZ0dLzI0jYm8/edit?usp=sharing a) Homebanking b) Blog de recetas. Debatan y documenten cómo ordenarían las tareas de test para cada uno de estos sistemas dependiendo de si cuentan con tiempo limitado o con tiempo ideal para desarrollar las pruebas de test. Pueden descargar la planilla desde aquí Modelos y metodologías de desarrollo Las actividades de testing tienen sentido cuando se enmarcan en un ciclo de desarrollo del software. A este ciclo lo atraviesan distintas metodologías compuestas por etapas. En cada una se produce algún tipo de material. Según cuál sea la metodología elegida, puede hablarse de ciclos de desarrollo secuencial o iterativo. En este sentido las tareas de testing se organizan acorde a la metodología elegida. ¡Pro tip alert! Testeamos softwares en etapa de desarrollo que eventualmente tendrán su aprobación para iniciar la producción. ¿Cómo comienza un ciclo de vida de desarrollo de software? ➔ Relevamiento de los requerimientos para el desarrollo del producto ➔ Expresión y documentación de cada requerimiento ➔ Desarrollo de código utilizando la documentación como insumo. ➔ Testing del producto A continuación vamos a ver tres tipos de metodologías que se utilizan en la industria IT Desarrollo en cascada –Waterfall model Esta metodología es de carácter secuencial: es decir que cada etapa inicia solo cuando la etapa anterior finalizó. 20 https://docs.google.com/document/d/12ZKrG6F730AgHve5zxSP9p1EyPzLJAwbJ0eX09kyyME/edit?usp=sharing *Fuente: https://www.getsoftwareservice.com/v-model-of-testing/ ¿Y el testing? Se realiza solo cuando el código fue desarrollado por completo. El testing funciona como “evaluación de calidad” ya se para aceptar o rechazar el producto. ¿NECESITAS UN EJEMPLO? En una analogía con una fábrica, el testing podría representar el retiro de la línea de producción de aquellos productos con fallas para que solo salgan al mercado los productos que pasaron las pruebas de calidad. En desarrollo de software no siempre es posible quitar parte del desarrollo. En primer lugar porque al hacerlo podríamos causar fallas en otras áreas. Además porque si lo que deberíamos retirar se encuentra cerca del final del ciclo y fuese parte de una funcionalidad clave, el sistema quedaría obsoleto o inaceptable su nivel de calidad. Modelo V Este modelo al igual que el anterior, también es de carácter secuencial. Podría decirse que es una extensión del modelo en cascada ya que intenta resolver su desventaja principal: el testing está al final relanteciendo la posibilidad de encontrar defectos. Como se puede observar en la siguiente imagen, a cada etapa del modelo en cascada le corresponden actividades de planificación relacionadas con la etapa en desarrollo. 21 https://www.getsoftwareservice.com/v-model-of-testing/ Fuente: https://www.getsoftwareservice.com/v-model-of-testing/ Con este modelo se pueden identificar defectos al finalizar cada etapa. Al igual que en el desarrollo en cascada, cada etapa debe cerrarse antes de comenzar la siguiente. ¿NECESITAS UN EJEMPLO? La planificación del UAT (user acceptance testing) se genera cuando la especificación de los requerimientos están listos, claros y documentados. Esto implica que omisiones, inexactitudes y todo tipo de errores humanos (que pueden dar lugar a defectos) son posibles de identificar y corregir al principio del ciclo, antes de continuar con las etapas siguientes. Modelos iterativos e incrementales Las metodologías ágiles producen software en entregas a lo largo de iteraciones, ciclos o sprints (tres palabras similares para referirnos a lo mismo). En cada iteración se avanza en la construcción del sistema en producción. Generalmente los ciclos o iteraciones son de 2, 3 o 4 semanas Cada ciclo tiene un comienzo y un momento final delimitado. Usualmente las actividades que se realizan dentro del ciclo son las mismas. Esta metodología de trabajo, permite que el software salga a producción con una versión del producto que puede modificarse a lo largo del tiempo o en los siguientes ciclos de desarrollo. Esto abre la posibilidad de recibir feedback por parte del usuario a lo largo de las iteraciones. 22 https://www.getsoftwareservice.com/v-model-of-testing/ El producto se puede ajustar conforme modificaciones en el mercado o a las necesidades del cliente o usuario final. En ocasiones significa que el trabajo de la construcción del producto puede no tener fecha de finalización o que comunicar una fecha de cierre a un potencial cliente puede ser algo difícil. Comodesventaja puede mencionarse que en ciclos o iteraciones no se documenten correctamente los procesos. Para mitigar este posible error, es importante la tarea de análisis del equipo de testing y la implementación de TDD5 como método de trabajo. ¿NECESITAS UN EJEMPLO? Algunos Modelos iterativos son también conocidos como Metodologías Ágiles: Scrum – Una variante muy conocida, con iteraciones cortas y foco en la autoorganización y mentalidad de equipo. Toma su nombre del deporte Rugby por generar paralelismos entre la metodología de trabajo y el juego. Kanban – Hace foco en la visualización del flujo de trabajo para encontrar y eliminar los cuellos de botella. RUP – Rational Unified Process – Iteraciones un poco más largas que Scrum. Fases de transición: Incepción, elaboración, construcción. Spiral – El factor de riesgo se usa para determinar el nivel de documentación y esfuerzo dedicado a cada fase. Vamos con el siguiente desafío ¿Estás preparado? Lee el siguiente artículo (que se encuentra en inglés): https://www.toolsqa.com/software-testing/waterfall-model/ ¡MANOS A LA OBRA! Ejercicio #8 5 TDD = Test Driven Development implica que los tests funcionales se escriben primero y el desarrollo de código viene después. 23 https://www.toolsqa.com/software-testing/waterfall-model/ Discutan las ventajas y desventajas de cada modelo y completen el siguiente cuadro indicando qué tipo de modelo elegirían para el desarrollo de cada uno de estos productos. Justifiquen sus respuestas: Producto Modelo de desarrollo Justificación Home banking sale al mercado en 3 años con todas las funcionalidades relevadas en los requerimientos. Estas deben estar listas para su uso. App de diseño de páginas web con una interfaz de usuario amigable, al estilo “wordpress”. La propuesta es agregar funcionalidades poco a poco. E-commerce ( baja complejidad) para la venta de ropa online. Requiere ingresar a producción en los próximos 3 a 6 meses. Los Mock ups (maquetas) ya están listos Aplicación de servicios veterinarios. Los requerimientos básicos ya fueron relevados. El cliente quiere hacer benchmarking con otras apps similares a lo largo del primer año para decidir la evolución de la app. Pueden ver la solución aquí ¡Pro tip alert! Siempre deben validarse y chequear con el equipo los procedimientos de testing hasta estar seguro que lo que se está haciendo y que el abordaje elegido es funcional al equipo de desarrollo. Recuerda que si bien hay buenas prácticas y estándares, cada equipo o empresa, trabaja con metodologías propias. Esto puede derivar en prácticas más específicas, especiales o algo diferentes. Escuchá al equipo, realiza aportes constructivos y decidan en conjunto como trabajar en cada proyecto. 24 https://docs.google.com/document/d/1yu1tKeTKtnG58TVy4OD1b550hdLo3xQIi_oB0U3_oTs/edit ¡Hora de cerrar! El día de hoy estuvo dedicado a la lectura y a la ejercitación. Sabemos que no todos aprendemos de la misma manera y queremos respetar eso: ¿Cómo se sintieron? ¿Qué contenidos lograron incorporar? ¿Qué es lo que les genera más dudas o temor a la hora de desarrollar el puesto de tester? Compartan entre ustedes estas sensaciones. ¡Llegó el momento de los pulsos. ¿Te gustaría recibir? No olvides cooperar, dar lo máximo en cada encuentro y colaborar con todos los integrantes. 25
Compartir