Cualquiera que haya administrado un proyecto probablemente haya tenido que tomar una decisión entre entregar a alta velocidad, alta calidad o bajo costo: como dice el refrán, solo puede elegir dos. Esto suele ser tan cierto para la entrega de software como para cualquier otra cosa, pero la creciente presión para transformar digitalmente y entregar actualizaciones continuamente ha convertido la velocidad en un requisito predeterminado para la mayoría de las organizaciones. Esto deja una opción entre calidad y costo, que a menudo se reduce a una decisión sobre las pruebas.
Las pruebas, especialmente las pruebas unitarias, han sido una etapa subestimada en el ciclo de vida de entrega de software (SDLC) durante décadas. Históricamente ha sido lento, intensivo en recursos y menos interesante que el desarrollo de nuevas características, por lo que la principal motivación para escribir pruebas unitarias para muchos desarrolladores es la presión externa, p. demandas de la gerencia o del cliente, en lugar de su propia convicción de que vale la pena hacerlo. Dentro de las organizaciones que aplican los objetivos de cobertura del código, las pruebas manuales obligatorias pueden parecerse mucho a que se les pida que coman sus verduras porque son buenas para usted.
Si bien las pruebas han ganado algo de terreno a medida que las organizaciones ven su impacto positivo en la calidad y, en consecuencia, le otorgan un mayor valor, los costos siguen siendo altos y parecen estar en aumento. En el Informe de calidad mundial de Capgemini 2017–2018, los altos ejecutivos de TI que respondieron a la encuesta dijeron que esperan asignar el 32% del presupuesto total de TI a las pruebas para 2020, en comparación con el 26% actual.
Con un aumento tanto en el costo de las pruebas como en su importancia, ¿será aún más difícil tomar una decisión entre el presupuesto y la calidad? Tal vez no: las nuevas tecnologías disruptivas de IA finalmente podrían haber hecho posible cuestionar si tenemos que tomar esta decisión en primer lugar.
Desde que el manifiesto ágil fue escrito en 2001, los métodos ágiles de desarrollo de software han fomentado ciclos de desarrollo cada vez más cortos y la entrega más rápida de actualizaciones de aplicaciones, y las expectativas cambiantes de los consumidores han establecido este nuevo estándar en piedra.
Las empresas nativas de la nube con arquitecturas de software flexibles a menudo pueden cumplir objetivos ambiciosos de comercialización. Por el contrario, las grandes empresas pesaron con el código heredado que se escribió antes de que las pruebas unitarias generalmente carecieran de un conjunto de pruebas. Estas suites de prueba facilitarían el proceso de refactorización y permitirían lanzar actualizaciones frecuentes sin romper el código antiguo. El 31% de los líderes de TI en servicios financieros que respondieron a la Encuesta Digital Realty de 2019 dijeron que vieron un problema con la infraestructura heredada de su empresa y sintieron que limitaba su capacidad para adoptar nuevas tecnologías y experimentar todos los beneficios de la revolución tecnológica.
Mantenerse competitivo requiere encontrar una manera de cumplir con los límites de tiempo rápidos impuestos por los rivales y las regulaciones mientras se entrega un producto de calidad suficientemente alta.
Para aquellos que no están convencidos de los beneficios de las pruebas, los costos de no realizar pruebas pueden proporcionar un argumento más sólido. Las pruebas unitarias, como la forma más básica y fundamental de prueba, permiten detectar errores en las primeras etapas del SDLC, lo que puede ahorrar a las empresas miles, si no millones de libras (o incluso más, dependiendo del error) en comparación con implementando arreglos en etapas posteriores. Además del costo financiero inmediato para reparar los errores de regresión, el tiempo de inactividad de una función de la que dependen los usuarios puede ocasionar daños a veces irreparables a la confianza del usuario y la reputación de su empresa.
También hay que tener en cuenta el costo a largo plazo de escatimar en las pruebas a corto plazo. Cualquier código nuevo escrito sin pruebas claras y documentadas está a solo unos años de convertirse en código heredado; así es como se incurre en la deuda técnica. Cuando solo faltan unos días para lanzar una nueva función puede marcar la diferencia, esta deuda técnica puede llevarlo rápidamente de estar a la vanguardia del juego a quedarse atrás.
La automatización ha sido una bendición para las organizaciones que la han adoptado, pero la tecnología que lo hace posible no es nueva. Jenkins, el servidor de automatización de código abierto que facilita la integración continua y la entrega continua (CI / CD), se lanzó con sus características principales actuales en 2011; No ha cambiado mucho en términos de su oferta tecnológica en los últimos ocho años.
En cambio, un cambio cultural tanto a nivel organizacional como individual ha aumentado la aceptación de las herramientas de automatización existentes: las actitudes se están moviendo hacia una conciencia de la necesidad de automatización y una mayor valoración de las pruebas. Una encuesta de 2018 sobre las tendencias de los desarrolladores realizada por Digital Oceans encontró que el 58% de los desarrolladores encuestados ya están utilizando soluciones de integración continua. Entre aquellos que aún no usan una solución de integración o entrega continua, el 43% indicó que planean pasar a CI / CD.
Con actitudes cambiantes viene una mayor aceptación de estas herramientas de automatización. El movimiento hacia la entrega continua en particular requirió una nueva mentalidad entre los usuarios potenciales de aceptar la idea de que la confirmación del código es seguida por la ejecución de pruebas, que estas pruebas deberían existir y que habrá una acción inmediata en cualquier prueba que falle. Compare esto con las actitudes del pasado, donde los desarrolladores escribieron software sin preocuparse por las pruebas y luego el control de calidad se realizó más tarde, a menudo por otra persona.
Esta adopción de la automatización ya ha ayudado a suavizar el golpe de elegir entre la compensación de costo-velocidad-calidad. Los autores del libro Accelerate: Building and Scaling High Performing Technology Organizations descubrieron que los equipos que adoptan la automatización tienden a entregar códigos de mayor calidad más rápidamente.
Si bien es indudablemente útil para la velocidad, la automatización también tiende a ser rentable, y la automatización para pruebas específicamente es una buena manera de identificar y resolver rápidamente los problemas de calidad del código. En el mismo Capgemini World Quality Report 2017–2018 citado anteriormente, el 60% de los encuestados informó que la automatización de pruebas mejora su capacidad de detectar defectos. El 57% vio un aumento en la reutilización de los casos de prueba mediante la aplicación de la automatización, y el 54% ha visto una reducción del tiempo del ciclo de prueba desde la implementación de la automatización.
Entonces, con la automatización ya mejorando la velocidad, la calidad y el costo, el próximo gran avance debe ser necesariamente el mayor cuello de botella actual en el proceso de prueba: automatizar la creación de las pruebas unitarias.
En los últimos tres años, AI ha avanzado lo suficiente como para poder desarrollar código que tenga aplicaciones comerciales reales. Usando un motor de razonamiento matemático y aprendizaje, este tipo de tecnología puede rastrear cada ruta en una base de código existente y generar automáticamente pruebas unitarias para varios resultados, incluidos los casos extremos y de esquina. Hasta ahora, incluso las organizaciones que valoraban las pruebas unitarias tenían que perder el tiempo de sus desarrolladores o subcontratarlas a un alto costo.
La IA para el código puede ayudar a los desarrolladores a evitar errores y abordar una serie de desafíos, incluido el ciclo de vida más corto de los productos de desarrollo de software, permitiéndoles generar automáticamente pruebas unitarias junto con el código que están desarrollando actualmente. Esto proporciona comentarios inmediatos que son aún más útiles que el uso de pruebas subcontratadas, ya que están presentes para consultar al mismo tiempo que el desarrollador escribe el código fuente. Para los desarrolladores, este enfoque simultáneo significa que no hay decadencia de intereses y no es necesario cambiar el enfoque o tratar de recordar lo que estaba pensando cuando escribió el código.
También puede permitir que los arquitectos de software, desarrolladores y gerentes de TI comprendan el impacto de los cambios o las migraciones a código heredado desconocido. Las pruebas unitarias automatizadas les permiten tomar decisiones más informadas sobre el proceso de desarrollo.
Para los CIO, CTO, gerentes y líderes de equipo, la inteligencia artificial para el código puede identificar las áreas de su producto que están mejorando o empeorando en términos de riesgo, y qué aspectos pueden considerarse de mayor o menor calidad. Esto es particularmente útil cuando se muestra dónde no está cubierto el código existente y se generan automáticamente pruebas para aumentar la cobertura.
El equilibrio entre costo y calidad entre las pruebas y el presupuesto ha influido en las discusiones de la sala de juntas y las estrategias de TI durante demasiado tiempo. Para que cualquier organización compita hoy, ambas son demasiado importantes para tener que decidir entre ellas. Afortunadamente, las cosas están mejorando: con las herramientas existentes de CI / CD y la creación automática de pruebas unitarias con AI para el código, cada vez es más fácil para las empresas tenerlo todo.
Los días felices de la PDA y Blackberry han quedado definitivamente atrás, pero el factor…
Tutorial sobre cómo pronosticar usando un modelo autorregresivo en PythonFoto de Aron Visuals en UnsplashForecasting…
Si tienes un iPhone, los AirPods Pro son la opción obvia para escuchar música, ¡aunque…
Ilustración de Alex Castro / The Verge Plus nuevos rumores sobre el quinto Galaxy Fold.…
Se rumorea que los auriculares premium de próxima generación de Apple, los AirPods Max 2,…
El desarrollador Motive Studio y el editor EA han lanzado un nuevo tráiler de la…