Skip to Content
04 TestingTests Manuels

Tests Manuels

Guide complet pour tester manuellement votre API avec cURL, navigateur, et Postman.

Les tests manuels permettent de valider rapidement le comportement de l’API avant d’écrire des tests automatisés.


Prérequis

L’application doit être lancée sur http://localhost:8080

# Démarrer l'application ./mvnw mn:run # Ou avec Gradle ./gradlew run

1. Tests avec cURL

cURL est l’outil en ligne de commande le plus rapide pour tester une API REST.

Cas Valides (200 OK)

Test 1.1 - Requête Basique

curl "http://localhost:8080/api/trends?keyword=java&region=US"

Résultat attendu :

{ "keyword": "java", "region": "US", "trends": [ { "keyword": "java", "value": 85, "date": "2025-01-15" } ] }

Status : 200 OK


Erreurs de Validation (400 Bad Request)

Les erreurs de validation sont gérées automatiquement par Micronaut via les annotations @NotBlank, @Size, @Pattern.

Test 2.1 - Keyword avec Caractères Spéciaux

curl "http://localhost:8080/api/trends?keyword=java%26é%225854&region=US"

Résultat attendu :

{ "message": "Bad Request", "_embedded": { "errors": [ { "message": "keyword: Keyword must contain only alphanumeric characters, spaces, hyphens and underscores" } ] } }

Status : 400 Bad Request

Les caractères spéciaux &, é, " ne sont pas autorisés.


Violations Multiples

Micronaut retourne toutes les erreurs de validation en une seule réponse.

curl "http://localhost:8080/api/trends?keyword=a&region=usa"

Résultat attendu :

{ "message": "Bad Request", "_embedded": { "errors": [ { "message": "keyword: Keyword must be between 2 and 100 characters" }, { "message": "region: Region must be a valid 2-letter uppercase country code (e.g., US, FR, GB)" } ] } }

Avantages :

  • ✅ L’utilisateur voit toutes les erreurs en une seule requête
  • ✅ Meilleure expérience utilisateur
  • ✅ Moins d’allers-retours HTTP

2. Tests avec le Navigateur

Le navigateur est idéal pour tester rapidement des requêtes GET et voir le JSON formaté.

Cas Valide

http://localhost:8080/api/trends?keyword=java&region=FR

Résultat : JSON affiché dans le navigateur


Keyword Invalide

http://localhost:8080/api/trends?keyword=java&é"123&region=US

Résultat : Erreur 400 avec message clair


Région Invalide

http://localhost:8080/api/trends?keyword=java&region=FRANCE

Résultat : Erreur 400 avec explications


3. Tests avec Postman / Insomnia

Postman et Insomnia offrent une interface graphique pour organiser et sauvegarder vos tests.

Configuration de Base

Créer une requête GET

  • Method : GET
  • URL : http://localhost:8080/api/trends

Ajouter les Query Params

ParamValueDescription
keywordjavaMot-clé à rechercher
regionUSCode pays (optionnel, défaut: US)

Envoyer la requête

Cliquer sur Send et vérifier la réponse.

Créer des tests pour différents cas

Dupliquer la requête pour tester :

  • ✅ Cas valides
  • ❌ Keyword invalide
  • ❌ Région invalide
  • ❌ Paramètres manquants

Collection Postman Recommandée

Cas Valides (200)

NomkeywordregionRésultat Attendu
Basic RequestjavaUS200 OK
With Spacesmachine learningFR200 OK
With Hyphensspring-bootGB200 OK
Default Regionpython(vide)200 OK, region=US

4. Vérification des Logs Serveur

Les logs serveur contiennent des informations détaillées sur les erreurs (stack traces, contexte).

Erreurs de Validation (400)

ERROR - Exception caught for request: GET /api/trends jakarta.validation.ConstraintViolationException: keyword: Keyword must contain only alphanumeric characters...

Ressource Non Trouvée (404)

ERROR - Exception caught for request: GET /api/trends org.smoka.application.exception.ResourceNotFoundException: No trends found for keyword 'notfound' in region 'US'

Erreur Serveur (500)

ERROR - Unhandled exception for GET /api/trends java.lang.RuntimeException: Simulated server error at org.smoka.adapter.input.TrendController.getTrends(TrendController.java:42) at org.smoka.adapter.input.$TrendController$Definition$Exec.dispatch(Unknown Source) ... [Stack trace complète - visible SEULEMENT côté serveur]

Règle d’or : Les stack traces complètes sont dans les logs serveur, JAMAIS exposées au client.


5. Matrice de Tests

Utilisez cette matrice pour couvrir tous les cas importants.

#Type de TestCode HTTPGéré parPriorité
1.xRequêtes valides200Controller⭐⭐⭐
2.xValidations échouées400Micronaut⭐⭐⭐
3.xRessource non trouvée404GlobalExceptionHandler⭐⭐
4.xErreur serveur500GlobalExceptionHandler

6. Checklist de Validation

Tester les cas valides (200)

  • Requête basique avec keyword et region
  • Keyword avec espaces
  • Keyword avec tirets et underscores
  • Région par défaut (paramètre omis)

Tester les erreurs de validation (400)

  • Keyword avec caractères spéciaux → 400 avec message clair
  • Keyword trop court (< 2 caractères) → 400
  • Keyword vide → 400
  • Région invalide (> 2 caractères) → 400
  • Région en minuscules → 400
  • Violations multiples → 400 avec plusieurs erreurs

Tester les erreurs métier (404)

  • ResourceNotFoundException → 404 avec ErrorResponse custom
  • Vérifier le format du JSON d’erreur

Tester les erreurs serveur (500)

  • Erreur serveur → 500 avec message générique
  • Vérifier que la stack trace n’est PAS exposée

Vérifier les logs

  • Les logs contiennent les stack traces complètes
  • Les erreurs sont loggées avec le bon niveau (ERROR)
  • Les requêtes valides sont loggées en INFO

7. Automatisation des Tests Manuels

Une fois les tests manuels validés, automatisez-les avec des tests d’intégration !

Exemple : Automatiser un Test cURL

Test manuel :

curl "http://localhost:8080/api/trends?keyword=java&region=US"

Test automatisé :

@MicronautTest class TrendControllerIntegrationTest { @Inject HttpClient client; @Test void shouldReturnTrendsForValidRequest() { var response = client.toBlocking().exchange( "/api/trends?keyword=java&region=US", TrendResponseDto.class ); assertEquals(HttpStatus.OK, response.status()); assertNotNull(response.body()); } }

Les tests automatisés permettent de détecter les régressions à chaque commit.


Récapitulatif

Les tests manuels sont essentiels pour valider rapidement le comportement de l’API avant d’écrire des tests automatisés.

Outils Recommandés

OutilAvantagesQuand l’Utiliser
cURL⚡ Ultra rapide, scriptableTests rapides, CI/CD
Navigateur👀 Visuel, JSON formatéTests exploratoires
Postman💾 Sauvegarde collections, interface graphiqueTests organisés, documentation

Règles d’Or

  1. Testez d’abord manuellement avant d’automatiser
  2. Vérifiez les logs pour chaque cas d’erreur
  3. Organisez vos tests en collections (Postman)
  4. Automatisez les cas critiques dès que possible

Prochaines Étapes

Vous savez maintenant tester manuellement votre API. Passez aux tests automatisés !

Last updated on