Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

20151013 - Agirc arrco : Behavior driven development

196 views

Published on

Retour d'expérience

Published in: Software
  • Be the first to comment

  • Be the first to like this

20151013 - Agirc arrco : Behavior driven development

  1. 1. 1 Retour d’expérience JBehave 13/10/15
  2. 2. 2 Présentation du GIRC AA • Structure unique de développement, de recette et de maintenance du système d'information de la retraite complémentaire Agirc-Arrco. • Nous assurons l'exploitation de 100% des fichiers nationaux, la sécurisation des données de 11,8 millions de retraités et de 18 millions d'actifs, ainsi que la production de l'Usine Retraite pour nos groupes membres (Apicil, Humanis, Klésia)
  3. 3. 3 Quelques chiffres
  4. 4. 4 Contexte • Schéma Directeur en 2011-2014  Orientation du SI vers les systèmes ouverts  Préférence à l’Open Source dans le choix des outils  Orientation Agile de l’édition logicielle  Réduction des coûts • Principaux axes  AIX => Linux  DB2 => PostGreSQL  Websphere => JBoss  Cobol => Java (batch)  …  ALM => Squash TM / Jira
  5. 5. 5 Sommaire • Behaviour Driven Development • Framework JBehave • Cycle de vie des stories • Notre implémentation (IHM, Batch, WS, ...) • Intégration JBehave dans Squash TA • Présentation du résultat • Travaux en cours
  6. 6. 6 BDD (Wikipédia) • Behavior driven development (ou BDD) est une méthode agile qui encourage la collaboration entre les développeurs, les responsables qualités, les intervenants non-techniques et les entreprises participant à un projet de logiciel • Réponse au TDD  Technique de développement de logiciel qui préconise d'écrire les tests unitaires avant d'écrire le code source d'un logiciel. (Wikipédia)
  7. 7. 7 Principes BDD • La participation des parties prenantes dans le processus par le biais de l'extérieur dans le développement de logiciels outside-in software development • L'utilisation d'exemples pour décrire le comportement de la demande, ou d'unités de code • Automatisation de ces exemples pour fournir rapidement des commentaires et des tests de non-régression
  8. 8. 8 Framework JBehave • JBehave is a framework for Behaviour-Driven Development (BDD)…, and is intended to make these practices more accessible and intuitive to newcomers and experts alike. (Jbehave.org) • Uniquement un framework, il définit :  les concepts STORY : le cas de test GIVEN, WHEN, THEN : mots clés d’articulation de la story (“Etant donné que”, “Quand” et “Alors”) STEP : ses étapes (à implémenter)  Et la mécanique d’implémentation
  9. 9. 9 Principes de mise en œuvre • Les « stories » sont décrites dans un langage intelligible • Les steps (mots clés) correspondants sont développés • Les stories sont configurées et exécutées via  JUnit (Eclipse, NetBeans, …)  Maven (Jenkins, Bamboo, …)  … • Les résultats sont restitués au format HTML
  10. 10. 10 Cycle de vie des stories • Initiées très tôt dans le processus  Par nos bureaux d’études (pas les développeurs)  En phase de spécification détaillée / conception (pas après le développement) • Evoluent durant les sprints de développement et les phases de qualification / recette • Figées (tag) lors de la livraison de la version finale de l’application
  11. 11. 11 Exemples d’implémentation • Les « steps » développés correspondent à nos contextes applicatifs  Batch Lancer un batch Vérifier le code retour Vérifier le statut …  IHM Lancer une application (Web) Cliquer sur un bouton Remplir un formulaire Changer d’onglet …
  12. 12. 12 Exemples d’implémentation  Technique SQL  Exécuter un script  Vérifier les données Fichier  Déposer un fichier  Vérifier le contenu du fichier en fin de traitement WS/TWS/FTF • Génération et stockage  d’identifiants  de dates (vieillissement de données),  de données aléatoires • Rejeu quel que soit l’état de la base de données (pas de purge globale)
  13. 13. 13 Exemple de story (Batch)
  14. 14. 14 Exemple de story (IHM)
  15. 15. 15 Implémentation d’un step
  16. 16. 16 Intégration JBehave Squash TM Exécution d’une itération de campagne 1 Squash TA
  17. 17. 17 Intégration JBehave Squash TM SVN Exécution d’une itération de campagne 1 Checkout des stories 2Squash TA
  18. 18. 18 Intégration JBehave Squash TM SVN Exécution d’une itération de campagne 1 Checkout des stories Workspace TA Projet - OTA Steps OTA use Dépôt et lancement 2 3 Squash TA
  19. 19. 19 Intégration JBehave Squash TM SVN Exécution d’une itération de campagne 1 Checkout des stories Workspace TA Projet - OTA Steps OTA use Dépôt et lancement 2 3 Plugin TA-JBehave Appel4 Squash TA
  20. 20. 20 Intégration JBehave Squash TM SVN Exécution d’une itération de campagne 1 Checkout des stories Workspace TA Projet - OTA Steps OTA use Dépôt et lancement Ihm Web / Riche TP WS/ JMS BDD DB2 / PGSQL Batch Web / TWS Files NFS / FTF Exécution des scripts 2 3 5 Plugin TA-JBehave Appel4 Squash TA
  21. 21. 21 Intégration JBehave • Normalisation  Des projets Nommage des tests dans Squash TM Nommage des stories / fichiers d’entrée… Nommage des applications / batchs / IHM  Des environnements Serveurs (URL d’accès) Base de données (JDBC) • Champs personnalisés dans les campagnes / itérations  Version de l’application  Contexte d’exécution (Qualification, Recette)
  22. 22. 22 DÉMO
  23. 23. 23 Démo • Exécution d’un plan de test
  24. 24. 24 Démo • Exécution / Rapport d’exécution
  25. 25. 25 Démo • Rapport d’exécution JBehave
  26. 26. 26 Démo • Rapport de Story valide
  27. 27. 27 Démo • Rapport de Story en erreur
  28. 28. 28 Limites • Pas de lien direct entre les exécutions et les rapports  Nécessite le passage par le rapport global • Rapports uniquement gérés par l’historique du job Jenkins  Problème de purge automatique • Pas d’intégration des versions Squash TM (milestones) • Référentiel de tests automatisés  Pas de gestion de versions  Outillage trop technique (Eclipse / SVN) • Pas d’utilisation des jeux de données de Squash TM
  29. 29. 29 Réflexions en cours • Intégration native JBehave  Développement d’un lanceur JBehave sans script  Choix de la story dans Squash TM (à la place du script TA)  Accès direct au rapport de la story à partir de l’exécution (et non le résumé)  Publication des rapports sur un espace dédié • Choix du référentiel de tests automatisés  Accès et mise à jour simplifié (Hors Eclipse) des stories  Edition accompagnée (auto complétion, colorisation)  Gestion de versions • Gestion des jeux de données  JDD DB vs JDD Squash TM  Abstraction SQL (insert / select)  Evolutions du modèle • Ajout de nouveaux steps / simplification
  30. 30. 30 Questions ?

×