N'hésitez pas à me le signaler si nécessaire via le formulaire de contact.
Afin de suivre le bon déroulement de vos projets, il est important de pouvoir tester de manière régulière que votre applications fonctionne bien.
Ceci peut être réalisé via la mise en place de tests unitaires et fonctionnels, d’analyse de code etc…
Pour suivre cela de manière optimale, la mise en place d’une plateforme d’intégration continue est la suite logique de l’évolution de votre projet dès lors qu’il atteint une taille importante, ou qu’il comporte de nombreuses fonctionnalités spécifiques.
Il existe plusieurs plateforme pour réaliser cela, mais je vais me baser sur la plus connue : Jenkins (ex Hudson )
L’objectif à la fin de ce guide est d’avoir une plateforme de tests fonctionnels opérationnelle.
Celle ci-sera basée sur phpunit et selenium et firefox en mode headless
La procédure étant assez longue, ce sujet va être séparé en 2 articles :
– Installation des éléments nécessaires aux tests fonctionnels
– Installation et configuration de jenkins pour l’exécution des tests fonctionnels
Installation des éléments nécessaires aux tests fonctionnels.
( Nous partons du principe que la plateforme lamp est déjà installée sur votre serveur, ainsi que git )
Phpunit
PHPUnit est un framework de tests unitaires open source dédié au langage de programmation PHP. Créé par Sebastian Bergmann, il intègre les concepts communs aux bibliothèques de tests unitaires xUnit.
#Téléchargement de phpunit wget https://phar.phpunit.de/phpunit.phar #Droits d'éxécution sur le fichier chmod +x phunit.phar #Déplacement dans les binaires locaux sudo mv phpunit.phar /usr/local/bin/phpunit |
Pour vérifier que Phpunit est fonctionnel, saisissez la commande suivante :
phpunit --version |
Ceci doit vous afficher :
PHPUnit 4.5.0 by Sebastian Bergmann and contributors.
Java
Si java n’est pas encore installé sur votre poste vous pouvez l’installer via la commande suivante :
sudo apt-get install default-jdk |
Selenium
Selenium est un outil d’automatisation de tests navigateurs, il va nous permettre simuler les comportements utilisateurs.
Télécharger la dernière version du serveur selenium depuis la page http://selenium-release.storage.googleapis.com/index.html
Actuellement la dernière version est la version 2.45.0
wget http://selenium-release.storage.googleapis.com/2.45/selenium-server-standalone-2.45.0.jar #droits d'exécution chmod +x selenium-server-standalone-2.45.0.jar #déplacement dans les binaires mv selenium-server-standalone-2.45.0.jar /usr/local/bin/selenium-server-standalone-2.45.0.jar |
Firefox
Il est nécessaire d’avoir un navigateur sur votre serveur, pour que Selenium puisse interagir avec les pages web souhaitées, ce sera le rôle de firefox.
Selenim gère de manière native firefox, mais il est également possible d’utiliser chrome, ou même internet explorer ( sur les plateforme windows )
sudo apt-get install firefox |
Xvfb
Ubuntu server, ne disposant pas d’interface graphique, il va être nécessaire d’installer Xvfb qui va permettre de lancer une application graphique sans serveur X
sudo apt-get install xvfb |
Tests de notre installation
Les outils nécessaires sont à présents installé sur le serveur.
Nous allons donc tester que tout fonctionne correctement.
Pour ce la nous vous pouvez télécharger le projet test_phpunit_selenium via la commande suivante
git clone https://github.com/nenes25/phpunit_selenium_sample.git test_phpunit_selenium/ |
Rendez-vous dans le dossier test_phpunit_selenium/ et exécuter la commande
phpunit BasicTest.php |
Si le résultat suivant apparait, c’est que phpunit est opérationnel
. Time: 236 ms, Memory: 2.75Mb OK (1 test, 5 assertions) |
Passons aux tests avec selenium
Pour commencer il faut éxécuter xvfb pour déterminer un écran d’affichage
sudo /usr/bin/Xvfb :99 -ac -screen 0 1024x768x8 & export DISPLAY=:99 |
Il faut ensuite lancer le serveur selenium via la commande suivante
java -jar /usr/local/bin/selenium-server-standalone-2.45.0.jar & |
Puis lancer le test
phpunit SeleniumTest.php |
Si le résultat est le suivant, tout fonctionne bien 🙂
PHPUnit 4.5.0 by Sebastian Bergmann and contributors. .F Time: 14.01 seconds, Memory: 3.50Mb There was 1 failure: 1) SeleniumTest::testTitleKo Failed asserting that two strings are equal. --- Expected +++ Actual @@ @@ -'Wrong Title' +'Google' #path specifique au fichier de test /home/jenkins/public_html/test_phpunit_selenium/SeleniumTest.php:28 FAILURES! Tests: 2, Assertions: 2, Failures: 1. |
Les bases de notre plateforme d’intégration continue sont en place, la prochaine étape sera d’installer et de configurer jenkins pour lancer ces tests automatiquement à la fréquence souhaite.