Test Automatique d’Application Web

Encadrants : 

Occurrences : 

2019

Nombre d'étudiants minimum: 

2

Nombre d'étudiants maximum: 

3

Nombre d'instances : 

1

Le but de ce projet est de créer un système de test d'application web, qui pourra être utilisé à des fins de correction automatique de TP de dev Web.

Scénario

Une application web, c'est une page (ou plusieurs) HTML avec des ressources JS, images, CSS, etc, du coté du client, plus un serveur qui "nourrit" cette page en information nouvelle en fonction des actions de l'utilisateur.

Pour tester une telle application, il faut entrer du texte dans des champs, cliquer sur des boutons, choisir dans des listes, puis vérifier que les changement de la page sont les bons. Sur le serveur, il faut vérifier que les ordres reçus sont pertinents et que la réponse est correcte.

Le tout fonctionne dans un environnement Web, navigateur, serveur de l'application web, et serveur de test. Tout ceci fonctionne de manière asynchrone et dans un environnement sécurisé.

Je souhaite écrire un test de l'application web:

  • lancer une page depuis le navigateur
  • donner une liste d'actions sur la page
  • vérifier que l'ordre envoyé par la page au serveur est correct
  • vérifier que la réponse du serveur est correcte
  • vérifier que les modifications de la page sont correctes

Pendant l'exécution du test, je peux voir la progression et les messages de la console du serveur de l'application web.

Je peux définir une liste de tests à exécuter.

Elements à implémenter

La liste est volontairement longue, nous ferons des choix.

GRADER1:

  • définition du format 1 de la description du test
  • créer un premier prototype de tester qui permet de:
    • charger une page "maitresse" et la connecter au testeur avec WebSocket, incluant un iframe qui fera tourner l'application web
    • charger un serveur et le connecter au testeur
    • afficher ce qui se passe quand l'utilisateur agit sur la page, c'est à dire agreger les infos de la console du serveur, les actions utilis

GRADER2:

  • extension du format pour
    • définir les actions utilisateurs
    • définir le séquencement temporel
  • créer GRADER2

GRADER3:

  • extension du format pour
    • définir les tests à faire coté client
    • définir les tests à faire coté serveur
  • créer GRADER3

GRADER4:

  • extension du format pour séquencer des tests, et donner un poids différent à chaque test
  • créer GRADER 4
    • ajouter une page de bilan

Technologies à mettre en oeuvre

Le serveur peut être en node.js/npm ou en python/pip. Toute bibliothèque npm ou pip libre est utilisable.

De toute façon, il faut apprendre JavaScript, qui est nécessaire dans le navigateur. Sur le serveur, selon l'option choisie, ce sera JS ou python. Il faut aussi apprendre:

  • HTML5, de base et l'objet video
  • CSS de base pour les styles
  • WebSocket pour la communication entre les pages et le serveur (dans les deux sens).

Nous utiliserons une méthodologie agile, avec des cycles d'un ou deux jours. A chaque fin de cycle, nous décidons ensemble des tâches incluses dans le prochain cycle.

Des contenus de test et une documentation seront produits avec le code.