1 |
fmichon |
1649 |
Tests fonctionnels |
2 |
|
|
================== |
3 |
|
|
|
4 |
|
|
Installation |
5 |
|
|
------------ |
6 |
|
|
|
7 |
|
|
Pour l'enregistrement des tests depuis Firefox, les extensions suivantes doivent |
8 |
|
|
être installées : |
9 |
|
|
|
10 |
|
|
* Selenium IDE |
11 |
|
|
* Selenium IDE : PHP Formatters |
12 |
|
|
|
13 |
|
|
Pour rejouer les tests en mode autonome : |
14 |
|
|
|
15 |
|
|
Depuis les dépôts |
16 |
|
|
* phpunit |
17 |
|
|
* phpunit-selenium |
18 |
|
|
|
19 |
|
|
A installer manuellement |
20 |
|
|
* Selenium-server : depuis www.seleniumhq.org |
21 |
|
|
* copier le .jar dans /opt |
22 |
|
|
* depuis /usr/local/bin : echo "java -jar /opt/selenium-server-standalone-X.X.X.jar" > selenium-server && chmod +x selenium-server |
23 |
|
|
|
24 |
|
|
|
25 |
|
|
Utilisation |
26 |
|
|
----------- |
27 |
|
|
|
28 |
|
|
Enregistrer son test et l'exporter en php, ou étendre la classe BaseTestCase |
29 |
|
|
depuis base.php. |
30 |
|
|
|
31 |
|
|
Pour le rejouer : |
32 |
|
|
|
33 |
|
|
* lancer selenium-server |
34 |
|
|
* executer : phpunit testMyUseCase.php |
35 |
|
|
|
36 |
|
|
Lorsque qu'on effectue des actions redondantes, les rajouter dans le fichier base.php. |
37 |
|
|
|
38 |
|
|
|
39 |
|
|
Convention de nommage |
40 |
|
|
--------------------- |
41 |
|
|
|
42 |
|
|
* Un ficher par ticket fonctionnel, une méthode par fonctionnalité |
43 |
|
|
* Convention de nommage : |
44 |
|
|
* des fichiers : testMonCasDutilisation.php |
45 |
|
|
* des classes : MonCasDutilisation |
46 |
|
|
|
47 |
|
|
|
48 |
|
|
Exemple |
49 |
|
|
------- |
50 |
|
|
|
51 |
|
|
Regarder la structure de testConnexionAdmin.php |
52 |
|
|
|
53 |
|
|
|
54 |
|
|
API |
55 |
|
|
--- |
56 |
|
|
|
57 |
|
|
La structure des tests respecte l'API de PHPUnit (setUp, testMyMethod1, testMyMethod2, [...], tearDown). |
58 |
|
|
|
59 |
|
|
|
60 |
|
|
Bonnes pratiques (à compléter au fur et à mesure) |
61 |
|
|
------------------------------------------------- |
62 |
|
|
|
63 |
|
|
* Privilégier le $this->clickAndWait plutôt qu'un $this->click puis un $this->waitPageToLoad('nnn') |
64 |
|
|
* Pour simuler un clic sur un lien dont la valeur est unique dans la page : $this->clickAndWait("link=Mon lien") |
65 |
|
|
* Pour simuler un clic sur un bouton (input) : $this->clickAndWait("//input[@value='Modifier']") |
66 |
|
|
* Si la commande $this->type() ne fonctionne pas sur un champ, il faut verifier le maxlenght et le size de l'input. Si les attributs sont à -1, utiliser les function setMax et setTaille de la class pour changer les valeurs. |
67 |
|
|
* Pour tester l'attribut d'un élèment : $this->verifyAttribute('//Mon élèment[@attribut pour reconnaitre="valeur attr"]@Attribut à tester', 'valeur de l'attribut à tester); |
68 |
|
|
par exemple tester l'attribut type de l'input d'id=pwd : $this->verifyAttribute('//input[@id="pwd"]@type', 'hidden'); |
69 |
|
|
|
70 |
|
|
|