View a markdown version of this page

Preguntas frecuentes - AWS Guía prescriptiva

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Preguntas frecuentes

Tengo una función de Lambda que realiza cálculos y devuelve un resultado sin llamar a ningún otro servicio. ¿Realmente necesito probarlo en la nube?

Sí AWS Lambda las funciones tienen parámetros de configuración que podrían cambiar el resultado de la prueba. Todo el código de la función Lambda depende de los ajustes de tiempo de espera y memoria, lo que podría provocar un error en la función si no se configuran correctamente. Las políticas de Lambda también permiten el registro de resultados estándar en Amazon. CloudWatch Incluso si el código no llama CloudWatch directamente, se necesita un permiso para habilitar el registro, y ese permiso no se puede simular ni emular con precisión.

¿Cómo pueden ayudar las pruebas en la nube a las pruebas unitarias? Si está en la nube y se conecta a otros recursos, ¿no se trata de una prueba de integración?

Definimos las pruebas unitarias como pruebas que se realizan en componentes de la arquitectura de forma aislada. Esta definición no excluye necesariamente el uso de llamadas de servicio u otras comunicaciones de red.

Muchas aplicaciones sin servidor tienen componentes de la arquitectura que se pueden probar de forma aislada, incluso en la nube. Un ejemplo básico es una función de Lambda que toma una entrada, la interpreta y envía un mensaje a una cola de Amazon Simple Queue Service (Amazon SQS). Una prueba unitaria de esta función probablemente comprobaría si los valores de entrada dan como resultado que ciertos valores estén presentes en el mensaje en cola. Considere una prueba que se escribe con el patrón organizar, actuar y afirmar:

  • Organizar: asignar recursos (una cola para recibir mensajes y la función que se está probando).

  • Actuar: llama a la función que se está probando.

  • Assert: recupera el mensaje enviado por la función y valida el resultado.

Un enfoque de prueba simulada implicaría simular la cola con un objeto simulado en proceso y crear una instancia en proceso de la clase o módulo que contenga el código de la función de Lambda. Durante la fase de confirmación, el mensaje en cola se recuperaría del objeto simulado.

En un enfoque basado en la nube, la prueba crearía una cola de Amazon SQS para los fines de la prueba e implementaría la función de Lambda con variables de entorno configuradas para utilizar la cola aislada de Amazon SQS como destino de salida. Tras ejecutar la función de Lambda, la prueba recuperaría el mensaje de la cola de Amazon SQS.

La prueba basada en la nube ejecutaría el mismo código, confirmaría el mismo comportamiento y validaría la corrección funcional de la aplicación. Sin embargo, tendría la ventaja adicional de poder validar los siguientes ajustes de la función Lambda: el rol AWS Identity and Access Management (IAM), las políticas de IAM y los ajustes de memoria y tiempo de espera de la función.