X
BLOG

La forma sencilla de aumentar el ROI de las pruebas unitarias de Java

La forma sencilla de aumentar el ROI de las pruebas unitarias de Java Tiempo de leer: 5 minutos
Descubra cómo reducir los esfuerzos de pruebas unitarias en al menos un 50%. Con este tipo de ahorros, los equipos de software pueden aumentar su productividad sin sacrificar la calidad y reducir considerablemente los tiempos de entrega.

El cuerpo de trabajo de Capers Jones es un gran activo para los desarrolladores de software en cualquier industria. Ha dedicado su carrera a estudiar los éxitos y fracasos de los proyectos de software, muchos de los cuales culminaron en 2011. La economía de la calidad del software. Aunque los desarrolladores empresariales de Java pueden sentir que esta información recopilada no les atrae, creo que se están perdiendo información valiosa.

Aquí hay algunas estadísticas aleccionadoras que se aplican tanto a los desarrolladores que usan Scrum y las últimas herramientas de software como a cualquier otro tipo de desarrollo de software. En conjunto, por cada dólar que la industria del software gasta en desarrollo, 50 centavos de ese dólar se gastan en mantenimiento y búsqueda y corrección de errores; sin embargo, la mayoría de las formas de prueba solo eliminan alrededor del 35% de los errores, dejando la mayoría de los errores en el software a pesar de los mejores esfuerzos del equipo.

Jones fue uno de los primeros defensores de las "pruebas de desplazamiento a la izquierda", aunque es posible que nunca haya utilizado el término. Encontrar y corregir defectos (especialmente defectos en requisitos, análisis y diseño) lo antes posible en el ciclo de vida del software es clave para una mayor calidad del software. Curiosamente, Jones se destacó al presentar un buen caso en contra de la métrica de costo por defecto utilizada por muchos proveedores para calcular el ROI de la herramienta; en todo caso, el costo por defecto vende menos que el ROI de las herramientas de automatización y el esfuerzo de prueba de cambio a la izquierda.

Tasas actuales de éxito en las pruebas

Ya sabemos que los desarrolladores de software están gastando la mitad de su presupuesto de desarrollo en encontrar y corregir errores, y que los métodos de prueba actuales siguen dejando dos tercios de los errores en el software. Aquí hay algunas estadísticas más interesantes:

  • Incluso utilizando los últimos métodos de desarrollo de software, la tasa de eliminación de defectos es aproximadamente del 85% en los mejores proyectos. Esto significa que el 15% de los defectos aún no se han encontrado y llegan al producto final.
  • Aproximadamente el 6% de los casos de prueba tienen errores en los propios casos de prueba.
  • En proyectos grandes, hasta el 20% de las pruebas de regresión son duplicados, lo que aumenta los costos de prueba pero no aumenta la calidad del producto.
  • Aproximadamente el 7% de las correcciones de errores incluyen errores nuevos. Entonces, incluso mientras se resuelven errores, se están introduciendo nuevos.

Cómo pueden ayudar la automatización de pruebas y el asistente de pruebas unitarias de Parasoft Jtest

Como hemos dicho muchas veces en el pasado, las pruebas unitarias son necesario pero un requisito tedioso del desarrollo de software. La automatización de pruebas ayuda a eliminar muchos de los procesos tediosos del desarrollador, pero la creación y el mantenimiento de pruebas sigue siendo uno de los problemas clave que enfrentan los desarrolladores de Java al abordar las pruebas unitarias de su código. en un Publicación anterior, Describí cómo usar Parasoft Jtest para la creación automática de pruebas unitarias, y cómo aumentar la eficiencia y los resultados de las pruebas unitarias al mismo tiempo que se reduce la complejidad de las burlas y el mantenimiento del caso de prueba. Continuando con este tema, consideremos los beneficios económicos obtenidos por la creación automática de pruebas unitarias y el impacto que tiene en los esfuerzos de prueba.

En una encuesta reciente realizada por Parasoft, descubrimos que la mayoría de los desarrolladores dedican alrededor del 40% de su tiempo a las pruebas unitarias. Teniendo en cuenta un ciclo de sprint de desarrollo de dos semanas que consta de diez días, cuatro días se dedican a las pruebas. Es fácil ver por qué las pruebas pueden convertirse en un lastre que ralentiza el desarrollo de software iterativo y ágil. Además, la tasa de éxito de las pruebas actual significa que esta cantidad de tiempo aún no es suficiente o, lo que es más importante, se necesita una forma de disminuir este tiempo mientras se mejoran los resultados.

También hemos estado ocupados recuperando datos de clientes que utilizan Parasoft Jtest para las pruebas de Java y es muy alentador. Los equipos de desarrollo de Java están viendo una disminución en su esfuerzo de pruebas unitarias en un mínimo del 50%. En otras palabras, pueden completar su prueba de unidad de cuatro días en dos días usando Jtest y el Asistente de prueba de unidad. Este tipo de ahorro por sprint es impresionante, pero lo es más cuando se suma a muchos sprints en un proyecto típico. Por ejemplo, si un proyecto típico se publica cada tres meses, con seis sprints de desarrollo, Jtest ahorra el equivalente a 1.2 sprints o 12 días de esfuerzo de desarrollo. Con este tipo de ahorros, los equipos de software pueden aumentar su productividad sin sacrificar la calidad y reducir considerablemente los tiempos de entrega. ¿Mejor calidad y entrega a tiempo (o incluso antes)? Estos son importantes beneficios económicos.

El ROI real de la calidad mejorada

Hay más para el retorno de la inversión para una mayor calidad que el costo de reparar un defecto. Arreglar un error al principio del ciclo de vida es más económico y hacerlo le permite ahorrar dinero. Aunque esta es una métrica e incluso por sí sola es suficiente para justificar la inversión en una mejor calidad, en realidad vende menos del ROI.

Una de las principales causas de los retrasos en los proyectos son los defectos perdidos y las vulnerabilidades de seguridad que llegan a las últimas etapas del ciclo de desarrollo de un producto. Por supuesto, es más barato encontrarlos y arreglarlos antes porque el equipo de desarrollo todavía tiene el código fresco en sus mentes y no ha pasado a la siguiente iteración (o proyecto para el caso).

Usando solo la métrica de costo por defecto y el enfoque para calcular el ROI, considere el ejemplo anterior, con un equipo de 20 personas trabajando en un proyecto con una tarifa de mano de obra cargada de $ 100 por hora. Este equipo, utiliza nuevas herramientas de automatización de pruebas con todos los beneficios de las mismas (shift-left la identificación de defectos) y descubre 20 defectos más que en los sprints anteriores. Encontrar y corregir estos errores con anticipación puede requerir tres horas por defecto por un total de $ 6,000. Encontrar y corregir estos errores más adelante en la integración o la prueba del sistema podría triplicar el esfuerzo, por un costo de $ 18,000. De manera simplista, para este sprint, el ROI es de $ 12,000. Suena genial, ¿verdad? Sin embargo, esto no tiene en cuenta los 2 días de ahorro de tiempo de desarrollo para el sprint por $ 32,000 adicionales en ahorros y mayor productividad.

Mirando el panorama general, podemos ver que disminuir el tiempo de desarrollo para toda la versión es el verdadero ahorro de dinero aquí, no el costo por defecto. La verdadera recompensa de cambiar a la izquierda es lograr o superar los cronogramas y objetivos del proyecto. Considere nuevamente el ejemplo anterior, pero esta vez observe el ROI en términos de que todo el equipo de desarrollo finalice el lanzamiento antes de los 12 días. ¡Para este equipo, son 12 días de 20 personas, lo que equivale a $ 192,000! Aunque este simple ejemplo parece obvio, señala que el ROI de las herramientas se obtiene a nivel de equipo, cuando los productos se entregan al mercado más rápido sin sacrificar la calidad.

Conclusión

Los métodos tradicionales de pruebas unitarias consumen una gran cantidad de tiempo de desarrollo de software y los resultados de estos enfoques deben mejorarse. Parasoft Jtest puede ayudar a reducir el esfuerzo de las pruebas unitarias en un 50%, lo que se amortiza generosamente en términos de calidad y reducción de los horarios de sprint.

El ROI de estas herramientas es significativo cuando se considera cuánto impactan las pruebas unitarias en el equipo y el proyecto en su conjunto. A diferencia del análisis simple de costo por defecto, terminar los proyectos a tiempo y cumplir con los requisitos de los objetivos es la gran recompensa, y ahorrar tiempo y dinero al hacerlo lo hace mucho mejor.

Automatice la creación de pruebas JUnit y comience a amar las pruebas unitarias

Escrito por

Kapil Bhandari

Kapil es Product Manager en Parasoft, y se centra en Parasoft Jtest. Kapil ocupó varios puestos técnicos que van desde ingeniero de software hasta líder de desarrollo, antes de pasar a la gestión de productos.

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

Prueba Parasoft