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 run1. Tests avec cURL
cURL est l’outil en ligne de commande le plus rapide pour tester une API REST.
Cas Valides (200 OK)
Requête Basique
Test 1.1 - Requête Basique
curl "http://localhost:8080/api/trends?keyword=java®ion=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.
Caractères Spéciaux
Test 2.1 - Keyword avec Caractères Spéciaux
curl "http://localhost:8080/api/trends?keyword=java%26é%225854®ion=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®ion=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®ion=FRRésultat : JSON affiché dans le navigateur
Keyword Invalide
http://localhost:8080/api/trends?keyword=java&é"123®ion=USRésultat : Erreur 400 avec message clair
Région Invalide
http://localhost:8080/api/trends?keyword=java®ion=FRANCERé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
| Param | Value | Description |
|---|---|---|
keyword | java | Mot-clé à rechercher |
region | US | Code 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
Cas Valides (200)
| Nom | keyword | region | Résultat Attendu |
|---|---|---|---|
| Basic Request | java | US | 200 OK |
| With Spaces | machine learning | FR | 200 OK |
| With Hyphens | spring-boot | GB | 200 OK |
| Default Region | python | (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 Test | Code HTTP | Géré par | Priorité |
|---|---|---|---|---|
| 1.x | Requêtes valides | 200 | Controller | ⭐⭐⭐ |
| 2.x | Validations échouées | 400 | Micronaut | ⭐⭐⭐ |
| 3.x | Ressource non trouvée | 404 | GlobalExceptionHandler | ⭐⭐ |
| 4.x | Erreur serveur | 500 | GlobalExceptionHandler | ⭐ |
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®ion=US"Test automatisé :
@MicronautTest
class TrendControllerIntegrationTest {
@Inject
HttpClient client;
@Test
void shouldReturnTrendsForValidRequest() {
var response = client.toBlocking().exchange(
"/api/trends?keyword=java®ion=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
| Outil | Avantages | Quand l’Utiliser |
|---|---|---|
| cURL | ⚡ Ultra rapide, scriptable | Tests rapides, CI/CD |
| Navigateur | 👀 Visuel, JSON formaté | Tests exploratoires |
| Postman | 💾 Sauvegarde collections, interface graphique | Tests organisés, documentation |
Règles d’Or
- Testez d’abord manuellement avant d’automatiser
- Vérifiez les logs pour chaque cas d’erreur
- Organisez vos tests en collections (Postman)
- Automatisez les cas critiques dès que possible
Prochaines Étapes
Vous savez maintenant tester manuellement votre API. Passez aux tests automatisés !
- 📖 Tests d’Intégration - Automatiser les tests avec
@MicronautTest - 📖 Tests Unitaires - Tester la logique métier
- 📖 Stratégies de Test - Quand utiliser quel type de test
- 📖 Gestion des Exceptions - Implémenter le GlobalExceptionHandler