SlideShare une entreprise Scribd logo
1  sur  19
Télécharger pour lire hors ligne
SOFTWARE TESTING CONCEPTS

With a focus on PHPUnit,
PHP_CodeCoverage, and
xDebug
INTRODUCTION
Aaron Bernstein – Aspiring Engineer
 One of the lead software engineers in the
Workspace Team at GoDaddy

 Been working with GoDaddy for about a year and a half.
 Specifically tasked on our FaxThruEmail product.

Micah Wood – Aspiring Software Engineer
 One of the software engineers in the Workspace
Team at GoDaddy
 Been working with GoDaddy for about four years.
 Specifically tasked on our FaxThruEmail product.

Farhan Zaman – Software Engineer in Test

 One of the automation engineers in the Workspace
Team at GoDaddy
 Been working with GoDaddy for about three and a half.
 Specifically tasked on our Email Infrastructure and AIR product.

Combined Experience Includes:

 Fifteen plus years of programming in a
multitude of languages…
 We’ve all been working towards fully covering
our applications with unit, functional,
integration, and browser testing over time.
WHO

You, should love testing!!
ROLES
Software Engineers
Throughout the development process, one should be
performing tests on code that they author.

Test Engineers
By the nature of the title, their primary function is to
test software.

Automation Engineers
Developing tools and procedures to test software
through automated methods.

Management
Ultimately responsible for the product integrity.
WHAT

Anything you code!!
LEVELS AND TYPES OF SOFTWARE TESTING
LEVELS

TYPES

• Unit

• A/B

• System

• Internationalization and
localization

• Acceptance

• Acceptance

• Installation

• Accessibility

• Functional/Non-Functional

• Alpha/Beta

• Regression

• Integration

• Compatibility

• Destructive
• Development

• Smoke and Sanity
• Software Performance
• Security
• Usability
TESTING METHODS
STATIC

DYNAMIC

Reviews, walkthroughs, or inspections are
referred to as static testing.

Executing programmed code with a given set
of test cases is referred to as dynamic testing.

Static testing can be omitted, and in practice
often is.

Dynamic testing takes place when the program
itself is used.
Dynamic testing may begin before the
program is 100% complete in order to test
particular sections of code and are applied to
discrete functions or modules.
Typical techniques for this are either
using stubs/drivers or execution from
a debugger environment.
WHEN

As much as feasibly possible!!
PARTS OF THE PROOFING PROCESS
VERIFICATION

VALIDATION

The process of determining whether the
products of a given phase of the
software development process fulfill the
requirements established during the
previous phase.

The process of evaluating software at
the end of software development to
ensure compliance with intended usage.
WHERE

But of course, where it fits!!
CONTINUOUS INTEGRATION AND/OR TRIGGERS
THROUGH CONTINUOUS INTEGRATION METHODS
• Repository
• Polling

• Package Management
• At build time

• Deployments
• At deployment time

• SCM Hooks
• Client-Side
• This section splits them into committing workflow hooks, e-mail
workflow scripts, and the rest of the client-side scripts.
• Server-Side
• These scripts run before and after pushes to the server.

* all of which can be quantified and automated.
WHY

Even the best programmers, can
and do, make mistakes!!
COST OF NOT TESTING OR LATE TESTING
Testing is the most time consuming and
expensive part of software development.
Not testing is even more expensive.

If we have too little testing effort early,
the cost of testing increases exponentially.
Planning for testing after development is
prohibitively expensive.

MAIN FUNCTIONS OF TESTING
• Improve quality
• Reduce cost
• Preserve customer satisfaction
HOW

Bunch of sugar and spice!!
(Magic and Fairy Dust)
CODE QUALITY AND THE C.R.A.P. INDEX
The C.R.A.P. (Change Risk Analysis and Predictions)
index is designed to analyze and predict the amount
of effort, pain, and time required to maintain an
existing body of code.
The other factor used in calculating the C.R.A.P
index, is the number of logic “paths” found within the
code.
 The more individual paths found, the harder the code is to
maintain and the higher the index will be.

Given a Java method m,
 C.R.A.P.(m) = comp(m)^2 * (1 – cov(m)/100)^3 + comp(m)

90% of everything is crap.
~Sturgeon’s Law (one of many variants)

…software metrics, in general, are just tools. No single metric
can tell the whole story; it’s just one more data point.
Metrics are meant to be used by developers, not the other way
around – the metric should work for you, you should not have
to work for the metric.
Metrics should never be an end unto themselves.
Metrics are meant to help you think, not to do the thinking for
you.
~Alberto Savoia
TOOLS

PHPUnit, PHP_CodeCoverage,
and xDebug
PHPUNIT
Testing with PHPUnit is not a totally different
activity from what you should already be
doing. It is just a different way of doing it.
The difference is between testing:
• Checking that your program behaves as
expected,
• Performing a battery of tests, runnable codefragments that automatically test the
correctness of parts (units) of the software.
These runnable code-fragments are called
unit tests.

Current Requirements
PHPUnit 3.7 requires PHP 5.3.3 (or later),
but PHP 5.5.1 (or later) is highly
recommended.
PHP_CodeCoverage, the library that is
used by PHPUnit to collect and process
code coverage information, depends on
Xdebug 2.0.5 (or later), but Xdebug 2.2.3
(or later) is highly recommended.
PHPUNIT TESTING

Demonstration
THANK YOU! QUESTIONS?
RESOURCES

CONTACT INFORMATION

Software Testing

Provide feel free to contact us at the following
addresses.

PHPUnit

xDebug
Clover PHP Plugin for Jenkins
Clover Documentation
Pardon My French, But This Code is C.R.A.P.
(1) (2)
How to Read and Improve the C.R.A.P. Index
of Your Code

m: abernstein@godaddy.com
gd_github: abernstein
twitter: @bernstein_aaron
m: fzaman@godaddy.com
gd_github: fzaman
twitter: @farhan_zaman

m: mwood@godaddy.com
gd_github: mwood

Contenu connexe

Dernier

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
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
 
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
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
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
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 

Dernier (20)

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
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...
 
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
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
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
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 

En vedette

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

En vedette (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Software Testing Concepts

  • 1. SOFTWARE TESTING CONCEPTS With a focus on PHPUnit, PHP_CodeCoverage, and xDebug
  • 2. INTRODUCTION Aaron Bernstein – Aspiring Engineer  One of the lead software engineers in the Workspace Team at GoDaddy  Been working with GoDaddy for about a year and a half.  Specifically tasked on our FaxThruEmail product. Micah Wood – Aspiring Software Engineer  One of the software engineers in the Workspace Team at GoDaddy  Been working with GoDaddy for about four years.  Specifically tasked on our FaxThruEmail product. Farhan Zaman – Software Engineer in Test  One of the automation engineers in the Workspace Team at GoDaddy  Been working with GoDaddy for about three and a half.  Specifically tasked on our Email Infrastructure and AIR product. Combined Experience Includes:  Fifteen plus years of programming in a multitude of languages…  We’ve all been working towards fully covering our applications with unit, functional, integration, and browser testing over time.
  • 4. ROLES Software Engineers Throughout the development process, one should be performing tests on code that they author. Test Engineers By the nature of the title, their primary function is to test software. Automation Engineers Developing tools and procedures to test software through automated methods. Management Ultimately responsible for the product integrity.
  • 6. LEVELS AND TYPES OF SOFTWARE TESTING LEVELS TYPES • Unit • A/B • System • Internationalization and localization • Acceptance • Acceptance • Installation • Accessibility • Functional/Non-Functional • Alpha/Beta • Regression • Integration • Compatibility • Destructive • Development • Smoke and Sanity • Software Performance • Security • Usability
  • 7. TESTING METHODS STATIC DYNAMIC Reviews, walkthroughs, or inspections are referred to as static testing. Executing programmed code with a given set of test cases is referred to as dynamic testing. Static testing can be omitted, and in practice often is. Dynamic testing takes place when the program itself is used. Dynamic testing may begin before the program is 100% complete in order to test particular sections of code and are applied to discrete functions or modules. Typical techniques for this are either using stubs/drivers or execution from a debugger environment.
  • 8. WHEN As much as feasibly possible!!
  • 9. PARTS OF THE PROOFING PROCESS VERIFICATION VALIDATION The process of determining whether the products of a given phase of the software development process fulfill the requirements established during the previous phase. The process of evaluating software at the end of software development to ensure compliance with intended usage.
  • 10. WHERE But of course, where it fits!!
  • 11. CONTINUOUS INTEGRATION AND/OR TRIGGERS THROUGH CONTINUOUS INTEGRATION METHODS • Repository • Polling • Package Management • At build time • Deployments • At deployment time • SCM Hooks • Client-Side • This section splits them into committing workflow hooks, e-mail workflow scripts, and the rest of the client-side scripts. • Server-Side • These scripts run before and after pushes to the server. * all of which can be quantified and automated.
  • 12. WHY Even the best programmers, can and do, make mistakes!!
  • 13. COST OF NOT TESTING OR LATE TESTING Testing is the most time consuming and expensive part of software development. Not testing is even more expensive. If we have too little testing effort early, the cost of testing increases exponentially. Planning for testing after development is prohibitively expensive. MAIN FUNCTIONS OF TESTING • Improve quality • Reduce cost • Preserve customer satisfaction
  • 14. HOW Bunch of sugar and spice!! (Magic and Fairy Dust)
  • 15. CODE QUALITY AND THE C.R.A.P. INDEX The C.R.A.P. (Change Risk Analysis and Predictions) index is designed to analyze and predict the amount of effort, pain, and time required to maintain an existing body of code. The other factor used in calculating the C.R.A.P index, is the number of logic “paths” found within the code.  The more individual paths found, the harder the code is to maintain and the higher the index will be. Given a Java method m,  C.R.A.P.(m) = comp(m)^2 * (1 – cov(m)/100)^3 + comp(m) 90% of everything is crap. ~Sturgeon’s Law (one of many variants) …software metrics, in general, are just tools. No single metric can tell the whole story; it’s just one more data point. Metrics are meant to be used by developers, not the other way around – the metric should work for you, you should not have to work for the metric. Metrics should never be an end unto themselves. Metrics are meant to help you think, not to do the thinking for you. ~Alberto Savoia
  • 17. PHPUNIT Testing with PHPUnit is not a totally different activity from what you should already be doing. It is just a different way of doing it. The difference is between testing: • Checking that your program behaves as expected, • Performing a battery of tests, runnable codefragments that automatically test the correctness of parts (units) of the software. These runnable code-fragments are called unit tests. Current Requirements PHPUnit 3.7 requires PHP 5.3.3 (or later), but PHP 5.5.1 (or later) is highly recommended. PHP_CodeCoverage, the library that is used by PHPUnit to collect and process code coverage information, depends on Xdebug 2.0.5 (or later), but Xdebug 2.2.3 (or later) is highly recommended.
  • 19. THANK YOU! QUESTIONS? RESOURCES CONTACT INFORMATION Software Testing Provide feel free to contact us at the following addresses. PHPUnit xDebug Clover PHP Plugin for Jenkins Clover Documentation Pardon My French, But This Code is C.R.A.P. (1) (2) How to Read and Improve the C.R.A.P. Index of Your Code m: abernstein@godaddy.com gd_github: abernstein twitter: @bernstein_aaron m: fzaman@godaddy.com gd_github: fzaman twitter: @farhan_zaman m: mwood@godaddy.com gd_github: mwood