SlideShare uma empresa Scribd logo
1 de 41
Baixar para ler offline
Quality in PHP projects beyond Unittests
  International PHP Conference 2008
  October 30th 2008 | Thorsten Rinne
Introduction


❙ Thorsten Rinne
❙ 31 years old
❙ Senior Developer and Team Lead at Mayflower GmbH
   ❙ Reporting applications
   ❙ Rating applications
   ❙ PHP consulting for QA and migration problems
❙ PHP software development since 1999
❙ Founder and main developer of open source FAQ
  management software phpMyFAQ since 2001
❙ Zend Certified Engineer (PHP 5)

                                                     Quality in PHP projects
                                                     beyond Unittests

                                                     © MAYFLOWER GmbH 2008 2
Introduction


❙ Warm up
❙ Quality Criterias
❙ Quality Metrics
❙ Testing
❙ PHP Source Code Quality
❙ Questions and answers




                            Quality in PHP projects
                            beyond Unittests

                            © MAYFLOWER GmbH 2008 3
Who are you?


❙ What's your profession?
❙ Software company or agency?
❙ What's your team size?
❙ Who develops using Unittests?
❙ Who uses QA supporting tools?
   ❙ What's your test coverage?
   ❙ Even for legacy code? :-)




                                  Quality in PHP projects
                                  beyond Unittests

                                  © MAYFLOWER GmbH 2008 4
Quality Criterias



                    Quality in PHP projects
                    beyond Unittests

                    © MAYFLOWER GmbH 2008 5
Quality criterias:
Understandability

❙ Availability of documentation
❙ Good documentation quality
❙ Complexity of software
❙ Code commenting and formatting
❙ Understandable naming




                                   Quality in PHP projects
                                   beyond Unittests

                                   © MAYFLOWER GmbH 2008 6
Quality criterias:
Completeness

❙ Everything is already there
   ❙ Your application is fully implemented
   ❙ No mockups or temporary solutions left
   ❙ External interfaces are usable
   ❙ All needed data is available




                                              Quality in PHP projects
                                              beyond Unittests

                                              © MAYFLOWER GmbH 2008 7
Quality criterias:
Conciseness

❙ No unneeded, overlong documentation
   ❙ Especially auto-generated documentation
❙ No unused libraries
❙ No dead code
❙ No duplicate code
❙ No code inside loops that could be outside




                                               Quality in PHP projects
                                               beyond Unittests

                                               © MAYFLOWER GmbH 2008 8
Quality criterias:
Portability

❙ Easy to configure in new environments
❙ Few OS and webserver dependencies
❙ Few, documented version dependencies
   ❙ Language version
   ❙ Database version
   ❙ External libraries
❙ Able to survice environment updates




                                          Quality in PHP projects
                                          beyond Unittests

                                          © MAYFLOWER GmbH 2008 9
Quality criterias:
Consistency

❙ Predictability
   ❙ Directory paths and filenames
   ❙ Class and method names
   ❙ Variable and constant names
❙ Documentation style and language
❙ Coding style




                                     Quality in PHP projects
                                     beyond Unittests

                                     © MAYFLOWER GmbH 2008 10
Quality criterias:
Maintainability

❙ Easy to install and easy to upgrade
❙ Tests and debug logs to help to locate bugs
❙ Few dependencies hiding the bug
❙ No complex dependencies or effects on the platform
❙ Easy to understand and navigate source code




                                                       Quality in PHP projects
                                                       beyond Unittests

                                                       © MAYFLOWER GmbH 2008 11
Quality criterias:
Testability

❙ Known acceptence criteria
❙ Adequate separation of concerns
❙ Easy to use interfaces for tests
❙ No limiting dependencies




                                     Quality in PHP projects
                                     beyond Unittests

                                     © MAYFLOWER GmbH 2008 12
Quality criterias:
Reliability

❙ The criteria formerly known as „robustness“
❙ Fault tolerance
❙ Graceful degradation
❙ Exception handling exists
❙ Is method input checked?




                                                Quality in PHP projects
                                                beyond Unittests

                                                © MAYFLOWER GmbH 2008 13
Quality criterias:
Usability

❙ Learnability: Easyness of first time usage
❙ Efficiency: Overall speed of usage per task
❙ Memorabilty: Time to re-establish usage knowledge after
  absence
❙ Errors: Frequency of usage errors
❙ Satisfaction: Fun to use the software




                                                            Quality in PHP projects
                                                            beyond Unittests

                                                            © MAYFLOWER GmbH 2008 14
Quality Metrics



                  Quality in PHP projects
                  beyond Unittests

                  © MAYFLOWER GmbH 2008 15
Quality Metrics:
Defect Density Metrics

❙ Code-based metric
   ❙ Defects per KSSI (1000 shipped source instructions) for
     product quality
   ❙ Defects per KCSI (1000 changed source instructions)
     for development quality
❙ (Hard to measure)
   ❙ Statistic needed
   ❙ easier for products




                                                               Quality in PHP projects
                                                               beyond Unittests

                                                               © MAYFLOWER GmbH 2008 16
Quality Metrics:
Customer Problem Metrics

❙ PUM: Problems per user month
❙ Defects per month / number of installations
❙ Maintainance metric: Number of bugs closed / number of
  bugs arrived
❙ The customer does not care how big or how complicated
  the software is :-)




                                                           Quality in PHP projects
                                                           beyond Unittests

                                                           © MAYFLOWER GmbH 2008 17
Quality Metrics:
Customer Satisfaction Metrics

❙ You only get them by survey
❙ for
   ❙ Functionality
   ❙ Usability
   ❙ Reliability
   ❙ Performance
   ❙ Maintainability
   ❙ Service
❙ Levels: Very Satisfied, Satisfied, Neutral, Dissatisfied, Very
  Dissatisfied

                                                                   Quality in PHP projects
                                                                   beyond Unittests

                                                                   © MAYFLOWER GmbH 2008 18
Quality Metrics:
When are bugs detected?

❙ Number of pre-release bugs found while testing
❙ Number of post-release bugs
   ❙ found by customer
   ❙ found by testing




                                                   Quality in PHP projects
                                                   beyond Unittests

                                                   © MAYFLOWER GmbH 2008 19
Quality Metrics:
How are defects fixed?

❙ Average Time to fix a bug
❙ Average Time for bugfix release
   ❙ that‘s the time relevant for the customer
❙ Average engineering hours / fixed defect




                                                 Quality in PHP projects
                                                 beyond Unittests

                                                 © MAYFLOWER GmbH 2008 20
Quality Metrics:
Defect Impact

❙ was the defect visible to the user?
❙ has a monetary transaction been touched?
❙ has sensitive data been touched?
❙ are there security implications?
❙ has there been a marketing/image effect
❙ did data / user work get lost?




                                             Quality in PHP projects
                                             beyond Unittests

                                             © MAYFLOWER GmbH 2008 21
Quality Metrics:
Testing Efficiency

❙ Found bugs before release / found bugs post release
❙ Found bugs by qa team / found bugs by customer
❙ Number of bugs found by QA Team / time




                                                        Quality in PHP projects
                                                        beyond Unittests

                                                        © MAYFLOWER GmbH 2008 22
„We do PHPUnit!“ !== Testing



                               Quality in PHP projects
                               beyond Unittests

                               © MAYFLOWER GmbH 2008 23
Unit Testing


❙ For PHP: PHPUnit or SimpleTest
❙ Focussing on testing a single unit of work
   ❙ solves depencies using mock objects
   ❙ should not depend on database
❙ perfect and easy to automate
❙ Reason for all refactoring




                                               Quality in PHP projects
                                               beyond Unittests

                                               © MAYFLOWER GmbH 2008 24
Acceptence Testing


❙ originally user acceptance testing
    ❙ one of the final testing stages
❙ change to automated black box testing in agile
  environments
❙ used to test user stories
❙ often contractual requirement




                                                   Quality in PHP projects
                                                   beyond Unittests

                                                   © MAYFLOWER GmbH 2008 25
SOA / Service Testing


❙ in multi-tier environments every service can have several
  consumers
❙ black box test for the service api
❙ can easily be automated
❙ a lot of tools for SOAP




                                                              Quality in PHP projects
                                                              beyond Unittests

                                                              © MAYFLOWER GmbH 2008 26
Integration Testing


❙ tests the application with all parts
❙ needed for multi-tier applications
❙ tests the interaction paths
❙ intersection with load testing: user simulation




                                                    Quality in PHP projects
                                                    beyond Unittests

                                                    © MAYFLOWER GmbH 2008 27
Load Testing


❙ Simulates high load situations
   ❙ to detect the current platform abilities
   ❙ to detect resource bottlenecks (Database, CPU,
     Network)
   ❙ to detect concurreny bottlenecks (locking jams, caching
     effects)
❙ Scalability testing: scale up or scale out?




                                                               Quality in PHP projects
                                                               beyond Unittests

                                                               © MAYFLOWER GmbH 2008 28
Usability Testing


❙ How does the user work with the application?
❙ Efficiency: time to fulfill a basic task
❙ Accuracy: how many mistakes happened?
❙ Recall: does the user recall the usage after a period of
  time?
❙ Emotional response: does the user feel lucky, confident or
  stressed about the task?




                                                               Quality in PHP projects
                                                               beyond Unittests

                                                               © MAYFLOWER GmbH 2008 29
Regression Testing


❙ originally: if you find a bug, fix it and write a test
❙ PHP itself does it
❙ now often written by the test team to assure the expected
  default behavior
❙ modern: automated test generation




                                                              Quality in PHP projects
                                                              beyond Unittests

                                                              © MAYFLOWER GmbH 2008 30
Security Testing


❙ Blackbox: Penetration Test done by external auditor just
  before release
❙ Graybox: using tools like fuzzers and scanners before
  release or while development
❙ Whitebox: internal or external source code audit, static
  code analysis while development




                                                             Quality in PHP projects
                                                             beyond Unittests

                                                             © MAYFLOWER GmbH 2008 31
A lot more ...


❙ Compability testing for maintainability
❙ Volume testing for bigger amounts of data
❙ Stress testing for degrade and failover processes
❙ Installation testing for maintenance
❙ Recovery testing to check recovery behavior




                                                      Quality in PHP projects
                                                      beyond Unittests

                                                      © MAYFLOWER GmbH 2008 32
PHP Source Code Quality



                          Quality in PHP projects
                          beyond Unittests

                          © MAYFLOWER GmbH 2008 33
Documentation


❙ We have different forms of documentation:
   ❙ Inline documentation
   ❙ API documentation
   ❙ Developer documentation
   ❙ Security documentation
   ❙ Administration documentation
   ❙ End-user documentation




                                              Quality in PHP projects
                                              beyond Unittests

                                              © MAYFLOWER GmbH 2008 34
Coding Style / Formatting


❙ Coding style is defined in the developer documentation
❙ All developers have to write their code formatted in the
  given coding style
❙ Can be checked by CodeSniffer tools
❙ Coding style should be based on your main used libraries
   ❙ If you build your application on top of the Zend
     Framework, use the ZF coding style
❙ With IDEs like Eclipse you can format old code
  autpmatically




                                                             Quality in PHP projects
                                                             beyond Unittests

                                                             © MAYFLOWER GmbH 2008 35
Naming Conventions


❙ Naming conventions are very important
   ❙ NonamespacesbeforePHP5.3
   ❙ Easier for __autoload()
❙ Examples
❙ Class names:
   ❙ class HTML_Template_ITX2
   ❙ Directory: include/PEAR2/HTML/Template/ITX2.php
❙ Function names in camel caps:
   ❙ public function blockExists($blockname)




                                                       Quality in PHP projects
                                                       beyond Unittests

                                                       © MAYFLOWER GmbH 2008 36
Code Complexity


❙ Complexity costs time and money if you don‘t need it
❙ KISS principle: Keep it simple and stupid
❙ Complexity checks by CodeSniffer metrics
❙ Important for good code coverage and unittests
❙ Examples
   ❙ Too high number of linearly independent paths through
     a program's source code
   ❙ Too long class and method names
   ❙ Too many properties
   ❙ Too many parameters
   ❙ Too many methods inside a class
                                                             Quality in PHP projects
                                                             beyond Unittests

                                                             © MAYFLOWER GmbH 2008 37
Anti Patterns


❙ An antipattern is a design pattern that appears obvious but
  is ineffective or far from optimal in practice
❙ Examples
   ❙ Unnecessary abstraction
   ❙ God objects
   ❙ Spaghetti code
   ❙ Too short or too long variable names




                                                                Quality in PHP projects
                                                                beyond Unittests

                                                                © MAYFLOWER GmbH 2008 38
Anti Pattern Examples


❙ if(<EXPR>) {<empty>}
❙ if(<EXPR>) {<EXPR>} else {<empty>}
❙ try(<EXPR>) {<empty>}
❙ try(<EXPR>) {<EXPR>} catch(Exception $e)
  {<empty>}
❙ define('SOME_NAME', $var)
❙ include[_once]|require[_once]|readfile|
  virtual|file_get_contents|fopen|file|
  mysql_query($_GET|$_POST|$_REQUEST)




                                             Quality in PHP projects
                                             beyond Unittests

                                             © MAYFLOWER GmbH 2008 39
Questions?



             Quality in PHP projects
             beyond Unittests

             © MAYFLOWER GmbH 2008 40
Thank you very much!

  Thorsten Rinne
  Mayflower GmbH
  Mannhardtstr. 6
  80538 München
  +49 (89) 24 20 54 - 31
  thorsten.rinne@mayflower.de

Mais conteúdo relacionado

Mais procurados

Enhancing Software Quality
Enhancing Software QualityEnhancing Software Quality
Enhancing Software QualityAnand Prabhala
 
A more successful model for multi-shore testing
A more successful model for multi-shore testingA more successful model for multi-shore testing
A more successful model for multi-shore testingPerficient, Inc.
 
New trends in testing automation
New trends in testing automationNew trends in testing automation
New trends in testing automationEran Kinsbrunner
 
TMA Software Testing Competency
TMA Software Testing CompetencyTMA Software Testing Competency
TMA Software Testing CompetencyTMA Solutions
 
Introduction to Test Automation - Technology and Tools
Introduction to Test Automation - Technology and ToolsIntroduction to Test Automation - Technology and Tools
Introduction to Test Automation - Technology and ToolsKMS Technology
 
Karate API Testing-Complete Guidance by Testrig
Karate API Testing-Complete Guidance by TestrigKarate API Testing-Complete Guidance by Testrig
Karate API Testing-Complete Guidance by TestrigPritiFGaikwad
 
Enabling Business Users for SAP Testing
Enabling Business Users for SAP TestingEnabling Business Users for SAP Testing
Enabling Business Users for SAP TestingOriginal Software
 
Testing concept definition
Testing concept definitionTesting concept definition
Testing concept definitionVivek V
 
Testing Sap: Modern Methodology
Testing Sap: Modern MethodologyTesting Sap: Modern Methodology
Testing Sap: Modern MethodologyEthan Jewett
 
Selenium DeTox for Achieving the Right Testing Pyramid
Selenium DeTox for Achieving the Right Testing PyramidSelenium DeTox for Achieving the Right Testing Pyramid
Selenium DeTox for Achieving the Right Testing PyramidNaresh Jain
 
Complete testing@uma
Complete testing@umaComplete testing@uma
Complete testing@umaUma Sapireddy
 
Continuous Testing for CTOs (Webinar Slides)
Continuous Testing for CTOs (Webinar Slides)Continuous Testing for CTOs (Webinar Slides)
Continuous Testing for CTOs (Webinar Slides)Rainforest QA
 
Model-based Testing: Taking BDD/ATDD to the Next Level
Model-based Testing: Taking BDD/ATDD to the Next LevelModel-based Testing: Taking BDD/ATDD to the Next Level
Model-based Testing: Taking BDD/ATDD to the Next LevelBob Binder
 
Automated testing overview
Automated testing overviewAutomated testing overview
Automated testing overviewAlex Pop
 
Quality Jam: BDD, TDD and ATDD for the Enterprise
Quality Jam: BDD, TDD and ATDD for the EnterpriseQuality Jam: BDD, TDD and ATDD for the Enterprise
Quality Jam: BDD, TDD and ATDD for the EnterpriseQASymphony
 
Introducing Continuous Delivery in the Enterprise
Introducing Continuous Delivery in the EnterpriseIntroducing Continuous Delivery in the Enterprise
Introducing Continuous Delivery in the EnterpriseXebiaLabs
 
QA Interview Questions With Answers
QA Interview Questions With AnswersQA Interview Questions With Answers
QA Interview Questions With AnswersH2Kinfosys
 

Mais procurados (20)

Enhancing Software Quality
Enhancing Software QualityEnhancing Software Quality
Enhancing Software Quality
 
A more successful model for multi-shore testing
A more successful model for multi-shore testingA more successful model for multi-shore testing
A more successful model for multi-shore testing
 
New trends in testing automation
New trends in testing automationNew trends in testing automation
New trends in testing automation
 
TMA Software Testing Competency
TMA Software Testing CompetencyTMA Software Testing Competency
TMA Software Testing Competency
 
Introduction to Test Automation - Technology and Tools
Introduction to Test Automation - Technology and ToolsIntroduction to Test Automation - Technology and Tools
Introduction to Test Automation - Technology and Tools
 
Karate API Testing-Complete Guidance by Testrig
Karate API Testing-Complete Guidance by TestrigKarate API Testing-Complete Guidance by Testrig
Karate API Testing-Complete Guidance by Testrig
 
Enabling Business Users for SAP Testing
Enabling Business Users for SAP TestingEnabling Business Users for SAP Testing
Enabling Business Users for SAP Testing
 
Testing concept definition
Testing concept definitionTesting concept definition
Testing concept definition
 
Testing Sap: Modern Methodology
Testing Sap: Modern MethodologyTesting Sap: Modern Methodology
Testing Sap: Modern Methodology
 
Best Practices for Testing in salesforce.com
Best Practices for Testing in salesforce.comBest Practices for Testing in salesforce.com
Best Practices for Testing in salesforce.com
 
Selenium DeTox for Achieving the Right Testing Pyramid
Selenium DeTox for Achieving the Right Testing PyramidSelenium DeTox for Achieving the Right Testing Pyramid
Selenium DeTox for Achieving the Right Testing Pyramid
 
Complete testing@uma
Complete testing@umaComplete testing@uma
Complete testing@uma
 
SAP Testing
SAP TestingSAP Testing
SAP Testing
 
Continuous Testing for CTOs (Webinar Slides)
Continuous Testing for CTOs (Webinar Slides)Continuous Testing for CTOs (Webinar Slides)
Continuous Testing for CTOs (Webinar Slides)
 
Model-based Testing: Taking BDD/ATDD to the Next Level
Model-based Testing: Taking BDD/ATDD to the Next LevelModel-based Testing: Taking BDD/ATDD to the Next Level
Model-based Testing: Taking BDD/ATDD to the Next Level
 
Automated testing overview
Automated testing overviewAutomated testing overview
Automated testing overview
 
Quality Jam: BDD, TDD and ATDD for the Enterprise
Quality Jam: BDD, TDD and ATDD for the EnterpriseQuality Jam: BDD, TDD and ATDD for the Enterprise
Quality Jam: BDD, TDD and ATDD for the Enterprise
 
OMSOFTWARE NEW Service
OMSOFTWARE NEW ServiceOMSOFTWARE NEW Service
OMSOFTWARE NEW Service
 
Introducing Continuous Delivery in the Enterprise
Introducing Continuous Delivery in the EnterpriseIntroducing Continuous Delivery in the Enterprise
Introducing Continuous Delivery in the Enterprise
 
QA Interview Questions With Answers
QA Interview Questions With AnswersQA Interview Questions With Answers
QA Interview Questions With Answers
 

Destaque

Millionaire Nutrition
Millionaire NutritionMillionaire Nutrition
Millionaire Nutritionmrrobbo
 
Cloud and azure and rock and roll
Cloud and azure and rock and rollCloud and azure and rock and roll
Cloud and azure and rock and rollDavid Giard
 
Calling Dr Watson To Radiology - RSNA Presentation
Calling Dr Watson To Radiology - RSNA PresentationCalling Dr Watson To Radiology - RSNA Presentation
Calling Dr Watson To Radiology - RSNA PresentationNick van Terheyden
 
Racalmuto: Centro Commerciale Naturale Borgo Chiaramontano
Racalmuto: Centro Commerciale Naturale Borgo ChiaramontanoRacalmuto: Centro Commerciale Naturale Borgo Chiaramontano
Racalmuto: Centro Commerciale Naturale Borgo ChiaramontanoEugenio Agnello
 
Share Point Customization Delivered
Share Point   Customization DeliveredShare Point   Customization Delivered
Share Point Customization DeliveredDavid Giard
 
Tbfs uc commercial presentation
Tbfs uc commercial presentationTbfs uc commercial presentation
Tbfs uc commercial presentationraj638
 
Standing out from the crowd: You, Your Brand, and Your WordPress Theme
Standing out from the crowd: You, Your Brand, and Your WordPress ThemeStanding out from the crowd: You, Your Brand, and Your WordPress Theme
Standing out from the crowd: You, Your Brand, and Your WordPress Themehollyhagen
 
Journalism in the post 9-11 decade
Journalism in the post 9-11 decadeJournalism in the post 9-11 decade
Journalism in the post 9-11 decadeDigiProf
 
Pm Innovations Llc Presentation 2009.15
Pm Innovations Llc Presentation 2009.15Pm Innovations Llc Presentation 2009.15
Pm Innovations Llc Presentation 2009.15mtoddsingh
 
Stochastic optimization and risk management for an efficient planning of buil...
Stochastic optimization and risk management for an efficient planning of buil...Stochastic optimization and risk management for an efficient planning of buil...
Stochastic optimization and risk management for an efficient planning of buil...Emilio L. Cano
 
Cloud discussion
Cloud discussionCloud discussion
Cloud discussionDavid Giard
 
How I Learned to Stop Worrying and Love jQuery (Jan 2013)
How I Learned to Stop Worrying and Love jQuery (Jan 2013)How I Learned to Stop Worrying and Love jQuery (Jan 2013)
How I Learned to Stop Worrying and Love jQuery (Jan 2013)David Giard
 
Le Fonti energetiche alternative nell'Edilizia Abitativa
Le Fonti energetiche alternative nell'Edilizia AbitativaLe Fonti energetiche alternative nell'Edilizia Abitativa
Le Fonti energetiche alternative nell'Edilizia AbitativaEugenio Agnello
 
Autobiography Anthony[1]
Autobiography Anthony[1]Autobiography Anthony[1]
Autobiography Anthony[1]aj_matatag
 
Gang announcements 2011 01
Gang announcements 2011 01Gang announcements 2011 01
Gang announcements 2011 01David Giard
 
Orientazioa2003
Orientazioa2003Orientazioa2003
Orientazioa2003pagoaga
 

Destaque (20)

Declarative analysis of noisy information networks
Declarative analysis of noisy information networksDeclarative analysis of noisy information networks
Declarative analysis of noisy information networks
 
Millionaire Nutrition
Millionaire NutritionMillionaire Nutrition
Millionaire Nutrition
 
Cloud and azure and rock and roll
Cloud and azure and rock and rollCloud and azure and rock and roll
Cloud and azure and rock and roll
 
Calling Dr Watson To Radiology - RSNA Presentation
Calling Dr Watson To Radiology - RSNA PresentationCalling Dr Watson To Radiology - RSNA Presentation
Calling Dr Watson To Radiology - RSNA Presentation
 
Racalmuto: Centro Commerciale Naturale Borgo Chiaramontano
Racalmuto: Centro Commerciale Naturale Borgo ChiaramontanoRacalmuto: Centro Commerciale Naturale Borgo Chiaramontano
Racalmuto: Centro Commerciale Naturale Borgo Chiaramontano
 
Share Point Customization Delivered
Share Point   Customization DeliveredShare Point   Customization Delivered
Share Point Customization Delivered
 
Tbfs uc commercial presentation
Tbfs uc commercial presentationTbfs uc commercial presentation
Tbfs uc commercial presentation
 
Ordenagailu Zatiak
Ordenagailu ZatiakOrdenagailu Zatiak
Ordenagailu Zatiak
 
Standing out from the crowd: You, Your Brand, and Your WordPress Theme
Standing out from the crowd: You, Your Brand, and Your WordPress ThemeStanding out from the crowd: You, Your Brand, and Your WordPress Theme
Standing out from the crowd: You, Your Brand, and Your WordPress Theme
 
Journalism in the post 9-11 decade
Journalism in the post 9-11 decadeJournalism in the post 9-11 decade
Journalism in the post 9-11 decade
 
Pm Innovations Llc Presentation 2009.15
Pm Innovations Llc Presentation 2009.15Pm Innovations Llc Presentation 2009.15
Pm Innovations Llc Presentation 2009.15
 
aboutme
aboutmeaboutme
aboutme
 
Stochastic optimization and risk management for an efficient planning of buil...
Stochastic optimization and risk management for an efficient planning of buil...Stochastic optimization and risk management for an efficient planning of buil...
Stochastic optimization and risk management for an efficient planning of buil...
 
Cloud discussion
Cloud discussionCloud discussion
Cloud discussion
 
How I Learned to Stop Worrying and Love jQuery (Jan 2013)
How I Learned to Stop Worrying and Love jQuery (Jan 2013)How I Learned to Stop Worrying and Love jQuery (Jan 2013)
How I Learned to Stop Worrying and Love jQuery (Jan 2013)
 
Le Fonti energetiche alternative nell'Edilizia Abitativa
Le Fonti energetiche alternative nell'Edilizia AbitativaLe Fonti energetiche alternative nell'Edilizia Abitativa
Le Fonti energetiche alternative nell'Edilizia Abitativa
 
Autobiography Anthony[1]
Autobiography Anthony[1]Autobiography Anthony[1]
Autobiography Anthony[1]
 
GrouperEye
GrouperEyeGrouperEye
GrouperEye
 
Gang announcements 2011 01
Gang announcements 2011 01Gang announcements 2011 01
Gang announcements 2011 01
 
Orientazioa2003
Orientazioa2003Orientazioa2003
Orientazioa2003
 

Semelhante a Quality in PHP projects metrics and testing

Migration Concepts For Enterprise PHP Applications
Migration Concepts For Enterprise PHP ApplicationsMigration Concepts For Enterprise PHP Applications
Migration Concepts For Enterprise PHP ApplicationsMayflower GmbH
 
John Fodeh - Adventures in Test Automation-Breaking the Boundaries of Regress...
John Fodeh - Adventures in Test Automation-Breaking the Boundaries of Regress...John Fodeh - Adventures in Test Automation-Breaking the Boundaries of Regress...
John Fodeh - Adventures in Test Automation-Breaking the Boundaries of Regress...TEST Huddle
 
John Fodeh Adventures in Test Automation - EuroSTAR 2013
John Fodeh Adventures in Test Automation - EuroSTAR 2013John Fodeh Adventures in Test Automation - EuroSTAR 2013
John Fodeh Adventures in Test Automation - EuroSTAR 2013TEST Huddle
 
How to build confidence in your release cycle
How to build confidence in your release cycleHow to build confidence in your release cycle
How to build confidence in your release cycleDiUS
 
[India Merge World Tour] Coverity
[India Merge World Tour] Coverity[India Merge World Tour] Coverity
[India Merge World Tour] CoverityPerforce
 
Live Webinar- Making Test Automation 10x Faster for Continuous Delivery- By R...
Live Webinar- Making Test Automation 10x Faster for Continuous Delivery- By R...Live Webinar- Making Test Automation 10x Faster for Continuous Delivery- By R...
Live Webinar- Making Test Automation 10x Faster for Continuous Delivery- By R...RapidValue
 
Establishing Release Quality Levels and Release Acceptance Tests
Establishing Release Quality Levels and Release Acceptance TestsEstablishing Release Quality Levels and Release Acceptance Tests
Establishing Release Quality Levels and Release Acceptance TestsConteneo Inc.
 
Il paradigma DevOps e Continuous Delivery Automation
Il paradigma DevOps e Continuous Delivery Automation Il paradigma DevOps e Continuous Delivery Automation
Il paradigma DevOps e Continuous Delivery Automation HP Enterprise Italia
 
QualityGate for IT Managers
QualityGate for IT ManagersQualityGate for IT Managers
QualityGate for IT ManagersDr. Tibor Bakota
 
Sucheta_kale_4.8years_QA
Sucheta_kale_4.8years_QASucheta_kale_4.8years_QA
Sucheta_kale_4.8years_QASucheta Kale
 
Indy meetup#7 effective unit-testing-mule
Indy meetup#7 effective unit-testing-muleIndy meetup#7 effective unit-testing-mule
Indy meetup#7 effective unit-testing-muleikram_ahamed
 
Automated Testing - How to Guarantee Correct FME Output Every Time
Automated Testing - How to Guarantee Correct FME Output Every TimeAutomated Testing - How to Guarantee Correct FME Output Every Time
Automated Testing - How to Guarantee Correct FME Output Every TimeSafe Software
 
Ben Walters - Creating Customer Value With Agile Testing - EuroSTAR 2011
Ben Walters - Creating Customer Value With Agile Testing - EuroSTAR 2011Ben Walters - Creating Customer Value With Agile Testing - EuroSTAR 2011
Ben Walters - Creating Customer Value With Agile Testing - EuroSTAR 2011TEST Huddle
 
QTP Automation Testing Tutorial 1
QTP Automation Testing Tutorial 1QTP Automation Testing Tutorial 1
QTP Automation Testing Tutorial 1Akash Tyagi
 

Semelhante a Quality in PHP projects metrics and testing (20)

Migration Concepts For Enterprise PHP Applications
Migration Concepts For Enterprise PHP ApplicationsMigration Concepts For Enterprise PHP Applications
Migration Concepts For Enterprise PHP Applications
 
QA metrics in Agile (GUIDE)
QA metrics in Agile (GUIDE)QA metrics in Agile (GUIDE)
QA metrics in Agile (GUIDE)
 
Gaming Testing
Gaming TestingGaming Testing
Gaming Testing
 
First Steps to DevOps
First Steps to DevOpsFirst Steps to DevOps
First Steps to DevOps
 
John Fodeh - Adventures in Test Automation-Breaking the Boundaries of Regress...
John Fodeh - Adventures in Test Automation-Breaking the Boundaries of Regress...John Fodeh - Adventures in Test Automation-Breaking the Boundaries of Regress...
John Fodeh - Adventures in Test Automation-Breaking the Boundaries of Regress...
 
John Fodeh Adventures in Test Automation - EuroSTAR 2013
John Fodeh Adventures in Test Automation - EuroSTAR 2013John Fodeh Adventures in Test Automation - EuroSTAR 2013
John Fodeh Adventures in Test Automation - EuroSTAR 2013
 
TETRA
TETRATETRA
TETRA
 
How to build confidence in your release cycle
How to build confidence in your release cycleHow to build confidence in your release cycle
How to build confidence in your release cycle
 
[India Merge World Tour] Coverity
[India Merge World Tour] Coverity[India Merge World Tour] Coverity
[India Merge World Tour] Coverity
 
Live Webinar- Making Test Automation 10x Faster for Continuous Delivery- By R...
Live Webinar- Making Test Automation 10x Faster for Continuous Delivery- By R...Live Webinar- Making Test Automation 10x Faster for Continuous Delivery- By R...
Live Webinar- Making Test Automation 10x Faster for Continuous Delivery- By R...
 
Establishing Release Quality Levels and Release Acceptance Tests
Establishing Release Quality Levels and Release Acceptance TestsEstablishing Release Quality Levels and Release Acceptance Tests
Establishing Release Quality Levels and Release Acceptance Tests
 
Il paradigma DevOps e Continuous Delivery Automation
Il paradigma DevOps e Continuous Delivery Automation Il paradigma DevOps e Continuous Delivery Automation
Il paradigma DevOps e Continuous Delivery Automation
 
Resume
ResumeResume
Resume
 
QualityGate for IT Managers
QualityGate for IT ManagersQualityGate for IT Managers
QualityGate for IT Managers
 
Sucheta_kale_4.8years_QA
Sucheta_kale_4.8years_QASucheta_kale_4.8years_QA
Sucheta_kale_4.8years_QA
 
Indy meetup#7 effective unit-testing-mule
Indy meetup#7 effective unit-testing-muleIndy meetup#7 effective unit-testing-mule
Indy meetup#7 effective unit-testing-mule
 
Automated Testing - How to Guarantee Correct FME Output Every Time
Automated Testing - How to Guarantee Correct FME Output Every TimeAutomated Testing - How to Guarantee Correct FME Output Every Time
Automated Testing - How to Guarantee Correct FME Output Every Time
 
Ben Walters - Creating Customer Value With Agile Testing - EuroSTAR 2011
Ben Walters - Creating Customer Value With Agile Testing - EuroSTAR 2011Ben Walters - Creating Customer Value With Agile Testing - EuroSTAR 2011
Ben Walters - Creating Customer Value With Agile Testing - EuroSTAR 2011
 
QTP Automation Testing Tutorial 1
QTP Automation Testing Tutorial 1QTP Automation Testing Tutorial 1
QTP Automation Testing Tutorial 1
 
Vandana B
Vandana BVandana B
Vandana B
 

Último

Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 

Último (20)

Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 

Quality in PHP projects metrics and testing

  • 1. Quality in PHP projects beyond Unittests International PHP Conference 2008 October 30th 2008 | Thorsten Rinne
  • 2. Introduction ❙ Thorsten Rinne ❙ 31 years old ❙ Senior Developer and Team Lead at Mayflower GmbH ❙ Reporting applications ❙ Rating applications ❙ PHP consulting for QA and migration problems ❙ PHP software development since 1999 ❙ Founder and main developer of open source FAQ management software phpMyFAQ since 2001 ❙ Zend Certified Engineer (PHP 5) Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 2
  • 3. Introduction ❙ Warm up ❙ Quality Criterias ❙ Quality Metrics ❙ Testing ❙ PHP Source Code Quality ❙ Questions and answers Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 3
  • 4. Who are you? ❙ What's your profession? ❙ Software company or agency? ❙ What's your team size? ❙ Who develops using Unittests? ❙ Who uses QA supporting tools? ❙ What's your test coverage? ❙ Even for legacy code? :-) Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 4
  • 5. Quality Criterias Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 5
  • 6. Quality criterias: Understandability ❙ Availability of documentation ❙ Good documentation quality ❙ Complexity of software ❙ Code commenting and formatting ❙ Understandable naming Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 6
  • 7. Quality criterias: Completeness ❙ Everything is already there ❙ Your application is fully implemented ❙ No mockups or temporary solutions left ❙ External interfaces are usable ❙ All needed data is available Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 7
  • 8. Quality criterias: Conciseness ❙ No unneeded, overlong documentation ❙ Especially auto-generated documentation ❙ No unused libraries ❙ No dead code ❙ No duplicate code ❙ No code inside loops that could be outside Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 8
  • 9. Quality criterias: Portability ❙ Easy to configure in new environments ❙ Few OS and webserver dependencies ❙ Few, documented version dependencies ❙ Language version ❙ Database version ❙ External libraries ❙ Able to survice environment updates Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 9
  • 10. Quality criterias: Consistency ❙ Predictability ❙ Directory paths and filenames ❙ Class and method names ❙ Variable and constant names ❙ Documentation style and language ❙ Coding style Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 10
  • 11. Quality criterias: Maintainability ❙ Easy to install and easy to upgrade ❙ Tests and debug logs to help to locate bugs ❙ Few dependencies hiding the bug ❙ No complex dependencies or effects on the platform ❙ Easy to understand and navigate source code Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 11
  • 12. Quality criterias: Testability ❙ Known acceptence criteria ❙ Adequate separation of concerns ❙ Easy to use interfaces for tests ❙ No limiting dependencies Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 12
  • 13. Quality criterias: Reliability ❙ The criteria formerly known as „robustness“ ❙ Fault tolerance ❙ Graceful degradation ❙ Exception handling exists ❙ Is method input checked? Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 13
  • 14. Quality criterias: Usability ❙ Learnability: Easyness of first time usage ❙ Efficiency: Overall speed of usage per task ❙ Memorabilty: Time to re-establish usage knowledge after absence ❙ Errors: Frequency of usage errors ❙ Satisfaction: Fun to use the software Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 14
  • 15. Quality Metrics Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 15
  • 16. Quality Metrics: Defect Density Metrics ❙ Code-based metric ❙ Defects per KSSI (1000 shipped source instructions) for product quality ❙ Defects per KCSI (1000 changed source instructions) for development quality ❙ (Hard to measure) ❙ Statistic needed ❙ easier for products Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 16
  • 17. Quality Metrics: Customer Problem Metrics ❙ PUM: Problems per user month ❙ Defects per month / number of installations ❙ Maintainance metric: Number of bugs closed / number of bugs arrived ❙ The customer does not care how big or how complicated the software is :-) Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 17
  • 18. Quality Metrics: Customer Satisfaction Metrics ❙ You only get them by survey ❙ for ❙ Functionality ❙ Usability ❙ Reliability ❙ Performance ❙ Maintainability ❙ Service ❙ Levels: Very Satisfied, Satisfied, Neutral, Dissatisfied, Very Dissatisfied Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 18
  • 19. Quality Metrics: When are bugs detected? ❙ Number of pre-release bugs found while testing ❙ Number of post-release bugs ❙ found by customer ❙ found by testing Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 19
  • 20. Quality Metrics: How are defects fixed? ❙ Average Time to fix a bug ❙ Average Time for bugfix release ❙ that‘s the time relevant for the customer ❙ Average engineering hours / fixed defect Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 20
  • 21. Quality Metrics: Defect Impact ❙ was the defect visible to the user? ❙ has a monetary transaction been touched? ❙ has sensitive data been touched? ❙ are there security implications? ❙ has there been a marketing/image effect ❙ did data / user work get lost? Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 21
  • 22. Quality Metrics: Testing Efficiency ❙ Found bugs before release / found bugs post release ❙ Found bugs by qa team / found bugs by customer ❙ Number of bugs found by QA Team / time Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 22
  • 23. „We do PHPUnit!“ !== Testing Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 23
  • 24. Unit Testing ❙ For PHP: PHPUnit or SimpleTest ❙ Focussing on testing a single unit of work ❙ solves depencies using mock objects ❙ should not depend on database ❙ perfect and easy to automate ❙ Reason for all refactoring Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 24
  • 25. Acceptence Testing ❙ originally user acceptance testing ❙ one of the final testing stages ❙ change to automated black box testing in agile environments ❙ used to test user stories ❙ often contractual requirement Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 25
  • 26. SOA / Service Testing ❙ in multi-tier environments every service can have several consumers ❙ black box test for the service api ❙ can easily be automated ❙ a lot of tools for SOAP Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 26
  • 27. Integration Testing ❙ tests the application with all parts ❙ needed for multi-tier applications ❙ tests the interaction paths ❙ intersection with load testing: user simulation Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 27
  • 28. Load Testing ❙ Simulates high load situations ❙ to detect the current platform abilities ❙ to detect resource bottlenecks (Database, CPU, Network) ❙ to detect concurreny bottlenecks (locking jams, caching effects) ❙ Scalability testing: scale up or scale out? Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 28
  • 29. Usability Testing ❙ How does the user work with the application? ❙ Efficiency: time to fulfill a basic task ❙ Accuracy: how many mistakes happened? ❙ Recall: does the user recall the usage after a period of time? ❙ Emotional response: does the user feel lucky, confident or stressed about the task? Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 29
  • 30. Regression Testing ❙ originally: if you find a bug, fix it and write a test ❙ PHP itself does it ❙ now often written by the test team to assure the expected default behavior ❙ modern: automated test generation Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 30
  • 31. Security Testing ❙ Blackbox: Penetration Test done by external auditor just before release ❙ Graybox: using tools like fuzzers and scanners before release or while development ❙ Whitebox: internal or external source code audit, static code analysis while development Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 31
  • 32. A lot more ... ❙ Compability testing for maintainability ❙ Volume testing for bigger amounts of data ❙ Stress testing for degrade and failover processes ❙ Installation testing for maintenance ❙ Recovery testing to check recovery behavior Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 32
  • 33. PHP Source Code Quality Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 33
  • 34. Documentation ❙ We have different forms of documentation: ❙ Inline documentation ❙ API documentation ❙ Developer documentation ❙ Security documentation ❙ Administration documentation ❙ End-user documentation Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 34
  • 35. Coding Style / Formatting ❙ Coding style is defined in the developer documentation ❙ All developers have to write their code formatted in the given coding style ❙ Can be checked by CodeSniffer tools ❙ Coding style should be based on your main used libraries ❙ If you build your application on top of the Zend Framework, use the ZF coding style ❙ With IDEs like Eclipse you can format old code autpmatically Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 35
  • 36. Naming Conventions ❙ Naming conventions are very important ❙ NonamespacesbeforePHP5.3 ❙ Easier for __autoload() ❙ Examples ❙ Class names: ❙ class HTML_Template_ITX2 ❙ Directory: include/PEAR2/HTML/Template/ITX2.php ❙ Function names in camel caps: ❙ public function blockExists($blockname) Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 36
  • 37. Code Complexity ❙ Complexity costs time and money if you don‘t need it ❙ KISS principle: Keep it simple and stupid ❙ Complexity checks by CodeSniffer metrics ❙ Important for good code coverage and unittests ❙ Examples ❙ Too high number of linearly independent paths through a program's source code ❙ Too long class and method names ❙ Too many properties ❙ Too many parameters ❙ Too many methods inside a class Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 37
  • 38. Anti Patterns ❙ An antipattern is a design pattern that appears obvious but is ineffective or far from optimal in practice ❙ Examples ❙ Unnecessary abstraction ❙ God objects ❙ Spaghetti code ❙ Too short or too long variable names Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 38
  • 39. Anti Pattern Examples ❙ if(<EXPR>) {<empty>} ❙ if(<EXPR>) {<EXPR>} else {<empty>} ❙ try(<EXPR>) {<empty>} ❙ try(<EXPR>) {<EXPR>} catch(Exception $e) {<empty>} ❙ define('SOME_NAME', $var) ❙ include[_once]|require[_once]|readfile| virtual|file_get_contents|fopen|file| mysql_query($_GET|$_POST|$_REQUEST) Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 39
  • 40. Questions? Quality in PHP projects beyond Unittests © MAYFLOWER GmbH 2008 40
  • 41. Thank you very much! Thorsten Rinne Mayflower GmbH Mannhardtstr. 6 80538 München +49 (89) 24 20 54 - 31 thorsten.rinne@mayflower.de