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

Post on 24-Mar-2016

36 views 4 download

description

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 - PowerPoint PPT Presentation

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

#JSS2013

Les journéesSQL Server 2013

Un événement organisé par GUSS

#JSS2013

Les journéesSQL Server 2013

Un événement organisé par GUSS

BI Agile :Le TDD avec DbFIT et IC avec TFS

Damien MARESMAArnaud VOISIN

#JSS2013

WAISSOBase 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

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

#JSS2013

• BI Agile– TDD

• DbFIT• ALM : IC avec Team Fondation Service

Agenda

#JSS2013

• La méthodologie Agile dans le secteur de l’IT

• Les chiffres sur les projets48% des projets de développement et de test sont externalisés mais environ ¼ échouent...(08/2013-cabinet Vanson Bourne)

BI Agile

#JSS2013

• Ce qu’il y a à tester ?1. ODS2. ETL (ODS vers SAS)3. MàJ, Fusion4. ETL (SAS vers Cible)5. L’entrepôt de données6. Traitements OLAP7. Rendu, Présentation

BI Agile

#JSS2013

BI AgileOù

#JSS2013

• TestsBI Agile

#JSS2013

• TEST• DRIVEN• DEVELOPMENT

TDD

#JSS2013

• 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

#JSS2013

• 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

#JSS2013

TDD Ecrire le

test qui

échoue Vérifier

que tous les

tests réussiss

ent

Modifier le code

#JSS2013

• Le mantraTDD RE

D

REFACTOR

GREEN

TDD

#JSS2013

• ATDDTDD

Test

Code

Ré-usina

ge

Ré-usina

ge

Test

Code

Ré-usina

ge

Test

Code

Test-driven development

Approbation

Client

Choisir une user

story

Définir les conditions

de satisfaction

Implémenter le(s)

test(s)

Echouer au test

d’approbation

Acceptance-test-driven development

Nouvelle

Itération

Ré-usiner le test

Réussir les tests

d’approbation

#JSS2013

DbFIT

#JSS2013

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

DbFIT

#JSS2013

• 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

#JSS2013

• DbFIT– Un aménagement ou fixtures de FIT dans

FitNesse pour les bases de données– Développé par Gojko Adzic, et maintenant

supporté par Jake Benilov– En version 2 depuis Octobre 2013– FitSharp est l’implémentation en .Net

DbFIT

#JSS2013

• Fixtures– Les commandes de bases

• Query• Insert• Update• Execute Procedure• Execute• Inspect• Store Query• Compare Stored Queries• Transaction Control

DbFIT

#JSS2013

• 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

#JSS2013

• 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-line function de calcul

• Une in-line function de calcul d’amortissement fixe avec paramètres

DbFIT

#JSS2013

demo

#JSS2013

• 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

#JSS2013

• DbFit en 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

#JSS2013

• Schémas– Schéma– Table– UDF

– Suivi et non régression du schéma, signatures

DbFIT

#JSS2013

• Programmes– USP

– Conformité et comportement attendu

DbFIT

#JSS2013

• SSIS Fixture– InspectSsis– SSISDtsConfig– ExecuteSsisWithConfig

DbFIT

#JSS2013

• SSRS Fixture– ReportService– Report

DbFIT

#JSS2013

ALM (TFS)

Content

<xml>

<></

xml>

Testingcontent.txt

properties.xml

MyDbSuite

MyDbTest

Liéer un test xUnit à l’appel du WebService FitNesse : [TestClass] public class dbFitCITest { [TestMethod] public void ProjetBaseDeDonnee() {

var xml = XElement.Load("http://localhost:8085/LesJourneesSqlServer.ProjetBaseDeDonnees?suite&format=xml"); var results = ( from c in xml.Elements("finalCounts") select new { 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é ");

} }

#JSS2013

• 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 !

Leçons

#JSS2013

• Merci de votre attention

#JSS2013

Q & R

#JSS2013

• 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

Références

#JSS2013

Merci à nos sponsors

#JSS2013#JSS2013