View
1.928
Download
1
Category
Preview:
DESCRIPTION
Feedback on automated acceptance tests with Fitnesse and Selenium
Citation preview
Merci à nos sponsorsMerci à nos sponsors
REX Tests d’acceptation automatisés
Jean-Emmanuel Houdu
jhoudu@capgemini.com
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
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
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
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
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
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
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
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.
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
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/
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
Merci à nos sponsors
Démonstration
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
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
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...
Merci à nos sponsors
IHM SPPC
check la barre de planification $BARRE_TACHE_UN correspond a {27/03/2010 11:00:00, 60, $COULEUR_BLEU}
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
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
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
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
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)
Recommended