X
BLOG

¿Cómo se utiliza la pirámide de automatización de pruebas en el desarrollo de software?

¿Cómo se utiliza la pirámide de automatización de pruebas en el desarrollo de software? Tiempo de leer: 6 minutos

La pirámide de automatización de pruebas, creada por Mike Cohn y popularizada por Martin Fowler, ha cambiado la forma en que pensamos sobre las pruebas de software. Es una guía sobre qué tipos y cuántos de cada tipo de prueba realizar. La pirámide de automatización de pruebas ha ayudado a crear pruebas más eficientes y ha dado como resultado el lanzamiento de un software más confiable para los clientes.

Beneficios de la pirámide de automatización de pruebas

La mayoría de los beneficios de la automatización de pruebas son obvios:

  • Ahorro de tiempo y costes.
  • Mejor precisión eliminando errores humanos.
  • Capacidad para repetir, reutilizar y escalar pruebas según sus necesidades de software.

Pero, ¿por qué la pirámide de automatización de pruebas es tan importante en las pruebas de software automatizadas?

La simple automatización por sí sola no lo llevará a donde desea ir en el desarrollo de software que se encuentra en un cronograma y presupuesto ajustados. Seguirá habiendo recursos y tiempo limitados.

¿Cómo podemos diseñar los tipos apropiados de pruebas automatizadas en el volumen correcto para escalar las pruebas con las prácticas de desarrollo? ¡La pirámide de prueba es una gran guía para hacer precisamente eso!

A continuación se muestra una descripción general de la pirámide de pruebas y cómo se utiliza cada fase de la pirámide en el desarrollo de software.

Atravesando la pirámide de automatización de pruebas

La pirámide de pruebas es una gran metáfora visual que describe diferentes capas de pruebas y cuántas pruebas se deben realizar en cada capa.

Triángulo azul separado en 3 partes: la parte inferior es la unidad, el medio es el servicio, la parte superior es E2E

Pruebas unitarias están en la parte inferior y representan las pruebas más granulares, de las cuales debería tener muchas.

La siguiente capa en la pirámide tiene pruebas de capa de integración o servicio. Aquí es donde comienza a probar cómo interactúan sus componentes de software entre sí, ya sean integraciones internas o externas.

La prueba de extremo a extremo (E2E) es el más complejo y prueba el software en su conjunto para asegurarse de que funciona como se espera de principio a fin.

Mantener el volumen de sus conjuntos de pruebas en cada capa alineado con esta metáfora visual de una pirámide le permite escalar las pruebas para dar como resultado un software más confiable. Analicemos por qué.

Pruebas unitarias

A prueba de unidad se realiza en una pequeña porción de código, típicamente una función / método o hasta una clase, para determinar si cumple su función correctamente. Las características de estas pruebas son sencillas y rápidas, por lo que quieres un gran porcentaje de tus pruebas en esta capa. Cuando falla una prueba unitaria, los desarrolladores reciben una alerta y pueden determinar rápidamente cuáles son las consecuencias no deseadas de los cambios de su código, y esto sirve como una red de seguridad crítica para cambiar el código con confianza.

A pesar de todas sus ventajas, las pruebas unitarias no son el fin de las pruebas. Con pruebas de alcance tan estrecho que usan dobles de prueba (como simulacros y stubs), pierde la verificación de qué tan grandes porciones del software funcionan juntas.

Si está interesado en verificar los requisitos comerciales, es difícil de facilitar con las pruebas unitarias y, como dice la expresión, "no se puede ver el bosque por los árboles". Sin embargo, una política de mapeo y seguimiento de las pruebas unitarias a las historias de los usuarios a medida que se trabajan puede servir para ayudar a identificar los riesgos asociados a ciertas características cuando ve que la inestabilidad en las pruebas unitarias falla.

Cómo ayuda Parasoft con las pruebas unitarias

Parasoft Prueba C / C ++ detecta defectos con anticipación y ahorra dinero al integrar las pruebas C y C ++ en el desarrollo de software para aplicaciones integradas de seguridad y críticas.

Parasoft Jtest se integra estrechamente en su ecosistema de desarrollo y en la canalización de CI / CD para obtener comentarios inteligentes en tiempo real sobre sus pruebas de Java y el progreso de cumplimiento. Jtest destaca la cobertura del código, emplea un análisis de código profundo para ayudar con la creación de JUnit e identifica problemas de seguridad y confiabilidad para que las partes interesadas puedan comprender la calidad de los entregables y tomar decisiones informadas sobre el riesgo de publicación.

Pruebas de integración

Las pruebas de integración son el nivel medio de la pirámide de pruebas estándar. Cuando las pruebas unitarias son muy granulares, en este nivel utilizamos pruebas que comienzan a verificar que los paquetes más grandes de código funcionan correctamente juntos.

Las pruebas de integración son más importantes ahora que nunca debido a la popularidad de las arquitecturas de sistemas distribuidos con microservicios e implementaciones en la nube. Los días de desarrollo de aplicaciones monolíticas han quedado atrás y muchos componentes de software implementados de forma independiente de los sistemas modernos se integran entre sí a través de sus interfaces expuestas, a menudo a través de REST o un agente de mensajes como Apache Kafka o ActiveMQ. Los sistemas heredados se están desacoplando y dividiendo lentamente en nuevos componentes de software que son más fáciles de escalar y más fáciles de probar, a pesar de ser una implementación más compleja.

Fitch ofrece alta cobertura de código y calidad para aplicaciones de microservicios

Estas pruebas son más lentas de ejecutar que las pruebas unitarias y requieren que su software se implemente en un entorno de prueba, pero pueden detectar problemas complicados que las pruebas unitarias pasan por alto. Y son cruciales para probar su software de manera eficiente en comparación con las pruebas de un extremo a otro o de nivel de sistema.

Debido a la naturaleza de un alcance de prueba más amplio, aumenta el tiempo para diagnosticar y solucionar problemas. Sin embargo, al igual que con las pruebas unitarias, las pruebas de integración se pueden repetir hasta que todas las pruebas sean exitosas y la canalización de compilación esté lista para pasar a (o volver a) las pruebas de extremo a extremo, que se describen a continuación.

En el desarrollo de software actual, las pruebas de integración son un área muy poco probada, ya que puede verse como el "término medio" entre las pruebas de desarrollo y las pruebas de control de calidad. Los dedos pueden señalar quién debería probar esta capa (alerta de spoiler ... la respuesta es AMBAS). Se necesita un probador muy experto en tecnología con las herramientas adecuadas para realizar las pruebas de integración correctamente.

Cómo ayuda Parasoft con las pruebas de integración

Parasoft SOAtest ofrece herramientas de prueba de servicios web y API totalmente integradas que automatizan funciones y no funcionales Pruebas de API. Los equipos pueden optimizar las pruebas automatizadas con capacidades avanzadas de creación de pruebas sin código para aplicaciones con múltiples interfaces (API REST y SOAP, microservicios, arquitecturas reactivas, bases de datos, sistemas heredados y más).

Las herramientas reducen el riesgo de infracciones de seguridad e interrupciones del rendimiento al transformar los artefactos de pruebas funcionales en equivalentes de seguridad y carga. La ejecución inteligente de pruebas, facilitada por un análisis diferencial binario de los cambios en el software empaquetado entre compilaciones, garantiza que las compilaciones intradía prueben lo que necesita pruebas mientras se salta el resto. Dichas optimizaciones y reutilización, junto con el monitoreo continuo de las API para cambios, permiten pruebas más rápidas y eficientes.

Parasoft Virtualizar va más allá de las simulaciones básicas y el stubbing para crear un entorno de simulación más sólido para API y servicios. Implementa un "gemelo digital" de su entorno de prueba para utilizarlo como espacio aislado para el desarrollo de socios o como punto final virtual para pruebas internas.

Virtualize permite a los probadores y desarrolladores simular servicios o datos cuando el acceso es limitado o poco confiable. La adopción de la virtualización de servicios también resulta en ahorros directos en los costos de infraestructura, mientras que el alcance de la automatización de pruebas crece. Los resultados pueden integrarse fácilmente con otras prácticas de prueba y visualizarse para una detección y depuración de fallas más rápida con una interfaz intuitiva sin código.

Pruebas de un extremo a otro

Las pruebas de un extremo a otro prueban la mayor cantidad de código (como en toda la aplicación de software, de un extremo a otro). Utilizan datos y un entorno de prueba para simular el funcionamiento del software en el mundo real. Es el más caro de mantener y el más lento de ejecutar. Dado que esto prueba aplicaciones completamente ensambladas, también es la fase más difícil de prueba en la que diagnosticar problemas (¡ay!).

Pero es el más fácil de diseñar, ya que sigue los requisitos comerciales del software. Un analista de negocios o propietario de producto menos técnico podría definir qué deben hacer estas pruebas. Esto puede explicar en parte la popularidad de las prácticas de BDD en la automatización de pruebas.

A medida que las organizaciones maduran su proceso de desarrollo de software y comienzan a automatizar las pruebas, muchas caen en una trampa en la que la mayoría de sus pruebas entran en esta categoría. Eventualmente, se encuentran con un cuello de botella.

El desarrollo está adoptando prácticas ágiles y DevOps, y se está acelerando. Sin embargo, las pruebas siempre quedan atrás, faltan las pruebas de nuevas funciones. Y las pruebas generalmente tienen un impacto limitado en la detección de problemas de calidad del software a medida que aumenta el ritmo de desarrollo. Es por eso que la pirámide de pruebas es tan valiosa a medida que los equipos se modernizan.

No puede mantenerse al día sin la automatización. Más importante aún, no puede mantenerse al día a menos que tenga un plan sólido que le muestre cómo debe realizar las pruebas. Aquí es donde las organizaciones comienzan a valorar las “pruebas de IU ajustadas” como un mantra, ya que ven de primera mano cómo su estrategia de pruebas ya no puede escalar con el ritmo del desarrollo.

Si ve a su organización atrapada en este paradigma, comience a buscar oportunidades para refactorizar las pruebas funcionales desde la capa de interfaz de usuario a la capa de servicio. Mantenga las pruebas de IU enfocadas en probar la lógica del lado del cliente, el recorrido del usuario, las rutas críticas y la certificación multiplataforma.

Cómo ayuda Parasoft con las pruebas de extremo a extremo

Parasoft Selenico es una adición ligera para Probadores de selenio que aplica el aprendizaje automático para curar automáticamente las pruebas inestables o obsoletas que sufren de DOM HTML en constante cambio y tiempos de respuesta impredecibles.

Ejecute sus pruebas de IU de Selenium con confianza, sabiendo que la capacidad de autorreparación de Selenic con localizador mejorado y estrategias de condición de espera detectará pruebas inestables, se recuperará de ellas sobre la marcha durante la ejecución y habilitará los flujos de trabajo de solución rápida IDE para reducir la carga de mantenimiento de su Pruebas de UI. Selenic también proporciona una extensión de Chrome para registrar las acciones de la interfaz de usuario y generar código de Selenium WebDriver en Java que sigue la Modelo de objetos de página de mejores prácticas de selenio patrón.

Pirámide de pruebas de Parasoft

Si bien la pirámide de automatización de pruebas proporciona un modelo para una estrategia de automatización de pruebas eficiente, no se puede probar la calidad en una aplicación. La pirámide debe construirse sobre una base sólida de análisis de código profundo centrado en identificar y prevenir problemas de confiabilidad y seguridad. La pirámide de pruebas de Parasoft, ilustrada a continuación, muestra cómo Parasoft ayuda con las soluciones de prueba para cada nivel.

Triángulo dividido en 5 partes. Los 4 de abajo son azules de abajo hacia arriba: 1) análisis de código: confiabilidad + seguridad; 2) pruebas unitarias; 3) pruebas de API; 4) pruebas de interfaz de usuario automatizadas. La punta es de color blanco desconectada del resto de la pirámide: prueba manual.

Los resultados en estos niveles se pueden consolidar en el panel de informes, análisis y cumplimiento de Parasoft, Parasoft DTP, proporcionando una vista unificada de la calidad del software y la cobertura de las pruebas. Su equipo obtiene información para analizar el estado de su solicitud y determinar los próximos pasos para alcanzar sus objetivos.

Vea nuestra cumbre bajo demanda para obtener más información sobre Parasoft Continuous Quality Suite y cómo puede mejorar las pruebas de software de su empresa.

Vea la cumbre virtual bajo demanda para conocer cómo los líderes de la industria están resolviendo problemas reales de calidad del software.

 

Escrito por

Wilhelm Haaker

Wilhelm Haaker es arquitecto senior de soluciones en Parasoft Corporation con experiencia en todo el conjunto de productos de Parasoft. Wilhelm se especializa en estrategias de automatización de pruebas para sistemas abiertos, aplicaciones web y microservicios y SOA para desarrolladores a través de ingenieros de pruebas funcionales y de rendimiento.

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

Prueba Parasoft