Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
FAQ
J’ai une fonction Lambda qui effectue des calculs et renvoie un résultat sans appeler aucun autre service. Dois-je vraiment la tester dans le cloud ?
Oui. Les fonctions Lambda comportent des paramètres de configuration susceptibles de modifier le résultat du test. Tout le code de la fonction Lambda dépend des paramètres de délai d'attente et de mémoire, ce qui peut entraîner l'échec de la fonction s'ils ne sont pas définis correctement. Les politiques Lambda permettent également la journalisation des sorties standard sur Amazon. CloudWatch
Comment les tests dans le cloud peuvent-ils faciliter les tests unitaires ? S’il se trouve dans le cloud et se connecte à d’autres ressources, ne s’agit-il pas d’un test d’intégration ?
Nous définissons les tests unitaires comme des tests qui opèrent sur des composants architecturaux de manière isolée. Cette définition n'exclut pas nécessairement l'utilisation d'appels de service ou d'autres communications réseau.
De nombreuses applications sans serveur possèdent des composants architecturaux qui peuvent être testés de manière isolée, même dans le cloud. Un exemple de base est celui d'une fonction Lambda qui prend une entrée, l'interprète et envoie un message à une file d'attente SQS. Un test unitaire d'une telle fonction devrait permettre de vérifier si les valeurs d'entrée entraînent la présence de certaines valeurs dans le message en file d'attente. Prenons l’exemple d’un test écrit en utilisant le modèle organiser, agir, affirmer :
-
Organiser : allouez des ressources (une file d’attente pour recevoir des messages et la fonction en cours de test).
-
Agir : appelez la fonction en cours de test.
-
Affirmer : récupérez le message envoyé par la fonction et validez la sortie.
Une approche de test simulé consiste à simuler la file d’attente avec un objet simulé en cours de traitement et à créer une instance en cours de traitement de la classe ou du module contenant le code de la fonction Lambda. Pendant la phase d’assertion, le message en file d’attente est récupéré dans l’objet simulé.
Dans une approche basée sur le cloud, le test crée une file d'attente SQS pour les besoins du test et déploie la fonction Lambda avec des variables d'environnement configurées pour utiliser la file d'attente SQS isolée comme destination de sortie. Après avoir exécuté la fonction Lambda, le test récupère le message dans la file d'attente SQS.
Le test basé sur le cloud exécute le même code, confirme le même comportement et valide l’exactitude fonctionnelle de l’application. Cela aurait toutefois l’avantage supplémentaire de pouvoir valider les paramètres de la fonction Lambda : le rôle IAM, les politiques IAM, ainsi que les paramètres de délai d’expiration et de mémoire de la fonction.