Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Módulo 1 / Encuentro 2/20 Objeto y función del testing OBJETIVOS DEL MÓ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. *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 segundo encuentro de trabajo! Esperamos que hayas tenido un excelente equipo en tu primera sesión. Hoy conocerás un equipo nuevo. Recuerda reconocer con un pulso a aquellos integrantes que hoy colaboren más con tu aprendizaje. Esfuérzate por conseguir pulsos también. Si valoras al equipo completo, ¡no dudes en entregarle un pulso a cada integrante! Así te estarás asegurando de que nuestro algoritmo te empareje con personas que colaboran con tu aprendizaje. ¡Demos comienzo a la actividad del día de hoy! 1. Presentación del equipo: Realiza en equipo este ejercicio cotidianamente. Toma tan solo unos minutos y cambia la experiencia de todo el equipo. Indica tu nombre y de dónde vienes. Ya sabes: puedes hacerlo en el chat si no deseas romper el hielo tú primero. Les dejamos una pregunta para abrir la sesión (si lo desean): ¿Por qué decidieron realizar este curso? ¿Qué fué lo que más les interesó de este rol de la industria IT? Utilicen unos 10 minutos para compartir estas breves presentaciones. ¡Anímense! Quienes están contigo en el equipo de hoy son parte de la gran comunidad que está aprendiendo junto a tí. 2 Fallas en el sistema: Ejercicio #1 Lean la siguiente frase: “An error (or mistake) leads to a defect (or fault), which can cause an observed failure” 1� Debatan y analicen en equipo su significado. Luego -de acuerdo a sus conclusiones- diagramen un flujo o bosquejo sobre el proceso de falla que se describe en la frase. Pueden utilizar la pizarra de Zoom u otra herramienta que conozcan. 2� ¿Qué entendemos por cada uno de estos conceptos? Revisa este video sobre el error, defecto y falla Busquen ejemplos de cada uno y aprovechen para compartirlos, si así lo desean, con el equipo. 3 https://youtu.be/mkMz4OLgtx0 Tip de la industria: Es muy común en diferentes grupos de trabajo que a la falla se la llame bug, incidente o incidencia al resultado inesperado que se encuentra en el sistema. Una persona puede cometer un error (desatino), que puede llevar a la introducción de un defecto (falla o bug) en el código del software o en algún otro producto de trabajo relacionado. Un error que conduzca a la introducción de un defecto en un producto de trabajo puede desencadenar un error que conduzca a la introducción de un defecto en un producto de trabajo relacionado. Por ejemplo, un error de obtención de requisitos puede llevar a un defecto de requisitos, lo que a su vez da como resultado un error de programación que conduce a un defecto en el código. Si se ejecuta un defecto en el código, esto puede causar una falla, pero no necesariamente en todas las circunstancias. Por ejemplo, algunos defectos requieren entradas o condiciones previas muy específicas para desencadenar una falla, que puede ocurrir raramente o nunca. Los errores pueden ocurrir por muchas razones, tales como: la presión de tiempo; falibilidad humana; participantes en el proyecto sin experiencia o insuficientemente capacitados; falta de comunicación entre los participantes del proyecto, incluida la falta de comunicación sobre los requisitos y el diseño; complejidad del código, diseño, arquitectura, el problema subyacente a resolver y/o las tecnologías utilizadas; malentendidos sobre las interfaces dentro del sistema y entre sistemas, especialmente cuando tales interacciones dentro del sistema y entre sistemas son grandes; nuevas tecnologías poco comunes; etc. Además de las fallas causadas por defectos en el código, las fallas también pueden ser causadas por condiciones ambientales. Por ejemplo, la radiación, los campos electromagnéticos y la contaminación pueden causar defectos en el firmware o influir en la ejecución del software al cambiar las condiciones del hardware. No todos los resultados inesperados de las pruebas son fallos. Los falsos positivos pueden ocurrir debido a errores en la forma en que se ejecutaron las pruebas. MATERIAL DE LECTURA 4 Falsos positivos/Falsos negativos Algunas consideraciones ● No todo lo que parece un bug o falla en el sistema realmente lo es. ● No toda falla aparente es sinónimo de bug. Al igual que en otras disciplinas existen los falsos positivos y los falsos negativos. ¿NECESITAS UN EJEMPLO? Ejemplo #1 Supongamos que un QA o tester creó un caso de prueba habiendo entendido mal la especificación o el comportamiento esperado de una funcionalidad. Cuando otra persona “corre el test”1, el comportamiento esperado (es decir el descrito en las especificaciones) no se observa, pero el comportamiento obtenido es correcto. Decimos entonces que estamos “frente a un falso positivo” [not a bug]. Ejemplo #2 Un falso negativo sería el resultado de un caso de prueba que al terminar de ejecutarse, no ha detectado un problema a pesar del comportamiento erróneo obtenido. Es decir: hay presencia de un bug, pero al estar mal diseñado, el caso de prueba no pudo identificarlo. ¡TIP! En ambos casos: falso positivo y falso negativo, hay un error en el diseño del caso de prueba. ¡No lo olvides! Estrategia 1 Correr el test, es la frase que se utiliza en la industria para indicar que vas a ejecutar la prueba. 5 Es importante desarrollar un criterio y comprender qué, por qué y para qué se testea. Cualquier individuo o empresa que ponga energías en desarrollar algún sistema, lo hace con un objetivo. Organizando y planificando la estrategia de Testing correctamente, ayudamos al cumplimiento de los objetivos, evitamos errores o detectamos defectos. Este trabajo de análisis y de diseño de estrategia debe comenzar lo antes posible. De ser posible junto al inicio del desarrollo y debe continuar hasta que aseguremos el nivel de calidad deseado. Un producto deficiente resulta en pérdidas de tiempo, dinero, imagen corporativa, suscriptores, compradores. Pero también podrían ser pérdidas humanas o de nuestro ecosistema. El trabajo desde el área de calidad �Quality assurance) es importante para evitar posibles pérdidas Imaginemos las consecuencias de la falla en un sistema de navegación de un auto o en un sistema de automatización de señales viales, o en un sistema de ventilación en un hospital, un gps, o en un sistema de transferencias de dinero? Root Cause Un defecto es lo que está mal, su efecto es la forma en la cual aparece. Podríamos generalizar el defecto y su efecto como el QUE sucedió y su causa o root cause como el PORQUÉ. Veámoslo de forma gráfica: En otras palabras: la root cause es la causa del defecto. ¿NECESITAS OTRO EJEMPLO? Ejemplo #2 6 Una transacción bancaria ejecutada que no impacta - en la cuenta destino- el monto transferido. La causa del defecto o root cause, es aquello que dió lugar al defecto. Ejemplo: un time-out no manejado, un error en el código, entre otros Ejercicio #2� ● Piensen un ejemplo en el que se exprese claramente un error en algún sistema ● Intenta describirlo y detalla al menos 2 (dos) Root causes Observa el siguiente gráfico: Es posible señalar que el efecto se traduce en “ Qué sucede” o “cómo se expresa” y su causa o “Root Cause” el por qué o la razón de ese defecto. 7 Secreto de la industria 1� En ocasiones, nuestro cliente puede consultarnos o desea saber sobre las causas que dieron lugar a un fallo o bug, razón por la cual, es bueno tener pleno conocimiento de la Root cause. Objeto y Función del Testing: ¿Qué hace un tester? ¿Cuál será tu trabajo en un futurocercano? ● Planifica y ejecuta pruebas para comprobar si el producto funciona de la manera esperada, en todos los escenarios posibles. ● Identifica los defectos y bugs para reportarlo al área de desarrollo. ● En ocasiones puede sugerir opciones de mejora. ¿Se te ocurre otra tarea fundamental para cumplir con el rol? Comparte tu opinión con tus compañeros. Secreto de la industria 2� En organizaciones grandes, la tarea “definición de funcionalidad” suele ser la del Analista Funcional �Functional Analyst) o Product Owner. El tester deberá hacer grandes esfuerzos a lo largo de su carrera ya que siempre tendrá que: Conocer el producto en profundidad. Conocer el diseño. Conocer el desarrollo. Perfil de un tester: 8 Curioso y abierto al aprendizaje para conocer cada producto que debe testear. Atención al detalle Pensamiento “out of the box” �¿Te animás a investigar de qué se trata esta expresión?� Habilidad para anticiparse a escenarios complejos o problemáticos. Excelente redacción para poder expresar funcionalidades en los escenarios en los planes de pruebas. Reflexiona unos minutos… ¿Qué tan cerca estás del perfil del tester? Comparte tus sensaciones con los demás integrantes. ¿Qué les pasa a ellos? ¿Hay coincidencia entre tus compañeros y tú? ¡MANOS A LA OBRA! Ejemplo #3 Tarea: testear la actualización de un software de cajero automático. Escenarios: 1. Usuario intenta retirar dinero �Rol de usuario) 2. Ingresa tarjeta 3. Ingresa PIN incorrecto 4. Recibe mensaje de error 5. No se le permite extraer dinero 6. Ingresa PIN correcto 7. El usuario solo puede ingresar a su cuenta con PIN correcto y no a otra 8. Validación del Idioma asociado a la información de la cuenta del usuario 9. Verificación de dinero en cuenta de usuario Algunas preguntas probables en relación al funcionamiento: 9 ➔ ¿Qué ocurre en caso de que el cajero no disponga de dinero? ◆ Validar que se muestre el mensaje “error” ◆ Validar que el cajero no me entregue dinero y que no modifique el dato “saldo” en cuenta, en caso de no haberse efectuado ningún movimiento bancario. ➔ ¿Qué sucede al terminar la transacción? ¿La sesión queda abierta o cerrada? ¿Qué se observa en pantalla? ➔ ¿Y si el cajero automático entregó todo el dinero disponible? ➔ ¿Qué tipo de usuario (con otros permisos) podría operar en el cajero? ¿Algún usuario debería poder operar en el cajero aunque el usuario común no? ➔ ¿Quién puede cargar dinero en el cajero? ➔ ¿Algún usuario puede retirar dinero del cajero automático desde otro lugar físico? ¿Y sin ingresar tarjeta? Super tip: No te olvides de ir siempre más allá, con las preguntas… ¿Qué es lo que NO estás preguntando? Por ejemplo: ¿Hay distintos permisos para acceder a la información? ¿Conoces las acciones permitidas de cada usuario en relación a los permisos que tienen? Ejercicio #3 ● Piensen preguntas funcionales que podrían agregar para comprender el sistema. ● ¿A quién estarían dirigidas? ● ¿Qué escenarios o casos de uso crees que debería contemplar el software de un cajero automático de un banco? ● ¿Y el de un autoservicio? Conoce las posibles soluciones desde aquí 10 https://docs.google.com/document/d/1dPD7ZLfmLWbYqjHAAe59DTd5grKh2Zb0d7nD9O542gM/edit?usp=sharing Secreto de la industria 3� En cada empresa o grupo de trabajo hay una persona asignada que debería tener el conocimiento “funcional” del sistema. Es decir, conocer qué debe hacer el sistema en múltiples situaciones o escenarios. Recuerda identificar quién es la “go to person” cuando surgen preguntas funcionales. MATERIAL DE LECTURA El arte de preguntar La mayéutica ¿Escuchaste alguna vez acerca de este método? Es el que utilizaba Sócrates en la antigua Grecia con sus alumnos y consistía en hacer muchas preguntas para así descubrir el conocimiento. Trasladando este método a nuestra área de expertise, se trata de que uds realicen todas las preguntas funcionales que deseen para inferir posibles escenarios y evitar fallas. El objetivo es tratar de obtener las respuestas a los “¿qué pasa si….?” o “¿qué pasa cuándo…?” que se nos ocurran. Detectar la falta de información, identificar omisiones o contradicciones y realizar la pregunta correcta a la persona precisa es parte del rol profesional. 11 TIP� ¡Atención! no asuman situaciones solo porque “les parece” que algo debería ser o comportarse así. La recomendación es: PREGUNTAR Luego de cubrir las dudas, organizamos por prioridad el plan de pruebas. Luego comienza la ejecución. En el curso anterior �Introducción a QA� profundizaron sobre este tema. ¿Recuerdan su definición? “Es un elemento que nos ayuda a cuantificar -en términos de cobertura- la calidad del producto que saldrá a producción”. ¿Qué otras definiciones tienen para agregar al concepto “plan de pruebas"? Podes revisar las guías anteriores, apuntes etc. Acerca de las funcionalidades A simple vista puede parecer la misma funcionalidad, pero ¿realmente es así? ¿NECESITAS UN EJEMPLO? Es probable que un adolescente y una persona 30 años mayor, aborden o utilicen el mismo sistema de manera diferente. Pueden elegir o interactuar con diversas opciones. Entonces, desde nuestro rol, debemos comunicar y registrar cuáles podrían ser esas múltiples formas de usar el sistema o la diversidad de escenarios que el sistema debiera contemplar. Pensemos en la funcionalidad “login” de un cliente de email (como por ejemplo Gmail o Outlook) Cada uno de estos sujetos e prueba mencionados anteriormente puede intentar loguearse: ➔ Desde diferentes navegadores ➔ Con / sin conexión a internet ➔ Desde diferentes dispositivos �Tablet, celular, pc de escritorio, laptop, tv) ➔ Dentro / fuera de una VPN ➔ Con / sin proxy ➔ Con un usuario existente / inexistente 12 ➔ Con un password correcto / incorrecto ➔ Con un usuario que existió pero que fue dado de baja ➔ Cliqueando en el botón de ingresar luego de que la sesión dió time out. Estos son solo algunos factores que un analista QA podría querer tener en cuenta para delinear sus casos de prueba. Ejercicio #4 ¿Qué otros factores tendrías en cuenta para el armado del plan de pruebas de un cliente de email como Gmail o Outlook? ¿Escenarios particulares? ¿Ya los has pensado? Recurre a las posibles soluciones desde aquí. Ejercicio#5 Optativo ¿Estás con ganas de profundizar? Si lo deseas y quieres ganar experiencia “haciendo”, puedes hacer un último ejercicio. ➔ ¿Qué preguntas funcionales harías si te encargaran testear una app móvil de mensajería? ➔ ¿Qué escenarios o casos de uso considerás que una app móvil de mensajería debería tener? ➔ ¿Qué escenarios o casos de uso consideras que serían deseables pero no necesariamente indispensables? Posibles soluciones a estas preguntas, accede desde aquí ¡Un esfuerzo más! Hasta aquí has practicado mucho. ¡Felicitaciones! Te pedimos que continúes haciéndolo, sabemos que es un esfuerzo, pero la práctica te beneficiará en tu futuro rol. Toma una pausa de 10 minutos, respira, haz algunos ejercicios, recarga energía para desafiarte nuevamente. 13 https://docs.google.com/document/d/1mxs8UakHveSLXPKIOYIYnji9DvLx241TM980d82Rs9A/edit?usp=sharing https://docs.google.com/document/d/1HzQRD2990ArfiZheOR2bI1FHMsKPWsdTSrQiafi9O5M/edit?usp=sharing Ejercicio #6 Este ejercicio consta de una instancia individual y una grupal. Comencemos por la individual. Reflexiona unos minutos… ● ¿Qué tipos de errores podrían producirse durante la creación de un documento funcional? ¿Y en la documentación de historias de usuario? ● Enumera todos los tipos de errores que podrían dar lugar a gaps o defectos en la documentación. ● Realicen una puesta en común con sus integrantes de equipo. ● Seleccionen aquellos que consideren fundamenta/es ● Ofrezcan respuesta para prevenir esos errores. ¡Accede a la solución desde aquí! MATERIAL DE LECTURA Algunas empresas hacen una distinción entre QA �Quality Assurance) y QC �Quality Control). Veamos la diferencia entre cada una: Como mencionamos anteriormente estas distinciones no existen en todas lasempresas y en algunos casos, puede ocurrir que la denominación de las áreas sea la de QC/QA pero algunas de sus funciones actividades y/o responsabilidades cambien se diferencien entre organizaciones. 14 https://docs.google.com/document/d/1O1_blizpb_mVPhTDdG-suCuN_6qqPIAyIIg9vNHgL8k/edit Secreto de la industria 4� En algunas empresas las áreas pueden estar divididas según las siguientes tareas: �Realizar análisis estático y diseño del plan de pruebas �Ejecutan los planes de prueba. No hay homogeneidad en las prácticas producto de la velocidad con la que crece la industria IT. Bug Reporting: ¿Y si al ejecutar una prueba nos encontramos con algún comportamiento que no es el esperado? Será momento de reportar nuestro hallazgo. ¿Cómo debe ser ese reporte? Ordenado Comprensible Reproducible (es decir que podamos reproducir el escenario que derivó en un comportamiento inesperado): el reporte debe tener pasos simples y concretos para que el desarrollador o cualquier persona que lo lea pueda reproducir el error. El objetivo de reportar los fallos o bugs que encontramos es que los desarrolladores puedan seguir de manera fácil los pasos que les comunicamos, (que tienen que ser simples y precisos). Es decir, el objetivo es que los desarrolladores: Analicen las acciones que derivaron en un bug o comportamiento inesperado Encuentren la root cause (la causa del bug) Corrigan el comportamiento no deseado ¿Cómo lo hacen? Reproduce -en su propio ambiente de desarrollo- el bug reportado y lo debuggean* 2 2 Debuggear: acción de remover o corregir los defectos. 15 Luego realizan los cambios necesarios en el código. Más adelante analizaremos “las buenas prácticas” para reportar bugs y algunos ejemplos para practicar. El trabajo de testing requiere tiempo para analizar. Si le pidiéramos al equipo de desarrollo que realice funciones de testeo, el desarrollo ágil no sería tal y la implementación en modalidad cascada sería un proceso muy largo. La colaboración dentro del equipo y entre equipos también es fundamental. La mayoría de las empresas del área IT remarcan la importancia del trabajo en equipo como parte de su cultura y en los procesos de búsqueda de personal suelen solicitar personas con las siguientes habilidades: Autonomía Capacidad de resolución Proactividad Capacidad de adaptación, Colaboración Trabajo en equipo. TIP� La voluntad de compartir lo aprendido y ayudar a que la organización crezca es muy importante sobre todo en empresas jóvenes o startup ¿Estás preparado/a para trabajar de esa manera?💪 En equipo analicen… ¿Qué es el testing? Debatan en equipo Luego contrasten su respuesta con la que les ofrecemos ¿Hay coincidencia? Respuesta 16 https://docs.google.com/document/d/124OsxlNBpaACBh6p0SmRkE3dViWg0uflj77-qTQ5cUI/edit Diccionario de cabecera Como sabrás, todas las disciplinas tienen un diccionario propio y específico del campo de conocimiento al que están circunscritas. Es decir vocabulario relacionado a tareas, elementos, objetos, sistemas, programas o actividades. A continuación les presentamos las más importantes: Test basis o base para los test: Es el insumo que usamos para el análisis y el diseño de casos de prueba. Punto inicial para empezar a definir qué testear y cómo hacerlo basándonos en el cuerpo de conocimiento, las definiciones, las especificaciones y la historia de usuario. Nos ofrece información sobre todo aquello que el sistema debe hacer. Test condition: Las descripciones a los comportamientos esperados frente a situaciones concretas son las que se denominan condiciones del test. Nos hablan de circunstancias, aunque no contienen el detalle suficiente para hacer “correr el test”. Las condiciones son aspectos que se encuentran en la base para los tests y son relevantes para alcanzar objetivos de prueba específicos. Un aspecto testeable del sistema descrito en la base para los tests, es decir en el insumo con información del sistema a diseñar del cual se disponga . Test Case: Es el caso de prueba concreto, basado en las condiciones que se desean testear. El caso de prueba debe incluir una descripción de cuál es el comportamiento esperado (expected outcome). Se debe realizar teniendo en cuenta: Precondiciones (si aplica): Las precondiciones sirven para saber cómo tiene que estar configurado el ambiente para testar un caso particular. Es un estado de las cosas previo a la ejecución del test. Ejemplos: que el usuario tenga un email sin verificar, que el usuario no esté registrado, que el usuario esté deshabilitado, entre otros. Datos de entrada Acciones (de ser necesarias) 17 Resultado esperado3 Poscondiciones4 Test Procedure: Procedimiento de pruebas o script de pruebas. Es la secuencia de casos de prueba en orden de ejecución. Son todas aquellas acciones necesarias para configurar precondiciones (si aplica) y acciones de cierre en el caso de ser necesarias. ¿NECESITAS UN EJEMPLO? Test Basis: Si el usuario ingresa un password incorrecto 5 veces, la cuenta se bloquea y solo el administrador puede desbloquearla. Test Conditions: No se sabe cuál es el password incorrecto, sólo sabemos cómo debería reaccionar el sistema cada vez que se ingresa un password incorrecto 5 veces. Test case: Si la intención es probar que se bloquea la cuenta luego de 5 intentos de password incorrecto y que solo el administrador puede desbloquearla, es necesario asegurar -como precondiciones- que el usuario (en este test de prueba) no posee permisos para desbloquear cuentas. ¡Hora de cerrar! ¡Últimos minutos! Hemos trabajado mucho en el encuentro de hoy. ¿Qué dudas tienen sobre los ejemplos de testing mencionados? ¿Necesitan consultar a un mentor? ¿Cuál es el concepto más 4 Son las condiciones (estado de las cosas) que deben estar presentes al fin de la ejecucion del test https://istqb-glossary.page/postcondition/ 3 Resultado esperado �Expected Outcome) https://istqb-glossary.page/expected-outcome/ 18 https://istqb-glossary.page/postcondition/ https://istqb-glossary.page/expected-outcome/ difícil de aprender hasta este momento? ¿Qué les genera más incertidumbre? 19
Compartir