AWS Lambda-Funktionstests in Python - AWS Lambda

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.

AWS Lambda-Funktionstests in Python

Anmerkung

Im Kapitel Testen von Funktionen finden Sie eine vollständige Einführung in Techniken und bewährte Methoden für das Testen von Serverless-Lösungen.

Beim Testen der Serverless-Funktionen werden herkömmliche Testtypen und -techniken verwendet. Erwägen Sie jedoch auch das Testen der Serverless-Anwendungen als Ganzes. Cloud-basierte Tests bieten das genaueste Maß für die Qualität sowohl Ihrer Funktionen als auch Ihrer Serverless-Anwendungen.

Eine Serverless-Anwendungsarchitektur umfasst verwaltete Services, die über API-Aufrufe wichtige Anwendungsfunktionen bereitstellen. Aus diesem Grund muss Ihr Entwicklungszyklus automatisierte Tests beinhalten, die bei der Interaktion Ihrer Funktionen und Services die Funktionalität überprüfen.

Wenn Sie keine cloud-basierten Tests erstellen, können aufgrund von Unterschieden zwischen Ihrer lokalen Umgebung und der bereitgestellten Umgebung Probleme auftreten. Ihr kontinuierlicher Integrationsprozess muss Tests anhand einer Reihe von Ressourcen durchführen, die in der Cloud bereitgestellt werden, bevor Ihr Code in die nächste Bereitstellungsumgebung wie QA, Staging oder Produktion übertragen wird.

Lesen Sie diesen kurzen Leitfaden weiter, um weitere Informationen zu Teststrategien für Serverless-Anwendungen zu erhalten, oder besuchen Sie das Serverless Test Samples Repository, um praktische Beispiele zu finden, die sich speziell auf die gewählte Sprache und Laufzeit beziehen.

illustration showing the relationship between types of tests

Für Serverless-Tests schreiben Sie immer noch Einheiten , Integration und end-to-end Tests.

  • Einheitentests — Tests, die an einem isolierten Codeblock ausgeführt werden. Zum Beispiel die Überprüfung der Geschäftslogik zur Berechnung der Bereitstellungskosten für einen bestimmten Artikel und Bestimmungsort.

  • Integrationstests — Tests, an denen zwei oder mehr Komponenten oder Dienste beteiligt sind, die interagieren, in der Regel in einer Cloud-Umgebung. Bei der Überprüfung einer Funktion werden beispielsweise Ereignisse aus einer Warteschlange verarbeitet.

  • E-nd-to-end Tests – Tests, die das Verhalten einer gesamten Anwendung überprüfen. Stellen Sie beispielsweise sicher, dass die Infrastruktur korrekt eingerichtet ist und die Ereignisse zwischen den Services wie erwartet ablaufen, um die Bestellungen der Kunden aufzuzeichnen.

Testen Ihrer Serverless-Anwendungen

In der Regel verwenden Sie eine Mischung aus verschiedenen Ansätzen, um Ihren Serverless-Anwendungscode zu testen, einschließlich Tests in der Cloud, Tests mit Mock-Code und gelegentlich Tests mit Emulatoren.

Testen in der Cloud

Tests in der Cloud sind für alle Testphasen nützlich, einschließlich Einheitentests, Integrationstests und end-to-end Tests. Sie führen Tests für Code durch, der in der Cloud bereitgestellt wird und mit cloud-basierten Services interagiert. Dieser Ansatz bietet das genaueste Maß für die Qualität Ihres Codes.

Eine bequeme Möglichkeit, Ihre Lambda-Funktion in der Cloud zu debuggen, ist die Verwendung der Konsole mit einem Testereignis. Ein Testereignis ist eine JSON-Eingabe für Ihre Funktion. Wenn Ihre Funktion keine Eingabe erfordert, kann das Ereignis ein leeres JSON-Dokument ({}) sein. Die Konsole bietet Beispielereignisse für eine Vielzahl von Service-Integrationen. Nachdem Sie ein Ereignis in der Konsole erstellt haben, können Sie es mit Ihrem Team teilen, um das Testen einfacher und einheitlicher zu gestalten.

Anmerkung

Das Testen einer Funktion in der Konsole ist ein schneller Einstieg, aber die Automatisierung Ihrer Testzyklen gewährleistet die Anwendungsqualität und die Entwicklungsgeschwindigkeit.

Test-Tools

Es gibt Tools und Techniken, um die Feedback-Schleifen bei der Entwicklung zu beschleunigen. AWSSAM Accelerate und AWSCDK Watch Mode reduzieren beispielsweise beide die Zeit, die für die Aktualisierung von Cloud-Umgebungen benötigt wird.

Moto ist eine Python-Bibliothek für das Mocking von AWS-Services und -Ressourcen, sodass Sie Ihre Funktionen mit wenigen oder gar keinen Änderungen testen können, indem Sie Dekoratoren zum Abfangen und Simulieren von Antworten verwenden.

Das Validierungsfeature von Powertools für AWS Lambda (Python) bietet Dekoratoren, mit denen Sie Eingabeereignisse und Ausgabeantworten Ihrer Python-Funktionen validieren können.

Weitere Informationen finden Sie im Blogbeitrag Unit Testing Lambda with Python and Mock AWS Services.

Informationen zur Verringerung der Latenzzeit bei Iterationen der Cloud-Bereitstellung finden Sie unter AWS Serverless Application Model (AWS SAM) Accelerate, AWS Cloud Development Kit (Watch-Modus AWS CDK). Diese Tools überwachen Ihre Infrastruktur und Ihren Code auf Änderungen. Sie reagieren auf diese Änderungen, indem sie automatisch inkrementelle Updates erstellen und in Ihrer Cloud-Umgebung bereitstellen.

Beispiele, in denen diese Tools verwendet werden, sind im Code-Repository mit Python-Testbeispielen verfügbar.