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 |
fmichon |
1693 |
* ajouter le fichier .php au bon endroit dans le fichier config.xml pour |
35 |
|
|
qu'il soit jouer dans la suite |
36 |
fmichon |
1649 |
* executer : phpunit testMyUseCase.php |
37 |
|
|
|
38 |
|
|
Lorsque qu'on effectue des actions redondantes, les rajouter dans le fichier base.php. |
39 |
|
|
|
40 |
fmichon |
1693 |
Pour jouer la suite il suffit de lancer : :: |
41 |
fmichon |
1649 |
|
42 |
fmichon |
1693 |
phpunit -c config.xml |
43 |
|
|
|
44 |
|
|
|
45 |
fmichon |
1649 |
Convention de nommage |
46 |
|
|
--------------------- |
47 |
|
|
|
48 |
|
|
* Un ficher par ticket fonctionnel, une méthode par fonctionnalité |
49 |
|
|
* Convention de nommage : |
50 |
|
|
* des fichiers : testMonCasDutilisation.php |
51 |
|
|
* des classes : MonCasDutilisation |
52 |
|
|
|
53 |
|
|
|
54 |
|
|
|
55 |
|
|
API |
56 |
|
|
--- |
57 |
|
|
|
58 |
|
|
La structure des tests respecte l'API de PHPUnit (setUp, testMyMethod1, testMyMethod2, [...], tearDown). |
59 |
|
|
|
60 |
|
|
|
61 |
|
|
Bonnes pratiques (à compléter au fur et à mesure) |
62 |
|
|
------------------------------------------------- |
63 |
|
|
|
64 |
|
|
* Privilégier le $this->clickAndWait plutôt qu'un $this->click puis un $this->waitPageToLoad('nnn') |
65 |
|
|
* Pour simuler un clic sur un lien dont la valeur est unique dans la page : $this->clickAndWait("link=Mon lien") |
66 |
|
|
* Pour simuler un clic sur un bouton (input) : $this->clickAndWait("//input[@value='Modifier']") |
67 |
|
|
* 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. |
68 |
|
|
* 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); |
69 |
|
|
par exemple tester l'attribut type de l'input d'id=pwd : $this->verifyAttribute('//input[@id="pwd"]@type', 'hidden'); |
70 |
|
|
|
71 |
|
|
|