Selenium et Yii

Contexte

Il s’agissait de développer des tests fonctionnels automatiques pour une application web développée grâce au framework PHP Yii.

L’application est composée, pour l’essentiel, d’écrans de type « CRUD », c’est à dire permettant la création, la modification et la visualisation de données.

Les tests sont développés en même temps que le code, chaque livraison d’un module ou d’un écran étant accompagné d’un jeu de tests fonctionnels, destinés surtout à valider les règles de gestion associées à la création ou la modification des données.

Les tests servent donc à valider les développements de manière unitaire, mais sont également utilisés comme tests de non régression.

Environnement technique

Le poste de développement type fonctionne avec l’OS Ubuntu, l’IDE Netbeans et l’outil de modélisation MySQL Workbench.

Le serveur d’intégration est un serveur Ubuntu virtualisé, faisant office de serveur SVN et serveur d’intégration continue grâce à PHPUnderControl (migré ensuite sous Jenkins).

Pour l’exécution des tests fonctionnels, des machines virtuelles dédiées ont été installées, avec différents OS (Ubuntu, Windows XP, Windows 7) et différents navigateurs (IE6, IE8, Firefox, Safari, Chrome, Opera).

On utilise la version 1.0 de Selenium.

Mise en place

Le framework Yii intègre nativement la possibilité de créer des tests fonctionnels avec Selenium.

La mise en place de l’automatisation des tests est donc relativement simple et standardisée.

D’autre part, l’application est très uniforme et il a donc été facile de factoriser les procédures de test pour accélérer la rédaction des tests et faciliter leur maintenabilité.

Toutefois, il a fallu surmonter quelques difficultés techniques, surtout pour la mise en place du serveur d’intégration continue et l’utilisation de PHPUnit pour lancer les tests fonctionnels.

Résultats

En phase de maintenance, les tests fonctionnels sont exécutés à chaque modification du code.

Les régressions sont détectés immédiatement, et la mise à jour des tests fonctionnels se révèle, dans le contexte de ce projet, très peu coûteuse (que ce soit pour une correction ou une évolution).

Le risque lié à la maintenance est donc extrêmement réduit. Quelque soit l’impact de la modification, quelque soit la personne qui la réalise, les tests fonctionnels automatisés sont la garantie que la qualité de l’application est maintenue.

Il faut par contre s’assurer que les tests sont bien maintenus, comme le code. Si le test des évolutions n’est pas automatisé, ou si les tests qui échouent sont simplement supprimés, le système peut rapidement perdre de son efficacité et le coût de la maintenance augmenter brutalement.

Leave A Comment