openMairie - Tests unitaires et fonctionnels ============================================ Installation ############ Pré-requis ---------- Le lancement des tests est destiné aux développeurs de l'application, il est donc convenu que l'environnement de tests se déploit sur un poste de développement linux. Les commandes d'installation indiquées ici supposent quelques pré-requis (paquets systèmes) pour fonctionner. D'abord on désinstalle les paquets phpunit du système de paquets : :: sudo aptitude purge phpunit phpunit-selenium Ensuite on installe l'extension curl et le système pear : :: sudo aptitude install php5-curl php-pear Ensuite on met à jour le système pear : :: sudo pear channel-update pear.php.net sudo pear upgrade-all sudo pear channel-discover pear.phpunit.de PHPUnit ------- => Installation : Installer depuis le channel pear.phpunit.de : :: sudo pear install --force --alldeps phpunit/phpunit Selenium -------- Extension Selenium pour PHPUnit : => Installation : Installer depuis le channel pear.phpunit.de : :: sudo pear install phpunit/PHPUnit_Selenium Selenium IDE (http://docs.seleniumhq.org/projects/ide/) : * Selenium IDE - Module complémentaire pour Firefox qui permet d'enregistrer, modifier et exécuter des tests Selenium. => Téléchargement : http://docs.seleniumhq.org/download/ * Selenium IDE : PHP Formatter for PHPUnit_Extensions_Selenium2TestCase - Module complémentaire pour Firefox qui permet d'exporter les tests Selenium en PHP. => Téléchargement : https://github.com/suzuki/PHP-Formatter-PHPUnit_Selenium2/raw/bba189eb27f68229cb0a99b6f591379276abbb9a/build/phpformatter%40zatsubun.com.xpi => Installation : Il suffit de télécharger et d'installer les deux modules pour Firefox (fichier .xpi) listés ci-dessus et de redémarrer Firefox. Selenium Server : * Selenium Server - Serveur Selenium qui permet de jouer les tests fonctionnels. => Téléchargement : http://docs.seleniumhq.org/download/ * WebDriver for Google Chrome - Extension pour le serveur Selenium qui permet de jouer les tests dans le navigateur Chrome. => Téléchargement : http://code.google.com/p/chromedriver/downloads/list => Installation : Il suffit de copier le fichier .jar ainsi que l'exécutable (fichier chromedriver) dans le dossier /opt/ par exemple puis d'exécuter la commande suivante en tant que root : echo "java -jar /opt/selenium-server-standalone-X.X.X.jar -Dwebdriver.chrome.driver=/opt/chromedriver" > /usr/local/bin/selenium-server && chmod +x /usr/local/bin/selenium-server Utilisation ########### Pré-requis ---------- Les tests doivent être joués dans un environnement balisé et reproductible à l'identique. Pour ce faire il est nécessaire avant chaque lancement de test, de dérouler une routine qui permet de mettre en place un environnement de tests. Un script permet de dérouler cette routine de manière automatisée : :: ./init_testenv Ce script permet de : * supprimer la base de données * créer la base de données * initialiser la base de données grâce au script data/pgsql/install.sql * redémarrer apache pour prendre les traductions en compte * donner les droits à apache pour les dossiers dans lequel il peut écrire * faire un lien symbolique vers le dossier de l'applicatif pour que les tests en question dans le dossier /var/www/ TestSuite --------- Lancer le test suite avec initialisation de l'environnement de tests ./run_testsuite TestCase -------- Lancer un test case avec initialisation de l'environnement de tests ./run_testcase testALancer.php Développement ############# Il est prévu de consigner ici les bonnes pratiques et les consignes pour pour le développement des tests. Convention de nommage --------------------- * Un fichier de test par thème fonctionnel, une méthode par fonctionnalité. * Convention de nommage : * des fichiers : testMonCasDutilisation.php * des classes : MonCasDutilisation * des méthodes : test_01_titre_de_la_fonctionnalite Bonnes pratiques ---------------- * Éviter d'utiliser les sélecteurs XPATH, les sélecteurs CSS ou par ID sont largement préférables.