Tests unitaires et fonctionnels avec Symfony 1.2

Documents pareils
Les Bonnes PRATIQUES DU TEST LOGICIEL

Devenez un véritable développeur web en 3 mois!

THÉMATIQUES. Comprendre les frameworks productifs. Découvrir leurs usages. Synthèse

Alignement avec les métiers par le test fonctionnel et d acceptation en projets agiles

Méthode de Test. Pour WIKIROUTE. Rapport concernant les méthodes de tests à mettre en place pour assurer la fiabilité de notre projet annuel.

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Olivier Deheurles Ingénieur conception et développement.net

Nouveautés de Drupal 8. Léon

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

Documentation de conception

Sessions en ligne - QuestionPoint

Introduction à. Oracle Application Express

COMPÉTENCES TECHNIQUES

Livrer chaque jour ce qui est prêt! Points clés du développement d un produit avec une livrasion par jour.

Drupal un CMS orienté mé2er. Romain JARRAUD Mathieu GROS

Cursus Sage ERP X3 Outils & Développement. Le parcours pédagogique Sage ERP X3 Outils et Développement

les techniques d'extraction, les formulaires et intégration dans un site WEB

Catalogue Formations Jalios

E-TRANSACTIONS. Guide du programmeur API Plug-in. Version 1.1

RESUME DE CARRIERE. Alice JULIENNE. 23 ans Nationalité Française Développeur Web Front-End. Compétences

Agile 360 Product Owner Scrum Master

Environnements de développement (intégrés)

4. SERVICES WEB REST 46

TP3 Intégration de pratiques agiles. 1. User Stories (1) Scénario d intégration agile. En direct-live du château

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

Qu est ce que Visual Guard. Authentification Vérifier l identité d un utilisateur

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

Découvrir Drupal. Les meilleurs thèmes et modules Drupal (présenta5on démo)

Nouveautés joomla 3 1/14

Rapport de stage Clément MOYSAN

Webinar. Découvrez Rubedo, la première solution CMS open-source tirant profit des atouts de Zend Framework et du NoSQL. avec la participation de

Loïc Rossignol Ingénieur Consultant

Bonnes pratiques de développement JavaScript

D une part, elles ne peuvent faire table rase de la richesse contenue dans leur système d information.

Vérifier la qualité de vos applications logicielle de manière continue

Maarch Framework 3 - Maarch. Tests de charge. Professional Services. 11, bd du Sud Est Nanterre

Bonnes Pratiques de Développement PHP. Pascal MARTIN SQLI Forum PHP 2009, Paris

Concilier Agilité, Exigences et Continuous Delivery : Retour d expérience PagesJaunes

Présentation de la solution Open Source «Vulture» Version 2.0

Comment optimiser les tests avec une démarche d automatisation simplifiée

Dans nos locaux au 98 Route de Sauve NÎMES. Un ordinateur PC par stagiaire, scanner, imprimante/copieur laser couleur

Savoir- Faire Offres mé1ers Offres technologiques

Les grandes facettes du développement Web Nicolas Thouvenin - Stéphane Gully

Modèle de cahier des charges pour un appel d offres relatif à une solution de gestion des processus métier (BPM)

GWT à l'épreuve du feu. by Sami Jaber (DNG Consulting)

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

Plateforme PAYZEN. Intégration du module de paiement pour la plateforme Magento 1.4 et supérieur. Version 1.5.1

Présentation du Framework BootstrapTwitter

Echosgraphik. Ce document sert uniquement à vous donner une vision sur ma manière de travailler et d appréhender un projet

Application Web et J2EE

WordPress, thèmes et plugins : mode d'emploi

Construire un réseau social avec Symfony Xavier Lacot Clever Age. Symfony Live 11 et 12 juin 2009 Clever Age Xavier Lacot

3W Academy Programme de Formation Développeur Intégrateur web Total : 400 heures

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

Mise en œuvre des serveurs d application

MANUEL WORDPRESS. Objectif: Refonte d un site web sous Wordpress I PRE-REQUIS: 1 / Créer un backup (sauvegarde) du site:

Développement des Systèmes d Information

S7 Le top 10 des raisons d utiliser PHP pour moderniser votre existant IBM i

Industrialiser la chaîne complète de fabrication 1ère partie - Les bénéfices de la solution logicielle IBM VisualAge Pacbase / Rational

Résoudre les problèmes PHP, les meilleures (et les pires) techniques

Web Tier : déploiement de servlets

Petite définition : Présentation :

Un exemple d'authentification sécurisée utilisant les outils du Web : CAS. P-F. Bonnefoi

AGILE IPHONE DEVELOPMENT

Catalogue des formations Edition 2015

L Intégration Continue & Agilité

Marie-Christine Spengler

<Insert Picture Here>ApExposé. Cédric MYLLE 05 Février Exposé Système et Réseaux : ApEx, Application Express d Oracle

Introduction Les processus traditionnels extreme Programming Conclusion. extreme Programming. vers plus d agilité. F. Miller francois.miller@inpg.

Projet de développement

Spip 2. Premiers pas pour créer son site web. Anne-Laure Quatravaux Dominique Quatravaux. Avec la contribution de Sandrine Burriel

Développer des Applications Internet Riches (RIA) avec les API d ArcGIS Server. Sébastien Boutard Thomas David

Programmation Web. Madalina Croitoru IUT Montpellier

Plan. 1 Cycles de développement. 2 Méthodes agiles, principes généraux. 3 Comment se passe un Sprint?

Joomla! Création et administration d'un site web - Version numérique

Console IAP Manuel d utilisation

Ingénieur d étude Web & Lead testeur QA

FICHE PRODUIT COREYE CACHE Architecture technique En bref Plateforme Clients Web Coreye Cache applicative Références Principe de fonctionnement

INF2015 Développement de logiciels dans un environnement Agile Examen final hiver 2015

Programmation Web. Introduction

Démarrer rapidement un site avec Drupal 7

Agilitéet qualité logicielle: une mutation enmarche

Une application sur tablette tactile pour la saisie de données naturalistes sur le terrain Linhota

Expertises Métiers & e-business. Technologies Microsoft & OpenSource. Méthodologies et gestion de projet

Plateforme PAYZEN. Intégration du module de paiement pour la plateforme Magento version 1.3.x.x. Paiement en plusieurs fois. Version 1.

OFFRE MDB Service & Architecture Technique. MyDataBall Saas (Software as a Service) MyDataBall On Premise

WysiUpStudio. CMS professionnel. pour la création et la maintenance évolutive de sites et applications Internet V. 6.x

Présentation du relais HTTP Open Source Vulture. Arnaud Desmons Jérémie Jourdin

Compte Rendu d intégration d application

PARAMETRER INTERNET EXPLORER 9

AngularJS pour une application d'entreprise

INGÉNIEUR - DÉVELOPPEUR SENIOR PHP. 28 ans - 8 ans d'expérience

Projet de Java Enterprise Edition

Hudson Serveur d Intégration Continue. Adrien Lecharpentier IR3 Ingénieurs2000, Université de Marne la Vallée

sur mesure! APPRENEZ PAR LA PRATIQUE! Contactez nous au Formation Référencement Formation PHP / MySQL

e-obs : Conception et utilisation Rémy Decoupes Ether // ums3365

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Transcription:

Tests unitaires et fonctionnels avec Symfony 1.2 Geoffrey Bachelet - Hugo Hamon Titre présentation Conférencier

Qui sommes-nous? Geoffrey Bachelet Hugo Hamon

Au sommaire... Introduction aux tests automatisés Les tests unitaires Les tests fonctionnels Introduction à l intégration continue

Introduction aux tests automatisés

Introduction aux tests automatisés 2 sortes : unitaires et fonctionnels (recette) Intégrés dans les méthodes agiles (XP)

Ils sont les garants... du bon fonctionnement du code, sa robustesse, sa maintenabilité, son évolutivité, sa pérennité, de la qualité globale du code / application

Les tests unitaires

Définition «En programmation informatique, le test unitaire est un procédé permettant de s assurer du fonctionnement correct d une partie déterminée d un logiciel ou d une portion d un programme» Wikipédia

La règle F.I.R.S.T Fast Independant Repeatable Self-Validating Timely

Les avantages valider le fonctionnement éviter les régressions fonctionnelles découvrir des bugs faciliter le refactoring

Les avantages documenter le code faciliter les migrations structurer le développement rentabiliser à moyen terme

Avoir confiance en son code!

Les contraintes les tests sont coûteux! savoir tester l essentiel maintenir la suite de tests à 100% écrire des tests en permanence

Les contraintes Les tests impliquent de la rigueur!

Quand tester du code? avant l implémentation (TDD) après l implémentation à la correction d un bug tester continuellement est la clé!

Que faut-il tester? les classes du modèle (classes et méthodes) les bibliothèques utilisateurs (fonctions) les inclusions de fichiers Ne pas tester du code déjà testé!

Ayez une approche pragmatique!

L approche pragmatique tester les méthodes et fonctions critiques tester quand un bug est découvert => peu de tests valent toujours mieux que rien!

Les outils de test en PHP SnapTest Lime Testilence

Lime Adaptation du module Perl Test::More Conforme au standard Test Anything Protocol API simple et testée Exécute les tests dans des processus séparés

Test Anything Protocol Créé en 1987 Procédure de standardisation IETF (2008) Basé sur le module Perl Test::Harness Spécification de-facto Format de sortie des tests standardisé

L environnement de test Il doit être unique Réinitialisé pour chaque suite de tests Différent de l environnement de production!!!

Les fichiers YAML

Les données de test : fixtures Chargées en BDD à chaque exécution Fichiers YAML dans test/fixtures 1 fichier par modèle Fichiers préfixés par un numéro

Le répertoire test/fixtures

Exécuter des suites de tests php symfony test:all php symfony test:unit php symfony test:unit testfile php symfony test:functional frontend php symfony test:functional frontend testfile php test/unit/testfiletest.php php test/functional/frontend/testfiletest.php

Exemple pratique (TDD) Tester une méthode de classe

Le modèle Product

Le modèle ProductLine

Tester la méthode gettotalprice()

Tester la méthode gettotalprice()

Un bug est découvert...

Le test confirme le bug!

Correction du bug

Validation par les tests

Tester des objets Doctrine

Tester des objets Doctrine

Les objets Mock Simuler une fonctionnalité S'abstraire du contexte réel (webservices, bases de données, système de fichiers) S'abstraire des dépendances

Les objets Mock - Exemple 1 Fixation des droits d accès de l utilisateur

Les objets Mock - Exemple 2 Simuler une fonctionnalité

Les objets Mock - Exemple 2

Quelques pièges à éviter... sfcontext sfconfig Dépendances dures

sfcontext dans le modèle

sfcontext dans le modèle

sfcontext dans le modèle

sfconfig dans le modèle

sfconfig dans le modèle

sfconfig dans le modèle

La couverture de code Requiert l extension xdebug apt-get install php5-xdebug pecl install xdebug http://pecl.php.net/package/xdebug

La couverture de code Par bibliothèque symfony test:coverage test/unit lib/ symfony test:coverage test/unit/mylibtest.php lib/mylib.php Par projet symfony test:coverage test/.

Les tests fonctionnels

Objectif des tests fonctionnels Tester les fonctionnalités de l application Introspecter tous les objets du framework Documenter un scénario d utilisation

Les limites des tests fonctionnels Limités à l environnement Symfony, Les JavaScript ne sont pas testables, Ne permettent pas de tester le rendu «visuel», Ne remplacent pas des tests Sélénium

L objet sfbrowser Simule le comportement d un navigateur web Rend les objets du framework disponibles de la requête à la réponse Ne nécessite pas de serveur web Embarque lime

Configurer le navigateur de test sethttpheader() Fixe un en-tête HTTP setauth() Définit les droits d accès basiques setcookie() removecookie() clearcookies() followredirect() Fixe un cookie Supprime un cookie Supprime tous les cookies courants Suit la redirection déclenchée

Simuler la navigation get() Simule une requête GET post() Simule une requête POST call() back() forward() reload() click() select() deselect() restart() Simule une requête PUT ou DELETE Retourne à la page précédente de l historique de navigation Avance d une page dans l historique de navigation Recharge la page courante Simule un clic sur un lien ou un bouton de formulaire Sélectionne un bouton radio ou une case à cocher Désélectionne un bouton radio ou une case à cocher Réinitialise tous les paramètres du navigateur

L objet sftestfunctional Embarque sfbrowser API fluide et lisible Extensible Délègue les tests aux «testeurs»

Une API fluide et lisible

Une API extensible - Exemple 1

Une API extensible - Exemple 2

Une API extensible - Exemple 2

Les blocs de tests

Les objets testeurs sftesterrequest sftesterresponse (CSS 3 selectors - xpath en symfony 1.3) sftesterform sftesteruser sftesterviewcache sftesterdoctrine sftesterpropel

Créer des objets testeurs

Créer des objets testeurs

Créer des objets testeurs

Tests dans les plugins

Tests dans les plugins sftaskextraplugin http://www.symfony-project/plugins/sftaskextraplugin Créé par Kris Wallsmith (core team) symfony generate:plugin sfmyplugin Structure de base du plug-in Bootstraps de tests Fixtures pour les tests fonctionnels

Tests dans les plugins php symfony test:plugin sffooplugin php symfony test:plugin --only=unit sffooplugin php symfony test:plugin --only=functional sffooplugin

Tests unitaires vs Tests de recette

Introduction à l intégration continue Exécution des tests Rapport d erreur Build du projet Automatique!

L intégration continue - Pourquoi? 1. Contrôler les régressions 2. Valider les fonctionnalités

L intégration continue Les régressions corrigées par les développeurs Les fonctionnalités vérifiées par le client

L intégration continue - Outils CruiseControl (Java) Hudson (Java) Xinc (PHP) phpundercontrol (PHP) symfonyundercontrol (phpundercontrol) sismo

sismo Développé par Fabien Potencier http://ci.symfony-project.org/

sismo Développé par Fabien Potencier http://ci.symfony-project.org/

Merci! Des questions?