API testy

Jak testovat GraphQL API: oprávnění, chyby a náročné dotazy

GraphQL je způsob, jak mezi aplikacemi zpřístupnit data prostřednictvím API. Klient si v požadavku vybere pole, která potřebuje, a může si vyžádat také související údaje. Tato flexibilita snižuje počet samostatných volání, ale přináší zvláštní rizika v oblasti oprávnění, zpracování chyb a výkonu.

V čem je problém

U GraphQL nestačí pouze zopakovat kontroly připravené pro REST. Aplikace využívající GraphQL často zpřístupňují jeden koncový bod neboli endpoint, který lze volat s mnoha kombinacemi polí a vnořených vztahů.

Pokud se oprávnění kontroluje pouze u hlavního objektu, vnořený dotaz může nechtěně zpřístupnit údaje, které uživatel nemá vidět. Velmi hluboký nebo rozvětvený dotaz zase může spotřebovat nepřiměřené množství prostředků. Uživatelské rozhraní přitom používá pouze několik připravených dotazů, takže tyto situace nemusí odhalit.

Co ověřovat navíc

Základ zůstává stejný jako u kteréhokoli API: správnost odpovědí, chybové stavy a hraniční hodnoty. U GraphQL k tomu přidáváme:

Jak to řešíme

Nejprve si sepíšeme operace, uživatelské role a klienty, kteří API volají. Poté připravíme pozitivní i negativní scénáře v Pythonu s pytestem nebo v Playwrightu a podle potřeby je zapojíme do CI/CD. Autorizační matici ověřujeme také přes vnořené vztahy; náročné dotazy posuzujeme společně s limity a měřením výkonu. Pokud se na API spoléhá více klientů, může být vhodným doplňkem kontraktní testování.

Co z toho máte

Další krok

Pokud chcete zjistit, zda vaše GraphQL testy pokrývají oprávnění, kombinace polí i chybové stavy, začněte seznamem operací a uživatelských rolí. Dalším krokem může být nezávazná konzultace, na které společně určíme vhodný rozsah.

Související témata

Mohlo by vás také zajímat

Chyby v obchodní logice odhalíte rychleji přímo přes API

Funkční, integrační a kontraktní testování REST, SOAP či GraphQL rozhraní s možností zapojení do CI/CD pipeline.