SlideShare ist ein Scribd-Unternehmen logo
1 von 99
Downloaden Sie, um offline zu lesen
L’équipe IT
Oswald De Riemaecker, Anthony Laurain,
Sebastien Retoux, Christophe Diprima,
Christian Schramm
16 May 2013
Le Test chez atHome.lu
Retour sur expérience
Friday, May 17, 13
L’équipe atHome
• Oswald De Riemaecker - Team Lead : Passionné de Linux, technologie
open source, développement web et gestion de projet/produit Agile.
• Anthony Laurain - Senior Platform Developer (Zend Framework Certified
developer)
• Sebastien Retoux - Tactical Coordinator and Release Manager
• Christophe DiPrima - UX/Intégrateur
• Christian Schramm - DevOps/Linux SysAdmin (Zend Framework Certified)
Friday, May 17, 13
La Stratégie de testFriday, May 17, 13
Automatisés
Tests Unitaires
Tests de composants
Test GUI
Manuels & Automatisés
Tests Fonctionnels
Exemples
Tests sur Storyboards
Tests de perception
Maquettes
Prototypes / Simulation
Outils
Tests de performance
Tests de Charge
Tests de sécurité
Manuels
Tests exploratoiresScénarios
Tests d'utilisabilité
Tests d'acceptation (UAT)
Orientation Business
Orientation Technologie
Soutiendel'équipe
CritiqueProduit
Q1
Q2 Q3
Q4
Les quatre quadrants du Test Agile de Brian Marick
Friday, May 17, 13
La pyramide des tests automatisés de Mike Cohn
Unit Tests
Tests API
Tests d’Intégration
Tests de Composent
Tests GUI
Tests Manuel
Orientation Technologie
Orientation
Business
Développons nous le
bon système ?
Développons nous le
système
correctement ?
Friday, May 17, 13
Les outils
Friday, May 17, 13
L'interface utilisateur avec Sahi
Les critères d'acceptance avec Behat
Le code avec PHPUnit
Les outils par couches
Unit Tests
Tests API
Tests d’Intégration
Tests de Composent
Tests GUI
Tests Manuel
Friday, May 17, 13
Les tests unitaire avec PHPUnit
 PHPUnit est un framework de tests unitaires PHP
 Nouveau développement avec une approche développement par le
test (TDD)
 Couverture maximal de nouvelle classe
Friday, May 17, 13
Behat
s
Feature: Testing the RESTfulness of the immotype controller
Background:
Given I am using the rest service and I am logged with "username:password"
Scenario: Fetching immotype by id
Given that I want to find a "Immotype"
When I request "/immotype/24"
Then the "id" property equals "24"
And the "description_en" property equals "Business Takeover"
Then the response is JSON
Then the response status code should be 200
When I request "/immotype/1000"
Then the response status code should be 404
Friday, May 17, 13
Behat
 Framework BDD pour PHP
s
Feature: Testing the RESTfulness of the immotype controller
Background:
Given I am using the rest service and I am logged with "username:password"
Scenario: Fetching immotype by id
Given that I want to find a "Immotype"
When I request "/immotype/24"
Then the "id" property equals "24"
And the "description_en" property equals "Business Takeover"
Then the response is JSON
Then the response status code should be 200
When I request "/immotype/1000"
Then the response status code should be 404
Friday, May 17, 13
Behat
 Framework BDD pour PHP
 Orienté métier
s
Feature: Testing the RESTfulness of the immotype controller
Background:
Given I am using the rest service and I am logged with "username:password"
Scenario: Fetching immotype by id
Given that I want to find a "Immotype"
When I request "/immotype/24"
Then the "id" property equals "24"
And the "description_en" property equals "Business Takeover"
Then the response is JSON
Then the response status code should be 200
When I request "/immotype/1000"
Then the response status code should be 404
Friday, May 17, 13
Behat
 Framework BDD pour PHP
 Orienté métier
 Utilise le Gerkhin Syntaxe "Un langage compréhensible orienté besoins métier, qui décrit le
comportement d'une application sans se préoccuper des détails de l'implémentation"
s
Feature: Testing the RESTfulness of the immotype controller
Background:
Given I am using the rest service and I am logged with "username:password"
Scenario: Fetching immotype by id
Given that I want to find a "Immotype"
When I request "/immotype/24"
Then the "id" property equals "24"
And the "description_en" property equals "Business Takeover"
Then the response is JSON
Then the response status code should be 200
When I request "/immotype/1000"
Then the response status code should be 404
Friday, May 17, 13
Behat
 Framework BDD pour PHP
 Orienté métier
 Utilise le Gerkhin Syntaxe "Un langage compréhensible orienté besoins métier, qui décrit le
comportement d'une application sans se préoccuper des détails de l'implémentation"
 Basé sur les critères d'acceptance d'une histoire utilisateur,
fonctionne très bien avec un gestion de produit agile
s
Feature: Testing the RESTfulness of the immotype controller
Background:
Given I am using the rest service and I am logged with "username:password"
Scenario: Fetching immotype by id
Given that I want to find a "Immotype"
When I request "/immotype/24"
Then the "id" property equals "24"
And the "description_en" property equals "Business Takeover"
Then the response is JSON
Then the response status code should be 200
When I request "/immotype/1000"
Then the response status code should be 404
Friday, May 17, 13
Sahi
Friday, May 17, 13
Sahi
 C’est le haut de notre pyramide de test
Friday, May 17, 13
Sahi
 C’est le haut de notre pyramide de test
 Outil de test pour les applications web
Friday, May 17, 13
Sahi
 C’est le haut de notre pyramide de test
 Outil de test pour les applications web
 Enregistrement de scénario utilisateur dans le navigateur
Friday, May 17, 13
Sahi
 C’est le haut de notre pyramide de test
 Outil de test pour les applications web
 Enregistrement de scénario utilisateur dans le navigateur
 Lorsque nécessaire, les scénarios principaux, peu susceptible de
changer au niveau interface mais ayant un risque de régression
importante (Inscription d’utilisateur/Login/Alerte email)
Friday, May 17, 13
Les outils pour l'IC
Friday, May 17, 13
La gestion des branches de développement
Master
Branch SprintBranch Sprint
Tactic / Bug Fixes Tactic / Bug Fixes Tactic / Bug Fixes Tactic / Bug Fixes
Intégration
Continue
Remonté de
la Master
Friday, May 17, 13
La gestion des branches de développement
 Logiciel de gestion de versions décentralisé
Master
Branch SprintBranch Sprint
Tactic / Bug Fixes Tactic / Bug Fixes Tactic / Bug Fixes Tactic / Bug Fixes
Intégration
Continue
Remonté de
la Master
Friday, May 17, 13
La gestion des branches de développement
 Logiciel de gestion de versions décentralisé
 Branch Master, la dernière en production
Master
Branch SprintBranch Sprint
Tactic / Bug Fixes Tactic / Bug Fixes Tactic / Bug Fixes Tactic / Bug Fixes
Intégration
Continue
Remonté de
la Master
Friday, May 17, 13
La gestion des branches de développement
 Logiciel de gestion de versions décentralisé
 Branch Master, la dernière en production
 Branch de Goal de Sprint/Epique de produit
Master
Branch SprintBranch Sprint
Tactic / Bug Fixes Tactic / Bug Fixes Tactic / Bug Fixes Tactic / Bug Fixes
Intégration
Continue
Remonté de
la Master
Friday, May 17, 13
La gestion des branches de développement
 Logiciel de gestion de versions décentralisé
 Branch Master, la dernière en production
 Branch de Goal de Sprint/Epique de produit
 Branch de prototypage pour le test rapide d’implémentation de
solution technique
Master
Branch SprintBranch Sprint
Tactic / Bug Fixes Tactic / Bug Fixes Tactic / Bug Fixes Tactic / Bug Fixes
Intégration
Continue
Remonté de
la Master
Friday, May 17, 13
Le système de build
Friday, May 17, 13
Le système de build
 Outil open source d'intégration continue
Friday, May 17, 13
Le système de build
 Outil open source d'intégration continue
 Interface avec des systèmes de gestion de versions
Friday, May 17, 13
Le système de build
 Outil open source d'intégration continue
 Interface avec des systèmes de gestion de versions
 Apache Ant et scripts Shell
Friday, May 17, 13
Le système de build
 Outil open source d'intégration continue
 Interface avec des systèmes de gestion de versions
 Apache Ant et scripts Shell
 Plugin Extreme feed back sur grand écran pour un retour rapide sur
l’état de build
Friday, May 17, 13
La construction sur conteneur virtuel
http://master.athome.lu
http://dev01.athome.lu
http://dev02.athome.lu
http://dev03.athome.lu
http://dev04.athome.lu
...
Friday, May 17, 13
La construction sur conteneur virtuel
 OpenVZ permet à un serveur physique d'exécuter de multiples
instances de systèmes d'exploitation isolés
http://master.athome.lu
http://dev01.athome.lu
http://dev02.athome.lu
http://dev03.athome.lu
http://dev04.athome.lu
...
Friday, May 17, 13
La construction sur conteneur virtuel
 OpenVZ permet à un serveur physique d'exécuter de multiples
instances de systèmes d'exploitation isolés
 Installé à la création de job jenkins
http://master.athome.lu
http://dev01.athome.lu
http://dev02.athome.lu
http://dev03.athome.lu
http://dev04.athome.lu
...
Friday, May 17, 13
La construction sur conteneur virtuel
 OpenVZ permet à un serveur physique d'exécuter de multiples
instances de systèmes d'exploitation isolés
 Installé à la création de job jenkins
 Copie de l’environnement de production
http://master.athome.lu
http://dev01.athome.lu
http://dev02.athome.lu
http://dev03.athome.lu
http://dev04.athome.lu
...
Friday, May 17, 13
Le processusFriday, May 17, 13
Scrum with Agile Product Management
Epique
Epique
Epique
Epique
En tant qu'administrateur ...
En tant qu'agent ..
En tant que visiteur ...
En tant que utilisateur ...
Critère d’acceptance:
...............................
...............................
...............................
...............................
Friday, May 17, 13
Scrum with Agile Product Management
 Carnet Produit
Epique
Epique
Epique
Epique
En tant qu'administrateur ...
En tant qu'agent ..
En tant que visiteur ...
En tant que utilisateur ...
Critère d’acceptance:
...............................
...............................
...............................
...............................
Friday, May 17, 13
Scrum with Agile Product Management
 Carnet Produit
 Découpage en épique
Epique
Epique
Epique
Epique
En tant qu'administrateur ...
En tant qu'agent ..
En tant que visiteur ...
En tant que utilisateur ...
Critère d’acceptance:
...............................
...............................
...............................
...............................
Friday, May 17, 13
Scrum with Agile Product Management
 Carnet Produit
 Découpage en épique
 Découpage en histoire utilisateurs
Epique
Epique
Epique
Epique
En tant qu'administrateur ...
En tant qu'agent ..
En tant que visiteur ...
En tant que utilisateur ...
Critère d’acceptance:
...............................
...............................
...............................
...............................
Friday, May 17, 13
Scrum with Agile Product Management
 Carnet Produit
 Découpage en épique
 Découpage en histoire utilisateurs
 Critère d'acceptance (SEO/Code Postaux/ACL ...)
Epique
Epique
Epique
Epique
En tant qu'administrateur ...
En tant qu'agent ..
En tant que visiteur ...
En tant que utilisateur ...
Critère d’acceptance:
...............................
...............................
...............................
...............................
Friday, May 17, 13
Sprint Planning
En tant qu'administrateur ...
En tant qu'agent ..
En tant que visiteur ...
En tant que utilisateur ...
GOAL DE SPRINT
Critère d’acceptance:
...............................
...............................
...............................
...............................
Friday, May 17, 13
Sprint Planning
 Création de la branch de Goal de sprint GIT
En tant qu'administrateur ...
En tant qu'agent ..
En tant que visiteur ...
En tant que utilisateur ...
GOAL DE SPRINT
Critère d’acceptance:
...............................
...............................
...............................
...............................
Friday, May 17, 13
Sprint Planning
 Création de la branch de Goal de sprint GIT
 Création du Job Jenkins
En tant qu'administrateur ...
En tant qu'agent ..
En tant que visiteur ...
En tant que utilisateur ...
GOAL DE SPRINT
Critère d’acceptance:
...............................
...............................
...............................
...............................
Friday, May 17, 13
Le Sprint
Master
Branch Sprint
Tactic / Bug Fixes
Intégration
Continue
Remonté de
la Master
Sandbox
Jenkins
Histoire Utilisateur 1
PHP Unit / Behat Dev
Histoire Utilisateur 2
PHP Unit / Behat Dev
Histoire Utilisateur 3
PHP Unit / Behat Dev
Histoire Utilisateur 4
PHP Unit / Behat Dev
Production
Tactic / Bug Fixes
VZ Branch de Sprint
VZ Master
+ Manuel Testing + Validation+
+ Manuel Testing+
+ Manuel Testing+
Deploy Deploy Deploy
Intégration
de la branch
de Sprint
+
+
+
Friday, May 17, 13
Jenkins
Friday, May 17, 13
Jenkins
• Des Jobs de branch de Goal de sprint
• Le job Branch Master avec la master Sahi si Master successful
• Le job de déploiement en production
• Le modèle pour la création de nouveau job
Friday, May 17, 13
Jenkins
Paramètre du build
Friday, May 17, 13
Jenkins
Paramètre du build
• Synchronisation de la base de donnée de production, jenkins va chercher la
dernier base en production et la réinstaller, ce paramètre est très utile pour
valider les mise à jour SQL
• Rebuild solr
• Réinstallation complète du conteneur virtuel (avec installation système)
• Version php + mariadb
• Ainsi qu’une l’utilisation d’une base de donnée light
Friday, May 17, 13
Jenkins
Extreme Feed back
• Voici un exemple
• Lors du dernier build nous avons la branch highlight avec 1 test non passé
Friday, May 17, 13
Jenkins
Rapport de Build avec Résultat de test
Friday, May 17, 13
Jenkins
Message d’erreur pour le test qui n’a pas passé
• Le test vérifie que le service REST en GET retourne bien les statistiques de
notre offre, il y a un problème de nom de colonne dans le modèle de la
table des statistique
• Détection et identification du problème rapide
Friday, May 17, 13
Jenkins
En résumé
Friday, May 17, 13
Jenkins
Jenkins nous permet donc:
En résumé
Friday, May 17, 13
Jenkins
Jenkins nous permet donc:
 Construction environnement virtuel
En résumé
Friday, May 17, 13
Jenkins
Jenkins nous permet donc:
 Construction environnement virtuel
 Intégration développement
En résumé
Friday, May 17, 13
Jenkins
Jenkins nous permet donc:
 Construction environnement virtuel
 Intégration développement
 Mise à jour et test de la base de donnée
En résumé
Friday, May 17, 13
Jenkins
Jenkins nous permet donc:
 Construction environnement virtuel
 Intégration développement
 Mise à jour et test de la base de donnée
 Mise à jour et test que Solr
En résumé
Friday, May 17, 13
Jenkins
Jenkins nous permet donc:
 Construction environnement virtuel
 Intégration développement
 Mise à jour et test de la base de donnée
 Mise à jour et test que Solr
 Installation outils de test
En résumé
Friday, May 17, 13
Jenkins
Jenkins nous permet donc:
 Construction environnement virtuel
 Intégration développement
 Mise à jour et test de la base de donnée
 Mise à jour et test que Solr
 Installation outils de test
 Test Unitaires
En résumé
Friday, May 17, 13
Jenkins
Jenkins nous permet donc:
 Construction environnement virtuel
 Intégration développement
 Mise à jour et test de la base de donnée
 Mise à jour et test que Solr
 Installation outils de test
 Test Unitaires
 Test BDD Behat
En résumé
Friday, May 17, 13
Jenkins
Jenkins nous permet donc:
 Construction environnement virtuel
 Intégration développement
 Mise à jour et test de la base de donnée
 Mise à jour et test que Solr
 Installation outils de test
 Test Unitaires
 Test BDD Behat
 Rapport de build
En résumé
Friday, May 17, 13
Jenkins
Jenkins nous permet donc:
 Construction environnement virtuel
 Intégration développement
 Mise à jour et test de la base de donnée
 Mise à jour et test que Solr
 Installation outils de test
 Test Unitaires
 Test BDD Behat
 Rapport de build
 Identification de tests qui ne sont pas passé
En résumé
Friday, May 17, 13
Jenkins
Jenkins nous permet donc:
 Construction environnement virtuel
 Intégration développement
 Mise à jour et test de la base de donnée
 Mise à jour et test que Solr
 Installation outils de test
 Test Unitaires
 Test BDD Behat
 Rapport de build
 Identification de tests qui ne sont pas passé
 Lancement d'autre build (Sahi)
En résumé
Friday, May 17, 13
Jenkins
Jenkins nous permet donc:
 Construction environnement virtuel
 Intégration développement
 Mise à jour et test de la base de donnée
 Mise à jour et test que Solr
 Installation outils de test
 Test Unitaires
 Test BDD Behat
 Rapport de build
 Identification de tests qui ne sont pas passé
 Lancement d'autre build (Sahi)
 Déploiement en production
En résumé
Friday, May 17, 13
Jenkins
Jenkins nous permet donc:
 Construction environnement virtuel
 Intégration développement
 Mise à jour et test de la base de donnée
 Mise à jour et test que Solr
 Installation outils de test
 Test Unitaires
 Test BDD Behat
 Rapport de build
 Identification de tests qui ne sont pas passé
 Lancement d'autre build (Sahi)
 Déploiement en production
En résumé
Friday, May 17, 13
Behat
Le fichier de fonctionnalité
• Behat, le milieu de notre pyramide.
• Vérifions pourquoi notre test behat n’est pas passé, nous avons ici nos
critères d’acceptance sous forme de Gerkhin Syntaxe.
Friday, May 17, 13
Behat
Le test behat en ligne de commande
• Nous avons donc un problème avec le contrôler REST statistiques global
Friday, May 17, 13
Behat
Identification rapide du problème avec Jenkins
• Nous identifions rapidement sur base des derniers commits que le gateway
Omniture Property Views à été changé
Friday, May 17, 13
Behat
Correction de notre Méthode
• Nous pouvons corriger et relancer le build
Friday, May 17, 13
Behat
Notre build passe
Friday, May 17, 13
Behat
Notre test Behat passe
Friday, May 17, 13
Behat
Jeux de donnée de test
• Behat et Jenkins nous permet d’avoir des jeux donnée pour les test manuel
et GUI
Friday, May 17, 13
Behat
En résumé
Friday, May 17, 13
Behat
Behat nous permet donc:
En résumé
Friday, May 17, 13
Behat
Behat nous permet donc:
 Tester le métier, avec la même approche que le TDD, on écrit les critère
d’acceptance de la fonctionnalité testée, ce qui permet de structuré sa
pensée et son code, on pense par le test.
En résumé
Friday, May 17, 13
Behat
Behat nous permet donc:
 Tester le métier, avec la même approche que le TDD, on écrit les critère
d’acceptance de la fonctionnalité testée, ce qui permet de structuré sa
pensée et son code, on pense par le test.
 Tester les ACL (Accès Control List)
En résumé
Friday, May 17, 13
Behat
Behat nous permet donc:
 Tester le métier, avec la même approche que le TDD, on écrit les critère
d’acceptance de la fonctionnalité testée, ce qui permet de structuré sa
pensée et son code, on pense par le test.
 Tester les ACL (Accès Control List)
 Tester les services RESTful et sa sécurité
En résumé
Friday, May 17, 13
Behat
Behat nous permet donc:
 Tester le métier, avec la même approche que le TDD, on écrit les critère
d’acceptance de la fonctionnalité testée, ce qui permet de structuré sa
pensée et son code, on pense par le test.
 Tester les ACL (Accès Control List)
 Tester les services RESTful et sa sécurité
 Injecter des données pour les tests manuel et GUI
En résumé
Friday, May 17, 13
Sahi
Sahi Liens manquant
Friday, May 17, 13
Sahi
Rapport Sahi
Friday, May 17, 13
Sahi
Rapport de Test pour la publication d’offre
• Notre lien manquant
Friday, May 17, 13
Sahi
Scripting Sahi
Friday, May 17, 13
Sahi
Scripting Sahi
• Nous avons ajouté un système de dictionnaire pour pouvoir tester nos
différents sites, par exemple l’utilisation de la ville Troisvierges sur athome.lu
et Saarbruken sur athome.de
• Nous faisons aussi des tests SEO, nous validons que les blocs SEO en
bas de page redirige vers la bonne page et que celle-ci a bien les bons Title
et Meta
• Ce test nous a permis de trouver un problème avec la génération des
Titles SEO que nous n’aurions certainement pas pu voir autrement.
Friday, May 17, 13
Sahi
En résumé
Friday, May 17, 13
Sahi
Sahi nous permet donc:
En résumé
Friday, May 17, 13
Sahi
Sahi nous permet donc:
 Tests sur plusieurs navigateurs
En résumé
Friday, May 17, 13
Sahi
Sahi nous permet donc:
 Tests sur plusieurs navigateurs
 Valider les fonctionnalités utilisateur critiques (Inscription/Login/Email
Alerts)
En résumé
Friday, May 17, 13
Sahi
Sahi nous permet donc:
 Tests sur plusieurs navigateurs
 Valider les fonctionnalités utilisateur critiques (Inscription/Login/Email
Alerts)
 Valider navigation utilisateur
En résumé
Friday, May 17, 13
Sahi
Sahi nous permet donc:
 Tests sur plusieurs navigateurs
 Valider les fonctionnalités utilisateur critiques (Inscription/Login/Email
Alerts)
 Valider navigation utilisateur
 Valider liens SEO
En résumé
Friday, May 17, 13
Sahi
Sahi nous permet donc:
 Tests sur plusieurs navigateurs
 Valider les fonctionnalités utilisateur critiques (Inscription/Login/Email
Alerts)
 Valider navigation utilisateur
 Valider liens SEO
En résumé
Friday, May 17, 13
Next Steps
Friday, May 17, 13
Ce qui nous reste encore a faire:
Next Steps
Friday, May 17, 13
Ce qui nous reste encore a faire:
 Ajout de métrique, Code Coverage + PHP Tools (PHPcp/md ...)
Next Steps
Friday, May 17, 13
Ce qui nous reste encore a faire:
 Ajout de métrique, Code Coverage + PHP Tools (PHPcp/md ...)
 Améliorer les tests Sahi sur plusieurs navigateurs
Next Steps
Friday, May 17, 13
Ce qui nous reste encore a faire:
 Ajout de métrique, Code Coverage + PHP Tools (PHPcp/md ...)
 Améliorer les tests Sahi sur plusieurs navigateurs
 Implémenter des tests de performance
Next Steps
Friday, May 17, 13
Ce qui nous reste encore a faire:
 Ajout de métrique, Code Coverage + PHP Tools (PHPcp/md ...)
 Améliorer les tests Sahi sur plusieurs navigateurs
 Implémenter des tests de performance
 Implémenter JsTestDriver dans Jenkins
Next Steps
Friday, May 17, 13
Ce qui nous reste encore a faire:
 Ajout de métrique, Code Coverage + PHP Tools (PHPcp/md ...)
 Améliorer les tests Sahi sur plusieurs navigateurs
 Implémenter des tests de performance
 Implémenter JsTestDriver dans Jenkins
Next Steps
Friday, May 17, 13
Questions
Friday, May 17, 13
?
Questions
Friday, May 17, 13
Je tiens à remercier
 L'équipe atHome pour leur travail!
 VA Consulting
 Vous !
Twitter: oswald_odr
Email: oswald.odr.pm@gmail.com
Remerciement
Friday, May 17, 13

Weitere ähnliche Inhalte

Andere mochten auch

Cmb 20110323 Visió I Valors
Cmb 20110323 Visió I ValorsCmb 20110323 Visió I Valors
Cmb 20110323 Visió I Valors
MY NESCAR SCP
 
Seminario 2 estadistica
Seminario 2 estadisticaSeminario 2 estadistica
Seminario 2 estadistica
mariadeeeel
 
Fa Sale And Lease Back V3
Fa  Sale And Lease Back V3Fa  Sale And Lease Back V3
Fa Sale And Lease Back V3
famagalhaes
 
Rutas evento ctm 01 de mayo de 2014
Rutas evento ctm 01 de mayo de 2014Rutas evento ctm 01 de mayo de 2014
Rutas evento ctm 01 de mayo de 2014
Dulce Sandoval
 
Mercado de capitales 07.04.11
Mercado de capitales 07.04.11Mercado de capitales 07.04.11
Mercado de capitales 07.04.11
finanzas_uca
 
Apresentação web 2 0
Apresentação web 2 0Apresentação web 2 0
Apresentação web 2 0
Thais Dalcin
 
Relatorio Final.PDF
Relatorio Final.PDFRelatorio Final.PDF
Relatorio Final.PDF
Jorge Matias
 

Andere mochten auch (20)

Mayusculas
MayusculasMayusculas
Mayusculas
 
Empreendedorismo sumaré
Empreendedorismo sumaréEmpreendedorismo sumaré
Empreendedorismo sumaré
 
Cultture2012
Cultture2012Cultture2012
Cultture2012
 
Cmb 20110323 Visió I Valors
Cmb 20110323 Visió I ValorsCmb 20110323 Visió I Valors
Cmb 20110323 Visió I Valors
 
Buchhandel der Zukunft | Trendscouting im Bereich Wohnkultur
Buchhandel der Zukunft | Trendscouting im Bereich WohnkulturBuchhandel der Zukunft | Trendscouting im Bereich Wohnkultur
Buchhandel der Zukunft | Trendscouting im Bereich Wohnkultur
 
Seminario 2 estadistica
Seminario 2 estadisticaSeminario 2 estadistica
Seminario 2 estadistica
 
TPS 3 Watuwatu
TPS 3 WatuwatuTPS 3 Watuwatu
TPS 3 Watuwatu
 
Fa Sale And Lease Back V3
Fa  Sale And Lease Back V3Fa  Sale And Lease Back V3
Fa Sale And Lease Back V3
 
Rutas evento ctm 01 de mayo de 2014
Rutas evento ctm 01 de mayo de 2014Rutas evento ctm 01 de mayo de 2014
Rutas evento ctm 01 de mayo de 2014
 
Mentirao
MentiraoMentirao
Mentirao
 
Mercado de capitales 07.04.11
Mercado de capitales 07.04.11Mercado de capitales 07.04.11
Mercado de capitales 07.04.11
 
Cr ca _sept_2010_farmv
Cr ca _sept_2010_farmvCr ca _sept_2010_farmv
Cr ca _sept_2010_farmv
 
Apresentação web 2 0
Apresentação web 2 0Apresentação web 2 0
Apresentação web 2 0
 
Relatorio Final.PDF
Relatorio Final.PDFRelatorio Final.PDF
Relatorio Final.PDF
 
Conama 2015, Vehículo eléctrico
Conama 2015, Vehículo eléctricoConama 2015, Vehículo eléctrico
Conama 2015, Vehículo eléctrico
 
Algor genetico
Algor geneticoAlgor genetico
Algor genetico
 
Balanço geral
Balanço geralBalanço geral
Balanço geral
 
TeDR, ¿la fusión de TIC y ADR?
TeDR, ¿la fusión de TIC y ADR?TeDR, ¿la fusión de TIC y ADR?
TeDR, ¿la fusión de TIC y ADR?
 
Kallel mehdi
Kallel mehdiKallel mehdi
Kallel mehdi
 
Transplace
TransplaceTransplace
Transplace
 

Ähnlich wie Intégration Continue et PHP

Kiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetKiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internet
Devclic
 
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
PimpMySharePoint
 
Industrialisation bar camp2010
Industrialisation bar camp2010Industrialisation bar camp2010
Industrialisation bar camp2010
Lushkah911
 
Rich Desktop Applications
Rich Desktop ApplicationsRich Desktop Applications
Rich Desktop Applications
goldoraf
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec Jenkins
Hugo Hamon
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
Marc Nazarian
 

Ähnlich wie Intégration Continue et PHP (20)

Spécifications de webservices avec un seul outil
Spécifications de webservices avec un seul outilSpécifications de webservices avec un seul outil
Spécifications de webservices avec un seul outil
 
Usine logicielle à Orange Labs
Usine logicielle à Orange LabsUsine logicielle à Orange Labs
Usine logicielle à Orange Labs
 
Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement web
 
HTML5... La révolution maintenant!
HTML5... La révolution maintenant!HTML5... La révolution maintenant!
HTML5... La révolution maintenant!
 
HTML5... La révolution maintenant!
HTML5... La révolution maintenant!HTML5... La révolution maintenant!
HTML5... La révolution maintenant!
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven
 
Du Clic à la Conversation : remplaçons boutons et formulaires par un LLM !
Du Clic à la Conversation : remplaçons boutons et formulaires par un LLM !Du Clic à la Conversation : remplaçons boutons et formulaires par un LLM !
Du Clic à la Conversation : remplaçons boutons et formulaires par un LLM !
 
Performance au quotidien dans un environnement symfony
Performance au quotidien dans un environnement symfonyPerformance au quotidien dans un environnement symfony
Performance au quotidien dans un environnement symfony
 
Production logicielle, outils et pratiques
Production logicielle, outils et pratiquesProduction logicielle, outils et pratiques
Production logicielle, outils et pratiques
 
Symposium2008 Open Source 08 02 2008
Symposium2008    Open Source   08 02 2008Symposium2008    Open Source   08 02 2008
Symposium2008 Open Source 08 02 2008
 
Kiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetKiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internet
 
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
 
Industrialisation bar camp2010
Industrialisation bar camp2010Industrialisation bar camp2010
Industrialisation bar camp2010
 
Visual studio 2017 Launch keynote - Afterworks@Noumea
Visual studio 2017 Launch keynote - Afterworks@NoumeaVisual studio 2017 Launch keynote - Afterworks@Noumea
Visual studio 2017 Launch keynote - Afterworks@Noumea
 
Rich Desktop Applications
Rich Desktop ApplicationsRich Desktop Applications
Rich Desktop Applications
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec Jenkins
 
S43 passer à php 7 sous IBM i
S43   passer à php 7 sous IBM iS43   passer à php 7 sous IBM i
S43 passer à php 7 sous IBM i
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
 
Décryptage des LLMs au-delà de la hype - Lyon Data science
Décryptage des LLMs au-delà de la hype - Lyon Data scienceDécryptage des LLMs au-delà de la hype - Lyon Data science
Décryptage des LLMs au-delà de la hype - Lyon Data science
 

Intégration Continue et PHP

  • 1. L’équipe IT Oswald De Riemaecker, Anthony Laurain, Sebastien Retoux, Christophe Diprima, Christian Schramm 16 May 2013 Le Test chez atHome.lu Retour sur expérience Friday, May 17, 13
  • 2. L’équipe atHome • Oswald De Riemaecker - Team Lead : Passionné de Linux, technologie open source, développement web et gestion de projet/produit Agile. • Anthony Laurain - Senior Platform Developer (Zend Framework Certified developer) • Sebastien Retoux - Tactical Coordinator and Release Manager • Christophe DiPrima - UX/Intégrateur • Christian Schramm - DevOps/Linux SysAdmin (Zend Framework Certified) Friday, May 17, 13
  • 3. La Stratégie de testFriday, May 17, 13
  • 4. Automatisés Tests Unitaires Tests de composants Test GUI Manuels & Automatisés Tests Fonctionnels Exemples Tests sur Storyboards Tests de perception Maquettes Prototypes / Simulation Outils Tests de performance Tests de Charge Tests de sécurité Manuels Tests exploratoiresScénarios Tests d'utilisabilité Tests d'acceptation (UAT) Orientation Business Orientation Technologie Soutiendel'équipe CritiqueProduit Q1 Q2 Q3 Q4 Les quatre quadrants du Test Agile de Brian Marick Friday, May 17, 13
  • 5. La pyramide des tests automatisés de Mike Cohn Unit Tests Tests API Tests d’Intégration Tests de Composent Tests GUI Tests Manuel Orientation Technologie Orientation Business Développons nous le bon système ? Développons nous le système correctement ? Friday, May 17, 13
  • 7. L'interface utilisateur avec Sahi Les critères d'acceptance avec Behat Le code avec PHPUnit Les outils par couches Unit Tests Tests API Tests d’Intégration Tests de Composent Tests GUI Tests Manuel Friday, May 17, 13
  • 8. Les tests unitaire avec PHPUnit  PHPUnit est un framework de tests unitaires PHP  Nouveau développement avec une approche développement par le test (TDD)  Couverture maximal de nouvelle classe Friday, May 17, 13
  • 9. Behat s Feature: Testing the RESTfulness of the immotype controller Background: Given I am using the rest service and I am logged with "username:password" Scenario: Fetching immotype by id Given that I want to find a "Immotype" When I request "/immotype/24" Then the "id" property equals "24" And the "description_en" property equals "Business Takeover" Then the response is JSON Then the response status code should be 200 When I request "/immotype/1000" Then the response status code should be 404 Friday, May 17, 13
  • 10. Behat  Framework BDD pour PHP s Feature: Testing the RESTfulness of the immotype controller Background: Given I am using the rest service and I am logged with "username:password" Scenario: Fetching immotype by id Given that I want to find a "Immotype" When I request "/immotype/24" Then the "id" property equals "24" And the "description_en" property equals "Business Takeover" Then the response is JSON Then the response status code should be 200 When I request "/immotype/1000" Then the response status code should be 404 Friday, May 17, 13
  • 11. Behat  Framework BDD pour PHP  Orienté métier s Feature: Testing the RESTfulness of the immotype controller Background: Given I am using the rest service and I am logged with "username:password" Scenario: Fetching immotype by id Given that I want to find a "Immotype" When I request "/immotype/24" Then the "id" property equals "24" And the "description_en" property equals "Business Takeover" Then the response is JSON Then the response status code should be 200 When I request "/immotype/1000" Then the response status code should be 404 Friday, May 17, 13
  • 12. Behat  Framework BDD pour PHP  Orienté métier  Utilise le Gerkhin Syntaxe "Un langage compréhensible orienté besoins métier, qui décrit le comportement d'une application sans se préoccuper des détails de l'implémentation" s Feature: Testing the RESTfulness of the immotype controller Background: Given I am using the rest service and I am logged with "username:password" Scenario: Fetching immotype by id Given that I want to find a "Immotype" When I request "/immotype/24" Then the "id" property equals "24" And the "description_en" property equals "Business Takeover" Then the response is JSON Then the response status code should be 200 When I request "/immotype/1000" Then the response status code should be 404 Friday, May 17, 13
  • 13. Behat  Framework BDD pour PHP  Orienté métier  Utilise le Gerkhin Syntaxe "Un langage compréhensible orienté besoins métier, qui décrit le comportement d'une application sans se préoccuper des détails de l'implémentation"  Basé sur les critères d'acceptance d'une histoire utilisateur, fonctionne très bien avec un gestion de produit agile s Feature: Testing the RESTfulness of the immotype controller Background: Given I am using the rest service and I am logged with "username:password" Scenario: Fetching immotype by id Given that I want to find a "Immotype" When I request "/immotype/24" Then the "id" property equals "24" And the "description_en" property equals "Business Takeover" Then the response is JSON Then the response status code should be 200 When I request "/immotype/1000" Then the response status code should be 404 Friday, May 17, 13
  • 15. Sahi  C’est le haut de notre pyramide de test Friday, May 17, 13
  • 16. Sahi  C’est le haut de notre pyramide de test  Outil de test pour les applications web Friday, May 17, 13
  • 17. Sahi  C’est le haut de notre pyramide de test  Outil de test pour les applications web  Enregistrement de scénario utilisateur dans le navigateur Friday, May 17, 13
  • 18. Sahi  C’est le haut de notre pyramide de test  Outil de test pour les applications web  Enregistrement de scénario utilisateur dans le navigateur  Lorsque nécessaire, les scénarios principaux, peu susceptible de changer au niveau interface mais ayant un risque de régression importante (Inscription d’utilisateur/Login/Alerte email) Friday, May 17, 13
  • 19. Les outils pour l'IC Friday, May 17, 13
  • 20. La gestion des branches de développement Master Branch SprintBranch Sprint Tactic / Bug Fixes Tactic / Bug Fixes Tactic / Bug Fixes Tactic / Bug Fixes Intégration Continue Remonté de la Master Friday, May 17, 13
  • 21. La gestion des branches de développement  Logiciel de gestion de versions décentralisé Master Branch SprintBranch Sprint Tactic / Bug Fixes Tactic / Bug Fixes Tactic / Bug Fixes Tactic / Bug Fixes Intégration Continue Remonté de la Master Friday, May 17, 13
  • 22. La gestion des branches de développement  Logiciel de gestion de versions décentralisé  Branch Master, la dernière en production Master Branch SprintBranch Sprint Tactic / Bug Fixes Tactic / Bug Fixes Tactic / Bug Fixes Tactic / Bug Fixes Intégration Continue Remonté de la Master Friday, May 17, 13
  • 23. La gestion des branches de développement  Logiciel de gestion de versions décentralisé  Branch Master, la dernière en production  Branch de Goal de Sprint/Epique de produit Master Branch SprintBranch Sprint Tactic / Bug Fixes Tactic / Bug Fixes Tactic / Bug Fixes Tactic / Bug Fixes Intégration Continue Remonté de la Master Friday, May 17, 13
  • 24. La gestion des branches de développement  Logiciel de gestion de versions décentralisé  Branch Master, la dernière en production  Branch de Goal de Sprint/Epique de produit  Branch de prototypage pour le test rapide d’implémentation de solution technique Master Branch SprintBranch Sprint Tactic / Bug Fixes Tactic / Bug Fixes Tactic / Bug Fixes Tactic / Bug Fixes Intégration Continue Remonté de la Master Friday, May 17, 13
  • 25. Le système de build Friday, May 17, 13
  • 26. Le système de build  Outil open source d'intégration continue Friday, May 17, 13
  • 27. Le système de build  Outil open source d'intégration continue  Interface avec des systèmes de gestion de versions Friday, May 17, 13
  • 28. Le système de build  Outil open source d'intégration continue  Interface avec des systèmes de gestion de versions  Apache Ant et scripts Shell Friday, May 17, 13
  • 29. Le système de build  Outil open source d'intégration continue  Interface avec des systèmes de gestion de versions  Apache Ant et scripts Shell  Plugin Extreme feed back sur grand écran pour un retour rapide sur l’état de build Friday, May 17, 13
  • 30. La construction sur conteneur virtuel http://master.athome.lu http://dev01.athome.lu http://dev02.athome.lu http://dev03.athome.lu http://dev04.athome.lu ... Friday, May 17, 13
  • 31. La construction sur conteneur virtuel  OpenVZ permet à un serveur physique d'exécuter de multiples instances de systèmes d'exploitation isolés http://master.athome.lu http://dev01.athome.lu http://dev02.athome.lu http://dev03.athome.lu http://dev04.athome.lu ... Friday, May 17, 13
  • 32. La construction sur conteneur virtuel  OpenVZ permet à un serveur physique d'exécuter de multiples instances de systèmes d'exploitation isolés  Installé à la création de job jenkins http://master.athome.lu http://dev01.athome.lu http://dev02.athome.lu http://dev03.athome.lu http://dev04.athome.lu ... Friday, May 17, 13
  • 33. La construction sur conteneur virtuel  OpenVZ permet à un serveur physique d'exécuter de multiples instances de systèmes d'exploitation isolés  Installé à la création de job jenkins  Copie de l’environnement de production http://master.athome.lu http://dev01.athome.lu http://dev02.athome.lu http://dev03.athome.lu http://dev04.athome.lu ... Friday, May 17, 13
  • 35. Scrum with Agile Product Management Epique Epique Epique Epique En tant qu'administrateur ... En tant qu'agent .. En tant que visiteur ... En tant que utilisateur ... Critère d’acceptance: ............................... ............................... ............................... ............................... Friday, May 17, 13
  • 36. Scrum with Agile Product Management  Carnet Produit Epique Epique Epique Epique En tant qu'administrateur ... En tant qu'agent .. En tant que visiteur ... En tant que utilisateur ... Critère d’acceptance: ............................... ............................... ............................... ............................... Friday, May 17, 13
  • 37. Scrum with Agile Product Management  Carnet Produit  Découpage en épique Epique Epique Epique Epique En tant qu'administrateur ... En tant qu'agent .. En tant que visiteur ... En tant que utilisateur ... Critère d’acceptance: ............................... ............................... ............................... ............................... Friday, May 17, 13
  • 38. Scrum with Agile Product Management  Carnet Produit  Découpage en épique  Découpage en histoire utilisateurs Epique Epique Epique Epique En tant qu'administrateur ... En tant qu'agent .. En tant que visiteur ... En tant que utilisateur ... Critère d’acceptance: ............................... ............................... ............................... ............................... Friday, May 17, 13
  • 39. Scrum with Agile Product Management  Carnet Produit  Découpage en épique  Découpage en histoire utilisateurs  Critère d'acceptance (SEO/Code Postaux/ACL ...) Epique Epique Epique Epique En tant qu'administrateur ... En tant qu'agent .. En tant que visiteur ... En tant que utilisateur ... Critère d’acceptance: ............................... ............................... ............................... ............................... Friday, May 17, 13
  • 40. Sprint Planning En tant qu'administrateur ... En tant qu'agent .. En tant que visiteur ... En tant que utilisateur ... GOAL DE SPRINT Critère d’acceptance: ............................... ............................... ............................... ............................... Friday, May 17, 13
  • 41. Sprint Planning  Création de la branch de Goal de sprint GIT En tant qu'administrateur ... En tant qu'agent .. En tant que visiteur ... En tant que utilisateur ... GOAL DE SPRINT Critère d’acceptance: ............................... ............................... ............................... ............................... Friday, May 17, 13
  • 42. Sprint Planning  Création de la branch de Goal de sprint GIT  Création du Job Jenkins En tant qu'administrateur ... En tant qu'agent .. En tant que visiteur ... En tant que utilisateur ... GOAL DE SPRINT Critère d’acceptance: ............................... ............................... ............................... ............................... Friday, May 17, 13
  • 43. Le Sprint Master Branch Sprint Tactic / Bug Fixes Intégration Continue Remonté de la Master Sandbox Jenkins Histoire Utilisateur 1 PHP Unit / Behat Dev Histoire Utilisateur 2 PHP Unit / Behat Dev Histoire Utilisateur 3 PHP Unit / Behat Dev Histoire Utilisateur 4 PHP Unit / Behat Dev Production Tactic / Bug Fixes VZ Branch de Sprint VZ Master + Manuel Testing + Validation+ + Manuel Testing+ + Manuel Testing+ Deploy Deploy Deploy Intégration de la branch de Sprint + + + Friday, May 17, 13
  • 45. Jenkins • Des Jobs de branch de Goal de sprint • Le job Branch Master avec la master Sahi si Master successful • Le job de déploiement en production • Le modèle pour la création de nouveau job Friday, May 17, 13
  • 47. Jenkins Paramètre du build • Synchronisation de la base de donnée de production, jenkins va chercher la dernier base en production et la réinstaller, ce paramètre est très utile pour valider les mise à jour SQL • Rebuild solr • Réinstallation complète du conteneur virtuel (avec installation système) • Version php + mariadb • Ainsi qu’une l’utilisation d’une base de donnée light Friday, May 17, 13
  • 48. Jenkins Extreme Feed back • Voici un exemple • Lors du dernier build nous avons la branch highlight avec 1 test non passé Friday, May 17, 13
  • 49. Jenkins Rapport de Build avec Résultat de test Friday, May 17, 13
  • 50. Jenkins Message d’erreur pour le test qui n’a pas passé • Le test vérifie que le service REST en GET retourne bien les statistiques de notre offre, il y a un problème de nom de colonne dans le modèle de la table des statistique • Détection et identification du problème rapide Friday, May 17, 13
  • 52. Jenkins Jenkins nous permet donc: En résumé Friday, May 17, 13
  • 53. Jenkins Jenkins nous permet donc:  Construction environnement virtuel En résumé Friday, May 17, 13
  • 54. Jenkins Jenkins nous permet donc:  Construction environnement virtuel  Intégration développement En résumé Friday, May 17, 13
  • 55. Jenkins Jenkins nous permet donc:  Construction environnement virtuel  Intégration développement  Mise à jour et test de la base de donnée En résumé Friday, May 17, 13
  • 56. Jenkins Jenkins nous permet donc:  Construction environnement virtuel  Intégration développement  Mise à jour et test de la base de donnée  Mise à jour et test que Solr En résumé Friday, May 17, 13
  • 57. Jenkins Jenkins nous permet donc:  Construction environnement virtuel  Intégration développement  Mise à jour et test de la base de donnée  Mise à jour et test que Solr  Installation outils de test En résumé Friday, May 17, 13
  • 58. Jenkins Jenkins nous permet donc:  Construction environnement virtuel  Intégration développement  Mise à jour et test de la base de donnée  Mise à jour et test que Solr  Installation outils de test  Test Unitaires En résumé Friday, May 17, 13
  • 59. Jenkins Jenkins nous permet donc:  Construction environnement virtuel  Intégration développement  Mise à jour et test de la base de donnée  Mise à jour et test que Solr  Installation outils de test  Test Unitaires  Test BDD Behat En résumé Friday, May 17, 13
  • 60. Jenkins Jenkins nous permet donc:  Construction environnement virtuel  Intégration développement  Mise à jour et test de la base de donnée  Mise à jour et test que Solr  Installation outils de test  Test Unitaires  Test BDD Behat  Rapport de build En résumé Friday, May 17, 13
  • 61. Jenkins Jenkins nous permet donc:  Construction environnement virtuel  Intégration développement  Mise à jour et test de la base de donnée  Mise à jour et test que Solr  Installation outils de test  Test Unitaires  Test BDD Behat  Rapport de build  Identification de tests qui ne sont pas passé En résumé Friday, May 17, 13
  • 62. Jenkins Jenkins nous permet donc:  Construction environnement virtuel  Intégration développement  Mise à jour et test de la base de donnée  Mise à jour et test que Solr  Installation outils de test  Test Unitaires  Test BDD Behat  Rapport de build  Identification de tests qui ne sont pas passé  Lancement d'autre build (Sahi) En résumé Friday, May 17, 13
  • 63. Jenkins Jenkins nous permet donc:  Construction environnement virtuel  Intégration développement  Mise à jour et test de la base de donnée  Mise à jour et test que Solr  Installation outils de test  Test Unitaires  Test BDD Behat  Rapport de build  Identification de tests qui ne sont pas passé  Lancement d'autre build (Sahi)  Déploiement en production En résumé Friday, May 17, 13
  • 64. Jenkins Jenkins nous permet donc:  Construction environnement virtuel  Intégration développement  Mise à jour et test de la base de donnée  Mise à jour et test que Solr  Installation outils de test  Test Unitaires  Test BDD Behat  Rapport de build  Identification de tests qui ne sont pas passé  Lancement d'autre build (Sahi)  Déploiement en production En résumé Friday, May 17, 13
  • 65. Behat Le fichier de fonctionnalité • Behat, le milieu de notre pyramide. • Vérifions pourquoi notre test behat n’est pas passé, nous avons ici nos critères d’acceptance sous forme de Gerkhin Syntaxe. Friday, May 17, 13
  • 66. Behat Le test behat en ligne de commande • Nous avons donc un problème avec le contrôler REST statistiques global Friday, May 17, 13
  • 67. Behat Identification rapide du problème avec Jenkins • Nous identifions rapidement sur base des derniers commits que le gateway Omniture Property Views à été changé Friday, May 17, 13
  • 68. Behat Correction de notre Méthode • Nous pouvons corriger et relancer le build Friday, May 17, 13
  • 70. Behat Notre test Behat passe Friday, May 17, 13
  • 71. Behat Jeux de donnée de test • Behat et Jenkins nous permet d’avoir des jeux donnée pour les test manuel et GUI Friday, May 17, 13
  • 73. Behat Behat nous permet donc: En résumé Friday, May 17, 13
  • 74. Behat Behat nous permet donc:  Tester le métier, avec la même approche que le TDD, on écrit les critère d’acceptance de la fonctionnalité testée, ce qui permet de structuré sa pensée et son code, on pense par le test. En résumé Friday, May 17, 13
  • 75. Behat Behat nous permet donc:  Tester le métier, avec la même approche que le TDD, on écrit les critère d’acceptance de la fonctionnalité testée, ce qui permet de structuré sa pensée et son code, on pense par le test.  Tester les ACL (Accès Control List) En résumé Friday, May 17, 13
  • 76. Behat Behat nous permet donc:  Tester le métier, avec la même approche que le TDD, on écrit les critère d’acceptance de la fonctionnalité testée, ce qui permet de structuré sa pensée et son code, on pense par le test.  Tester les ACL (Accès Control List)  Tester les services RESTful et sa sécurité En résumé Friday, May 17, 13
  • 77. Behat Behat nous permet donc:  Tester le métier, avec la même approche que le TDD, on écrit les critère d’acceptance de la fonctionnalité testée, ce qui permet de structuré sa pensée et son code, on pense par le test.  Tester les ACL (Accès Control List)  Tester les services RESTful et sa sécurité  Injecter des données pour les tests manuel et GUI En résumé Friday, May 17, 13
  • 80. Sahi Rapport de Test pour la publication d’offre • Notre lien manquant Friday, May 17, 13
  • 82. Sahi Scripting Sahi • Nous avons ajouté un système de dictionnaire pour pouvoir tester nos différents sites, par exemple l’utilisation de la ville Troisvierges sur athome.lu et Saarbruken sur athome.de • Nous faisons aussi des tests SEO, nous validons que les blocs SEO en bas de page redirige vers la bonne page et que celle-ci a bien les bons Title et Meta • Ce test nous a permis de trouver un problème avec la génération des Titles SEO que nous n’aurions certainement pas pu voir autrement. Friday, May 17, 13
  • 84. Sahi Sahi nous permet donc: En résumé Friday, May 17, 13
  • 85. Sahi Sahi nous permet donc:  Tests sur plusieurs navigateurs En résumé Friday, May 17, 13
  • 86. Sahi Sahi nous permet donc:  Tests sur plusieurs navigateurs  Valider les fonctionnalités utilisateur critiques (Inscription/Login/Email Alerts) En résumé Friday, May 17, 13
  • 87. Sahi Sahi nous permet donc:  Tests sur plusieurs navigateurs  Valider les fonctionnalités utilisateur critiques (Inscription/Login/Email Alerts)  Valider navigation utilisateur En résumé Friday, May 17, 13
  • 88. Sahi Sahi nous permet donc:  Tests sur plusieurs navigateurs  Valider les fonctionnalités utilisateur critiques (Inscription/Login/Email Alerts)  Valider navigation utilisateur  Valider liens SEO En résumé Friday, May 17, 13
  • 89. Sahi Sahi nous permet donc:  Tests sur plusieurs navigateurs  Valider les fonctionnalités utilisateur critiques (Inscription/Login/Email Alerts)  Valider navigation utilisateur  Valider liens SEO En résumé Friday, May 17, 13
  • 91. Ce qui nous reste encore a faire: Next Steps Friday, May 17, 13
  • 92. Ce qui nous reste encore a faire:  Ajout de métrique, Code Coverage + PHP Tools (PHPcp/md ...) Next Steps Friday, May 17, 13
  • 93. Ce qui nous reste encore a faire:  Ajout de métrique, Code Coverage + PHP Tools (PHPcp/md ...)  Améliorer les tests Sahi sur plusieurs navigateurs Next Steps Friday, May 17, 13
  • 94. Ce qui nous reste encore a faire:  Ajout de métrique, Code Coverage + PHP Tools (PHPcp/md ...)  Améliorer les tests Sahi sur plusieurs navigateurs  Implémenter des tests de performance Next Steps Friday, May 17, 13
  • 95. Ce qui nous reste encore a faire:  Ajout de métrique, Code Coverage + PHP Tools (PHPcp/md ...)  Améliorer les tests Sahi sur plusieurs navigateurs  Implémenter des tests de performance  Implémenter JsTestDriver dans Jenkins Next Steps Friday, May 17, 13
  • 96. Ce qui nous reste encore a faire:  Ajout de métrique, Code Coverage + PHP Tools (PHPcp/md ...)  Améliorer les tests Sahi sur plusieurs navigateurs  Implémenter des tests de performance  Implémenter JsTestDriver dans Jenkins Next Steps Friday, May 17, 13
  • 99. Je tiens à remercier  L'équipe atHome pour leur travail!  VA Consulting  Vous ! Twitter: oswald_odr Email: oswald.odr.pm@gmail.com Remerciement Friday, May 17, 13