Presentation tests d'acceptations automatisés sug v1.1

22
Merci à nos sponsors Merci à nos sponsors REX Tests d’acceptation automatisés Jean-Emmanuel Houdu [email protected]

description

Feedback on automated acceptance tests with Fitnesse and Selenium

Transcript of Presentation tests d'acceptations automatisés sug v1.1

Page 1: Presentation tests d'acceptations automatisés sug v1.1

Merci à nos sponsorsMerci à nos sponsors

REX Tests d’acceptation automatisés

Jean-Emmanuel Houdu

[email protected]

Page 2: Presentation tests d'acceptations automatisés sug v1.1

Merci à nos sponsors

Un bon test d’acceptationLivraison gratuiteLa livraison gratuite est offerte aux clients VIP qui ont déposé un certain nombre de livres dans

leur panier. Les clients normaux et les clients VIP qui n'atteignent pas le seuil ne se voient pas

proposer la livraison gratuite.

Exemples :Etant donné que le seuil est fixé à 10 livres et plus, alors nous attendons les résultats suivants :

• (source : http://gojko.net/2010/06/16/anatomy-of-a-good-acceptance-test/)

Type de client Nombre de livres dans le panier Livraison gratuite ?VIP 8 NonVIP 9 NonVIP 10 OuiVIP 11 OuiNormal 8 NonNormal 9 NonNormal 10 NonNormal 11 Non

Page 3: Presentation tests d'acceptations automatisés sug v1.1

Merci à nos sponsors

Tests d’acceptation dans Scrum• Les tests d’acceptation ont une place importante dans Scrum :

– Ils peuvent servir de base pour les développements (ATDD)

– Ils permettent de vérifier les conditions de satisfaction des stories

– Ils constituent une suite de tests de non régression

• Le Product Owner doit s’assurer du caractère fini de chaque stories. Il est donc concerné par les tests d’acceptations :– Il les rédige et / ou les valide

– Il vérifie les résultats des tests

Story A Test 1

Test 2

Test 3

Condition 1

Condition 2

Page 4: Presentation tests d'acceptations automatisés sug v1.1

Merci à nos sponsors

Bénéfices de l’automatisation• Le contexte Scrum est itératif, incrémental et time-boxé.

• Les tests d’acceptation automatisés réduisent le temps alloué aux activités de test.

• La non-régression permet aux développeurs de :– Se concentrer sur les stories dans le périmètre du sprint en cours

– De vérifier qu’il n’y a pas de régressions sur les stories finies lors des sprints précédents

– D’améliorer (refactoriser) le code

• La vérification du caractère fini permet de :– Consacrer moins de temps à la validation

– Consacrer moins de temps à la démonstration

– Mesurer facilement l’avancement

Page 5: Presentation tests d'acceptations automatisés sug v1.1

Merci à nos sponsors

Spécifications exécutables

• Les tests d’acceptation sont compréhensibles par nature. Ils s’adressent à tous les public :– Développeurs

– Fonctionnels (Product owner, Utilisateurs, Experts métier)

– Responsables qualité

– Décisionnaires

• Automatisés :– Ils sont à jour en permanence

– Ils constituent une source d’information fiable sur l’application

• Outillés de façon à présenter leur contenu et résultats clairement, ils constituent des spécifications exécutables

Page 6: Presentation tests d'acceptations automatisés sug v1.1

Merci à nos sponsors

Fitnesse

• Fitnesse est un wiki qui permet de gérer les tests d’acceptation– Il permet d’écrire des tests sous forme de tables.

– Il assure le lien entre les tests et l’application testée grâce à des fixtures (pièces de code)

– Il permet d’exécuter les tests

– Il présente des résultats précis et permet de les historiser.

• Fitnesse s’adresse à tous : managers, fonctionnels, responsables qualité et équipes de développement :– La syntaxe wiki est facile à prendre en main

– Les tests sont rédigés de façon compréhensible par tous

Page 7: Presentation tests d'acceptations automatisés sug v1.1

Merci à nos sponsors

Table et Fixture

public class LivraisonGratuite {

private String typeDeClient;private int nbLivresDansLePanier;

public void setTypeDeClient(String typeClient) {this.typeDeClient = typeClient;

}public void setNbLivresDansLePanier (int nbLivres) {

this.nbLivresDansLePanier = nbLivres;}public String offrirLivraison() {

(" VIP".equals(typeDeClient) && nbLivresDansLePanier >= 10) ? "Oui" : "Non";}

}

Type de client Nb de livres dans le panier Offrir livraison ?VIP 8 NonVIP 9 NonVIP 10 OuiVIP 11 OuiNormal 8 NonNormal 9 NonNormal 10 NonNormal 11 Non

Livraison gratuite

Page 8: Presentation tests d'acceptations automatisés sug v1.1

Merci à nos sponsors

Selenium

• Selenium est un moteur de test pour les IHM d’applications web– Il permet d’enregistrer et de passer des tests dans un navigateur grâce

à Selenium IDE

– Il propose un serveur et des bibliothèques clientes (java, php, etc.) pour :

• Intégrer les tests enregistrés dans un framework de tests unitaires (junit)

• Intégrer Selenium avec un autre produit

• Selenium s’adresse principalement aux équipes de développement– Le résultat d’un test unitaire est vrai / faux

– Il faut faire du code spécifique pour les tests compliqués

Page 9: Presentation tests d'acceptations automatisés sug v1.1

Merci à nos sponsors

Syntaxe Selenium

Fonction Paramètre 1 Paramètre 2 Commentaireopen /download/ Action : ouvre la page "/downloads"assertTitle Downloads Assertion : vérifie que le titre de la page est "Downloads"verifyText //h2 Downloads Assertion : vérifie que l'élément HTML "h2" contient le texte "Downloads"

//h2 est un locator de type xpath ("/body/html/h2"), il y a aussi les identifiants et les noms.

Page 10: Presentation tests d'acceptations automatisés sug v1.1

Merci à nos sponsors

Application de test

Moteur de tests

Intégration Fitnesse Selenium

Fixtures

API client Selenium

Selenium RC

Cas de test

http Système de fichier

http GET

http GET

1 2

3

4

5

6

7Système testé

Navigateur

FitnesseClient Léger

http

Java, .Net, Ruby, Python, Perl

Page 11: Presentation tests d'acceptations automatisés sug v1.1

Merci à nos sponsors

Ce qui change

• En faisant appel à l’API cliente de Selenium dans les Fixtures :– Il est possible de définir une nouvelle grammaire pour les actions et

les assertions

– On peut également créer des actions et assertions spécifiques au système testé

open /download/ assertTitle DownloadsverifyText //h2 Downloads

Ouvrir la pagecheck le titre de la page estcheck le paragraphe //h2 contient le texte Downloads

Downloads/download/

Page 12: Presentation tests d'acceptations automatisés sug v1.1

Merci à nos sponsors

Avantages de l’intégration

• Les responsables qualité peuvent créer/exécuter/gérer des tests d’IHM

• La grammaire est définie par les utilisateurs

• Les résultats des tests sont détaillés et historisés

• Les tests d’IHM peuvent-être complétés par d’autres actions :– Gérer les jeux de données

– Gérer la plateforme de recette

– Vérifier les logs

– Vérifier les données en base

Page 13: Presentation tests d'acceptations automatisés sug v1.1

Merci à nos sponsors

Démonstration

Page 14: Presentation tests d'acceptations automatisés sug v1.1

Merci à nos sponsors

Projet SPPC• Le SPPC (Socle de Pilotage de la Production Copernic) assure

le pilotage et la supervision de la product° du SI Copernic de la DGFiP– Le SI Copernic est composé de MA (Modules Applicatifs)

– Les commandes permettent de démarrer et d’arrêter les services des MA ainsi que de lancer leurs traitements

• Le SPPC offre les fonctionnalités suivantes :– Importer et consulter les Plans de Production Prévisionnel

– Générer, consulter et gérer les Plans de Production Opérationnel

– Modifier une commande contenue dans le plan

– Lancer les commandes à la date planifiée puis suivre leur avancement

Page 15: Presentation tests d'acceptations automatisés sug v1.1

Merci à nos sponsors

Vision de l’Outillage de test

Pour la MOA et la MOE de la DGFiP

Qui recettent l’application SPPC

L’outillage de test SPPC est un wiki

Il permet d’automatiser les tests d’acceptation

A la différence de la pratique actuelle qui

consiste à passer en 5 jours un cahier de tests manuels et linéaires

Page 16: Presentation tests d'acceptations automatisés sug v1.1

Merci à nos sponsors

Features (1/2)• Gérer les tests

– Créer, exécuter une suite et un cas de test

– Analyser les résultats d’une suite et d’un cas de test

– Consulter l’historique des tests

• Simuler l’activité des utilisateurs– Saisir la valeur d’un champ

– Vérifier l’accès concurrent avec deux utilisateurs (spécifique)

– etc...

• Analyser les résultats– Vérifier la valeur des champs

– Vérifier une barre de planification (spécifique)

– etc...

Page 17: Presentation tests d'acceptations automatisés sug v1.1

Merci à nos sponsors

IHM SPPC

check la barre de planification $BARRE_TACHE_UN correspond a {27/03/2010 11:00:00, 60, $COULEUR_BLEU}

Page 18: Presentation tests d'acceptations automatisés sug v1.1

Merci à nos sponsors

Features (2/2)

• Interagir avec la plateforme de test (Serveurs)– Arrêter et démarrer les serveurs

– Modifier l’heure des serveurs

– Sauvegarder et charger la base de données

– Charger un Plan de Production Prévisionnel

• Interagir avec le bouchon NAD (Nœud d’Administration d’un Module Applicatif)– Vérifier la présence et l’état d’une commande

– Créer une commande

– Modifier l’état d’une commande

Page 19: Presentation tests d'acceptations automatisés sug v1.1

Merci à nos sponsors

Bilan MOE• Charge de réalisation de l’outillage

– 40 jours pour :• dossier d’architecture, guide utilisateur, guide d’installation• Réalisation et réception

• Nombre de fonctionnalités– 47 pour simuler l’activité d’un utilisateur et analyser les résultats– 9 pour gérer la plate-forme

• 2046 lignes de code (sans commentaires)

• Peu de demandes de support de la part de la MOA une fois l’outil mis en place

• Peu de demandes d’évolution pour le passage de la version 1.7.1 à la version 1.7.2 de SPPC

Page 20: Presentation tests d'acceptations automatisés sug v1.1

Merci à nos sponsors

REX MOE

• L’équipe MOE a adopté l’outil pour la recette usine. Cela permet de :– Créer des jeux de données rapidement– Automatiser les tests les plus long à passer

• Les rapports avec la MOA se sont améliorés :– L’outillage est innovant et répond aux besoins

– La MOA gagne en confiance sur l’application SPPC

Page 21: Presentation tests d'acceptations automatisés sug v1.1

Merci à nos sponsors

Bilan MOA• Spécifications de l’outillage

– Analyse du cahier de test manuel existant : 20 jours

– Spécifications des fonctionnalités attendues : 10 jours

• Réception de l’outillage– Rédaction du cahier de recette : 30 jours

• La réception a été réalisée avec l’outillage lui-même.

• Cela a permis à la MOA de se former

– Correction des tests : 3 jours

• Rédaction des tests SPPC 1.7.1 : 105 jours

• Adaptation des tests 1.7.2 : 37 jours (pour environ 500 jours de développement)

• Nombre de tests : 130

Page 22: Presentation tests d'acceptations automatisés sug v1.1

Merci à nos sponsors

REX MOA• Avantages

– Vérification des corrections et de la non-régression accélérée

– Passage des tests compliqués ou longs à dérouler facilité

– Construction des jeux de données automatisée (rejeu possible)

– Chaque test est exécutable à tout moment grâce à l’indépendance des tests

– Rédaction et exécution des tests à partir des postes MOA

– Intervention de la MOE inutile

• Inconvénients– les tests libres sont toujours nécessaires (pour l’expérience utilisateur)

– l’investigation des tests non-passants est obligatoire

– la mise au point des tests peut être longue (correction-relance)