Przejdź do głównej zawartości

Automatyzacja testów API

Dodajesz nowe pole do odpowiedzi API i zapominasz zaktualizować definicję typów klienta mobilnego. Aplikacja webowa radzi sobie elegancko, bo ignoruje nieznane pola. Aplikacja iOS crashuje, bo jej ścisły decoder odrzuca niespodziewaną właściwość. Trzech różnych konsumentów, trzy różne oczekiwania i żadnych testów kontraktowych, które złapałyby niedopasowanie. Testowanie API to klej, który trzyma systemy rozproszone razem.

  • Kompleksowe generowanie testów REST API ze specyfikacji OpenAPI lub analizy routów
  • Testowanie zapytań i mutacji GraphQL z walidacją schematu
  • Wzorce testowania kontraktowego zapobiegające dryfowi konsument-dostawca
  • Testowanie uwierzytelniania i autoryzacji dla każdego endpointu
  • Prompty AI do testowania obsługi błędów, edge case’ów i rate limitingu
@src/routes/ @src/schemas/
Generate API tests for all endpoints in our Express application:
For each route file in /src/routes/:
1. Read the route definitions and Zod validation schemas
2. Generate tests for:
- Valid request (200 response with correct shape)
- Missing required fields (400 with validation errors)
- Invalid field types (400 with specific error messages)
- Authentication required (401 without token)
- Authorization check (403 with wrong role)
- Resource not found (404 with appropriate message)
Use supertest for HTTP assertions.
Use our test factories for request body generation.
Follow patterns in @tests/api/auth.api.test.ts
Save to /tests/api/{route-name}.api.test.ts

“Testy API są kruche, bo zależą od stanu bazy danych.” Użyj transakcji bazodanowych z rollback po każdym teście lub seeduj konkretne dane dla każdego testu w hooku beforeEach. Nigdy nie współdziel stanu bazy danych między plikami testowymi.

“Testy kontraktowe failują, bo dostawca zmienił się celowo.” Tak powinno działać. Test kontraktowy złapał breaking change zanim dotarł do konsumentów. Zaktualizuj kontrakty konsumentów, powiadom zespoły konsumentów i zweryfikuj, że poradzą sobie ze zmianą przed wdrożeniem dostawcy.

“Testy przechodzą, ale API zachowuje się inaczej na produkcji.” Sprawdź zachowanie specyficzne dla środowiska: feature flagi, rate limity, cache’owanie, middleware działający tylko na produkcji. Twoje środowisko testowe powinno maksymalnie odzwierciedlać konfigurację produkcyjną.

“Testy GraphQL są trudne w utrzymaniu, gdy schemat ewoluuje.” Generuj testy z samego schematu. Gdy schemat się zmienia, przegeneruj testy. Utrzymuj oddzielną warstwę testów logiki biznesowej testujących zachowanie niezależnie od struktury schematu.