1 |
fmichon |
2258 |
openMairie - Tests unitaires et fonctionnels |
2 |
|
|
============================================ |
3 |
fmichon |
1649 |
|
4 |
|
|
Installation |
5 |
fmichon |
2258 |
############ |
6 |
fmichon |
1649 |
|
7 |
fmichon |
2258 |
Pré-requis |
8 |
|
|
---------- |
9 |
fmichon |
1649 |
|
10 |
fmichon |
2258 |
Le lancement des tests est destiné aux développeurs de l'application, il est |
11 |
|
|
donc convenu que l'environnement de tests se déploit sur un poste de |
12 |
|
|
développement linux. Les commandes d'installation indiquées ici supposent |
13 |
|
|
quelques pré-requis (paquets systèmes) pour fonctionner. |
14 |
fmichon |
1649 |
|
15 |
fmichon |
2258 |
D'abord on désinstalle les paquets phpunit du système de paquets : :: |
16 |
fmichon |
1649 |
|
17 |
fmichon |
2258 |
sudo aptitude purge phpunit phpunit-selenium |
18 |
fmichon |
1649 |
|
19 |
fmichon |
2258 |
Ensuite on installe l'extension curl et le système pear : :: |
20 |
|
|
|
21 |
|
|
sudo aptitude install php5-curl php-pear |
22 |
fmichon |
1649 |
|
23 |
fmichon |
2258 |
Ensuite on met à jour le système pear : :: |
24 |
fmichon |
1649 |
|
25 |
fmichon |
2258 |
sudo pear channel-update pear.php.net |
26 |
|
|
sudo pear upgrade-all |
27 |
|
|
sudo pear channel-discover pear.phpunit.de |
28 |
|
|
|
29 |
|
|
|
30 |
|
|
PHPUnit |
31 |
|
|
------- |
32 |
|
|
|
33 |
|
|
=> Installation : Installer depuis le channel pear.phpunit.de : :: |
34 |
|
|
|
35 |
|
|
sudo pear install --force --alldeps phpunit/phpunit |
36 |
|
|
|
37 |
|
|
|
38 |
|
|
Selenium |
39 |
|
|
-------- |
40 |
|
|
|
41 |
|
|
Extension Selenium pour PHPUnit : |
42 |
|
|
|
43 |
|
|
=> Installation : Installer depuis le channel pear.phpunit.de : :: |
44 |
|
|
|
45 |
|
|
sudo pear install phpunit/PHPUnit_Selenium |
46 |
|
|
|
47 |
|
|
|
48 |
|
|
Selenium IDE (http://docs.seleniumhq.org/projects/ide/) : |
49 |
|
|
|
50 |
|
|
* Selenium IDE - Module complémentaire pour Firefox qui permet d'enregistrer, |
51 |
|
|
modifier et exécuter des tests Selenium. |
52 |
|
|
=> Téléchargement : http://docs.seleniumhq.org/download/ |
53 |
|
|
|
54 |
|
|
* Selenium IDE : PHP Formatter for PHPUnit_Extensions_Selenium2TestCase - Module |
55 |
|
|
complémentaire pour Firefox qui permet d'exporter les tests Selenium en PHP. |
56 |
|
|
=> Téléchargement : https://github.com/suzuki/PHP-Formatter-PHPUnit_Selenium2/raw/bba189eb27f68229cb0a99b6f591379276abbb9a/build/phpformatter%40zatsubun.com.xpi |
57 |
|
|
|
58 |
|
|
=> Installation : Il suffit de télécharger et d'installer les deux modules pour |
59 |
|
|
Firefox (fichier .xpi) listés ci-dessus et de redémarrer Firefox. |
60 |
|
|
|
61 |
|
|
|
62 |
|
|
Selenium Server : |
63 |
|
|
|
64 |
|
|
* Selenium Server - Serveur Selenium qui permet de jouer les tests fonctionnels. |
65 |
|
|
=> Téléchargement : http://docs.seleniumhq.org/download/ |
66 |
|
|
|
67 |
|
|
* WebDriver for Google Chrome - Extension pour le serveur Selenium qui permet de |
68 |
|
|
jouer les tests dans le navigateur Chrome. |
69 |
|
|
=> Téléchargement : http://code.google.com/p/chromedriver/downloads/list |
70 |
|
|
|
71 |
|
|
=> Installation : Il suffit de copier le fichier .jar ainsi que l'exécutable |
72 |
|
|
(fichier chromedriver) dans le dossier /opt/ par exemple puis d'exécuter la |
73 |
|
|
commande suivante en tant que root : |
74 |
|
|
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 |
75 |
|
|
|
76 |
|
|
|
77 |
fmichon |
1649 |
Utilisation |
78 |
fmichon |
2258 |
########### |
79 |
fmichon |
1649 |
|
80 |
fmichon |
2258 |
Pré-requis |
81 |
|
|
---------- |
82 |
fmichon |
1649 |
|
83 |
fmichon |
2258 |
Les tests doivent être joués dans un environnement balisé et reproductible à |
84 |
|
|
l'identique. Pour ce faire il est nécessaire avant chaque lancement de test, |
85 |
|
|
de dérouler une routine qui permet de mettre en place un environnement de tests. |
86 |
|
|
Un script permet de dérouler cette routine de manière automatisée : :: |
87 |
fmichon |
1649 |
|
88 |
fmichon |
2258 |
./init_testenv |
89 |
fmichon |
1649 |
|
90 |
fmichon |
2258 |
Ce script permet de : |
91 |
fmichon |
1649 |
|
92 |
fmichon |
2258 |
* supprimer la base de données |
93 |
|
|
* créer la base de données |
94 |
|
|
* initialiser la base de données grâce au script data/pgsql/install.sql |
95 |
|
|
* redémarrer apache pour prendre les traductions en compte |
96 |
|
|
* donner les droits à apache pour les dossiers dans lequel il peut écrire |
97 |
|
|
* faire un lien symbolique vers le dossier de l'applicatif pour que les tests |
98 |
|
|
en question dans le dossier /var/www/ |
99 |
fmichon |
1649 |
|
100 |
fmichon |
1693 |
|
101 |
fmichon |
2258 |
TestSuite |
102 |
|
|
--------- |
103 |
fmichon |
1693 |
|
104 |
fmichon |
2258 |
Lancer le test suite avec initialisation de l'environnement de tests |
105 |
nhaye |
1964 |
|
106 |
fmichon |
2258 |
./run_testsuite |
107 |
|
|
|
108 |
|
|
|
109 |
|
|
TestCase |
110 |
|
|
-------- |
111 |
|
|
|
112 |
|
|
Lancer un test case avec initialisation de l'environnement de tests |
113 |
|
|
|
114 |
|
|
./run_testcase testALancer.php |
115 |
|
|
|
116 |
|
|
|
117 |
|
|
|
118 |
|
|
Développement |
119 |
|
|
############# |
120 |
|
|
|
121 |
|
|
Il est prévu de consigner ici les bonnes pratiques et les consignes pour pour |
122 |
|
|
le développement des tests. |
123 |
|
|
|
124 |
fmichon |
1649 |
Convention de nommage |
125 |
|
|
--------------------- |
126 |
|
|
|
127 |
fmichon |
2258 |
* Un fichier de test par thème fonctionnel, une méthode par fonctionnalité. |
128 |
fmichon |
1649 |
* Convention de nommage : |
129 |
|
|
* des fichiers : testMonCasDutilisation.php |
130 |
fmichon |
2258 |
* des classes : MonCasDutilisation |
131 |
|
|
* des méthodes : test_01_titre_de_la_fonctionnalite |
132 |
fmichon |
1649 |
|
133 |
|
|
|
134 |
fmichon |
2258 |
Bonnes pratiques |
135 |
|
|
---------------- |
136 |
fmichon |
1649 |
|
137 |
fmichon |
2258 |
* Éviter d'utiliser les sélecteurs XPATH, les sélecteurs CSS ou par ID sont |
138 |
|
|
largement préférables. |
139 |
fmichon |
1649 |
|
140 |
|
|
|