1 / 35

BI Agile : Le TDD avec DbFIT et IC avec TFS Damien MARESMA Arnaud VOISIN

BI Agile : Le TDD avec DbFIT et IC avec TFS Damien MARESMA Arnaud VOISIN. WAISSO. CRM et Marketing : Etude de cadrage Cahier des charges Développement d’ add-on Intégration MS Dynamics Intégration Neolane Gestion de la qualité des données. Base de données : Audit et expertise

vail
Download Presentation

BI Agile : Le TDD avec DbFIT et IC avec TFS Damien MARESMA Arnaud VOISIN

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. BI Agile : Le TDD avec DbFIT et IC avec TFS Damien MARESMA Arnaud VOISIN

  2. WAISSO • CRM et Marketing : • Etude de cadrage • Cahier des charges • Développement d’add-on • Intégration MS Dynamics • Intégration Neolane • Gestion de la qualité des données • Base de données : • Audit et expertise • Optimisation du code • Tuning de serveur • Mise en haute-disponibilité • Projet technique • Projet d’infrastructure • Migration • Délégation de DBA • Décisionnel et Collaboratif : • Audit et expertise technique • Etude de cadrage • Création de datamart client • Intégration MS BI (SSIS, SSAS, SSRS…) • Intégration SharePoint • TMA

  3. Agenda • BI Agile • TDD • DbFIT • ALM : IC avec Team FondationService

  4. BI Agile • La méthodologie Agile dans le secteur de l’IT • Les chiffres sur les projets 48% des projets de développement et de test sont externalisés mais environ ¼ échouent... (08/2013-cabinet VansonBourne)

  5. BI Agile • Cequ’il y a à tester ? • ODS • ETL (ODS vers SAS) • MàJ, Fusion • ETL (SAS versCible) • L’entrepôt de données • Traitements OLAP • Rendu, Présentation

  6. BI Agile

  7. BI Agile • Tests

  8. TDD • TEST • DRIVEN • DEVELOPMENT

  9. TDD • Le Test • Il vérifie une nouvelle fonctionnalité ou qui a été changé. • Il est indépendant des autres tests. • Il vérifie un seul aspect ou comportement et documente le comportement attendu • Il ne doit pas vérifier trop de fonctionnalité • Astuce : Given, When, Then

  10. TDD • Les 3 lois du TDD • 1. Vous ne devez pas commencer à écrire de code tant que vous n’avez pas écrit un test unitaire qui échoue • 2. Vous devez écrire le test suffisant pour échouer. • 3. Vous ne devez pas écrire plus de code que nécessaire pour la réussite du test qui est en cours

  11. TDD Ecrire le test qui échoue Modifier le code Vérifier que tous les tests réussissent

  12. RED TDD • Le mantra TDD REFACTOR GREEN

  13. TDD Echouer au test d’approbation Code • ATDD Implémenter le(s) test(s) Test Ré-usinage Définir les conditions de satisfaction Nouvelle Itération Acceptance-test-drivendevelopment Test Choisir une user story Test-drivendevelopment Ré-usinage Code Approbation Client Test Ré-usiner le test Réussir les tests d’approbation Ré-usinage Code

  14. DbFIT

  15. DbFIT • FIT : Framework for Integrated Test • Développé par Ward Cunningham (fit.c2.com)

  16. DbFIT • FitNesse = (FIT + Wiki) fitnesse.org • Développé par Robert (Uncle Bob) Martin • Un site wiki autonome, facilement distribuable • Sans base de données • Une hiérarchie de dossiers et de fichiers • La communauté est très importante

  17. DbFIT • DbFIT • Un aménagement ou fixtures de FIT dans FitNesse pour les bases de données • Développé par GojkoAdzic, et maintenant supporté par JakeBenilov • En version 2 depuis Octobre 2013 • FitSharp est l’implémentation en .Net

  18. DbFIT • Fixtures • Les commandes de bases • Query • Insert • Update • ExecuteProcedure • Execute • Inspect • Store Query • Compare StoredQueries • Transaction Control

  19. DbFIT • Projet « AdventureWorksCredit » • Sprint n°5 • User Story • Simulation de plan d’amortissement • Test d’approbation : • Appel d’une procédure stockée • Résultats conforme au classeur Excel

  20. DbFIT • Le Développeur Agile • L’architecture de son programme (nombres d’objet) • Une procédure stockée avec paramètres • Va projeter le résultat pour chaque paramètres • Depuis une in-linefunction de calcul • Une in-linefunction de calcul d’amortissement fixe avec paramètres

  21. DbFIT • Fixture nécessaire • Query • Template de test • Est-ce que l’objet(programme) existe déjà ? • Est-ce que les paramètres sont définis ? • Est-ce la projection attendu comporte 8 champs • Quel est la description des données projetées • Estimation 10 itérations en TDD

  22. DbFIT • DbFiten Action • Tester quoi, par où commencer ? • Schémas • Suivi et non régression du schéma, signatures • Programmes • Conformité et comportement attendu • SSIS • La source de données • Le résultat de l’alimentation (les Transformations et Chargement) • SSRS • Projection d’extraction de données • Calcul à l’intérieurs des rapports • SSAS : avec OPENROWSET

  23. DbFIT • Schémas • Schéma • Table • UDF • Suivi et non régression du schéma, signatures

  24. DbFIT • Programmes • USP • Conformité et comportement attendu

  25. DbFIT • SSIS Fixture • InspectSsis • SSISDtsConfig • ExecuteSsisWithConfig

  26. DbFIT • SSRS Fixture • ReportService • Report

  27. ALM (TFS) MyDbSuite Liéer un test xUnit à l’appel du WebServiceFitNesse : [TestClass] publicclassdbFitCITest { [TestMethod] publicvoidProjetBaseDeDonnee() { varxml = XElement.Load("http://localhost:8085/LesJourneesSqlServer.ProjetBaseDeDonnees?suite&format=xml"); var results = ( from c inxml.Elements("finalCounts") selectnew { right =c.Element("right").Value, wrong = c.Element("wrong").Value, ignores = c.Element("ignores").Value, exceptions = c.Element("exceptions").Value}).First(); Assert.AreEqual(true,results.wrong.Equals("0"),string.Format("Il y a {0} test en échec, {1} en exception, {2} ignoré(s) et {3} passé(s)",results.wrong,results.exceptions,results.ignores, results.right )); Assert.AreEqual(false,xml.IsEmpty, "Aucun test ne semble avoir été joué "); } } Content <xml> <> </xml> MyDbTest Testing content.txt properties.xml

  28. Leçons • Rendre les requêtes plus facile à maintenir • A Encapsuler dans des VIEW et des UDF • Limité le périmètre de chaque page • Des données de test simples et pertinente • Facile à comprendre et à maintenir • Constamment revoir le périmètre du test • S’assurer de l’adéquation des tests avec la réalité du métier • Ça Marche !

  29. Merci de votre attention

  30. Q & R

  31. Références • BI Agile • Agile Analytics (Ken Collier) • Refactoring Databases : EDD (Scott Ambler ) • TDD • TDD : By Example(Kent Beck ) • The Clean Coder (Robert [Uncle Bob] Martin) • Etudes • Nagappan 2008 http://research.microsoft.com/en-us/groups/ese/nagappan_tdd.pdf

  32. Merci à nos sponsors

More Related