View a markdown version of this page

Häufig gestellte Fragen - AWS Präskriptive Leitlinien

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Häufig gestellte Fragen

Ich habe eine Lambda-Funktion, die Berechnungen durchführt und ein Ergebnis zurückgibt, ohne andere Dienste aufzurufen. Muss ich das wirklich in der Cloud testen?

Ja. AWS Lambda Funktionen haben Konfigurationsparameter, die das Ergebnis des Tests ändern könnten. Der gesamte Lambda-Funktionscode ist von Timeout- und Speichereinstellungen abhängig, was dazu führen kann, dass die Funktion fehlschlägt, wenn sie nicht richtig eingestellt sind. Lambda-Richtlinien ermöglichen auch die Standardausgabeprotokollierung an Amazon CloudWatch. Auch wenn Ihr Code nicht CloudWatch direkt aufruft, ist eine Genehmigung erforderlich, um die Protokollierung zu aktivieren, und diese Erlaubnis kann nicht korrekt verspottet oder emuliert werden.

Wie können Tests in der Cloud beim Einheitentest helfen? Wenn es sich in der Cloud befindet und eine Verbindung zu anderen Ressourcen herstellt, ist das nicht ein Integrationstest?

Wir definieren Unit-Tests als Tests, die isoliert an Architekturkomponenten arbeiten. Diese Definition schließt die Verwendung von Serviceanrufen oder anderer Netzwerkkommunikation nicht unbedingt aus.

Viele Serverless-Anwendungen verfügen über Architekturkomponenten, die isoliert getestet werden können, sogar in der Cloud. Ein einfaches Beispiel ist eine Lambda-Funktion, die Eingaben entgegennimmt, interpretiert und eine Nachricht an eine Amazon Simple Queue Service (Amazon SQS) -Warteschlange sendet. Ein Komponententest einer solchen Funktion würde wahrscheinlich testen, ob Eingabewerte dazu führen, dass bestimmte Werte in der Nachricht in der Warteschlange vorhanden sind. Stellen Sie sich einen Test vor, der nach dem Muster arrange, act, assert geschrieben wurde:

  • Anordnen — Weist Ressourcen zu (eine Warteschlange für den Empfang von Nachrichten und die zu testende Funktion).

  • Aktion — Ruft die zu testende Funktion auf.

  • Assert — Ruft die von der Funktion gesendete Nachricht ab und validiert die Ausgabe.

Ein Mock-Testansatz würde das Mocking der Warteschlange mit einem prozessinternen Mock-Objekt und das Erstellen einer prozessinternen Instance der Klasse oder des Moduls, das den Lambda-Funktionscode enthält, beinhalten. Während der Assert-Phase würde die Nachricht in der Warteschlange aus dem simulierten Objekt abgerufen werden.

Bei einem cloud-basierten Ansatz würde der Test eine Amazon-SQS-Warteschlange für die Testzwecke erstellen und die Lambda-Funktion mit Umgebungsvariablen bereitstellen, die so konfiguriert sind, dass sie die isolierte Amazon-SQS-Warteschlange als Ausgabeziel verwenden. Nach dem Ausführen der Lambda-Funktion würde der Test die Nachricht aus der Amazon-SQS-Warteschlange abrufen.

Der cloudbasierte Test würde denselben Code ausführen, dasselbe Verhalten bestätigen und die funktionale Korrektheit der Anwendung überprüfen. Es hätte jedoch den zusätzlichen Vorteil, dass die folgenden Einstellungen der Lambda-Funktion validiert werden könnten: die AWS Identity and Access Management (IAM-) Rolle, die IAM-Richtlinien und die Timeout- und Speichereinstellungen der Funktion.