Prueba backends de apps web basadas en contenido

Probar el backend de una aplicación web es una parte fundamental del proceso de desarrollo y de cualquier supervisión continua. Además, consulta las pruebas del frontend.

Desarrollo basado en pruebas

En el desarrollo basado en pruebas (TDD), los requisitos de la aplicación se traducen en casos de prueba antes de que una aplicación se implemente por completo. Durante el desarrollo, estas pruebas se escriben primero y se implementan de forma sucesiva a medida que se compila la aplicación. Los requisitos claros (es decir, los casos de prueba) garantizan que el código final esté bien estructurado, cumpla con todos los requisitos y sea correcto, lo que es especialmente importante durante las primeras etapas del desarrollo.

Integración continua y pruebas automatizadas

Las pruebas de integración continua (CI) ejecutan pruebas automáticamente con cualquier cambio de código, por ejemplo, durante las revisiones de código o cuando el código se fusionó con tu repositorio de código. Las pruebas automatizadas mejoran la calidad general y la confianza en el código enviado, ya que reducen los riesgos de fallas o regresiones durante el desarrollo. Se recomienda configurar un sistema de prueba automatizado para tu entorno a fin de garantizar el estado de tu aplicación. Usa un sistema compatible con tu arquitectura, plataforma y lenguaje que se integre sin problemas en tu canalización de desarrollo; por ejemplo, usa Acciones de GitHub para un flujo de trabajo de CI o una canalización de CI personalizada integrada en la nube y personalizada para tu configuración.

Obtén más información sobre los principios de las pruebas automatizadas y cómo mejorar tus pruebas. Obtén más información sobre las pruebas de integración continuas y las prácticas recomendadas para implementar, configurar y medir el éxito.

Como siguiente paso, considera una canalización de entrega continua (CD) automatizada para implementar automáticamente cambios y actualizaciones en tu aplicación.

Pruebas de unidades

Las pruebas de unidades hacen referencia a la prueba de partes pequeñas e independientes del código de forma aislada. Usa un framework de prueba de unidades que se recomienda y popular para tu lenguaje o framework de backend. Por ejemplo, en el caso de una aplicación monolítica basada en Java, usa JUnit o, en el caso de una aplicación sin servidores basada en JavaScript (como Dart o TypeScript), usa un framework compilado para pruebas de JavaScript, como Jest.

La mayoría de los frameworks de backend modernos tienen recursos exclusivos para las pruebas. Considera integrar estas funciones en la canalización de CI para automatizar las pruebas. Asegúrate de que las pruebas de unidades proporcionen una buena cobertura de código de la aplicación. La mayoría de los frameworks de prueba proporcionan funciones para analizar y, también, informar sobre la cobertura de pruebas y permiten la integración en tu canalización de compilación.

Pruebas de integración

Las pruebas de integración hacen referencia a la prueba de módulos o partes más grandes de la aplicación al mismo tiempo. En comparación con las pruebas de unidades (que se enfocan en partes individuales del código), las pruebas de integración se enfocan en la integración de partes individuales de la arquitectura. También puede incluir flujos de extremo a extremo que abarcan varios pasos y módulos en la aplicación.

Las pruebas de integración pueden abarcar diferentes módulos de tu aplicación que pueden requerir interacción con servicios externos, como almacenamiento de datos, sistemas de archivos o pagos. Considera estructurar tu aplicación de modo que admita abstracciones para estos servicios a través de la inserción de dependencias o funciones similares que proporciona tu framework de backend.

Pruebas funcionales y de comportamiento

Cuando se aborda el backend (o módulos o componentes individuales) como un cuadro opaco, las pruebas funcionales se centran en la entrada y la salida del sistema. Si bien las pruebas de comportamiento pueden ser más comunes para el frontend, también desempeñan una función vital en la confirmación de la integridad de extremo a extremo de un sistema de backend. Estos tipos de pruebas confirman que el sistema reacciona y se comporta como se espera para entradas diferentes.

Pruebas de regresión

Las pruebas de regresión hacen referencia a pruebas que confirman que la aplicación aún se comporta como se espera. Las pruebas que se completaron correctamente antes se vuelven a ejecutar para cualquier cambio nuevo a fin de garantizar que estos no hayan vuelto a introducir problemas anteriores. A medida que se corrigen errores en una aplicación, una unidad o una integración, se deben agregar pruebas para garantizar que no se repita. Las pruebas de regresión deben integrarse en la canalización habitual de pruebas y compilación.

Pruebas de humo

Las pruebas de humo, también llamadas pruebas de verificación de compilación, se enfocan en verificar las funciones más críticas de tu aplicación de backend. Si se extiende más allá de las pruebas de integración, que abstraen algunas funciones y dependencias externas, las pruebas de humo cubren los casos de uso críticos para tu aplicación. Las pruebas de humo pueden servir como una capa adicional de verificación antes de que una aplicación ascienda al entorno de etapa de pruebas para garantizar un comportamiento preciso. Las pruebas de humo pueden consistir en pruebas de unidades automatizadas o pruebas funcionales manuales realizadas por un equipo de QA.

Entornos de producción y etapa de pruebas

Un entorno de etapa de pruebas es una copia del entorno de producción en una zona de pruebas para facilitar las pruebas. Una implementación dedicada reduce el riesgo de problemas con el entorno de producción y facilita la realización del control de calidad. El entorno de etapa de pruebas te permite probar un sistema cerca del entorno de producción en vivo.

Tener una copia personalizada del entorno de producción puede no ser factible debido a factores como el costo o la complejidad de la arquitectura de backend. Considera qué partes del backend son las más importantes y optimízalas para un entorno de etapa de pruebas.

Realizar pruebas con los datos que se usan en producción ofrece un gran beneficio para probar el comportamiento de la aplicación con datos del mundo real. Asegúrate de tener en cuenta las implicaciones de privacidad y las necesidades de almacenamiento de datos para este entorno de etapa de pruebas, y diseña con cuidado los datos que usa tu sistema de backend. El acceso a ese entorno debe controlarse de forma estricta, en especial si se usan datos de producción.

Considera la escala de tu sistema y si un entorno vertical es apropiado para tu aplicación. Los entornos de etapa de pruebas progresivas que se pueden implementar de forma automática a través de un sistema de entrega continua también ofrecen oportunidades adicionales para probar compilaciones diarias o semanales y realizar análisis adicionales antes del lanzamiento.

Otro enfoque consiste en depender más de las pruebas de integración continua y los sistemas automatizados que de un entorno de etapa de pruebas completamente implementado. Considera el flujo de trabajo, el estado del sistema, la cobertura del código y los requisitos técnicos de tu equipo.