Quelques "tips" pour les tests de charge dans Team Test
Vous savez certainement que les fichiers de test de charge utilisés par Visual Studio sont au format XML. Ce que vous ne savez peut être pas c’est qu’on a la possibilité de paramétrer certains aspects d’un test auquels nous n'avons pas accès graphiquement en modifiant « à la main » ces fichiers, directement dans l’XML.
NB : Pour modifier facilement le contenu XML d’un fichier de LoadTest dans Visual Studio, faire « Clic droit » sur l’élément dans l’explorateur de solutions puis « Open With » > « XML Editor ». Double cliquez sur l’élément dans l’explorateur de solutions pour ré-ouvrez le en mode graphique.
Globalement, un fichier XML de test de charge est structuré de la même manière que ce que l’on retrouve au niveau de l’interface graphique d’édition : en 3 sections (Scénarios, CountersSets, RunConfigurations).
Ce billet est une liste non exhaustive des petites modifications que l’on peut faire, et que je trouve utiles.
1) Adapter le Thinktime au niveau des scénarios de charge
Lorsque l’on utilise la notion « Thinktime » dans un test de charge, on a 2 modes disponibles :
- La distribution réelle, pour laquelle les agents vont simuler le temps de réflexion tel qu’il a été enregistré
- La distribution « normale » pour laquelle on aura un temps de réflexion légèrement varié à chaque requête.
Cette légère variation du mode de distribution normale est définie dans le fichier de description XML. On retrouvera donc un nœud ThinkProfile dans lequel on va pouvoir modifier le maximum de variation qu’on pourra avoir sur chaque thinktime enregistré.
<ThinkProfile Value="0.2" Pattern="NormalDistribution" />
Par défaut la valeur est de 0.2 secondes, a vous de le modifier selon vos besoins.
2) Ajouter un nouveau type de navigateur
Qu’est ce qu’un type de navigateur à simuler ? Tout simplement un ensemble de variables d’entête http à envoyer au serveur.
Si on s’intéresse à celle d’Internet Explorer 7, on peut voir ceci :
<BrowserProfile Percentage="100">
<Browser Name="Internet Explorer 7.0">
<Headers>
<Header Name="User-Agent" Value="Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" />
<Header Name="Accept" Value="*/*" />
<Header Name="Accept-Language" Value="{{$IEAcceptLanguage}}" />
<Header Name="Accept-Encoding" Value="GZIP" />
</Headers>
</Browser>
</BrowserProfile>
On peut donc très facilement personnaliser un type de navigateur en simulant un Internet Explorer 7 qui n’accepterait que le français en langage. La variable de contexte {{$IEAcceptLanguage}} est liée automatiquement à la configuration de votre navigateur local. On peut donc très bien imaginer modifier ceci et saisir en dur ce que l’on veut :
<Header Name="Accept-Language" Value="fr-FR" />
On peut bien entendu imaginer tout autre type de modification, voir l’ajout d’un type de navigateur non proposé par défaut.
3) Ajouter un nouveau type de réseau
De la même manière que dans le cas du type de navigateur simulé, le type de réseau est modifiable directement via le fichier XML.
Qu’est-ce qu’un type de réseau ? Tout simplement une vitesse de transfert.
<NetworkProfile Percentage="100">
<Network Name="LAN" BandwidthInKbps="0" />
</NetworkProfile>
On remarque ici que 0 signifie illimité. On peut donc très facilement modifier cette valeur pour obtenir exactement le débit que l’on veut simuler.
4) Sauvegarder un set de compteurs
Une opération récurrente et assez rébarbative lorsque l’on effectue des tests de charge est de créer les sets de compteurs que l’on va vouloir suivre tout au long du test. D’autant plus que ces sets sont très souvent les mêmes en fonction du type d’application que l’on charge.
Via l’édition XML pas de problème ! On peut très facilement sauvegarder dans un fichier texte ses sets de compteurs et les réutiliser dans n’importe quel autre test en les copiant directement dans l’XML.
<CounterSet Name="IIS" CounterSetType="IIS">
<CounterCategories>
<CounterCategory Name="Network Interface">
<Counters>
<Counter Name="Bytes Received/sec" />
<Counter Name="Bytes Sent/sec" />
</Counters>
<Instances>
<Instance Name="*" />
</Instances>
</CounterCategory>
</CounterCategories>
<DefaultCountersForAutomaticGraphs>
<DefaultCounter CategoryName=" Network Interface " CounterName="Available MBytes" InstanceName="" GraphName="" />
</DefaultCountersForAutomaticGraphs>
</CounterSet>
On remarque au passage que c’est à cet endroit que sont définis les graphiques par défaut, donc si vous sauvegardez un set de compteurs, vous sauvegardez sa présentation également !
On peut évidemment modifier d’autres paramètres directement dans le fichier XML mais la plupart de ces modifications peuvent également être faites via l’interface graphique.
Une dernière chose : Il existe des templates par défaut qui sont ceux présents lors de la création d’un nouveau test de charge, notamment pour les sets de compteurs et les types de navigateurs/réseaux. Vous pouvez facilement modifier ces templates en modifiant les fichiers contenant les « morceaux » d’XML. Ils sont situés ici : <root>:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\Templates\LoadTest dans les répertoires « Browsers », « CounterSets », « Networks ».
En espérant que tout ceci pourra vous être utile ! :-)
.Dispose() ;
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :