350 likes | 450 Views
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
E N D
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 • 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
Agenda • BI Agile • TDD • DbFIT • ALM : IC avec Team FondationService
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)
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
BI Agile Où
BI Agile • Tests
TDD • TEST • DRIVEN • DEVELOPMENT
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
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
TDD Ecrire le test qui échoue Modifier le code Vérifier que tous les tests réussissent
RED TDD • Le mantra TDD REFACTOR GREEN
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
DbFIT • FIT : Framework for Integrated Test • Développé par Ward Cunningham (fit.c2.com)
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
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
DbFIT • Fixtures • Les commandes de bases • Query • Insert • Update • ExecuteProcedure • Execute • Inspect • Store Query • Compare StoredQueries • Transaction Control
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
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
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
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
DbFIT • Schémas • Schéma • Table • UDF • Suivi et non régression du schéma, signatures
DbFIT • Programmes • USP • Conformité et comportement attendu
DbFIT • SSIS Fixture • InspectSsis • SSISDtsConfig • ExecuteSsisWithConfig
DbFIT • SSRS Fixture • ReportService • Report
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
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 !
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