Création d'un test simple

Le test QUnit suivant est tout ce qu'il y a de plus simple : il vérifie que 1==1 est vrai. Ce qui nous intéresse surtout ici, c'est l'inclusion du fichier inject.js de TestSwarm. Ce script indispensable envoie à la plate-forme les résultats une fois le test exécuté.

<!DOCTYPE html>
<html>
    <head>
        <title>Test simple</title>
        <link rel="stylesheet" href="http://code.jquery.com/qunit/qunit-git.css">
        <script type="text/javascript" src="http://code.jquery.com/qunit/qunit-git.js"></script>

        <!-- Remplacer par l'URL de TestSwarm -->
        <script type="text/javascript" src="http://localhost/testswarm/js/inject.js"></script>

        <script type="text/javascript">
			test("test égalité", function() {
				ok(1==1, "1 vaut 1" );
			});
		</script>
 
    </head>
    <body><div id="qunit"></div><div id="qunit-fixture"></body>
</html>

Gardez ce test à portée de main, nous l'utiliserons plus loin.

Création d'un projet dans TestSwarm

Dans TestSwarm, chaque projet correspond à un utilisateur. Pour créer un utilisateur, cliquez sur Signup sur la page d’accueil.

Une fois l'utilisateur créé, nous allons devoir récupérer sa clef d'authentification, qui nous sera nécessaire pour soumettre des tests. Malheureusement, cela n'est pas (pas encore?) faisable depuis l'interface web, et il faut la récupérer directement dans la table users de la base de données.

SELECT name, auth from `users`

testswarm3JPG.JPG

Soumission de notre premier job de test

L'interface web de TestSwarm ne permet pas directement de soumettre des jobs de tests. Heureusement, la soumission des jobs de tests se fait par une simple requête HTTP POST vers api.php?action=addjob. Il est donc aisé de créer votre propre script prenant en charge cette tâche.

Les paramètres HTTP sont les suivants :

  • authUsername : le nom d'utilisateur
  • authToken : la clef d'authentification
  • runMax : le nombre de tentatives maximum
  • jobName : le nom du job de test. Un job peut contenir plusieurs tests. On utilisera par exemple le numéro de révision SVN : rev1, rev2, rev3....
  • browserSets[] : les navigateurs à tester. Il est possible de passer plusieurs valeurs. Ici, on utilisera "default".
  • unUrls[] : les URLs des différents tests du projet
  • runNames[] : les noms des différents tests du projet

Voici un script Python très simple permettant de soumettre notre job de test :

# -*- coding: utf-8 -*-
import urllib, urllib2

url = 'http://localhost/testswarm/api.php?action=addjob'

data = urllib.urlencode( {
        'authUsername': 'projet1', 
        'authToken': '59aeb8b8154b9ceb56c3c5b2ac05f9f49f4a0d7c', 
        'runMax': '10',  
        'jobName': 'rev 1', 
        'browserSets[]': 'default',
        'runUrls[]': "http://localhost/tests/test-simple.html",
        'runNames[]': "test simple"
    })

request = urllib2.Request(url, data)
response = urllib2.urlopen(request)
print response.read()

Connecter des navigateurs

Avec le navigateur à connecter, rendez vous sur la page d'accueil de TestSwarm, entrez le username de votre choix, et cliquez sur "Join the swarm". testswarm4.JPG Le navigateur est maintenant contrôlé par TestSwarm et exécutera des tests au fur et à mesure de leur disponibilité: plus aucune intervention humaine n'est nécessaire. testswarm5.JPG

Visualisation des résultats

Sur la page d'accueil de TestSwarm, cliquez sur "projects" pour visualiser les résultats des tests. testswarm6.JPG Dans la colonne de gauche, un clic sur l'un des jobs permet d'afficher le détails des tests exécutés.

Conclusion

Voila pour cette introduction à TestSwarm. Cette plate-forme, bien qu'un peu longue à mettre en place, s'avère très prometteuse. De plus, l'arrivée prochaine d'un plugin Hudson devrait simplifier encore plus son utilisation.