SlideShare uma empresa Scribd logo
1 de 36
Baixar para ler offline
Automatiser
                    la qualité
            Paris,France,6 juin 2012




samedi 9 juin 12
Intervenant

           Damien Seguy
           damien.seguy@gmail.com
           Directeur technique
           Bysoft Chine
           Expert LAMP
           Auteur de livres




samedi 9 juin 12
Agenda



                   Automatisation des tests
                   Outils pour surveiller le code
                   Rapports et extraits



samedi 9 juin 12
Automatisation de la qualité


                   Pour adopter les bons réflexes dès le
                   début du projets
                   Pour assurer un suivi continu
                   Pour fixer des objectifs aux développeurs
                   Pour traiter 50 projets en même temps


samedi 9 juin 12
Objectifs


                   Peu de mise en place
                   Pas d’implication utilisateur
                   Possibilité de faire apparaître valoriser
                   la qualité auprès des clients



samedi 9 juin 12
Contraintes



                   Fournir des données utilisables par les
                   développeurs
                   Fournir un bilan lisible à la direction de
                   projet et aux clients



samedi 9 juin 12
Solutions


                   Adopter les outils standards du marché
                   Publier des courbes d’évolutions
                   Publier des objectifs
                   Faire fonctionner le tout avec un cron



samedi 9 juin 12
Objet de suivi



                   Code PHP
                   Code IHM
                   Aspects complémentaires



samedi 9 juin 12
Révision SVN



                   Evolution de la version SVN
                   Mesure de l’activité
                   Découpage par branche



samedi 9 juin 12
samedi 9 juin 12
phploc



                   PHP Lines of code
                   Compte les lignes de code
                     ainsi qu’un bon nombre de structures



samedi 9 juin 12
Files:                                            9178

     Lines of Code (LOC):                           1403381
       Cyclomatic Complexity / Lines of Code:          0.10
     Comment Lines of Code (CLOC):                   608258
     Non-Comment Lines of Code (NCLOC):              795123

     Namespaces:                                          0
     Interfaces:                                        172
     Classes:                                          7989
       Abstract:                                        368 (4.61%)
       Concrete:                                       7621 (95.39%)
       Average Class Length (NCLOC):                     91
     Methods:                                         44768
       Scope:
         Non-Static:                                  43352 (96.84%)
         Static:                                       1416 (3.16%)
       Visibility:
         Public:                                      33467 (74.76%)
         Non-Public:                                  11301 (25.24%)
       Average Method Length (NCLOC):                    16
       Cyclomatic Complexity / Number of Methods:      2.72

     Anonymous Functions:                                 4
     Functions:                                         153

     Constants:                                        6174
       Global constants:                                303
       Class constants:                                5871




samedi 9 juin 12
PHP_CodeSniffer



                   Conventions de code
                   Ça n’intéresse personne




samedi 9 juin 12
Inventaire de nommage


                   Inverse de la conception
                   Extrait tous les noms des classes,
                   variables, constantes, fonctions
                   Appliquer la validation orthographique
                   Scripts maison


samedi 9 juin 12
Revue rapide
               [$taxConfig] => 2       [$shippingAddressId] => 3
               [$config] => 4          [$billingResult] => 3
               [$uid] => 36            [$shippingResult] => 3
               [$type] => 19           [$isNewCustomer] => 2
               [$id] => 43             [$service] => 4
               [$obj] => 31            [$redirectUrl] => 9
               [$email] => 33          [$agreement] => 3
               [$customer] => 75       [$customerAddressId] => 2
               [$newPassword] => 2     [$sale_quote_id] => 6
               [$websiteId] => 13      [$invoice_type] => 3
               [$collection] => 70     [$invoice_content] => 3
               [$invitation] => 4      [$invoice_id] => 4
               [$sender] => 8          [$methdelivery] => 27
               [$recipients] => 8      [$citys] => 10
               [$template] => 13       [$e] => 72
               [$category] => 61       [$category_id] => 2




samedi 9 juin 12
Validateur HTML


                   Fonctionne sur les pages entières
                   Nécessite un test sur un serveur en
                   fonctionnement
                   Utilise le validateur du W3C
                   Choisir la version HTML cible


samedi 9 juin 12
Css-validator


                   Emis directement par le W3C
                   Applique les standards 1,2,2.1,3
                   Bonne implication des intégrateurs
                   A mort IE6



samedi 9 juin 12
samedi 9 juin 12
Images


                   Vérifie la compression
                   Vérifie le format
                     Liste les suggestions de corrections
                     Attention, impact sur le code...



samedi 9 juin 12
Non modification du framework

                    Valable sur Magento, Zend Framework
                      Pas sur Drupal..
                    Liste les fichiers ajoutés, modifiés,
                    effacés
                      Pratique ultérieurement pour éviter
                      les frameworks externes

samedi 9 juin 12
Performance ab

                   Effectue un test de performance sur le
                   site de tests
                   Mesure la performance, et indique le
                   temps moyen de traitement
                   Intéressant au niveau de l’évolution
                   A compléter avec les tests phantomjs
                   pour inclure les media

samedi 9 juin 12
samedi 9 juin 12
Capture d’écran

                   Avec phantomjs : capture la home page,
                   puis produit une image
                   Parfait a produire aux clients
                   Utiliser un outil de différence d’image
                   pour mesurer l’évolution de la home
                   page


samedi 9 juin 12
samedi 9 juin 12
JSlint pour javascript



                   phantomjs + jslint
                   Penser a le mettre a jour souvent




samedi 9 juin 12
D’autres idées




samedi 9 juin 12
Audit SQL



                   maatkit
                   Faire la différence entre les tables déjà
                   existantes et les nouvelles




samedi 9 juin 12
Fuzzing



                   Tests automatique des formulaires
                   Injections de valeurs au hasard
                   Vérification du résultat correct



samedi 9 juin 12
Lecture des logs

                   Logs Apache, PHP et MySQL


                   Extraire simplement les erreurs, les
                   fichiers et produire une liste courte
                   Travailler sur les erreurs les plus
                   récentes, puis par ordre de fréquence

samedi 9 juin 12
Tests de navigation


                   Ajouter un proxy sur le serveur de tests
                   Enregistrer l’utilisation du site
                     URL, post, cookies
                   Produire un scénario JMeter
                   Surveiller les erreurs?


samedi 9 juin 12
Mise en place


                   Faire le tri entre le code maison et celui
                   des frameworks
                   Installation des logiciels
                     Surveillance de leur configuration
                   Exécution 2 fois par jour


samedi 9 juin 12
Ignoré



                   Parallèlisation des tâches
                   Travail sur les diff




samedi 9 juin 12
Rapports

                   Développeurs
                     Liste de résultats, Evolutions
                   Management
                     Evolutions, indicateurs (ROV)
                   Clients
                     Indicateurs, captures, résumé manuel

samedi 9 juin 12
Bilan

                   47 projets suivis en même temps
                     Basé sur le dépot SVN et 1 URL
                     Temps total de traitement : 6h30
                   Mise en place sur 2 semaines
                   Adoption par la direction lente
                   Présentations pour les clients délicate

samedi 9 juin 12
Merci!



         damien.seguy@gmail.com

         http://www.slideshare.net/
         dseguy




samedi 9 juin 12
Il faut tester pour vérifier son code. Et comme il faut le faire tout au long du cycle de vie d'un projet, il vaut mieux s'outiller
             pour laisser à la machine le travail laborieux et pouvoir intervenir. De la convention de code aux vérifications d'interfaces,
             nous passerons en revue les outils les plus pratiques à mettre en place, la discipline de projet à appliquer et comment
             montrer aux utilisateurs la somme des efforts réalisés.




samedi 9 juin 12

Mais conteúdo relacionado

Destaque

rapport cours projet - overview
rapport cours projet - overviewrapport cours projet - overview
rapport cours projet - overviewJeanne Helluy
 
Prixing. Par Eric Larchevêque, Prixing
Prixing. Par Eric Larchevêque, PrixingPrixing. Par Eric Larchevêque, Prixing
Prixing. Par Eric Larchevêque, PrixingL'Atelier BNP Paribas
 
Pourquoi l'advergame est-il un contenu si extraordinaire? - Gabriel Mamou-Man...
Pourquoi l'advergame est-il un contenu si extraordinaire? - Gabriel Mamou-Man...Pourquoi l'advergame est-il un contenu si extraordinaire? - Gabriel Mamou-Man...
Pourquoi l'advergame est-il un contenu si extraordinaire? - Gabriel Mamou-Man...L'Atelier BNP Paribas
 
Josemogollon conflictos ambientales
Josemogollon conflictos ambientalesJosemogollon conflictos ambientales
Josemogollon conflictos ambientalesjosemogollonuft
 
Extraction et structuration de connaissances pour une plateforme interactive ...
Extraction et structuration de connaissances pour une plateforme interactive ...Extraction et structuration de connaissances pour une plateforme interactive ...
Extraction et structuration de connaissances pour une plateforme interactive ...Érudit
 
ASal_cv june 2015-revFR-1
ASal_cv june 2015-revFR-1ASal_cv june 2015-revFR-1
ASal_cv june 2015-revFR-1gemma caupena
 
Trabajo proyecto de grado
Trabajo proyecto de gradoTrabajo proyecto de grado
Trabajo proyecto de gradomiguelfunebrero
 
Tratamiento de aguas residuales
Tratamiento de aguas residualesTratamiento de aguas residuales
Tratamiento de aguas residualesYen Chong
 
Excel y sus partes word.
Excel y sus partes word.Excel y sus partes word.
Excel y sus partes word.Paola Romero
 
Grande différence d'âges chez les People
Grande différence d'âges chez les PeopleGrande différence d'âges chez les People
Grande différence d'âges chez les PeopleGran Ben
 
Matriz: Tipos de evaluación de aprendizaje
Matriz: Tipos de evaluación de aprendizajeMatriz: Tipos de evaluación de aprendizaje
Matriz: Tipos de evaluación de aprendizajeDulce Ramírez
 
La moutouelle groupama1
La moutouelle groupama1La moutouelle groupama1
La moutouelle groupama1symi59
 
Les 20 influences des réseaux de chaleur
Les 20 influences des réseaux de chaleurLes 20 influences des réseaux de chaleur
Les 20 influences des réseaux de chaleurlena_invox
 
Tim Burton n°1
Tim Burton n°1Tim Burton n°1
Tim Burton n°1Art E Show
 

Destaque (20)

rapport cours projet - overview
rapport cours projet - overviewrapport cours projet - overview
rapport cours projet - overview
 
CV_Français
CV_FrançaisCV_Français
CV_Français
 
Strip du soir ll111
Strip du soir ll111Strip du soir ll111
Strip du soir ll111
 
Prixing. Par Eric Larchevêque, Prixing
Prixing. Par Eric Larchevêque, PrixingPrixing. Par Eric Larchevêque, Prixing
Prixing. Par Eric Larchevêque, Prixing
 
BEYOU-DP-web
BEYOU-DP-webBEYOU-DP-web
BEYOU-DP-web
 
Pourquoi l'advergame est-il un contenu si extraordinaire? - Gabriel Mamou-Man...
Pourquoi l'advergame est-il un contenu si extraordinaire? - Gabriel Mamou-Man...Pourquoi l'advergame est-il un contenu si extraordinaire? - Gabriel Mamou-Man...
Pourquoi l'advergame est-il un contenu si extraordinaire? - Gabriel Mamou-Man...
 
Josemogollon conflictos ambientales
Josemogollon conflictos ambientalesJosemogollon conflictos ambientales
Josemogollon conflictos ambientales
 
Extraction et structuration de connaissances pour une plateforme interactive ...
Extraction et structuration de connaissances pour une plateforme interactive ...Extraction et structuration de connaissances pour une plateforme interactive ...
Extraction et structuration de connaissances pour une plateforme interactive ...
 
Victoria moncada presentacion
Victoria moncada presentacionVictoria moncada presentacion
Victoria moncada presentacion
 
ASal_cv june 2015-revFR-1
ASal_cv june 2015-revFR-1ASal_cv june 2015-revFR-1
ASal_cv june 2015-revFR-1
 
Trabajo proyecto de grado
Trabajo proyecto de gradoTrabajo proyecto de grado
Trabajo proyecto de grado
 
Tratamiento de aguas residuales
Tratamiento de aguas residualesTratamiento de aguas residuales
Tratamiento de aguas residuales
 
Excel y sus partes word.
Excel y sus partes word.Excel y sus partes word.
Excel y sus partes word.
 
L'ImagYnarium à la rencontre des nouveaux Luxes
L'ImagYnarium à la rencontre des nouveaux Luxes L'ImagYnarium à la rencontre des nouveaux Luxes
L'ImagYnarium à la rencontre des nouveaux Luxes
 
Grande différence d'âges chez les People
Grande différence d'âges chez les PeopleGrande différence d'âges chez les People
Grande différence d'âges chez les People
 
Santorini
SantoriniSantorini
Santorini
 
Matriz: Tipos de evaluación de aprendizaje
Matriz: Tipos de evaluación de aprendizajeMatriz: Tipos de evaluación de aprendizaje
Matriz: Tipos de evaluación de aprendizaje
 
La moutouelle groupama1
La moutouelle groupama1La moutouelle groupama1
La moutouelle groupama1
 
Les 20 influences des réseaux de chaleur
Les 20 influences des réseaux de chaleurLes 20 influences des réseaux de chaleur
Les 20 influences des réseaux de chaleur
 
Tim Burton n°1
Tim Burton n°1Tim Burton n°1
Tim Burton n°1
 

Semelhante a Automatiser la qualite

Techdays2011
Techdays2011 Techdays2011
Techdays2011 ALTER WAY
 
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continue
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continueOmnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continue
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continueXavier Callens
 
RefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsRefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsOCTO Technology
 
Industrialisez vos projets Php
Industrialisez vos projets Php Industrialisez vos projets Php
Industrialisez vos projets Php ALTER WAY
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logiciellecyrilgandon
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache MavenArnaud Héritier
 
TFS 2010 And Agility
TFS 2010 And AgilityTFS 2010 And Agility
TFS 2010 And AgilityDominic Danis
 
Hello AngularJS - Back to the future
Hello AngularJS - Back to the futureHello AngularJS - Back to the future
Hello AngularJS - Back to the futureOuadie LAHDIOUI
 
Comment construire son laboratoire de tests mobiles avec HP Mobile Center
Comment construire son laboratoire de tests mobiles avec HP Mobile CenterComment construire son laboratoire de tests mobiles avec HP Mobile Center
Comment construire son laboratoire de tests mobiles avec HP Mobile CenterGuillaume Deshayes
 
Accélérer les tests d’acceptation avec un DSL et du refactoring
Accélérer les tests d’acceptation avec un DSL et du refactoringAccélérer les tests d’acceptation avec un DSL et du refactoring
Accélérer les tests d’acceptation avec un DSL et du refactoringLaurent PY
 
CdP QA - QA hackathon - Intelligence artificielle - Meetup du 9 mars
CdP QA - QA hackathon - Intelligence artificielle - Meetup du 9 marsCdP QA - QA hackathon - Intelligence artificielle - Meetup du 9 mars
CdP QA - QA hackathon - Intelligence artificielle - Meetup du 9 marsAgile Montréal
 
Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Jean-Marc Fontaine
 
Kaizen ou l'amélioration continue
Kaizen ou l'amélioration continueKaizen ou l'amélioration continue
Kaizen ou l'amélioration continuePhilippe Gamache
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesOxalide
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceLudovic Piot
 
Octo RefCard test front-end
Octo RefCard test front-endOcto RefCard test front-end
Octo RefCard test front-endClément Dubois
 
Octo Technology - Refcard Tests Web front-end
Octo Technology - Refcard Tests Web front-endOcto Technology - Refcard Tests Web front-end
Octo Technology - Refcard Tests Web front-endFrançois Petitit
 
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...Microsoft Technet France
 

Semelhante a Automatiser la qualite (20)

Techdays2011
Techdays2011 Techdays2011
Techdays2011
 
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continue
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continueOmnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continue
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continue
 
RefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsRefCard Tests sur tous les fronts
RefCard Tests sur tous les fronts
 
Industrialisez vos projets Php
Industrialisez vos projets Php Industrialisez vos projets Php
Industrialisez vos projets Php
 
20111004 02 - Présentation Sqale
20111004 02 - Présentation Sqale20111004 02 - Présentation Sqale
20111004 02 - Présentation Sqale
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logicielle
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
TFS 2010 And Agility
TFS 2010 And AgilityTFS 2010 And Agility
TFS 2010 And Agility
 
Hello AngularJS - Back to the future
Hello AngularJS - Back to the futureHello AngularJS - Back to the future
Hello AngularJS - Back to the future
 
Comment construire son laboratoire de tests mobiles avec HP Mobile Center
Comment construire son laboratoire de tests mobiles avec HP Mobile CenterComment construire son laboratoire de tests mobiles avec HP Mobile Center
Comment construire son laboratoire de tests mobiles avec HP Mobile Center
 
Normandy JUG integration Continue
Normandy JUG integration ContinueNormandy JUG integration Continue
Normandy JUG integration Continue
 
Accélérer les tests d’acceptation avec un DSL et du refactoring
Accélérer les tests d’acceptation avec un DSL et du refactoringAccélérer les tests d’acceptation avec un DSL et du refactoring
Accélérer les tests d’acceptation avec un DSL et du refactoring
 
CdP QA - QA hackathon - Intelligence artificielle - Meetup du 9 mars
CdP QA - QA hackathon - Intelligence artificielle - Meetup du 9 marsCdP QA - QA hackathon - Intelligence artificielle - Meetup du 9 mars
CdP QA - QA hackathon - Intelligence artificielle - Meetup du 9 mars
 
Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011
 
Kaizen ou l'amélioration continue
Kaizen ou l'amélioration continueKaizen ou l'amélioration continue
Kaizen ou l'amélioration continue
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slides
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performance
 
Octo RefCard test front-end
Octo RefCard test front-endOcto RefCard test front-end
Octo RefCard test front-end
 
Octo Technology - Refcard Tests Web front-end
Octo Technology - Refcard Tests Web front-endOcto Technology - Refcard Tests Web front-end
Octo Technology - Refcard Tests Web front-end
 
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
 

Mais de Damien Seguy

Strong typing @ php leeds
Strong typing  @ php leedsStrong typing  @ php leeds
Strong typing @ php leedsDamien Seguy
 
Strong typing : adoption, adaptation and organisation
Strong typing : adoption, adaptation and organisationStrong typing : adoption, adaptation and organisation
Strong typing : adoption, adaptation and organisationDamien Seguy
 
Qui a laissé son mot de passe dans le code
Qui a laissé son mot de passe dans le codeQui a laissé son mot de passe dans le code
Qui a laissé son mot de passe dans le codeDamien Seguy
 
Analyse statique et applications
Analyse statique et applicationsAnalyse statique et applications
Analyse statique et applicationsDamien Seguy
 
Top 10 pieges php afup limoges
Top 10 pieges php   afup limogesTop 10 pieges php   afup limoges
Top 10 pieges php afup limogesDamien Seguy
 
Top 10 php classic traps DPC 2020
Top 10 php classic traps DPC 2020Top 10 php classic traps DPC 2020
Top 10 php classic traps DPC 2020Damien Seguy
 
Meilleur du typage fort (AFUP Day, 2020)
Meilleur du typage fort (AFUP Day, 2020)Meilleur du typage fort (AFUP Day, 2020)
Meilleur du typage fort (AFUP Day, 2020)Damien Seguy
 
Top 10 php classic traps confoo
Top 10 php classic traps confooTop 10 php classic traps confoo
Top 10 php classic traps confooDamien Seguy
 
Tout pour se préparer à PHP 7.4
Tout pour se préparer à PHP 7.4Tout pour se préparer à PHP 7.4
Tout pour se préparer à PHP 7.4Damien Seguy
 
Top 10 php classic traps php serbia
Top 10 php classic traps php serbiaTop 10 php classic traps php serbia
Top 10 php classic traps php serbiaDamien Seguy
 
Top 10 php classic traps
Top 10 php classic trapsTop 10 php classic traps
Top 10 php classic trapsDamien Seguy
 
Top 10 chausse trappes
Top 10 chausse trappesTop 10 chausse trappes
Top 10 chausse trappesDamien Seguy
 
Code review workshop
Code review workshopCode review workshop
Code review workshopDamien Seguy
 
Understanding static analysis php amsterdam 2018
Understanding static analysis   php amsterdam 2018Understanding static analysis   php amsterdam 2018
Understanding static analysis php amsterdam 2018Damien Seguy
 
Review unknown code with static analysis php ce 2018
Review unknown code with static analysis   php ce 2018Review unknown code with static analysis   php ce 2018
Review unknown code with static analysis php ce 2018Damien Seguy
 
Everything new with PHP 7.3
Everything new with PHP 7.3Everything new with PHP 7.3
Everything new with PHP 7.3Damien Seguy
 
Php 7.3 et ses RFC (AFUP Toulouse)
Php 7.3 et ses RFC  (AFUP Toulouse)Php 7.3 et ses RFC  (AFUP Toulouse)
Php 7.3 et ses RFC (AFUP Toulouse)Damien Seguy
 
Tout sur PHP 7.3 et ses RFC
Tout sur PHP 7.3 et ses RFCTout sur PHP 7.3 et ses RFC
Tout sur PHP 7.3 et ses RFCDamien Seguy
 
Review unknown code with static analysis php ipc 2018
Review unknown code with static analysis   php ipc 2018Review unknown code with static analysis   php ipc 2018
Review unknown code with static analysis php ipc 2018Damien Seguy
 
Code review for busy people
Code review for busy peopleCode review for busy people
Code review for busy peopleDamien Seguy
 

Mais de Damien Seguy (20)

Strong typing @ php leeds
Strong typing  @ php leedsStrong typing  @ php leeds
Strong typing @ php leeds
 
Strong typing : adoption, adaptation and organisation
Strong typing : adoption, adaptation and organisationStrong typing : adoption, adaptation and organisation
Strong typing : adoption, adaptation and organisation
 
Qui a laissé son mot de passe dans le code
Qui a laissé son mot de passe dans le codeQui a laissé son mot de passe dans le code
Qui a laissé son mot de passe dans le code
 
Analyse statique et applications
Analyse statique et applicationsAnalyse statique et applications
Analyse statique et applications
 
Top 10 pieges php afup limoges
Top 10 pieges php   afup limogesTop 10 pieges php   afup limoges
Top 10 pieges php afup limoges
 
Top 10 php classic traps DPC 2020
Top 10 php classic traps DPC 2020Top 10 php classic traps DPC 2020
Top 10 php classic traps DPC 2020
 
Meilleur du typage fort (AFUP Day, 2020)
Meilleur du typage fort (AFUP Day, 2020)Meilleur du typage fort (AFUP Day, 2020)
Meilleur du typage fort (AFUP Day, 2020)
 
Top 10 php classic traps confoo
Top 10 php classic traps confooTop 10 php classic traps confoo
Top 10 php classic traps confoo
 
Tout pour se préparer à PHP 7.4
Tout pour se préparer à PHP 7.4Tout pour se préparer à PHP 7.4
Tout pour se préparer à PHP 7.4
 
Top 10 php classic traps php serbia
Top 10 php classic traps php serbiaTop 10 php classic traps php serbia
Top 10 php classic traps php serbia
 
Top 10 php classic traps
Top 10 php classic trapsTop 10 php classic traps
Top 10 php classic traps
 
Top 10 chausse trappes
Top 10 chausse trappesTop 10 chausse trappes
Top 10 chausse trappes
 
Code review workshop
Code review workshopCode review workshop
Code review workshop
 
Understanding static analysis php amsterdam 2018
Understanding static analysis   php amsterdam 2018Understanding static analysis   php amsterdam 2018
Understanding static analysis php amsterdam 2018
 
Review unknown code with static analysis php ce 2018
Review unknown code with static analysis   php ce 2018Review unknown code with static analysis   php ce 2018
Review unknown code with static analysis php ce 2018
 
Everything new with PHP 7.3
Everything new with PHP 7.3Everything new with PHP 7.3
Everything new with PHP 7.3
 
Php 7.3 et ses RFC (AFUP Toulouse)
Php 7.3 et ses RFC  (AFUP Toulouse)Php 7.3 et ses RFC  (AFUP Toulouse)
Php 7.3 et ses RFC (AFUP Toulouse)
 
Tout sur PHP 7.3 et ses RFC
Tout sur PHP 7.3 et ses RFCTout sur PHP 7.3 et ses RFC
Tout sur PHP 7.3 et ses RFC
 
Review unknown code with static analysis php ipc 2018
Review unknown code with static analysis   php ipc 2018Review unknown code with static analysis   php ipc 2018
Review unknown code with static analysis php ipc 2018
 
Code review for busy people
Code review for busy peopleCode review for busy people
Code review for busy people
 

Automatiser la qualite

  • 1. Automatiser la qualité Paris,France,6 juin 2012 samedi 9 juin 12
  • 2. Intervenant Damien Seguy damien.seguy@gmail.com Directeur technique Bysoft Chine Expert LAMP Auteur de livres samedi 9 juin 12
  • 3. Agenda Automatisation des tests Outils pour surveiller le code Rapports et extraits samedi 9 juin 12
  • 4. Automatisation de la qualité Pour adopter les bons réflexes dès le début du projets Pour assurer un suivi continu Pour fixer des objectifs aux développeurs Pour traiter 50 projets en même temps samedi 9 juin 12
  • 5. Objectifs Peu de mise en place Pas d’implication utilisateur Possibilité de faire apparaître valoriser la qualité auprès des clients samedi 9 juin 12
  • 6. Contraintes Fournir des données utilisables par les développeurs Fournir un bilan lisible à la direction de projet et aux clients samedi 9 juin 12
  • 7. Solutions Adopter les outils standards du marché Publier des courbes d’évolutions Publier des objectifs Faire fonctionner le tout avec un cron samedi 9 juin 12
  • 8. Objet de suivi Code PHP Code IHM Aspects complémentaires samedi 9 juin 12
  • 9. Révision SVN Evolution de la version SVN Mesure de l’activité Découpage par branche samedi 9 juin 12
  • 11. phploc PHP Lines of code Compte les lignes de code ainsi qu’un bon nombre de structures samedi 9 juin 12
  • 12. Files: 9178 Lines of Code (LOC): 1403381 Cyclomatic Complexity / Lines of Code: 0.10 Comment Lines of Code (CLOC): 608258 Non-Comment Lines of Code (NCLOC): 795123 Namespaces: 0 Interfaces: 172 Classes: 7989 Abstract: 368 (4.61%) Concrete: 7621 (95.39%) Average Class Length (NCLOC): 91 Methods: 44768 Scope: Non-Static: 43352 (96.84%) Static: 1416 (3.16%) Visibility: Public: 33467 (74.76%) Non-Public: 11301 (25.24%) Average Method Length (NCLOC): 16 Cyclomatic Complexity / Number of Methods: 2.72 Anonymous Functions: 4 Functions: 153 Constants: 6174 Global constants: 303 Class constants: 5871 samedi 9 juin 12
  • 13. PHP_CodeSniffer Conventions de code Ça n’intéresse personne samedi 9 juin 12
  • 14. Inventaire de nommage Inverse de la conception Extrait tous les noms des classes, variables, constantes, fonctions Appliquer la validation orthographique Scripts maison samedi 9 juin 12
  • 15. Revue rapide [$taxConfig] => 2 [$shippingAddressId] => 3 [$config] => 4 [$billingResult] => 3 [$uid] => 36 [$shippingResult] => 3 [$type] => 19 [$isNewCustomer] => 2 [$id] => 43 [$service] => 4 [$obj] => 31 [$redirectUrl] => 9 [$email] => 33 [$agreement] => 3 [$customer] => 75 [$customerAddressId] => 2 [$newPassword] => 2 [$sale_quote_id] => 6 [$websiteId] => 13 [$invoice_type] => 3 [$collection] => 70 [$invoice_content] => 3 [$invitation] => 4 [$invoice_id] => 4 [$sender] => 8 [$methdelivery] => 27 [$recipients] => 8 [$citys] => 10 [$template] => 13 [$e] => 72 [$category] => 61 [$category_id] => 2 samedi 9 juin 12
  • 16. Validateur HTML Fonctionne sur les pages entières Nécessite un test sur un serveur en fonctionnement Utilise le validateur du W3C Choisir la version HTML cible samedi 9 juin 12
  • 17. Css-validator Emis directement par le W3C Applique les standards 1,2,2.1,3 Bonne implication des intégrateurs A mort IE6 samedi 9 juin 12
  • 19. Images Vérifie la compression Vérifie le format Liste les suggestions de corrections Attention, impact sur le code... samedi 9 juin 12
  • 20. Non modification du framework Valable sur Magento, Zend Framework Pas sur Drupal.. Liste les fichiers ajoutés, modifiés, effacés Pratique ultérieurement pour éviter les frameworks externes samedi 9 juin 12
  • 21. Performance ab Effectue un test de performance sur le site de tests Mesure la performance, et indique le temps moyen de traitement Intéressant au niveau de l’évolution A compléter avec les tests phantomjs pour inclure les media samedi 9 juin 12
  • 23. Capture d’écran Avec phantomjs : capture la home page, puis produit une image Parfait a produire aux clients Utiliser un outil de différence d’image pour mesurer l’évolution de la home page samedi 9 juin 12
  • 25. JSlint pour javascript phantomjs + jslint Penser a le mettre a jour souvent samedi 9 juin 12
  • 27. Audit SQL maatkit Faire la différence entre les tables déjà existantes et les nouvelles samedi 9 juin 12
  • 28. Fuzzing Tests automatique des formulaires Injections de valeurs au hasard Vérification du résultat correct samedi 9 juin 12
  • 29. Lecture des logs Logs Apache, PHP et MySQL Extraire simplement les erreurs, les fichiers et produire une liste courte Travailler sur les erreurs les plus récentes, puis par ordre de fréquence samedi 9 juin 12
  • 30. Tests de navigation Ajouter un proxy sur le serveur de tests Enregistrer l’utilisation du site URL, post, cookies Produire un scénario JMeter Surveiller les erreurs? samedi 9 juin 12
  • 31. Mise en place Faire le tri entre le code maison et celui des frameworks Installation des logiciels Surveillance de leur configuration Exécution 2 fois par jour samedi 9 juin 12
  • 32. Ignoré Parallèlisation des tâches Travail sur les diff samedi 9 juin 12
  • 33. Rapports Développeurs Liste de résultats, Evolutions Management Evolutions, indicateurs (ROV) Clients Indicateurs, captures, résumé manuel samedi 9 juin 12
  • 34. Bilan 47 projets suivis en même temps Basé sur le dépot SVN et 1 URL Temps total de traitement : 6h30 Mise en place sur 2 semaines Adoption par la direction lente Présentations pour les clients délicate samedi 9 juin 12
  • 35. Merci! damien.seguy@gmail.com http://www.slideshare.net/ dseguy samedi 9 juin 12
  • 36. Il faut tester pour vérifier son code. Et comme il faut le faire tout au long du cycle de vie d'un projet, il vaut mieux s'outiller pour laisser à la machine le travail laborieux et pouvoir intervenir. De la convention de code aux vérifications d'interfaces, nous passerons en revue les outils les plus pratiques à mettre en place, la discipline de projet à appliquer et comment montrer aux utilisateurs la somme des efforts réalisés. samedi 9 juin 12