Qu'est-ce que le soak testing ?
Le soak (endurance) testing lance une charge modérée pendant des heures ou jours pour faire émerger memory leaks et drift lent.
Qu'est-ce que le soak testing ?
Le soak testing (aussi appelé endurance testing) lance une charge modérée et soutenue contre un système pendant de nombreuses heures ou jours, bien plus longtemps qu'un load test typique. L'objectif n'est pas de trouver le plafond de capacité ou de stress-casser le système. C'est de faire émerger des problèmes à développement lent qui ne se manifestent qu'après des heures d'opération : memory leaks, drift de connection pool, remplissage de log disk, expiration de certificat, thrashing de connexions DB, patterns lents de cache eviction.
Soak testing vs load testing
Un load test tourne au peak attendu pendant 15 minutes à quelques heures. Assez longtemps pour que les caches chauffent et que le comportement court terme se stabilise. Un soak test tourne peut-être à 40-60% du peak pendant 8-72 heures. Assez longtemps pour que les problèmes qui s'accumulent graduellement deviennent visibles.
Les questions que chacun répond diffèrent :
- Load test : mon système peut-il atteindre les SLOs au peak attendu pendant une heure ou deux ?
- Soak test : si je lance mon système à charge modérée en continu pendant deux jours, la performance reste-t-elle stable, ou se dégrade-t-elle lentement ?
Les soak tests tournent intentionnellement sous le peak pour faire émerger les problèmes accumulés. Pour trouver la charge maximale soutenable elle-même, voir capacity testing.
Ce que les soak tests trouvent
Choses que les load tests courts manquent :
- Memory leaks. Un objet jamais garbage-collected, un buffer jamais libéré, un cache qui croît sans limite. Le heap croît sur des heures jusqu'à ce que la JVM (ou Node, Go, Python) atteigne une limite et que le processus meure.
- Drift de connection pool. Pools de connexion DB ou HTTP-client qui fuitent une connexion toutes les N requêtes, épuisant finalement les slots disponibles.
- Remplissage de log disk. Logging verbose mange le disque ; la production manque d'espace après des heures.
- Expiration de certificat ou token. Un token OAuth caché pendant 1 heure ; s'il n'est pas rafraîchi correctement, toutes les requêtes après l'heure échouent.
- Cache eviction lente. Les cache hits restent élevés un moment, puis chutent quand le working set tourne ; la performance se dégrade silencieusement.
- Épuisement de ressources qui s'accumule. Tables temp de DB, backlogs de message queue, file descriptors.
Quand exécuter un soak test
- Pre-major-release. Un nouveau service persistant, upgrade de framework ou migration de DB introduisent un comportement long terme inconnu.
- Après des changements d'architecture. Nouvelle couche de cache, nouvelle message queue, nouveau driver DB, nouveau sidecar service mesh.
- Trimestriellement, comme regression check. La plupart des équipes lancent les soak tests moins souvent que les load tests ; trimestriellement capture le drift lent entre releases.
- Post-incident. Si un outage a été causé par une fuite lente, un soak test contre le fix confirme que la fuite est partie.
Métriques clés de soak test
- Tendance d'usage mémoire dans le temps. Le heap devrait plateauer, pas grimper linéairement. Mémoire qui grimpe = leak.
- Drift de percentile de response time. p95 à l'heure 24 devrait correspondre à p95 à l'heure 1.
- Utilisation de pool de ressources. Pool de connexions DB, pool HTTP client, pool de threads. Devrait rester plat, pas grimper.
- Error rate dans le temps. Devrait rester constant. Pic soudain à l'heure N = un problème accumulé vient de franchir un seuil.
Comment exécuter un soak test
Mêmes scripts que load testing, durée plus longue. Dans JMeter, fixez la durée du Thread Group à de nombreuses heures (24-72). Dans k6, configurez un scénario constant-vus avec un réglage duration long.
Pour des soak tests de plusieurs jours où le test-harness lui-même ne peut pas tourner en continu sur un portable, exécutez depuis LoadFocus. L'infrastructure cloud gère la session longue durée sans contraintes de machine locale.
Si votre équipe n'a pas le temps de configurer et monitorer des soak runs de plusieurs jours, LoadFocus propose des load testing services où des ingénieurs exécutent le soak, surveillent les métriques et livrent un rapport.
Outils LoadFocus connexes
Mettez ce concept en pratique avec LoadFocus — la plateforme même qui propulse tout ce que vous venez de lire.