Alignement avec les métiers par le test fonctionnel et d acceptation en projets agiles
Laurent PY CEO, Smartesting Laurent.py@smartesting.com @py_laurent www.smartesting.com Guillaume Coquelle Testeur, Availpro Guillaume.coquelle@availpro.com www.availpro.com
Introduction
Processus de développement chez Smartesting 2004/06 Produit: LTG, plug-in Eclipse en JAVA (Model-Based Testing) Développement cycle en V Peu de tests fait par les développeurs (pas de TDD) 1 release chaque 6 mois 1 mois (x5 ingénieurs) pour faire du release testing avant déploiement Niveau de qualité faible impactant nos clients et retours négatifs 4
Introduction des méthodes agiles - 2006 Développement agile D abord XP puis Scrum TDD, Pair programming Mise en place de l intégration continue (code et test unitaire) 1 release client chaque 3 mois (une opérationnelle chaque 3 semaines) 1 mois/homme pour faire du release testing avant déploiement Amélioration nette de la qualité perçue par nos utilisateurs 5
DevOps - 2012 Produit: Zest, plateforme de test agile dans le cloud Nous utilisons Scrum Nous faisons du TDD et Acceptance Testing Driven Development (ATDD), 100% automatisé Avec les pratiques ATDD et TDD, les projets sont livrés 31% plus vite et avec 4 fois complété moins de par défauts du test exploratoire http://www.thucydides.info/blog/295 does atdd really save you time Déploiement continue agilité métier Plusieurs releases par jour! 6
Notre retour d expérience Les méthodes agiles (des itérations courtes) conduisent à une automatisation massive des tests Les tests démarrent plus tôt dans le processus de développement (Shift left ) et les tests d acceptation deviennent la spécification Définition des critère d acceptation ATTD/BDD Req Management & Definition Test Planning Execution Defect management Feedback rapide Automatisation massive 7
Notre retour d expérience Les propriétés clés des tests d acceptation pour itérer rapidement : Lisibles pour faciliter la communication et permettre le shift left Maintenables aisément pour gérer les impacts des évolutions et nouvelles fonctionnalités Automatisables pour une exécution rapide 8
Le développement piloté par les tests d acceptation
Scrum et le test d acceptation Tests d acceptation Shift left Tests d acceptation Équipe Scrum PO Développeurs testeurs Scrum master
Acceptance Testing Driven Development (ATDD) Le test d acceptation est un outil de communication Il est la définition du STOP Ecrits par le Tester avant le développement Basés sur un DSL (Domain Specific Language) Validés par l équipe projet Très souvent automatisés Test en language naturel Test fixture Code
Acceptance Testing Driven Development (ATDD) Bénéfices Améliore la collaboration et communication autours des tests d acceptation Compréhension partagée de ce que signifie implémentation réussie Meilleure couverture des besoins métiers Feed-back plus rapide Challenges: Nouvelle méthodologie nécessitant rigueur et discipline Trouver le bon équilibre personne/processus/outils
ATDD & Refactoring Les tests d acceptation doivent être continuellement revus et refactoré tout comme le code! Martin Fowler
Test d acceptation en continu
Zest: test agile dans le Cloud! Fonctionnalités clés: Définition progressive des mots d actions métier, permettant de créer un DSL (Domain Specific Language) pour l écriture des scénarios de test Refactoring: la modification de mots d action métier impacte automatiquement l ensemble des scénarios de test Optimisation: Des fonctions d inspection permettent d optimiser en permanence les tests Création de scripts pour l automatisation (Ruby/Rspec, Java/Junit, Jasmine ) Intégrations actuelles avec: 15
Zest: test agile dans le Cloud! Collaboration autour du test Testeur Définit les tests d acceptation Product Owner Valide les tests d acceptation Développeur Automatise les tests d acceptation 16
Construire de nouvelles entités métiers
ou construire les entités métiers à partir des tests Définition progressive du dictionnaire métier (Action Word). Collaboration autour des tests entre le métier, les testeurs et développeurs
Réutiliser, réutiliser, réutiliser! Propositions Permet de construire et maintenir des scénarios de tests consistants pour tout le projet
Ajouter, supprimer, modifier des scenarios et mots d action métier Ajout d un paramètre au mot d action Propagation automatique aux scénarios l utilisant Le refactoring permet de gérer automatiquement les impacts liés aux évolutions permanentes.
Le diable DUPLICATION
Un principe fondamentale du développement/test
Analyser et optimiser le plan de tests en continu Réduction de l effort de maintenance
Générer les Scripts L utilisation de mots d action métier réduit significativement le coût de l automatisation et accélère le cycle de test
Synthèse Des tests d acceptation lisibles La définition d un DSL métier facilite l alignement de l équipe autour des tests Des tests d acceptation automatisables La structuration et le design des scénarios facilitent la création de scripts de tests Des tests d acceptation maintenables Les fonctions de refactoring et optimisation accélèrent la gestion des impacts liée aux évolutions
Retour d expérience sur le projet Availpro
Solution et technologies v4.0 v4.5
Quelques chiffres 1 nouveau déploiement en productions toutes les 2 semaines 3 campagnes de test lancées par jour En moyenne, 3 nouveaux cas de tests créés par jour 1200 tests gérés avec Zest Aujourd hui, plus de 80% des cas de tests sont sous Zest
Bénéfices du déploiement de Zest Collaboration de tous les acteurs autour du test: Le partage des scénarios permet aux membres des différentes équipes (développement, MOA, qualité) d avoir une vision identique des tests réalisés: alignement par les tests. L écriture des scénarios peut dorénavant se faire par tous types individus (technique ou non). Collaboration instantanée dans la conception: les scénarios sont visibles pour toutes les personnes en temps réel. Pas de décalage comme on pourrait avoir avec des fichiers Excel. Refactoring: Lors de modifications des fonctionnalités de nos applications, il peut être nécessaire de modifier / ajouter certains paramètres. Ceci est maintenant nettement plus rapide car centralisé et automatique. Gain de productivité de l ordre de 50% Intégration avec JIRA Agile : Gestion de la traçabilité entre les issues (user story, tâche) dans JIRA et les scénarios dans Zest. Indication de l évolution de l écriture des scénarios Intégration avec le framework d automatisation: Aucune modification dans le code robot nécessaire.
Questions / Réponses www.smartesting.com www.availpro.com