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`
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".
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.
Visualisation des résultats
Sur la page d'accueil de TestSwarm, cliquez sur "projects" pour visualiser les résultats des tests.
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.
Commentaires
Je me permet de commenter ce vieux post pour dire qu'il y a bien une interface pour soumettre des jobs de test.
En faite vous l'avez dans le lien avec lequel vous envoyez des requetes POST.
ex : http://localhost/testswarm/addjob
Je l'ai trouvé complètement par hasard alors que je voulais intégrer une page qui permettait justement de soumettre des jobs de tests ^^, et au lieu de tomber sur la mienne, je suis tomber la dessus. :)
J'espere que cela pourra en aider plus d'un !
Pour information j'utilise testswarm sur un serveur externe.