Cómo habilitar la calidad a gran velocidad en 5 pasos

Foto biográfica de Mark Lambert, vicepresidente de iniciativas estratégicas

por Mark Lambert

Febrero

5  min leer

Agile y DevOps a menudo se venden como una forma de hacer que el software se haga más rápido con menos recursos. Pero ¿qué pasa con la calidad? En esta publicación, aprenda cómo habilitar la calidad rápidamente con las pruebas continuas.

Todo el mundo quiere software de mayor calidad, más rápido. Las demandas de los equipos de desarrollo de software modernos son inmensas: desde una mayor competencia y presiones del mercado, una mayor funcionalidad y complejidad, hasta mayores expectativas de calidad, seguridad y confiabilidad del producto. Los métodos de desarrollo ágiles a menudo se buscan debido a la promesa de responder mejor al cambio y cumplir mejor los requisitos del cliente.

Pero los DevOps ágiles y (más recientemente) a menudo se venden como una forma de hacer que el software se haga más rápido con menos recursos, a pesar de que esta no es la intención. Siendo realistas, con hasta el 70% de los proyectos de TI que fallan o no alcanzan sus objetivos, los equipos de desarrollo inteligentes buscan mejorar sus prácticas de desarrollo para no solo tener éxito con un proyecto, sino también crear un proceso repetible para futuras iteraciones y productos. . En esta publicación, hablaremos sobre cómo lograr la agilidad necesaria para métodos ágiles e iterativos, sin solo lograr un producto final, sino un producto que cumpla y supere los objetivos de calidad y seguridad.

Las pruebas continuas son la respuesta a la calidad a gran velocidad

Resulta que las pruebas son tanto el problema como la solución para lograr una mejor calidad más rápido. En un proceso ágil, muchos de los pasos de desarrollo se pueden reducir para crear piezas razonables de funcionalidad para diseñar e implementar; sin embargo, la integración de la nueva funcionalidad es arriesgada y el alcance de las pruebas no está claro. Como hablé en un Publicación anterior, las pruebas son una de las razones clave por las que los equipos de software tienen dificultades para adoptar métodos ágiles. Los equipos pierden la agilidad por la que se esfuerzan porque se atascan al probar demasiado o no lo suficiente.

Las pruebas continuas se consideran una solución a los problemas que enfrentan los equipos de software que adoptan DevOps y un desarrollo ágil. Wikipedia define la prueba continua como "... el proceso de ejecutar pruebas automatizadas como parte del proceso de entrega de software para obtener comentarios inmediatos sobre los riesgos comerciales asociados con un candidato a lanzamiento de software". A pesar de la definición sencilla, implementar pruebas continuas y optimizarlas a lo largo del tiempo es otra cosa, y en eso me centraré aquí hoy.

Convirtiendo su cono de helado en una pirámide

El ideal pirámide de prueba define dónde es mejor invertir tiempo y esfuerzo en un proyecto. En la pirámide ideal, invierte su valioso tiempo y esfuerzo en un conjunto completo de pruebas unitarias en la base de la pirámide, que está respaldada por API y pruebas de servicios, y en la parte superior de la pirámide, un número mucho menor de sistemas y pruebas basadas en GUI.

Sin embargo, esta pirámide a menudo se invierte en lo que llamamos cono de helado. Los equipos están gastando demasiado tiempo y esfuerzo en pruebas de GUI a nivel de sistema frágiles y complejas que requieren la implementación e integración de la funcionalidad completa, lo que da como resultado pruebas que no se pueden ejecutar de forma continua durante las primeras etapas del SDLC. La clave para lograr una prueba continua exitosa es derretir el cono de helado y centrarse en la creación de pruebas unitarias y de API automatizadas que se puede ejecutar de forma continua a medida que los desarrolladores implementan la nueva funcionalidad.

Los cinco pasos para lograr la calidad a gran velocidad con pruebas continuas

1. Construya una base de pruebas unitarias

Construya una base de pruebas unitarias automatizando el proceso de creación, ejecución y mantenimiento de pruebas. Solo haciendo que el trabajo de las pruebas unitarias sea más fácil de crear y mantener, los equipos de desarrollo adoptarán las pruebas unitarias en todo el proyecto para todos los componentes.

Adopte la automatización de pruebas tanto para la creación como para la ejecución y la gestión de pruebas, ampliando el conjunto de pruebas unitarias actual para incluir tanto código del producto como sea razonable.

Para obtener más información sobre las pruebas unitarias: www.parasoft.com/solutions/unit-testing/

2. Evite depender de las pruebas centradas en la interfaz de usuario de ciclo tardío

Evite depender de pruebas de ciclo tardío, frágiles y centradas en la interfaz de usuario, que terminan siendo las que requieren más tiempo y son las más costosas de diagnosticar y corregir. En lugar de centrarse en automatizar todos los escenarios de pruebas manuales, invierta en una base sólida de pruebas unitarias y de API para asegurarse de que la arquitectura que se comunica con la interfaz de usuario sea sólida en primer lugar.

Aunque las pruebas a nivel del sistema siguen siendo importantes y necesarias, no deberían ser las primeras. Tampoco es el momento de descubrir problemas críticos de arquitectura, rendimiento y seguridad. Los equipos de software pueden reducir su dependencia de estas pruebas de IU y del sistema construyendo una base sólida de pruebas unitarias y de API. Siguiendo las otras recomendaciones aquí, muchos de los sistemas deberían estar bien probados antes de que comiencen las pruebas a nivel del sistema.

Asegúrese de utilizar también el análisis estático para analizar toda la base del código, incluido el código heredado y de terceros, para ayudar a detectar errores y vulnerabilidades de seguridad que las pruebas podrían pasar por alto. El análisis estático también es importante para hacer cumplir los estándares de codificación de proyectos.

3. Comprender la cobertura del código para toda la pirámide de pruebas

Comprenda la cobertura del código de arriba a abajo en toda la pirámide, junto con la trazabilidad a los requisitos / historias de usuario, porque sin ella, los equipos de desarrollo no saben realmente qué se ha probado y qué no. Además, no comprender la cobertura de la prueba significa no saber qué probar en cada nivel de la pirámide, lo que significa que incluso los cambios menores requieren tantas pruebas que atascan todo el proceso. Ver mi publicación anterior sobre pruebas basadas en cambios.

4. Cambiar a la izquierda con la virtualización de servicios

Aproveche la virtualización de servicios de las dependencias de las aplicaciones para permitir las pruebas de API automatizadas mucho antes en el ciclo de vida del desarrollo. El aumento de la automatización y la detección temprana de errores son fundamentales para el éxito. Impulsar las pruebas de API antes ayuda a descubrir aspectos críticos del sistema, como el rendimiento y la solidez de la arquitectura. Esta también es una fase importante para las pruebas de seguridad.

5. Aproveche el análisis del impacto del cambio para acelerar la agilidad

Acelere el desarrollo ágil con el análisis del impacto del cambio por compilación para comprender los detalles del riesgo que ha introducido cada nueva iteración. Los análisis proporcionados por el análisis de impacto del cambio son clave para hacer que las pruebas se centren solo en lo que es absolutamente necesario probar en lugar del enfoque de escopeta que se usa de otra manera.

Solo a través de una toma de decisiones inteligente y basada en datos, las pruebas continuas reales son viables. Centrar al equipo de desarrollo en el conjunto mínimo de pruebas para garantizar la cobertura adecuada en cada iteración es la clave para devolver la agilidad a ágil métodos de desarrollo.

El camino hacia la mejora

Como era de esperar, la mejor manera de comenzar es revisar la pirámide de prueba y luego evaluar dónde se encuentra actualmente un proyecto. ¿Existe una base sólida de pruebas unitarias automatizadas que se ejecutan por compilación? ¿Se prueban tantas API de productos con automatización como sea posible? ¿Se utiliza la virtualización? ¿Las pruebas se basan en un conjunto complejo de pruebas de IU manuales que no se pueden ejecutar hasta que el sistema está casi completo? El camino hacia la mejora se basa en la construcción de una pirámide de prueba, automatización y recopilación y análisis de datos adecuados.

Las numerosas presiones sobre los equipos de desarrollo de software modernos dificultan la creación de productos a tiempo y según las especificaciones. Los nuevos métodos de desarrollo, como el desarrollo ágil, han ayudado a los equipos a concentrarse en crear las cosas correctas para el cliente, pero los proyectos aún se retrasan y son propensos a errores, y las pruebas son un aspecto clave del desarrollo que continúa plagando los métodos de desarrollo modernos. Para obtener mejoras significativas, adopte una base sólida de pruebas unitarias automatizadas y realizar pruebas de API pronto y, a menudo, a través de la virtualización de servicios. Y no olvide que los resultados de las pruebas mejoran mucho con el uso de datos de análisis avanzado de pruebas de software para impulsar la gestión de pruebas.

Nueva llamada a la acción

Foto biográfica de Mark Lambert, vicepresidente de iniciativas estratégicas

por Mark Lambert

Mark, vicepresidente de productos de Parasoft, es responsable de garantizar que las soluciones de Parasoft brinden un valor real a las organizaciones que las adoptan. Mark ha estado con Parasoft desde 2004, trabajando con una amplia variedad de clientes de Global 2000, desde implementaciones de tecnología específicas hasta iniciativas de mejora de procesos SDLC más amplias.

Reciba las últimas noticias y recursos sobre pruebas de software en su bandeja de entrada.