AWS Lambda je oblíbená bezserverová výpočetní služba. AWS Lambda eliminuje potřebu správy serverů a infrastruktury, ale stále musíte otestovat svůj kód a zjistit, že neobsahuje chyby a správně se integruje s ostatními komponentami ve vašem toku událostí.
Ladění bez serveru může být náročné, protože běží pouze v cloudu a může být obtížné simulovat v izolovaném prostředí. Při testování aplikací bez serveru byste se měli zaměřit více na integrační testy než na testy jednotek, protože funkce jsou téměř vždy spouštěny událostmi z externích komponent.
AWS poskytuje dva mechanismy, které vám mohou pomoci otestovat, zda vaše funkce Lambda fungují správně:
- Testování funkcí v konzole AWS—to vám umožní odeslat ukázkový vstup do funkce Lambda již nasazené v cloudu AWS a sledovat její odezvu.
- Testování funguje lokálně pomocí AWS SAM—Amazon poskytuje rozhraní Serverless Application Model (SAM) CLI, které vám umožňuje vyvolat funkce Lambda na vašem místním počítači a dokonce simulovat události z jiných služeb AWS. To vám umožní spustit realistické integrační testy na vašem místním počítači před nasazením funkcí Lambda do cloudu.
V tomto článku se
Výzvy testování bezserverových aplikací
Správné testování kódu pomocí spravované služby vyžaduje opětovné vytvoření cloudových prostředí na místních počítačích, ale to není vždy praktické. Dalším problémem se spravovanými službami ve výpočetní architektuře řízené událostmi je to, že musíte zvážit všechny externí a závislé prostředky pro každou službu. Patří mezi ně sběrnice událostí, fronty a databázové tabulky.
Výsledkem je, že většinou píšete integrační testy spíše než testy jednotek, čímž převracíte konvenční testovací proces. Vytváření velkého množství integračních testů může ovlivnit rychlost testování a zátěž údržby.
U synchronních úloh, jako jsou typické webové služby, zadáváte požadavky a tvrzení na testovací odpověď. Vlákno zůstává blokováno, dokud nepřijde odpověď, takže není potřeba, aby test prováděl žádnou speciální funkci.
Na druhou stranu, pokud pracujete s architekturou řízenou událostmi, změny stavu se odvozují od událostí proudících mezi prostředky. Testy by měly identifikovat jakékoli vedlejší účinky v následných složkách, ale tyto účinky nejsou vždy okamžitě zřejmé. Testy, které zvládnou asynchronní chování, bývají komplikované a pomalé.
Související obsah: Přečtěte si našeho průvodce testováním bez serveru.
Testování funkcí Lambda prostřednictvím konzoly AWS
Chcete-li otestovat funkci Lambda ve vaší konzoli, můžete funkci vyvolat pomocí události testu. Testovací události jsou vstupy JSON do funkce Lambda.
Soukromé testovací akce
Soukromá testovací událost je dostupná pouze jejímu tvůrci a nevyžaduje žádná další oprávnění, aby ji mohl použít. Pro každou funkci můžete uložit až deset soukromých testovacích událostí.
Postup vytvoření soukromé testovací události:
- V konzole Lambda otevřete stránku Funkce.
- Vyberte funkci Lambda, kterou plánujete testovat.
- Vybrat test Karta.
Sdílené testovací události
Sdílená testovací událost je událost, ke které mají přístup ostatní uživatelé IAM ve vašem účtu AWS. Uživatelé mohou vzájemně upravovat své sdílené testovací události nebo s nimi vyvolat své vlastní funkce Lambda.
Výběrem můžete vytvořit testovací události, které lze sdílet Shareable pod Sdílení událostí Nastavení.
Použití testovacích událostí k vyvolání funkcí lambda
Při spuštění testovací události ve vaší konzoli Lambda synchronně vyvolá funkci pomocí testovací události. Runtime funkce převede zadaný dokument JSON na přenosný objekt a předá jej ke zpracování metodě zpracování kódu.
Chcete-li otestovat svou funkci:
- Přejít na Funkce sekce ve vaší konzoli Lambda.
- Vyberte funkci, kterou plánujete testovat.
- Vybrat test Karta.
- Pod Testovací akce vyberte Uložená událost a zadejte uloženou událost, kterou chcete použít.
- vybrat test.
- Pod Výsledek provedení v části Podrobnosti můžete zkontrolovat výsledky testu.
Funkci můžete vyvolat bez uložení testovací události výběrem možnosti Test před jejím uložením. Vytvoří neuloženou testovací událost, která trvá do konce vaší relace.
Související obsah: Přečtěte si našeho průvodce testováním jednotek AWS Lambda.
Testování a ladění Lambda lokálně přes AWS SAM
Pomocí rozhraní příkazového řádku SAM (CLI) můžete lokálně otestovat aplikace bez serveru a ladit nebo opravovat problémy, než je nahrajete do AWS.
Debugger můžete připojit k vaší funkci Lambda místním vyvoláním funkce v režimu ladění pomocí SAM CLI. Poté můžete pomocí ladicího programu procházet kódem, zobrazovat hodnoty různých proměnných a opravovat problémy jako v jakékoli jiné aplikaci.
Lokální vyvolání funkcí
Funkci můžete vyvolat lokálně pomocí sam místní vyvolat příkaz CLI a poskytněte soubor událostí a logické ID funkce. Případně můžete také použít stdin událost pro tento příkaz.
Spustit sam místní vyvolat příkaz v adresáři projektu, který obsahuje vaši funkci Lambda.
Zde je příklad vyvolání funkce lokálně pomocí souboru události: