Test de charge avec Team System : quoi, quand, comment ?

Vous l'aurez sans doute remarqué, en plus de Team Foundation Server et des produits "rôles" (Architect/Developer/Tester), la gamme Visual Studio Team System inclut aussi le produit Team Test Load Agent. Il existe déjà plusieurs outils de test de charge. Les points forts les plus marquants de celui-ci sont sa simplicité relative d'utilisation et son prix très attractif. Pour plus d'infos sur ce dernier point (son prix), contactez-moi. J'ai néanmoins intégré dans ce post des indications sur le prix de cette offre et updaté mon ancien post qui parlait des prix en général de Team System.

 Ce produit, comme son nom l'indique s'intègre aux autres produits de la gamme Team System pour les fonctionnalités de test de charge. Il s'agit de simuler un grand nombre d'utilisateurs virtuels navigant sur votre site Web afin de tester sa capacité à supporter la charge. Il s’utilise de la façon suivante :

1.     Enregistrement de scénarios de parcours de votre site Web directement depuis Internet Explorer. On parle de « test Web » dans Team System. Par exemple, pour un site de commerce électronique, il sera probablement pertinent d’enregistrer différents types de navigation : la personne qui arrive directement sur une page puis quitte votre site, celle qui visite le site puis le quitte, celle qui met des produits dans son panier sans les acheter et enfin celle qui va jusqu’à l’acte d’achat.

2.     Spécification dans un assistant graphique des caractéristiques de votre campagne de test : quels tests Web enregistrés précédemment doivent être joués, dans quelle proportion, ainsi que plusieurs paramètres pour simuler une charge réaliste : navigateurs utilisés, rapidité de connexion Internet et leurs proportions respectives.

3.     Exécution de ces tests via la simulation d’utilisateurs virtuels naviguant sur le site à tester. Ces utilisateurs virtuels peuvent être simulés directement depuis le PC de test pour des besoins modestes, ou répartis sur plusieurs injecteurs pour simuler plus d’utilisateurs virtuels.

4.     En plus des temps de réponse forcément mesurés depuis le ou les PC qui injectent les tests, Team System collecte de très nombreuses informations sur l’état du serveur, au fur et à mesure que la charge augmente (tous les compteurs rendus disponibles par Windows, sur l’état du système, des disques, de la mémoire…)

 Je vais considérer deux cas d’utilisation différents par la charge à simuler sur le serveur Web :

Scénario 1 : besoin de tester un petit nombre d’utilisateurs virtuels. Dans ce cas, il suffit d’installer Visual Studio Team Edition for Software Testers (ou bien sur Team Suite) qui permettra d’enregistrer les scénarios de parcours du site à tester, de définir les scénarios de test, de simuler les utilisateurs virtuels, et de collecter les résultats du test. Sur le serveur, distinct, on installera l’application Web à tester. Il suffit alors de deux PC en tout et pour tout.

Prix estimé dans ce cas, fortement dépendant de la taille de votre entreprise, du type de contrat de licence, d'un éventuel partenariat avec Microsoft, avec la maintenance et l'offre MSDN : 2000 à 3000€ / an / utilisateur de Visual Studio Team Edition for Software Developers. Il inclut alors le droit d'utilisation du Load Agent et le contrôlleur sur le même PC. Il n'y a pas de limite au nombre d'utilisateurs simulés autre que les limites de votre machine et votre réseau.

 Scénario 2 : besoin de tester un grand nombre d’utilisateurs virtuels. Dans ce cas, on peut envisager ce scénario :

-       Visual Studio Team Edition for Software Testers (ou Team Suite) sur le PC de la personne en charge de la gestion des tests. Ce PC servira aux étapes 1 et 2 décrites ci-dessus. Dans ce cas, si la charge est élevée, il ne faut utiliser cet ordinateur ni pour simuler les utilisateurs virtuels, ni pour collecter les résultats des tests.

-       Visual Studio Team Test Load Agent installé sur chaque PC qui devra servir à injecter de la charge / simuler des utilisateurs virtuels. Les PC sur lesquels le Load Agent est installé exécuteront l’étape 3.

-       Visual Studio Team Test Controller installé sur un PC (idéalement ni celui d’un agent ni celui de l’édition Test Developer), qui collecte en temps réel les informations des différents agents (temps de réponse) et de la part du serveur soumis à la charge (tous les compteurs système sélectionnés). Ce contrôleur gère la phase 4. Par défaut il stocke les résultats dans SQL Server 2005 Express. Du point de vue performances, il suffit. Mais il est limité à 4 Go de données, ce qui peut vite être atteint (Attention la doc du Load Agent parle de 10Go pour SQL Express, mais c'est bien 4). Dans ce cas, vous pouvez le brancher sur un autre SQL Server, que vous avez déjà, ou dont vous ferez l'acquisition pour cet usage. SQL Server Standard et Enterprise conviennent tous les deux.

Le prix estimé dans ce cas est toujours de 2000 à 3000€ par an par utilisateur de Visual Studio Team Edition for Software Developers auquel il faut ajouter un prix à peu près équivalent par processeur sur lequel vous souhaitez installer l'injecteur. Le contrôleur, lui, n'est pas facturé. Il est possible d'acheter les uns ou les autres de ces produits sans maintenance, donc sans payer un coût par an. Je vous invite à me contacter pour connaître ce prix dans votre cas particulier si vous le souhaitez. Néanmoins, compte tenu des évolutions à venir sur cette offre, je suggère fortement de ne pas l'acheter sans maintenance.

 Avant que vous ne posiez les questions, voici quelques précisions :

-       Les services Web sont testables par cet outil, mais aucun autre protocole que http/https (pour l'instant)

-       Il est très difficile de dire combien d’utilisateurs virtuels sont simulables par un processeur ou un PC. Nos docs officielles disent 1000, mais je préfère être plus prudent. Ca dépend vraiment de la config de vos machines et encore plus de la complexité des scénarios simulés. Cela dépend aussi de la complexité des pages et du nombre d'images, de composants qu'elles contiennent