Outils d'automatisation de tests d'interfaces web

Définitions et objectifs

Constat

Un des premiers constat que l'on puisse faire lorsque l'on parle de test dans le monde du développement, c'est que majoritairement les développeurs savent qu'ils doivent mettre en places des campagnes de tests pour valider la qualité et le bon fonctionnement de leur code.

Cependant il s'avère que les tests de la partie "expérience utilisateur" au sein d'un client léger n'est que très rarement testée.

C'est donc très majoritairement des tests du Contrôleur (code) qui ont lieu et que très rarement des tests de la Vue (Interface Web).

Objectifs

Contrairement à ce que pourrait laisser penser le titre de ce site web "interface graphique", ce n'est en aucun cas des tests du rendu graphique que nous allons tester (couleurs, placements des éléments dans la page web, ...)

Ce que nous allons vouloir, c'est : "Simuler l'interraction de(s) l'utilisateur(s) au travers de tests fonctionnels".

En d'autres termes, nous allons vouloir vérifier que l'interraction de l'utilisateur avec l'interface web réponde bien au cahier des charges fonctionnels du projet dans lequel les tests sont mis en place. Nous allons également vouloir vérifier que le contenu des pages et les liens entre celles-ci soient cohérents

Les tests...

Définissons maintenant les différents aspects des "tests"

Automatisation de tests

L'automatisation des tests, c'est l'enregistrement et la lecture des tests.
Exemples de logiciels : Selenium / CubicTest / Watir / AutoIT / Canoo / WebTest

Gestion des tests

La gestion des tests, c'est tout ce qui va permettre à l'équipe projet, développeurs et manager, d'avoir un retour sur les résultats d'exécutions des tests automatisés.
Exemples de logiciels : Selenium / Outils borland / Salome / TestLink / Fitnesse / Outil HP / Twist

Tests de charge

Les tests de charge permettent de simuler l'utilisation simultanée de l'interface web par une multitude d'utilisateur.
Exemples de logiciels : Grinder / OpenSta / JMeter

Model Checking

Qu'est ce que c'est ? Wikipédia dit : Vérification algorithmique d'un modèle donné, du système lui-même ou d'une abstraction du système, pour savoir si il satisfait une spécification, souvent formulée en termes de logique temporelle.
Cet aspect n'étant pas traité dans ce site je vous invite à vous renseigner plus amplement en utilisant votre moteur de recherche préféré.
Exemples de logiciels : NModel / Smart testing / MaTeLo

Qui?

Qui est concerné par l'automatisation des tests d'interface web? Principalement deux profils.

Analystes programmeur

Les analystes programmeurs sont en charge d'assurer la conformité des développements par rapport aux besoins exprimés.

Développeurs et équipes d'assurance qualité

Les développeurs et équipes d'assurance qualité sont en charge de valider le bon fonctionnement de l'application et le passage en production.

Quand?

Deux condition sont nécessaires pour pouvoir mettre en des tests automatisés :

Si une étape d'un test ne peut pas être automatisé, alors c'est le contenu de la suite de tests qu'il faut redéfinir.

Comment?

La mise en place des tests dans un projet comprend 5 étapes :

  1. Lecture des besoins & spécifications.
  2. Il est indispensable de s'imprégner du context du projet pour savoir ce qu'il sera nécessaire de tester.

  3. Définition du périmètre de test.
  4. Dans cette étape, il faut définir ce qui sera pertinent de tester et ce qui ne l'est pas. Quelle sera la surface du projet recouverte par les tests.

  5. Rédaction des cas de tests.
  6. Maintenant, il faut rédiger en français le déroulement de tous les cas de test et des suites de tests. (Exemple : charger la page, vérifier la présence des 4 liens vers les sous parties du sites ainsi que la présence et la validité des informations affichées dans la page...). Cela peut être le travail du responsable du projet ou des responsables qualités etc...

  7. Enregistrement des tests dans l'outil.
  8. Maintenant il faut utiliser un outil pour enregistrer les tests. Cette tâche est du ressort des développeurs.

  9. Exécution des tests.
  10. La dernière étape est le lancement des tests qui ont été précedemment enregistrés. Cela peut être fait soit manuellement soit de manière automatique avec un outil ou un cron par exemple

Conséquences

Il existe un certain nombre de conséquences à la mise en place de tests automatisés :

Problèmatiques

La première problèmatique qui se pose est : Ce qu'il faut tester. En effet, nous pouvons envisager de tester différents types d'éléments dans la page comme pas exemple : Contenus, Liens , Fonctions, Eléments dynamiques, Ajax...


Les deuxième problèmatique est la façon d'obtenir les résultats


La dernière problèmatique concerne la localisation des éléments à tester.

Intégration continue

Pour inclure l'automatisation des tests d'interface web dans un processuss d'intégration continue, il suffit d'écrire des tests dans le format voulu et adapté à l'outil d'intégration continue.

Exemple : Selenium - Java (Junit) - Eclipse - Hudson

Exemple avec ant + Selenium + Hudson sur le site Clever-Age.com