bi agile :le tdd avec dbfit et ic avec tfs damien maresma arnaud voisin
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 PresentationTRANSCRIPT
#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