how implement efficient test automation agile world
La automatización en Agile es muy crítica.
Piense en las muchas funciones que se agregan y entregan en cada Sprint. Tiene que haber una forma de asegurarse de que la función recién agregada no afecte la funcionalidad existente.
Debido a la baja duración del Sprint, es prácticamente imposible ejecutar todo el palo cada vez que se incrementa el producto al final del Sprint. Tener un traje de prueba automatizado definitivamente jugaría un papel más importante aquí.
Sin embargo, introducir y madurar en la automatización definitivamente llevaría algún tiempo. Hacer una inversión inicial en la planificación y el diseño de la actividad de automatización definitivamente valdría la pena a largo plazo.
En esta tercera parte de la serie avanzada Agile Testing, estoy tratando de citar algunos consejos a considerar en base a mi experiencia, a medida que traiga la automatización a su proyecto.
Además, lea parte 1 y parte 2 primero para comprender mejor el tema.
Lo que vas a aprender:
¿Qué automatizar en Agile?
Siempre que planeamos introducir la automatización en nuestros proyectos, la mayoría de nosotros votamos inmediatamente por el 'traje de pruebas de humo' o el 'traje de prueba de regresión' como el mejor candidato a la automatización . Por supuesto que lo son, pero cuando pensamos en la pirámide de prueba de automatización, podemos concluir que es solo la capa superior de la pirámide de la que estamos hablando.
Aparte de la capa anterior, todavía tenemos la capa de servicio y el capa de unidad que son más importantes.
implementar la tabla hash c ++
Entonces, ¿qué pruebas, además de las pruebas de humo y las pruebas de regresión, pueden ser buenas candidatas para la automatización?
# 1) Construcciones e implementaciones
En entornos tradicionales, tenemos compilaciones predefinidas que pueden ser semanales, quincenales o, a veces, incluso mensuales. Una de las razones es que estas implementaciones llevan tiempo. El problema con este enfoque es que tenemos que esperar a las fechas predefinidas para corregir los errores o implementar las nuevas funciones, por lo que hay un retraso.
La segunda razón fue: cuando los probadores terminan con las pruebas y presentan errores y defectos, los programadores han pasado a diferentes piezas de implementación y tienen menos interés en resolver los errores de la aplicación anterior. Este enfoque también retrasa el tiempo necesario para que la función esté disponible en producción.
La construcción y las implementaciones son entidades repetitivas y, a veces, aburridas. También puede llevar horas implementar una compilación, lo que retrasa las pruebas y, finalmente, los comentarios. Al ser una tarea repetitiva, las implementaciones se convierten en un buen candidato para la automatización.
También leer=> El proceso de gestión del lanzamiento y la implementación
Algunas de las ventajas de tener una implementación de compilación automatizada son:
mejor extensión de bloqueador de ventanas emergentes de Chrome
- No hay posibilidad de cometer errores de implementación (se pueden evitar errores humanos como copiar el archivo incorrecto o copiar el archivo en la ubicación incorrecta)
- Los errores / funciones están disponibles para probar tan pronto como se solucionen
- Los probadores tienen más tiempo para probar
- La función está lista para pasar a producción en menos tiempo.
- Retroalimentación rápida
# 2) Pruebas unitarias / Pruebas de componentes
Ya he hablado de la importancia de automatizar la capa de unidades utilizando el Enfoque TDD en mi último tutorial .
Esto forma la capa más baja de la pirámide, por lo tanto, los cimientos y cualquier cimiento deben ser sólidos como una roca. El equipo de desarrollo debe colaborar y trabajar en conjunto para acomodar la mayor parte de la prueba en esta capa.
# 3) Prueba de API / servicio web
Los servicios web son el medio en el que dos aplicaciones intercambian los datos o información en términos de solicitud y respuesta, sin preocuparse por la arquitectura o la tecnología subyacentes. En términos más simples, dar una solicitud y validar la respuesta es lo que normalmente hacemos en las pruebas de servicios web.
Probando los servicios web implica escribir programas para llamar a esos métodos de servicio web y validar los valores que devuelve. Incluso podemos probar los servicios para diversas permutaciones y combinaciones. Tenga todos los datos de prueba en la hoja de Excel y su programa puede leer los datos y llamar al servicio comprobable pasando los datos de prueba como parámetro y validar los resultados.
Esta prueba en particular es parte de la capa intermedia de la pirámide. La mayoría de las pruebas funcionales se pueden introducir en esta capa. La resolución de los defectos que surgen en esta capa se vuelve fácil de corregir y no se posponen hasta que la interfaz de usuario esté disponible.
# 4) Prueba detrás de la GUI
Automatizar las pruebas detrás de la GUI es comparativamente más fácil que automatizar la GUI real. Otra ventaja es que, independientemente de los cambios en la interfaz de usuario, la funcionalidad permanece intacta. Incluso si se cambia parte del elemento de la interfaz de usuario, la funcionalidad de la función no cambia. Esta técnica se centra principalmente en las reglas y la lógica empresarial.
La mayoría de los casos de prueba se escriben en formato tabular o en una hoja de cálculo y se escriben accesorios / fragmentos de código que aceptan la entrada de estas tablas y devuelven los resultados. Los resultados se generan de inmediato y proporcionan una gran plataforma para que las partes interesadas no técnicas realicen estas pruebas y obtengan los resultados esperados. Una de las herramientas que se utilizan para lograr esta técnica es Aptitud física .
# 5) Prueba no funcional
Esta técnica de prueba no funcional básicamente implica las pruebas de carga, rendimiento y estrés. Hay varias herramientas disponibles en el mercado que se pueden utilizar para automatizar estas pruebas.
# 6) Comparaciones de datos
Muchas de nuestras pruebas requieren que comparemos archivos de datos, incluidos archivos de texto, archivos CSV o Excel.
- Estos archivos se pueden comparar con las líneas de base para realizar la validación de datos.
- Las comparaciones pueden ser de los mismos datos pero de un formato diferente. Esto básicamente sucede cuando tenemos dos archivos iguales generados a partir de dos fuentes diferentes.
Estas comparaciones pueden ser repetitivas, por lo tanto automatizadas.
# 7) Buscando
La búsqueda de una entidad específica a partir de una gran cantidad de archivos también puede ser tediosa y Dios nos ayuda si esa es una tarea repetitiva. Un ejemplo es la búsqueda en archivos de registro. Si esto también es una tarea tediosa y repetitiva, entonces deberíamos pensar en automatizarla.
# 8) Tareas repetitivas
Cualquier tarea que comience con la interacción con los usuarios finales o la redacción de historias para desarrollarla, si es repetitiva, debe considerarse en la automatización. Debemos entender que hacer automatización no significa que tenga que haber una herramienta / tecnología sofisticada involucrada en ella. Puede ser una simple macro VB o un programa Java con Javascript para resolver el propósito.
¿Donde empezar?
No hay viñetas ni una guía paso a paso que diga dónde comenzar la automatización. Iniciar la automatización para el equipo requiere que hagas una lluvia de ideas y apliques pensamientos profundos sobre los aspectos que buscas automatizar o cuál es el objetivo final de la automatización.
Puedes empezar por:
- Identificar las tareas repetitivas,
- Identificar las áreas de dolor de la aplicación.
- Identificación de los desafíos de las pruebas
Si no tiene automatización en el proyecto / equipo de la gira, entonces probablemente pueda optar por un enfoque de múltiples capas en el que las pruebas unitarias se pueden enfocar primero para automatizar. Esto le daría el ROI más alto.
Simultáneamente, los probadores pueden comenzar a trabajar en el traje de prueba de humo y luego en la regresión. Una vez que el equipo haya adquirido las habilidades y se sienta cómodo, avance gradualmente hacia la automatización de las otras tareas repetitivas.
No se apresure directamente a comprar una nueva herramienta sin evaluar sus necesidades. Como dije anteriormente, un programa simple o una macro pueden resolver su propósito de automatizar algunas de las tareas repetitivas. Entonces, antes de decidirse a comprar una herramienta, do a POCO y evaluar si esa herramienta sería eficaz de utilizar.
Consulte estos documentos en los que he proporcionado más detalles sobre cómo seleccionar casos de prueba correctos para la automatización y algunas ideas sobre la estimación de los esfuerzos de automatización en los siguientes artículos. desafíos del proceso de prueba de manual a la automatización y estimación de prueba del proyecto de automatización de selenio.
Una vez que se finaliza el alcance de la automatización y la herramienta, lo siguiente es diseñar el marco.
Recuerde, en Agile, el marco evoluciona. NO tenga como objetivo diseñar todo el marco primero y luego implementarlo. Diseñe e implemente para el MVP (producto mínimo viable) y luego mejore el marco existente para incluir más funciones. También debe aplicar buenas prácticas de codificación y desarrollo si desea que su suite de automatización sea sólida.
Algunas mejores prácticas
- No oriente sus anuncios a Automatizar al 100% de una vez. Empieza pequeño. Recuerda que es un proceso en evolución
- Siga las mismas prácticas ágiles que sigue para cualquier desarrollo de software. La automatización también requiere una planificación y un diseño adecuados. No querrá aumentar sus deudas técnicas cuando esté automatizando
- Cree su backlog de automatización de pruebas. Esta acumulación puede variar desde la implementación de una nueva función hasta la mejora de una función existente. Dé puntos de la historia a sus elementos identificados y asígnelos en consecuencia. Lleva estos elementos del backlog a tu Sprint y haz un seguimiento usando un tablero Kanban
- Escriba los criterios de aceptación para sus historias de automatización. Estos criterios de aceptación pueden incluir:
- Integración de la suite de pruebas con CI
- Portar el traje a una ubicación centralizada
- Envíe los resultados por correo electrónico
- Disposición para enviar los archivos de registro de errores cuando falla la prueba
- Cualquier otro criterio….
- No pierda tiempo evaluando una nueva herramienta. Puede crear una lista de verificación priorizada de todo lo que desea de la nueva herramienta y decidir un cronograma para evaluarlo. Si no ve sus resultados en el tiempo estipulado, pase al siguiente
- Tome una decisión acertada sobre qué automatizar. No todas las piezas de automatización son efectivas y producen un ROI positivo. No automatice solo por el bien de la automatización
- Aproveche el entorno de desarrollo adecuado. No guarde el código en su local. Tener un repositorio para mantener su código y tener el hábito de verificar su código al final del día
- De manera similar, intente ejecutar sus pruebas automatizadas desde una ubicación centralizada. Hágala persona independiente. Debe ser que cualquier persona del equipo pueda activar los scripts desde su máquina y los resultados se obtengan por correo electrónico.
¿Cuáles son los principios ágiles que se pueden aplicar a la automatización?
Algunos consejos muy sencillos:
- Mantén las cosas simples. Haz lo que sea necesario. He visto muchos casos en los que ofrecemos una implementación cubierta de azúcar que hace que la automatización sea innecesariamente complicada. Evitemos las cosas que no son necesarias
- Hacer cosas simples no significa hacer las cosas más fáciles. Esto significa dar pequeños pasos para lograr sus objetivos de automatización. Puede tomar una función simple para automatizar, pero puede suceder que la implementación de la automatización resulte compleja
- Aplicar el enfoque de todo el equipo . Creo que todo el mundo es un tester en un equipo ágil. No restrinjamos el trabajo de automatización solo con los probadores o solo con los desarrolladores. Cada una de las disciplinas tiene que ponerse en el lugar de las demás para lograr la automatización del proyecto. Este enfoque también sería eficaz para resolver cualquiera de los problemas técnicos que vienen con la implementación.
- El marco se desarrolla en Agile . No intente proporcionar demasiadas funciones que puedan hacer innecesariamente compleja la pieza de automatización
- Tómate el tiempo para hacerlo bien. Tómese su tiempo para diseñarlo correctamente para evitar las deudas técnicas.
- Obtenga comentarios frecuentes
- Aplicar los estándares y la práctica de codificación adecuados. El diseño debe ser simple, aplicar los conceptos de OOPS y tratar de mantener las pruebas independientes entre sí. Considere factores como la 'capacidad de mantenimiento' del traje de prueba.
¿Veo algún desafío al automatizar en Agile?
Automatizar en el mundo ágil viene con sus propios desafíos :
- Necesitamos planificar muy bien. Decidir el conjunto de pruebas, la herramienta, el marco y el enfoque adecuados, todos necesitan una estrategia adecuada. Sin embargo, debemos recordar NO planificar demasiado. Tenga en cuenta el MVP (producto mínimo viable)
- Comprometer la calidad del código porque queremos entregar rápido: debemos recordar que las deudas técnicas también se mantienen bien en la automatización.
- Equipo la mayoría de las veces, los equipos no siguen el 'Enfoque de equipo completo' y dejan la responsabilidad total de codificar y mantener la suite automatizada para los evaluadores, lo que aumenta la responsabilidad de los evaluadores.
- Automatizar las pruebas funcionales es más difícil que automatizar la interfaz de usuario
Entre todos estos desafíos, el desafío más crítico es mejorar las habilidades de los probadores.
Hacer y mantener la automatización de un equipo es casi como una actividad de programación (desarrollo) que hacen los programadores (desarrolladores). No solo la implementación, sino también la integración del traje automatizado a CI es importante y requiere que los evaluadores aprendan y adopten nuevas habilidades y aprendan nuevas herramientas y tecnologías.
Algunas herramientas de código abierto que encajan en Agile
- Selenium WebDriver - Para UI
- Rejilla de selenio - Para ejecución paralela
- Pepino - Para BDD
- JMeter - Para pruebas de rendimiento
- JABÓN - Para servicios web
- WireMock: prueba del servicio web cuando el servicio web no está disponible.
- Epochs - para dispositivos móviles
Permítanme concluir con los famosos cuadrantes de prueba Agile:
Cuadrante 1 es la unidad y la prueba de componentes que se puede automatizar con el enfoque TDD.
Cuadrante 2 habla de las pruebas de funcionalidad, donde podemos aplicar el enfoque BDD.
Cuadrante 3 es el único cuadrante que tiene un alcance de prueba manual.
donde encuentro mi clave de red
Cuadrante 4 básicamente habla de las pruebas que se pueden lograr con algunas herramientas. Esto se encarga de las pruebas de carga, pruebas de estrés, pruebas de volumen y pruebas de seguridad.
Conclusión
Hay mucho alcance de automatización además de las pruebas de humo y las pruebas de regresión. Por lo tanto, tenemos que liberarnos del concepto de limitar la automatización solo a este tipo de pruebas, lo que a su vez significa que el conjunto de habilidades de un evaluador en Agile exige más que solo encontrar errores y defectos.
Los evaluadores deben ser más colaborativos y perfeccionar sus habilidades de programación / automatización. Si se automatizan más y más pruebas, los evaluadores tendrán más tiempo para dedicarse a tareas más sofisticadas y desafiantes.
Sobre el Autor: Este artículo es de Shilpa, miembro del equipo de STH. Trabaja en el campo de las pruebas de software durante los últimos 10 años en dominios como publicidad en Internet, banca de inversión y telecomunicaciones.
Comparta sus comentarios y pensamientos a continuación.
Lectura recomendada
- Tutorial de AutoIt: descarga, instalación y secuencia de comandos básica de AutoIt
- ¿Los probadores están perdiendo el control sobre las pruebas debido a la automatización?
- Desafíos de las pruebas manuales y de automatización
- Mejores herramientas de prueba de software 2021 [Herramientas de automatización de pruebas de control de calidad]
- Proceso de prueba de automatización de 10 pasos: cómo iniciar las pruebas de automatización en su organización
- ¿Es usted un experto en pruebas manuales o de automatización? ¡Trabaja a tiempo parcial para nosotros!
- Las 11 mejores herramientas de automatización para probar aplicaciones de Android (herramientas de prueba de aplicaciones de Android)
- Los 10 mejores libros de pruebas de software (libros de pruebas manuales y de automatización)