Plan de Tests de Performance
La solution de cashback nouvelle génération
INTRODUCTION ET OBJECTIFS
1.1 Contexte
Les tests de performance sont essentiels pour garantir que REWAPP peut supporter la charge utilisateur prévue tout en maintenant une expérience utilisateur optimale. Ce document définit la stratégie, les métriques, les scénarios et les outils pour valider les performances de la plateforme.
1.2 Objectifs des Tests de Performance
- Valider la capacité de charge : Vérifier que le système supporte le nombre d'utilisateurs simultanés prévu
- Identifier les goulots d'étranglement : Détecter les points de contention avant la mise en production
- Garantir les temps de réponse : Valider que les SLA de performance sont respectés (< 200ms)
- Tester la scalabilité : Vérifier que l'auto-scaling fonctionne correctement sous charge
- Assurer la stabilité : Confirmer que le système reste stable sous charge prolongée
- Valider les mécanismes de protection : Tester le rate limiting et les circuit breakers
1.3 Périmètre des Tests
Périmètre des Tests
| Composant | Inclus | Priorité |
|---|---|---|
| API Backend (NestJS) | Oui | Critique |
| Base de données PostgreSQL | Oui | Critique |
| Cache Redis | Oui | Critique |
| API Gateway (Kong) | Oui | Critique |
| Application Mobile (API calls) | Oui | Majeur |
| Dashboard Partenaire (API calls) | Oui | Majeur |
| Dashboard Admin (API calls) | Oui | Mineur |
| Site Vitrine (SSG) | Oui | Mineur |
| Intégrations tierces (mocks) | Partiel | Mineur |
1.4 Projections de Charge
Projections de Charge
| Indicateur | Année 1 | Année 2 | Année 3 |
|---|---|---|---|
| Utilisateurs actifs | 30 000 | 100 000 | 300 000 |
| Partenaires actifs | 600 | 2 500 | 10 000 |
| Transactions/jour estimées | 5 000 | 20 000 | 60 000 |
| Requêtes API/jour estimées | 500 000 | 2 000 000 | 6 000 000 |
MÉTRIQUES ET SEUILS DE PERFORMANCE
2.1 Métriques Principales (KPIs)
KPIs de Performance
| Métrique | Définition | Objectif | Seuil Critique |
|---|---|---|---|
P50 |
Médiane des temps de réponse | < 100ms | > 200ms |
P95 |
95ème percentile | < 200ms | > 500ms |
P99 |
99ème percentile | < 500ms | > 1000ms |
Throughput |
Requêtes traitées par seconde | > 500 req/s | < 200 req/s |
Error Rate |
Pourcentage d'erreurs | < 0.1% | > 1% |
Availability |
Uptime du service | 99.9% | < 99% |
TTFB |
Time to First Byte | < 100ms | > 300ms |
2.2 Métriques Système
Seuils Système
| Métrique | Objectif | Warning | Critique |
|---|---|---|---|
| CPU Utilisation | < 60% | > 70% | > 85% |
| Mémoire Utilisation | < 70% | > 80% | > 90% |
| Connexions DB actives | < 50% pool | > 70% pool | > 85% pool |
| Connexions Redis | < 70% | > 80% | > 90% |
| Disk I/O | < 60% | > 70% | > 85% |
| Network Bandwidth | < 50% | > 70% | > 85% |
2.3 Métriques par Endpoint Critique
SLA par Endpoint
| Endpoint | P95 Objectif | Throughput Min | Priorité |
|---|---|---|---|
POST /auth/login |
< 300ms | 100 req/s | Critique |
POST /auth/register |
< 500ms | 50 req/s | Critique |
GET /points/balance |
< 100ms | 200 req/s | Critique |
POST /qr-codes/generate |
< 150ms | 100 req/s | Critique |
POST /qr-codes/scan |
< 200ms | 100 req/s | Critique |
GET /transactions |
< 200ms | 150 req/s | Majeur |
POST /banking/withdrawals |
< 500ms | 30 req/s | Majeur |
GET /partners/nearby |
< 300ms | 100 req/s | Majeur |
Webhooks bancaires |
< 1000ms | 50 req/s | Critique |
PROFILS DE CHARGE
3.1 Profil Normal (Baseline)
Ce profil représente une charge typique en période normale.
| Paramètre | Valeur |
|---|---|
| Utilisateurs virtuels | 100 |
| Durée du test | 30 minutes |
| Ramp-up | 5 minutes |
| Distribution | Répartition réaliste des endpoints |
| Ratio lecture/écriture | 80% / 20% |
3.2 Profil Charge Standard
Ce profil représente la charge attendue en Année 1.
| Paramètre | Valeur |
|---|---|
| Utilisateurs virtuels | 500 |
| Durée du test | 1 heure |
| Ramp-up | 10 minutes |
| Requêtes/seconde cible | 200 req/s |
| Transactions/heure | 500 |
3.3 Profil Pic de Charge
Ce profil simule un pic d'activité (promotions, événements).
| Paramètre | Valeur |
|---|---|
| Utilisateurs virtuels | 2 000 |
| Durée du test | 30 minutes |
| Ramp-up | 5 minutes |
| Requêtes/seconde cible | 1 000 req/s |
| Multiplicateur vs normal | x10 |
3.4 Profil Année 3 (Cible)
Ce profil valide la capacité pour 300 000 utilisateurs.
| Paramètre | Valeur |
|---|---|
| Utilisateurs virtuels | 5 000 |
| Durée du test | 2 heures |
| Ramp-up | 15 minutes |
| Requêtes/seconde cible | 2 000 req/s |
| Transactions/heure | 2 500 |
SCÉNARIOS DE TESTS DE PERFORMANCE
4.1 SC-PERF-001 : Parcours Utilisateur Complet
PRIORITÉ CRITIQUE
Simulation du parcours complet d'un utilisateur depuis la connexion jusqu'à l'utilisation de ses points.
Pré-conditions
- Utilisateurs de test créés en base
- Partenaires de test configurés
- Points crédités sur les comptes de test
Étapes
- 1
Connexion
POST /auth/login - 2
Récupération du profil
GET /users/me - 3
Consultation du solde
GET /points/balance - 4
Consultation de l'historique
GET /transactions?limit=20 - 5
Recherche de partenaires
GET /partners/nearby - 6
Génération QR code
POST /qr-codes/generate - 7
Vérification statut QR
GET /qr-codes/{id}/status
Résultats attendus
- Temps total du parcours < 2 secondes
- Aucune erreur HTTP 5xx
- Taux d'erreur < 0.1%
4.2 SC-PERF-002 : Génération QR Code sous Charge
PRIORITÉ CRITIQUE
Validation des performances de génération de QR codes avec blocage des points.
Pré-conditions
- 1000 utilisateurs avec solde de points > 100
Étapes
- 1
Génération simultanée
500 utilisateurs génèrent un QR code simultanément
- 2
Vérification blocage
Vérification du blocage des points (Redis)
- 3
Attente expiration
60 secondes
- 4
Vérification déblocage
Vérification du déblocage automatique
Résultats attendus
- Temps de génération < 150ms (P95)
- Points correctement bloqués
- Déblocage automatique fonctionnel
- Aucune corruption de données
4.3 SC-PERF-003 : Scan QR Code Partenaire
PRIORITÉ CRITIQUE
Validation des performances du scan QR par les partenaires.
Résultats attendus
- Temps de validation < 200ms (P95)
- Aucun double débit
- QR codes invalidés après scan
4.4 SC-PERF-004 : Webhooks Bancaires
PRIORITÉ CRITIQUE
Validation du traitement des webhooks de transactions bancaires.
Résultats attendus
- Temps de traitement webhook < 1000ms
- 100% des transactions traitées
- Points crédités correctement
- Notifications envoyées
4.5 SC-PERF-005 : Authentification sous Charge
PRIORITÉ CRITIQUE
Validation des performances du système d'authentification.
Résultats attendus
- Temps de login < 300ms (P95)
- Tokens JWT valides générés
- Rate limiting fonctionnel
4.6 SC-PERF-006 : Demandes de Virement
PRIORITÉ MAJEUR
Validation des performances des demandes de virement bancaire.
Résultats attendus
- Temps de création demande < 500ms
- Points bloqués correctement
- Aucune demande dupliquée
PLAN DE TESTS PAR COMPOSANT
5.1 Tests API Gateway (Kong)
Tests API Gateway
| Test | Description | Seuil | Priorité |
|---|---|---|---|
PERF-GW-001 | Rate limiting (100 req/min/user) | Activation correcte | Critique |
PERF-GW-002 | Load balancing round-robin | Distribution équitable | Majeur |
PERF-GW-003 | Circuit breaker (50% erreurs) | Activation < 30s | Critique |
PERF-GW-004 | Latence ajoutée par gateway | < 10ms overhead | Majeur |
PERF-GW-005 | Gestion 10 000 connexions simultanées | Stable | Critique |
5.2 Tests Service Authentification
Tests Authentification
| Test | Description | Seuil | Priorité |
|---|---|---|---|
PERF-AUTH-001 | Login standard | < 300ms P95 | Critique |
PERF-AUTH-002 | Login avec 2FA | < 500ms P95 | Majeur |
PERF-AUTH-003 | Génération JWT RS256 | < 50ms | Critique |
PERF-AUTH-004 | Refresh token | < 100ms P95 | Critique |
PERF-AUTH-005 | Validation JWT | < 10ms | Critique |
PERF-AUTH-006 | Protection brute force | 5 tentatives/15min | Critique |
5.3 Tests Service Points
Tests Service Points
| Test | Description | Seuil | Priorité |
|---|---|---|---|
PERF-PTS-001 | Consultation solde | < 100ms P95 | Critique |
PERF-PTS-002 | Historique paginé (100 items) | < 200ms P95 | Majeur |
PERF-PTS-003 | Crédit points (transaction) | < 150ms P95 | Critique |
PERF-PTS-004 | Calcul paliers fidélité | < 500ms | Majeur |
PERF-PTS-005 | Gestion expiration FIFO | < 200ms | Majeur |
5.4 Tests Service QR Code
Tests Service QR Code
| Test | Description | Seuil | Priorité |
|---|---|---|---|
PERF-QR-001 | Génération QR code | < 150ms P95 | Critique |
PERF-QR-002 | Signature HMAC-SHA256 | < 5ms | Critique |
PERF-QR-003 | Validation scan | < 200ms P95 | Critique |
PERF-QR-004 | Blocage/déblocage Redis | < 20ms | Critique |
PERF-QR-005 | Expiration automatique (60s) | ± 1s précision | Critique |
5.5 Tests Base de Données PostgreSQL
Tests PostgreSQL
| Test | Description | Seuil | Priorité |
|---|---|---|---|
PERF-DB-001 | Requête simple (SELECT by ID) | < 5ms | Critique |
PERF-DB-002 | Requête avec JOIN (transactions) | < 50ms | Majeur |
PERF-DB-003 | Insert transaction | < 20ms | Critique |
PERF-DB-004 | Update points ledger | < 20ms | Critique |
PERF-DB-005 | Requête géolocalisée (partenaires) | < 100ms | Majeur |
PERF-DB-006 | Connection pooling (100 conn) | Stable | Critique |
5.6 Tests Cache Redis
Tests Redis
| Test | Description | Seuil | Priorité |
|---|---|---|---|
PERF-REDIS-001 | GET/SET simple | < 2ms | Critique |
PERF-REDIS-002 | Session lookup | < 5ms | Critique |
PERF-REDIS-003 | Rate limiting counter | < 3ms | Critique |
PERF-REDIS-004 | QR code TTL (60s) | Précis ± 1s | Critique |
PERF-REDIS-005 | Pub/Sub notifications | < 10ms | Majeur |
TESTS DE CHARGE (LOAD TESTING)
6.1 Objectif
Valider que le système fonctionne correctement sous la charge attendue en conditions normales d'exploitation.
6.2 Configuration
| Paramètre | Valeur |
|---|---|
| Type de test | Load Test |
| Durée totale | 1 heure |
| Ramp-up | 10 minutes |
| Utilisateurs virtuels | 500 |
| Steady state | 40 minutes |
| Ramp-down | 10 minutes |
6.3 Distribution des Requêtes
Distribution Réaliste
| Endpoint | Pourcentage | VUs Assignés |
|---|---|---|
GET /points/balance | 25% | 125 |
GET /transactions | 20% | 100 |
GET /partners/nearby | 15% | 75 |
POST /auth/login | 10% | 50 |
POST /qr-codes/generate | 10% | 50 |
POST /qr-codes/scan | 8% | 40 |
GET /users/me | 7% | 35 |
| Autres endpoints | 5% | 25 |
6.4 Critères de Succès Load Test
- Temps de réponse P95 < 200ms
- Taux d'erreur < 0.1%
- CPU < 70%
- Mémoire < 80%
- Aucun timeout
- Toutes les fonctionnalités opérationnelles
TESTS DE STRESS (STRESS TESTING)
7.1 Objectif
Identifier les limites du système et valider son comportement en cas de surcharge.
7.2 Configuration
| Paramètre | Valeur |
|---|---|
| Type de test | Stress Test |
| Approche | Stepped load (augmentation progressive) |
| Utilisateurs initiaux | 100 |
| Incrément | +200 VUs toutes les 5 minutes |
| Maximum | 5 000 VUs ou point de rupture |
| Durée par palier | 5 minutes |
7.3 Comportement Attendu par Niveau de Charge
Comportement sous Charge
| Charge | Comportement Attendu |
|---|---|
| Normal (100-500 VUs) | Performances nominales |
| Élevée (500-1000 VUs) | Légère dégradation acceptable |
| Très élevée (1000-2000 VUs) | Auto-scaling activé, performances maintenues |
| Extrême (> 2000 VUs) | Rate limiting activé, graceful degradation |
7.4 Critères de Validation
- Auto-scaling déclenché correctement
- Circuit breakers activés si nécessaire
- Rate limiting protège le système
- Aucune corruption de données
- Récupération complète après stress
TESTS D'ENDURANCE (SOAK TESTING)
8.1 Objectif
Valider la stabilité du système sur une période prolongée pour détecter les fuites mémoire et la dégradation progressive.
8.2 Configuration
| Paramètre | Valeur |
|---|---|
| Type de test | Soak Test |
| Durée totale | 8 heures (minimum) |
| Utilisateurs virtuels | 300 |
| Profil | Charge stable sans variation |
8.3 Points de Surveillance
- Memory leaks : Augmentation progressive de la mémoire utilisée
- Connection leaks : Accumulation de connexions non fermées
- File descriptors : Épuisement des descripteurs
- Disk space : Accumulation de logs/fichiers temporaires
- Performance degradation : Dégradation progressive des temps de réponse
8.4 Critères de Succès
- Mémoire stable (variation < 10% sur 8h)
- Connexions DB stables
- Temps de réponse constants
- Aucun restart nécessaire
- Logs sans erreur critique
TESTS DE SCALABILITÉ
9.1 Objectif
Valider que l'auto-scaling horizontal fonctionne correctement et que le système scale linéairement.
9.2 Tests Auto-Scaling ECS
Auto-Scaling Triggers
| Test | Trigger | Action Attendue | Délai |
|---|---|---|---|
SCALE-001 | CPU > 70% pendant 2min | Scale-out (+1 task) | < 5 min |
SCALE-002 | CPU < 30% pendant 5min | Scale-in (-1 task) | < 10 min |
SCALE-003 | Memory > 80% | Scale-out | < 5 min |
SCALE-004 | Requests > 1000/min | Scale-out | < 5 min |
9.3 Test de Scaling Linéaire
Objectif : Vérifier que doubler les ressources double la capacité.
Capacité vs Ressources
| Instances | Capacité Attendue | Écart Acceptable |
|---|---|---|
| 2 tasks | 400 req/s | Baseline |
| 4 tasks | 800 req/s | ± 15% |
| 6 tasks | 1200 req/s | ± 15% |
| 8 tasks | 1600 req/s | ± 15% |
| 10 tasks | 2000 req/s | ± 15% |
9.4 Test de Scaling Database
| Test | Description | Validation |
|---|---|---|
SCALE-DB-001 | Read Replica activation | Lectures distribuées |
SCALE-DB-002 | Connection pooling efficace | Pas de contention |
SCALE-DB-003 | Query performance avec charge | Stable |
OUTILS ET INFRASTRUCTURE DE TESTS
10.1 Outils de Tests de Performance
Outils Disponibles
| Outil | Usage | Version |
|---|---|---|
| K6 (Grafana) | Tests de charge principaux | 0.47+ |
| JMeter | Tests de charge complémentaires | 5.6+ |
| Gatling | Tests avancés (Scala) | 3.9+ |
| Artillery | Tests rapides CI/CD | 2.0+ |
| Locust | Tests Python (flexibilité) | 2.15+ |
10.2 Outil Principal : K6
RECOMMANDATION
K6 est l'outil recommandé pour REWAPP.
- Script en JavaScript : Facile à maintenir par l'équipe
- Performances élevées : Écrit en Go, très efficace
- Intégration CI/CD : S'intègre facilement avec GitHub Actions
- Métriques riches : Export vers InfluxDB/Prometheus/Grafana
- Cloud option : K6 Cloud pour tests distribués
10.3 Infrastructure de Monitoring
Stack Monitoring
| Composant | Outil | Usage |
|---|---|---|
| Métriques système | CloudWatch | CPU, Mémoire, Network |
| Métriques applicatives | Prometheus + Grafana | Latence, Throughput, Erreurs |
| APM | AWS X-Ray / Datadog | Tracing distribué |
| Logs | CloudWatch Logs | Analyse des erreurs |
| Alerting | CloudWatch Alarms | Notifications temps réel |
10.4 Configuration Environnement de Test
Ressources Dédiées
| Composant | Configuration Test |
|---|---|
| Générateurs K6 | EC2 c5.xlarge x 2 (ou K6 Cloud) |
| API staging | ECS Fargate (config production) |
| PostgreSQL | RDS db.t3.medium (replica prod) |
| Redis | ElastiCache cache.t3.small |
| Monitoring | Grafana + InfluxDB dédié |
SCRIPTS K6 - EXEMPLES
11.1 Script de Test de Charge Basique
// k6-load-test.js
import http from 'k6/http';
import { check, sleep } from 'k6';
import { Rate, Trend } from 'k6/metrics';
// Métriques personnalisées
const errorRate = new Rate('errors');
const loginDuration = new Trend('login_duration');
// Configuration du test
export const options = {
stages: [
{ duration: '5m', target: 100 }, // Ramp-up
{ duration: '30m', target: 500 }, // Steady state
{ duration: '5m', target: 0 }, // Ramp-down
],
thresholds: {
http_req_duration: ['p(95)<200'],
errors: ['rate<0.01'],
},
};
const BASE_URL = 'https://staging.api.rewapp.fr/api/v1';
export default function () {
// Login
const loginRes = http.post(BASE_URL + '/auth/login',
JSON.stringify({
email: 'user' + __VU + '@test.rewapp.fr',
password: 'TestPassword123!'
}),
{ headers: { 'Content-Type': 'application/json' } }
);
loginDuration.add(loginRes.timings.duration);
check(loginRes, {
'login successful': (r) => r.status === 200,
'has access token': (r) => r.json('data.accessToken') !== undefined,
}) || errorRate.add(1);
const token = loginRes.json('data.accessToken');
// Get balance
const balanceRes = http.get(BASE_URL + '/points/balance', {
headers: {
'Authorization': 'Bearer ' + token,
'Content-Type': 'application/json'
}
});
check(balanceRes, {
'balance retrieved': (r) => r.status === 200,
}) || errorRate.add(1);
sleep(1);
}
11.2 Script de Test QR Code
// k6-qrcode-test.js
import http from 'k6/http';
import { check, sleep } from 'k6';
export const options = {
vus: 100,
duration: '10m',
thresholds: {
http_req_duration: ['p(95)<150'],
'checks': ['rate>0.99'],
},
};
export default function () {
const token = login();
// Génération QR code
const qrRes = http.post(BASE_URL + '/qr-codes/generate',
JSON.stringify({ pointsAmount: 50 }),
{ headers: authHeaders(token) }
);
check(qrRes, {
'QR generated': (r) => r.status === 201,
'has QR data': (r) => r.json('data.qrCodeData') !== undefined,
'has expiration': (r) => r.json('data.expiresAt') !== undefined,
'duration < 150ms': (r) => r.timings.duration < 150,
});
sleep(0.5);
}
11.3 Script de Test de Stress
// k6-stress-test.js
export const options = {
stages: [
{ duration: '2m', target: 100 },
{ duration: '5m', target: 500 },
{ duration: '5m', target: 1000 },
{ duration: '5m', target: 2000 },
{ duration: '5m', target: 3000 },
{ duration: '5m', target: 4000 },
{ duration: '5m', target: 5000 },
{ duration: '5m', target: 0 },
],
thresholds: {
http_req_failed: ['rate<0.05'],
http_req_duration: ['p(99)<1000'],
},
};
ENVIRONNEMENT DE TESTS
12.1 Environnement Staging
| Composant | Configuration | Notes |
|---|---|---|
| URL Base | staging.api.rewapp.fr | HTTPS obligatoire |
| Instances ECS | 2 tasks (comme prod minimum) | Auto-scaling désactivé |
| PostgreSQL | db.t3.small, données anonymisées | Backup avant chaque test |
| Redis | cache.t3.micro | Flush avant tests |
| Rate Limiting | Désactivé ou augmenté | Pour tests de charge uniquement |
12.2 Environnement Performance Dédié
Pour les tests de charge importants, un environnement dédié est recommandé :
| Composant | Configuration |
|---|---|
| URL Base | perf.api.rewapp.fr |
| Instances ECS | Config identique à production |
| PostgreSQL | Réplica de production (données anonymisées) |
| Redis | Config identique à production |
| Monitoring | Grafana dédié avec rétention 30 jours |
12.3 Données de Test
- 10 000 utilisateurs de test avec profils variés
- 500 partenaires de test
- 100 000 transactions historiques
- Points distribués sur les comptes (0 à 10 000)
- Paliers fidélité variés (Bronze à Diamant)
CRITÈRES DE SUCCÈS ET VALIDATION
13.1 Critères Globaux de Succès
Critères Globaux
| Critère | Objectif | Bloquant |
|---|---|---|
| Temps réponse P95 | < 200ms | Oui |
| Taux d'erreur | < 0.1% | Oui |
| Disponibilité | > 99.9% | Oui |
| Throughput minimum | > 500 req/s | Oui |
| CPU max sous charge | < 85% | Non |
| Mémoire max sous charge | < 90% | Non |
| Aucune corruption données | 0 incident | Oui |
13.2 Validation par Type de Test
| Type Test | Critères Succès | Validation |
|---|---|---|
| Load Test | P95 < 200ms, Erreurs < 0.1% | PASS si tous critères OK |
| Stress Test | Dégradation gracieuse, Récupération OK | PASS si comportement prévisible |
| Soak Test | Stabilité 8h, Pas de memory leak | PASS si métriques stables |
| Scalabilité | Scaling linéaire ±15% | PASS si auto-scaling OK |
13.3 Critères de Blocage Release
CRITÈRES BLOQUANTS POUR LA MISE EN PRODUCTION
- Temps de réponse P95 > 500ms sur endpoints critiques
- Taux d'erreur > 1%
- Memory leak détecté
- Corruption de données
- Auto-scaling non fonctionnel
- Rate limiting non fonctionnel
RAPPORT ET ANALYSE
14.1 Contenu du Rapport de Tests
Chaque session de tests génère un rapport comprenant :
- Résumé exécutif : Pass/Fail, métriques clés
- Configuration du test : Profil, durée, VUs
- Métriques détaillées : Latence par endpoint, throughput, erreurs
- Graphiques : Évolution temporelle des métriques
- Points de rupture : Si stress test
- Recommandations : Optimisations identifiées
- Anomalies : Comportements inattendus
14.2 Template de Rapport
RAPPORT DE TESTS DE PERFORMANCE - [DATE]
1. RÉSUMÉ
- Type de test : [Load/Stress/Soak/Scalabilité]
- Résultat global : [PASS/FAIL]
- Durée : [X heures]
- VUs maximum : [X]
2. MÉTRIQUES CLÉS
- P50 : [X ms]
- P95 : [X ms]
- P99 : [X ms]
- Throughput : [X req/s]
- Taux erreur : [X%]
3. ANALYSE DÉTAILLÉE
[Graphiques et observations]
4. RECOMMANDATIONS
[Actions correctives si nécessaire]
14.3 Fréquence des Rapports
| Type | Fréquence | Destinataires |
|---|---|---|
| Tests CI/CD | À chaque PR | Équipe Dev |
| Tests hebdomadaires | Chaque vendredi | Tech Lead, DevOps |
| Tests pré-release | Avant chaque release | Équipe complète, Product |
| Tests trimestriels | Chaque trimestre | Direction technique |
PLANNING DES TESTS
15.1 Intégration CI/CD
Tests Automatisés
| Déclencheur | Type Test | Durée | Bloquant |
|---|---|---|---|
| Pull Request | Smoke test (10 VUs, 2min) | 2 min | Oui |
| Merge develop | Load test léger (50 VUs, 10min) | 10 min | Non |
| Release staging | Load test complet (500 VUs, 30min) | 30 min | Oui |
| Release production | Smoke test post-deploy | 5 min | Alerte |
15.2 Planning Tests Manuels
| Fréquence | Type Test | Responsable |
|---|---|---|
| Hebdomadaire | Load test complet | DevOps |
| Bi-mensuel | Stress test | DevOps + Dev |
| Mensuel | Soak test (8h) | DevOps |
| Trimestriel | Test scalabilité complet | Équipe complète |
| Pré-release majeure | Suite complète | Équipe complète |
15.3 Calendrier Année 1
Phase MVP (M1-M2)
Smoke tests, Load basique
Pré-lancement (M3)
Suite complète, Stress test
Post-lancement (M4-M6)
Monitoring continu, Soak mensuel
Croissance (M7-M12)
Tests scalabilité, Optimisations
ANNEXES
16.1 Checklist Pré-Test
Avant chaque session de tests de performance :
- Environnement staging opérationnel
- Données de test chargées
- Monitoring actif (Grafana, CloudWatch)
- Équipe informée du créneau de test
- Backup de la base de données effectué
- Logs vidés pour analyse propre
- Rate limiting ajusté si nécessaire
- Générateurs K6 configurés
16.2 Checklist Post-Test
Après chaque session de tests :
- Collecter les métriques K6
- Exporter les dashboards Grafana
- Analyser les logs d'erreur
- Vérifier l'intégrité des données
- Restaurer la configuration normale
- Rédiger le rapport de test
- Partager les résultats à l'équipe
- Créer les tickets d'optimisation si nécessaire
16.3 Contacts et Escalade
| Rôle | Responsabilité |
|---|---|
| DevOps Lead | Exécution des tests, infrastructure |
| Tech Lead | Validation des résultats, décision Go/No-Go |
| Dev Backend | Optimisations, corrections |
| DBA | Analyse performance base de données |
| Product Owner | Priorisation des optimisations |