Seminario web destacado: MISRA C++ 2023: todo lo que necesita saber | Vea ahora

¿Qué es un enfoque “basado en el medio ambiente” para las pruebas de software?

Logotipo del cubo de Parasoft 300x300
2 de noviembre.
8 min leer

¿Qué son las pruebas basadas en el entorno y por qué son importantes en las pruebas de software? Aquí hay una cobertura completa del tema y algunos de los beneficios de un enfoque de prueba basado en el entorno.

Probar aplicaciones y servicios de forma aislada solo le permitirá llegar hasta cierto punto y, eventualmente, deberá realizar las pruebas en un entorno operativo. El enfoque de prueba "basado en el entorno" de Parasoft permite a los equipos probar sus aplicaciones en el contexto de todas las dependencias que existen en el entorno del mundo real.

A menudo, los evaluadores y desarrolladores analizan su entorno de implementación y sus componentes de forma individual, probando esas piezas de forma aislada. Esto funciona hasta cierto punto, pero no prueba lo suficiente del sistema. Otra versión de esto está probando en el nivel de la interfaz de usuario, en un punto donde las causas fundamentales de las fallas son difíciles de diagnosticar. El término medio es donde las aplicaciones se pueden probar en un entorno lo más realista posible utilizando servicios virtuales para imitar dependencias que no están disponibles o no son lo suficientemente consistentes para las pruebas. A medida que se conectan más dependencias, puede pasar de servicios virtualizados a versiones en vivo.

En Parasoft, llamamos a esto un enfoque de prueba "basado en el entorno", que permite a todo el equipo probar su aplicación con el contexto completo del entorno del mundo real. Las pruebas se implementan en un entorno en vivo, parcialmente virtualizado o totalmente virtualizado, según sea necesario. El enfoque de pruebas basado en entornos proporciona una plataforma estabilizada para la ejecución de pruebas.

Pruebas basadas en el entorno

El enfoque de pruebas basado en el entorno proporciona más contexto para comprender mejor cómo las dependencias impactan la aplicación durante las pruebas de UI y ayuda al equipo a avanzar al siguiente nivel mediante la creación de pruebas de API y bases de datos para los componentes dependientes. Al hacerlo, puede lograr una cobertura de prueba más completa para su aplicación y desacoplar las pruebas de la interfaz de usuario, de modo que ambas puedan ejecutarse juntas o de forma independiente. Los fallos de las pruebas se resaltan en el entorno, lo que facilita la identificación de fallos.

Algunos beneficios adicionales que vienen con un enfoque de prueba basado en el entorno incluyen:

  • Cambio de prueba dejado probando la aplicación en el entorno de producción tan pronto como sea posible. Esto es posible con la virtualización de servicios, la creación de servicios virtuales y luego la transferencia a servicios en vivo a medida que estén disponibles y sean estables.
  • Reducir el tiempo y el esfuerzo de diagnosticar fallas en las pruebas señalando exactamente dónde y por qué fallaron las pruebas.
  • Ampliación sencilla de las pruebas desde las pruebas de interfaz de usuario a las pruebas de API, que se puede configurar en el contexto del entorno, así como parte de una canalización de CI / CD.
  • Aumento de la cobertura de la prueba mediante la creación de escenarios que no podrían implementarse solo a partir de pruebas de interfaz de usuario.

Estos beneficios reducen la carga general de los evaluadores para configurar, ejecutar y diagnosticar pruebas de aplicaciones, al tiempo que aumentan la cobertura de las pruebas y permiten que las pruebas se realicen más rápido y de manera más completa.

Tipos de entornos de prueba

Como saben muchos evaluadores, un entorno de prueba es simplemente una estructura controlada que permite que los sistemas y el software realicen pruebas de confiabilidad, funcionalidad y compatibilidad. Por lo general, simulan escenarios y condiciones del mundo real para abordar posibles errores o infracciones antes de la implementación. Como tal, cada entorno de prueba se puede adaptar al tipo de prueba y resultados que desea un equipo.

Un entorno de prueba entre navegadores es un ejemplo perfecto de un entorno de prueba para realizar pruebas en diferentes navegadores y versiones de navegador. Los equipos de prueba utilizan el entorno para comprobar la calidad y el impacto de la aplicación antes de que los usuarios interactúen con ella.

Existen varios tipos clave de entornos de prueba que incluyen:

  • Rendimiento. Los entornos de prueba de rendimiento verifican que un sistema funcione según lo esperado y cumpla con los objetivos de rendimiento. Estos pueden incluir tiempo de respuesta, simultaneidad, estabilidad y más. Este tipo de prueba puede ser complejo debido a la cantidad de variación en los sistemas (tamaño de RAM, número de usuarios, núcleos de CPU, etc.) y requiere una configuración cuidadosa.
  • Seguridad. Este tipo de entorno prioriza la seguridad del software. Probará vulnerabilidades relacionadas con autenticación, autorización, confidencialidad e integridad.
  • Integración. Este entorno prueba la integración del módulo de software para verificar o monitorear el comportamiento. Esto puede implementar uno o varios módulos para pruebas funcionales.
  • Caos. Este entorno específico busca identificar áreas específicas que plantean amenazas de falla y abordarlas antes de que los usuarios finales las encuentren.

Configuración del entorno de prueba: mejores prácticas y consideraciones

Crear un buen entorno de prueba no se trata sólo de utilizar escenarios realistas. Implica de todo, desde considerar casos extremos hasta proteger la seguridad de los datos y emular versus utilizar información real. Aunque cada equipo tendrá diferentes objetivos y requisitos, se pueden seguir ciertas mejores prácticas para garantizar el mejor entorno de prueba para su proyecto.

¿Qué es un buen entorno de pruebas?

Un buen entorno de prueba se parece al entorno de producción en vivo en el que el software o sistema funcionará muy de cerca. Debe utilizar el mismo código, sistema operativo, datos, funcionalidad y configuración.

Los factores clave para crear un buen entorno de prueba incluyen los siguientes:

  • Data. Utilice datos realistas y de calidad que también incluyan casos extremos para probar que el software o el sistema funciona según lo esperado.
  • Diseño. Incluya una muestra representativa de la aplicación o la aplicación completa para realizar pruebas.
  • Automatización. Aproveche la automatización para aliviar ciertas presiones, potenciar ciertos procesos y recuperar datos procesables.
  • Seguridad. Garantizar la seguridad de la prueba y sus datos.
  • Gestión. Considere que las pruebas continuas deben realizarse a largo plazo y verifique que el entorno de prueba esté configurado para ello.

Mejores prácticas del entorno de prueba

Además de los principios mecánicos anteriores, los entornos de prueba también se basan en pautas generales intangibles.

  1. Seguir una metodología de prueba de software.
  2. Trate las pruebas como parte del proceso de implementación.
  3. Integre la comunicación en el entorno de prueba.
  4. Recicle o reutilice los recursos y entornos de prueba.
  5. Realice pruebas tempranas, frecuentes y continuas.
  6. Adopte una mentalidad de gestión de funciones para poder probar funciones individuales en lugar de todo el código base.

Gestión del entorno de prueba

Administrar sus entornos de prueba puede ser un gran dolor de cabeza o resultar una parte imprescindible de su SDLC que proporciona información y datos invaluables. La clave está en cómo abordas esa gestión. Al anticipar parte del trabajo y la organización, puede crear una configuración más fácil de mantener y aun así obtener los beneficios de las pruebas frecuentes.

Confíe en la confianza y la transparencia

Desde el desarrollador más experimentado hasta el evaluador de control de calidad más reciente, trate a las personas de los equipos de desarrollo como miembros importantes del proyecto. Utilizar una única fuente, o una copia dorada, para entornos e implementaciones que sea accesible para todos, dentro de lo razonable, fomenta un entorno donde la comunicación es abierta, fomentada y constructiva.

Documentar y seguir el proceso

Administrar la base de conocimientos, ya sea en Confluence, JIRA u otras herramientas, ayuda a evitar la falta de comunicación y reduce los juegos telefónicos. Los miembros del equipo pueden consultar la documentación para obtener información básica, realizar un seguimiento de los cambios, ver quién trabajó en qué y más.

Hacer que la información esté disponible

Junto con los principios anteriores, poner esta información a disposición de las partes interesadas ayuda aún más a mantener los entornos de prueba. Pero esto también se aplica a cosas como cronogramas de implementación, planes de interrupción y otros aspectos del desarrollo.

Evite las actualizaciones manuales

Los humanos cometemos errores. Es un hecho. Las actualizaciones manuales sucumben a esta realidad, por lo que incorporar la gestión del entorno de prueba con la cadena de herramientas que utiliza puede ayudar a reducir los errores manuales.

Aprovechar la virtualización

Es imprescindible poder interactuar con los datos que generan sus casos de prueba. Poder hacerlo de una manera ágil y sencilla es aún mejor. La virtualización le permite tomar instantáneas, replicar su entorno de un extremo a otro y más. De hecho, Parasoft tiene el suyo propio. virtualización de servicios líder en la industria solución sólo para este propósito.

Revisar datos y rendimiento

Puede que no parezca necesario mencionarlo, pero el seguimiento de los KPI, como la cantidad de interrupciones no planificadas del servicio, el tiempo de actividad del entorno y otras variables, puede ayudarle a mejorar sus entornos de prueba. Revise los datos después de ciclos de prueba importantes para ver qué funciona, qué necesita cambios y cómo se asignan los recursos o cómo podrían ser diferentes.

Pruebas basadas en el entorno en acción con Parasoft SOAtest

Entonces, veamos esto en acción. Prueba SOA de Parasoft proporciona un administrador de entorno que muestra visualmente el entorno de ejecución de la aplicación bajo prueba. A continuación se muestra un ejemplo de una aplicación en su entorno, conectada a dependencias. Cada componente del entorno se puede aprovisionar en vivo o virtualizado según sea necesario, según la estabilidad y disponibilidad de esos componentes.

Captura de pantalla que muestra Parasoft SOAtest Environment Manager.

Los ajustes preestablecidos de implementación configuran el entorno según los requisitos de prueba actuales. Diferentes categorías de escenarios pueden requerir diferentes ajustes preestablecidos. Estos ajustes preestablecidos contienen todas las configuraciones necesarias para Environment Manager:

Captura de pantalla de la configuración preestablecida en el Administrador de entorno de SOAtest.

 

 

 

 

 

 

 

 

 

Una vez se proporciona el entorno de prueba, se ejecuta un conjunto de interacciones de API y UI en la aplicación bajo prueba. Los resultados se capturan, registran y comparan con los resultados esperados dentro del IDE y en el portal web de Parasoft, donde la utilidad Environment Manager actúa como centro para las pruebas funcionales.

Las fallas se resaltan en el Administrador de entorno y es posible seguir los informes de errores desde allí hasta obtener un informe más detallado.

Captura de pantalla que muestra la notificación de 2 pruebas fallidas en el Administrador de entorno de SOAtest.

 

 

 

 

 

 

Los informes de prueba de API que se generan indican tanto fallas como información de cobertura de prueba. Las fallas significan que la nueva funcionalidad no funciona o que hay un problema con una prueba. La causa raíz de estos errores se puede rastrear desde el error aquí hasta la API adecuada. La información de cobertura de pruebas es importante porque indica pruebas faltantes y, potencialmente, envío de código no probado.

Captura de pantalla de Parasoft SOAtest que muestra una lista de detalles de cobertura de pruebas API.

El papel de la virtualización de servicios

Los errores también surgen por dependencias faltantes. Esto es donde entra en juego la virtualización de servicios. A menudo no es posible tener dependencias activas disponibles para realizar pruebas, tal vez porque aún no están listas o porque es difícil y lleva mucho tiempo duplicarlas desde el entorno de producción. Pero para garantizar aplicaciones de alta calidad dentro de las limitaciones de cronograma y presupuesto, es esencial tener acceso ilimitado a un entorno de prueba realista y confiable, que incluya la aplicación bajo prueba y todos sus componentes dependientes, como API, servicios de terceros, bases de datos y aplicaciones. y otros puntos finales.

Captura de pantalla que muestra la notificación de 1 prueba fallida con un punto final real actualmente fuera de línea en el Administrador de entorno de SOAtest.

 

 

 

 

 

La virtualización de servicios permite a los equipos de software obtenga acceso a un entorno de prueba completo, incluidos todos los componentes críticos dependientes del sistema, además de alterar el comportamiento de esos componentes dependientes de maneras que serían imposibles con un entorno de prueba por etapas, lo que le permite realizar pruebas antes, más rápido y de manera más completa. También le permite aislar diferentes capas de la aplicación para depurar y probar el rendimiento, pero no vamos a entrar tanto en eso aquí.

Los servicios individuales se pueden configurar como en vivo o virtualizados. Las configuraciones de implementación que son combinaciones de dependencias en vivo y virtualizadas se pueden guardar como ajustes preestablecidos.

Integración con canalizaciones de CI/CD

Los ejemplos de pruebas manuales son interesantes, pero el trabajo real ocurre en un proceso de integración continua. Los entornos de prueba dinámicos de Parasoft se pueden implementar desde Jenkins como parte de un proceso de integración/implementación continua. El siguiente ejemplo muestra "Implementar un entorno dinámico" como una compilación de Jenkins.

Captura de pantalla de Parasoft SOAtest que muestra que los entornos de prueba dinámicos se pueden implementar desde Jenkins como parte de un proceso de integración/implementación continua. El ejemplo muestra "Implementar un entorno dinámico" como una compilación de Jenkins.

Con el complemento Parasoft Jenkins, se agregan pasos de compilación para implementar conjuntos de pruebas desde la compilación. Los resultados se capturan y vinculan al Administrador de Medio Ambiente.

Se pueden agregar pasos de compilación del complemento Parasoft Jenkins para implementar conjuntos de pruebas desde la compilación. La captura de pantalla muestra los resultados capturados y vinculados al Environment Manager.

Una vez completada la compilación, los resultados de las pruebas se muestran en Jenkins. Las fallas se vinculan directamente con el administrador del entorno y el escenario de implementación.

Resumen

Al considerar primero el entorno operativo y aprovechar un enfoque de prueba basado en el entorno, los evaluadores de software pueden asegurarse de que todo esté en su lugar para que las pruebas sean productivas y eficientes. En lugar de dedicar tiempo a intentar probar aplicaciones de forma aislada o en un entorno pseudorealista, los evaluadores pueden dedicar más tiempo a las pruebas en sí.

Pruebas continuas para DevOps: evolucionando más allá de la automatización simple