Effectuer des tests de montée en charge avec Tsung (Partie 2 – Configuration)

13 fév

Tsung, test de montée en charge

Cet article est la seconde partie d’un tutoriel en trois phases, consacré à Tsung. Après nous être intéressé à l’installation de Tsung, nous allons dans cette seconde partie détailler la configuration de l’outil (tout en restant dans le cadre du test d’une application web) ainsi que l’enregistrement de scénarios.

Sommaire du tutoriel

  1. Effectuer des tests de montée en charge avec Tsung (Partie 1 – Installation)
  2. Effectuer des tests de montée en charge avec Tsung (Partie 2 – Configuration)
  3. Effectuer des tests de montée en charge avec Tsung (Partie 3 – Le test)

1 – Copier un exemple basique dans ~/.tsung

Tsung propose plusieurs fichiers d’exemples de configuration, et nous allons ici en prendre un simple afin de l’adapter à notre application. Il faut tout d’abord vérifier l’existence du répertoire ~/.tsung qui est l’emplacement des fichiers de configuration et de journaux de Tsung.

Mkdir ~/.tsung

Copier ensuite le fichier d’exemple.

cp  /usr/share/doc/tsung/examples/http_simple.xml ~/.tsung/tsung.xml

2 – Enregistrement d’un scénario

A cette étape nous allons utiliser la commande « Tsung-recorder » pour enregistrer un scénario de navigation, c’est-à-dire l’activité d’un internaute sur notre application. Cette étape est néanmoins optionnelle puisqu’il sera possible d’écrire notre scénario directement dans le fichier de configuration de Tsung (un scénario peut être juste le chargement d’une page, un fichier etc.).

Pour lancer l’enregistrement d’un scénario il suffit de taper la commande :

tsung-recorder start

Tsung-recorder lancera un proxy qui écoutera sur le port 8090 et enregistrera la navigation dans un fichier. Il suffira ensuite de paramétrer un navigateur internet afin qu’il utilise ce proxy.

Tsung recorder nous indiquera aussi le nom du fichier généré.

Tsung recorder

L’étape suivante est de lancer le navigateur (ici Firefox) installé sur le serveur. Si vous ne possédez pas d’interface graphique sur le serveur, il faudra rediriger la sortie graphique avec l’option –X de ssh.

Pour ce faire, il faut tout d’abord installer les paquets X Window.

yum groupinstall 'X Window System'

Ouvrir une nouvelle session SSH.

ssh –X utilisateur@serveur

Puis lancer Firefox via la commande.

Firefox

Votre navigateur doit alors s’ouvrir. Il suffit maintenant de configurer le proxy et de naviguer sur l’application que l’on souhaite tester.

Tsung recorder

Une fois terminé, taper la commande suivante pour arrêter l’enregistrement :

tsung-recorder stop

Nous pouvons visualiser l’enregistrement en ouvrant le fichier :

cat  ~/.tsung/tsung_recorder20130201-2335.xml

Voici un extrait du contenu :

<request><http url='/index.html' version='1.1' method='GET'></http></request>
<request><http url='/contact.html' version='1.1' method='GET'></http></request>

3 – Configuration du test

Maintenant que tout est installé et que notre scénario est enregistré, nous allons éditer la configuration de notre test afin de renseigner tous les paramètres de la montée en charge. Pour cela il faut éditer le fichier tsung.xml

Dans le XML de configuration, quatre nœuds vont nous intéresser :

  • <Clients> : Il s’agit de définir les clients utilisés par Tsung. Il est possible de définir les IP, nombre d’utilisateurs maximum, nombre de processeurs etc.
  • <Servers> : Défini le serveur cible (notre plateforme à tester).
  • <Load> : Défini la/les phase(s) d’arrivée(s) de nos visiteurs, c’est-à-dire les étapes de notre montée en charge. Le nœud Load est donc composé d’un ou plusieurs nœuds arrivalphase.
    • <Arrivalphase> : Contient les détails d’une phase d’arrivée : durée, nombre d’utilisateurs à simuler, fréquence d’arrivée des visiteurs …
    • Généralement, plusieurs phases seront définies en accentuant la montée en charge, jusqu’à arriver à un stress intensif.
  • <Sessions> : Contient les scénarios d’utilisation possible. Chaque scénario équivaut à un nœud « Session », et est composé de « Request ». A noter qu’il est possible de définir des probabilités pour les scénarios (le total des probabilités doit toujours être égal à 100).
    • Les boucles : permettent d’augmenter le nombre de requêtes à effectuer sur l’application. Tsung nous permet de boucler sur les balises <request>, via l’utilisation de <For>
    • <for from= »1″ to= »10″ var= »i »><request>…</request></for> : Pour boucler 10 fois sur les <Request>, de façon à générer encore plus de requêtes sur notre plateforme.

Maintenant que nous avons présenté rapidement les principaux points du fichier de configuration, nous allons passer à l’édition. Pour ce faire, il suffit d’ouvrir le fichier ~/.tsung/tsung.xml, et de le modifier afin de créer la configuration de test idéale pour votre architecture, vos besoins, etc.

vi ~/.tsung/tsung.xml

Voici un exemple de fichier XML :

<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd">
<tsung loglevel="notice" version="1.0">

	<!-- Configuration du client -->
	<clients>
		<client host="localhost" use_controller_vm="true"/>
	</clients>

	<!-- Configuration du serveur -->
	<servers>
		<server host="192.168.1.11" port="80" type="tcp"></server>
	</servers>

	<!-- phases d'arrivée, 3 paliers de 10 minutes où l'on augmente la fréquence d'arrivée de 1 puis 10 puis 30 visiteurs par seconde -->
    <load>
        <arrivalphase phase="1" duration="10" unit="minute">
            <users arrivalrate="1" unit="second"></users>
        </arrivalphase>
        <arrivalphase phase="2" duration="10" unit="minute">
            <users arrivalrate="10" unit="second"></users>
        </arrivalphase>
        <arrivalphase phase="3" duration="10" unit="minute">
            <users arrivalrate="30" unit="second"></users>
        </arrivalphase>
    </load>

	<!-- Les scénarios -->
	<sessions>
		<!-- Scénarios 1 avec 70% de probabilité, l'internaute charge successivement 3 pages -->
		<session name="scenario1" probability="70" type="ts_http">
			<request><http url='/page1.html' version='1.1' method='GET'></http></request>
			<request><http url='/page2.html' version='1.1' method='GET'></http></request>
			<request><http url='/page3.html' version='1.1' method='GET'></http></request>
		</session>
		<!-- Scénarios 2 avec 30% de probabilité, l'internaute charge 10 fois la page 1 -->
		<session name="scenario2" probability="30" type="ts_http">
			<for from="1" to="10" var="i">
				<request><http url='/page1.html' version='1.1' method='GET'></http></request>
			</for>
		</session>
	</sessions>
</tsung>

Dans la troisième et dernière partie de ce tutoriel nous verrons comment lancer le test de montée en charge et générer un rapport.

Commentaires clos.