GraphQL.cz/Články/Testing GraphQL APIs

Jak efektivně testovat GraphQL APIs pomocí automatizovaných nástrojů

Praktický průvodce pro použití automatizovaných testovacích nástrojů k ověření funkčnosti GraphQL API.

773 slov
7.7 minut čtení
27. 6. 2020
Lucie Kovářová

V dnešní době, kdy se technologie vyvíjejí rychleji než kdy jindy, se testování softwaru stává klíčovým prvkem úspěšného vývoje aplikací. A když mluvíme o moderních webových aplikacích, nemůžeme opomenout GraphQL. Tento inovativní jazyk pro dotazování a manipulaci s daty se stává stále populárnější volbou pro API. Ale jak zajistit, že naše GraphQL API funguje správně? Odpověď je jednoduchá: efektivní testování. V tomto článku se podíváme na to, jak efektivně testovat GraphQL APIs pomocí automatizovaných nástrojů, takže si můžete být jisti, že vaše aplikace bude pracovat bezchybně.

Co je GraphQL?

Než se pustíme do samotného testování, pojďme si krátce přiblížit, co vlastně GraphQL je. GraphQL je jazyk pro dotazování na API, který umožňuje klientům požadovat pouze ta data, která skutečně potřebují. To znamená, že můžete minimalizovat množství dat přenášených mezi serverem a klientem, což vede k rychlejšímu a efektivnějšímu výkonu. S rostoucí složitostí aplikací však roste i potřeba důkladného testování těchto API.

Proč testovat GraphQL APIs?

Testování GraphQL APIs je nezbytné z několika důvodů. Prvním důvodem je zajištění funkčnosti – chcete mít jistotu, že všechny vaše dotazy, mutace a předplatné fungují podle očekávání. Druhým důvodem je prevence regresí – změny v kódu mohou snadno způsobit problémy v místech, kde byste to nejméně očekávali. A konečně třetím důvodem je zajištění kvality – kvalitní testy vám pomohou identifikovat chyby dříve, než se dostanou k uživatelům.

Automatizované testování: Klíč k efektivitě

Automatizované testování je způsob, jak provádět testy bez nutnosti manuálního zásahu. Díky automatizaci můžete zrychlit proces testování a snížit riziko lidské chyby. Existuje několik nástrojů a knihoven, které se zaměřují na testování GraphQL API. Mezi nejpopulárnější patří Jest, Apollo Server Testing a Postman.

Jest

Jest je oblíbený testovací framework pro JavaScript, který nabízí robustní nástroje pro psaní a spouštění testů. Díky jeho jednoduchosti a rozšiřitelnosti je skvělou volbou pro testování GraphQL API. Můžete napsat jednotkové testy pro jednotlivé resolvery nebo celkové integrační testy pro celé API.

Příklad: Testování Query pomocí Jest

Zde je jednoduchý příklad toho, jak můžete použít Jest k otestování vašeho GraphQL API:

const request = require('supertest');
const app = require('./app'); // vaše Express aplikace s Apollo Server

test('získání uživatele', async () =\> \{
  const response = await request(app)
    .post('/graphql')
    .send(\{ query: '\{ user(id: "1") \{ name \} \}' \});
  expect(response.body.data.user.name).toBe('Jan Novák');
\});

Tento jednoduchý test ověřuje, že dotaz na uživatele vrací správná data.

Apollo Server Testing

Pokud používáte Apollo Server pro implementaci vašeho GraphQL API, můžete využít také jeho vestavěné funkce pro testování. Apollo Server Testing poskytuje utility pro snadné simulování serveru a psaní testů.

Příklad: Testování Mutation pomocí Apollo Server Testing

Zde je příklad testu mutace:

const \{ createTestClient \} = require('apollo-server-testing');
const \{ gql \} = require('apollo-server');
const \{ server \} = require('./server'); // váš Apollo Server instance

const \{ query, mutate \} = createTestClient(server);

test('přidání uživatele', async () =\> \{
  const ADD_USER = gql`
    mutation \{
      addUser(name: "Petr") \{
        id
        name
      \}
    \}
  `;
  const res = await mutate(\{ mutation: ADD_USER \});
  expect(res.data.addUser.name).toBe('Petr');
\});

Tento test ověřuje funkčnost mutace addUser, která přidává nového uživatele do databáze.

Postman

Postman je další skvělý nástroj pro testování API. Nabízí uživatelské rozhraní pro snadné vytváření a správu dotazů a odpovědí. Pro GraphQL můžete jednoduše nastavit POST požadavek na vaše /graphql endpoint a vložit svůj dotaz nebo mutaci do těla požadavku.

Jak nastavit Postman pro GraphQL?
  1. Otevřete Postman a vytvořte nový požadavek.
  2. Vyberte POST jako typ požadavku.
  3. Zadejte URL vašeho GraphQL endpoint (např. http://localhost:4000/graphql).
  4. V záložce "Body" vyberte "raw" a poté "JSON".
  5. Zadejte svůj dotaz nebo mutaci jako JSON objekt:
\{
  "query": "\{ user(id: \"1\") \{ name \} \}"
\}
  1. Klikněte na tlačítko "Send" a sledujte odpověď.

Tipy pro efektivní automatizované testování

  • Pokryjte všechny scénáře: Ujistěte se, že máte pokryty všechny možné scénáře - úspěšné odpovědi i chyby.
  • Používejte mock data: Při testech používajte mock data místo reálných databázových záznamů, abyste dosáhli konzistentních výsledků.
  • Automatizujte běh testů: Integrujte své testy do CI/CD pipeline, aby se spouštěly automaticky při každé změně v kódu.
  • Sledujte výkon: Měřte výkon svých dotazů a mutací během testování, abyste zajistili jejich efektivitu.
  • Dokumentujte výsledky: Uložte výsledky svých testů pro pozdější analýzu a referenci.

Závěr: Buďte připraveni na cokoliv!

Testování GraphQL APIs může být zábavné a inspirativní! Pomocí automatizovaných nástrojů jste schopni nejen zajistit funkčnost vaší aplikace, ale také zvýšit její kvalitu a spolehlivost. Čím více času věnuje vašemu týmu efektivnímu testování vašeho API, tím více času ušetříte při opravách chyb v budoucnu. A to se vyplatí! Pokud máte zájem dozvědět se více o dalších aspektech GraphQL nebo o metodách automatizovaného testování v jiných technologiích, neváhejte si projít naše další články na GraphQL.cz!

48272 přečtení článku
199 lajků
27. 6. 2020
Lucie Kovářová
  • GraphQL

  • API testing

  • automatizace

  • Jest

  • Apollo Server

  • Postman

  • programování

  • testovací nástroje

O autorovi

Lucie Kovářová

Cloud specialistka s 9 letou praxí v oblasti serverless architektury. Absolventka VUT Brno

Dotazy k článku