J'ai écrit les remarques suivantes sur la réalisation de tests de pré-production efficaces pour ma rubrique "VOS Corner" dans le bulletin du groupe d'utilisateurs Stratus de décembre 1996. Elles sont toujours d'actualité aujourd'hui, près de 13 ans plus tard.
Si je pouvais faire une suggestion à nos clients (une seule demande !), ce serait de s'assurer que vous effectuez un test de stress des nouvelles versions de votre application avant de les mettre en production. J'ai été impliqué dans un certain nombre de situations récemment où le client a déployé une application qui a passé tous les tests fonctionnels mais qui a échoué peu après sa mise en production parce qu'elle ne pouvait pas supporter la charge de production.
Comme vous le comprenez sûrement, les logiciels peuvent être imprévisibles et difficiles à tester. Savoir qu'un programme fonctionne à 10 transactions par seconde n'est pas la même chose que de savoir qu'il fonctionne à 100 transactions par seconde. Savoir qu'il fonctionne avec 10 circuits virtuels n'est pas la même chose que de savoir qu'il fonctionne avec 1000 circuits virtuels. Dans chaque cas que j'ai vu, le programme a bien fonctionné en laboratoire ou dans l'environnement de test, mais a échoué lamentablement en production en raison d'un défaut sous-jacent du logiciel ou d'une limite de capacité. En général, si je m'implique, la limite était dans le VOS, pas dans l'application, mais peu importe où elle se trouve, l'effet est le même sur vos clients. Si vous voulez savoir si votre application fonctionnera en production, vous devez la tester comme si elle était en production.
J'ai entendu de nombreuses excuses au fil des ans pour expliquer pourquoi vous ne pouvez pas tester votre logiciel aux mêmes limites qu'en production. Je n'en crois aucune. Vous pouvez capturer le flux de données de production et les fichiers à utiliser en test. Vous pouvez installer des générateurs de test synthétiques pour simuler les bonnes et mauvaises entrées. Vous pouvez contourner le code d'interface sensible au dispositif afin d'alimenter les serveurs en flux de données à grande vitesse. Il existe de nombreuses astuces que vous pouvez utiliser pour faire fonctionner 90 % de votre application à fond, même si vous ne pouvez pas la faire fonctionner à 100 % en mode test. Arrêtez de considérer le problème comme une simulation de production et commencez à y penser en vous contentant d'obtenir le plus de code possible à exécuter, le plus rapidement possible. Assurez-vous de faire fonctionner votre système à 100% d'utilisation du CPU ; c'est là que les problèmes "intéressants" ont tendance à apparaître.
En exerçant votre logiciel d'application jusqu'à ses limites, vous exercez également le VOS. Vous trouverez des problèmes de capacité dans votre laboratoire, et non dans la production. Vous saurez quelles sont vos limites de capacité et où elles se situent. Vous sortirez de votre phase de test avec un degré de confiance beaucoup plus élevé dans la réussite du déploiement de votre application. Vous rendrez votre patron et vos clients heureux. Ce ne sont pas là de bonnes raisons ?