SlideShare a Scribd company logo
CODE COVERAGE FOR
TOTAL SECURITY IN
APPLICATION MIGRATIONS
How to prepare for and confirm with confidence that your application is
working as intended after a major migration.
https://joind.in/talk/e386f
SR. WEB APPLICATION ARCHITECT
DANA H LUTHER
@danaluther
dluther@envisageinternational.com
https://www.linkedin.com/in/danaluther/
WHAT IS ENVISAGE?
Envisage International Corporation is an international education marketing
company serving students and schools around the world. Our student-
focused sites offer relevant information, targeted tools, unique resources and
valuable products for international students and educators.
ESLdirectory
THE AGE OLD QUESTION….
When do we upgrade?!
OMG … PHP7 is
OUT!!
Did you see the
new Bootstrap?!
Ooh .. Look a
MySQL update!
Uh, guys, this site is
behind by 2 full Bootstrap
versions…
Look at all the
new features in
Yii2!
Ugh – have you seen
this? It’s still in
columnal…
Wow, look at these
includes…with more
includes in them…
THE TIPPING POINT
As long as the risks outweigh the rewards, you’ll never upgrade. All things
being equal … you probably won’t upgrade. You have to tip the scales.
LETS DO IT!
Don’t wait until the balance tips because you’ve added
‘threat of impending doom’
to the reward side of the equation!
Eh, I don’t
know…
Risk Reward
Increase your reward … or minimize your risk? Which is easier??
Cost
HOW DO WE MAKE IT LESS RISKY?
Testing suites with Code Coverage!
Our test suites can answer the following questions:
How will we make things better?
• What was the performance improvement?
• What do we tell ‘the boss’ when s/he asks what the
potential risks are?
Will we BREAK anything?
• Infrequently used features?
• Custom JavaScript or CSS?
• All previous functionality should be present and
working as intended!
OK SO WE NEED TO TEST …
HOW DO WE DO THAT?
Codeception has supported modules for the following frameworks, to
name a few, built in:
• Symfony
• Laravel
• WordPress
• Joomla
• Yii
• Zend Framework
Codeception Tests with --coverage
http://codeception.com/
WHAT ARE WE GOING TO
COVER?
• No, not all the things … but close!
• 80-100% coverage is the goal!
START WITH A CLEAN SLATE
The biggest job is actually going to come *before* you do your migration.
Before we upgrade, we need 80-100% Coverage with (ideally) all tests in the Green!
Have something you know isn’t working? Document it!
DOWNLOAD CODECEPTION
Add the composer requirement, and run composer update (if you do not have Codeception globally
installed).
http://codeception.com/quickstart
./vendor/bin/yiic webapp ./
INSTALL CODECEPTION> ./vendor/bin/codecept bootstrap
Default codeception.yml
SAMPLE
CODECEPTION.YML
Mileage may vary :p
SAMPLE UNIT.YML FILE
Using the modules, this unit test is updated to use the Yii2 module, and enable the orm, email and fixture
elements of that model.
SAMPLE FUNCTIONAL.YML FILE
For the functional test suite, you will probably need some additional modules and helpers.
Ensure that your configuration files are pointing to the proper test server locations.
SAMPLE
ACCEPTANCE.YML
FILE
Using the WebDriver module for the
acceptance tests allows us to test the
pages with JavaScript enabled.
Need help getting your configuration
right for your framework? Check the
‘Case Study’ section of the
Codeception website for specifics on
your framework.
http://codeception.com/for/yii
RUN THE SUITE!
> ./vendor/bin/codecept run
… Meh … but it works!
Move the existing PHPUnit tests to the
new tests/unit/ folder and try again…
> php –S localhost:8080
Make sure your local webserver is running before you try to run the suite!
FIXTURE DATA
Your tests are only as good as the data that
you’re using!
False Sense of Security:
• Using ”1” as the ID for everything (No!!)
• Checking for a result without checking the
details of the result (Also No!!)
Use Fixtures specific to your Needs:
• Alternate fixtures for detailed scenarios
• Fixtures take time to load!! Large fixture data
sets should only be included where
necessary.
FAKED FIXTURE DATA https://github.com/fzaninotto/Faker
composer require fzaninotto/faker
ORGANIZE
• The @group tag:
• Modules
• Client/API Systems
• Issue based
• Filesystem Structure
> codecept run --group=EGI-1125
> codecept run --group=newsletter
> codecept run --skip-group=api
> codecept run unit pax/
> codecept run unit pax/:FindAll
RUN YOUR TEST SUITE WITH
COVERAGE
>codecept run unit --coverage --coverage-html
DON’T OVERDO IT
The @covers tag is a love/hate relationship.
http://codeception.com/docs/11-Codecoverage
😀😡😭😍
REVIEW COVERAGE OUTPUT
GOT IT ALL COVERED? SWEET, LET’S DO THIS!
WHAT’S OUR DEV. BOX SETUP?
Docker
If you’re running in a Docker
environment, and you want to test
against various versions of PHP or
MySQL, then your job is easy!
Just swap out your Docker images for
PHP or MySQL for the version you
want to test. Relaunch your image
and run your tests.
Virtual Machine
If you are using a VM for your testing
environment, without Docker, then
your upgrade process is going to be
a little trickier, and it’s a good idea to
get a solid snapshot of your VM state
before you start apt-get upgrading
your PHP, MySQL or whatever.
Dev Machine
If your dev machine is your localhost,
you don’t really have much room for
going backward if things don’t
proceed well, unless you’re happy to
play with restoring nightly backups.
Aaand… go!
Whether it’s an apt-get update, a composer update, or whatever the case may be, this is the point at which the actual
system migration should occur – then we’re back to testing!
THE UPGRADE / REVIEW LIFECYCLE
Refactor/
Update
Test
Refactor/
Update
Test
Refactor/
Update
Test
Upgrade
underlying system
Test for green!
TEST SUITE STATUS CHECK
Errors and Failures?
• Cycle back through unit by unit to
focus on addressing the issues
revealed by the tests.
• Leverage the @group tags to
narrow your focus down to specific
test groups
All Green?
• Go for the –coverage-html check,
and if you’re still all green with 80-
100% coverage, then you can give
the green light to releasing the
upgrade to production!
👍 GOOD TO GO!
Once all your tests are showing green across the board and coverage is
confirmed at 80-100%, you're ready to deploy your upgrade to production
and can say with CERTAINTY that your new system is compatible and ready to
go!
• You’ve had a dry run of the upgrade process
• All features are covered and passing:
• No nasty surprises at launch.
• Everyone goes home on time!
• Clients are all happy! (or not, is there such a thing?)
QUESTIONS?
DANA H LUTHER
@danaluther
dluther@envisageinternational.com
https://www.linkedin.com/in/danaluther/
https://joind.in/talk/e386f

More Related Content

PDF
Composer at Scale, Release and Dependency Management
PDF
Midwest PHP 2017 DevOps For Small team
PDF
Put an end to regression with codeception testing
PDF
Principles and Practices in Continuous Deployment at Etsy
PDF
Speed up your Titanium app development with automated tests - TiConf EU 2014
PDF
Continuous Deployment at Etsy — TimesOpen NYC
PDF
Distributed Release Management
PDF
Becoming a Git Master - Nicola Paolucci
Composer at Scale, Release and Dependency Management
Midwest PHP 2017 DevOps For Small team
Put an end to regression with codeception testing
Principles and Practices in Continuous Deployment at Etsy
Speed up your Titanium app development with automated tests - TiConf EU 2014
Continuous Deployment at Etsy — TimesOpen NYC
Distributed Release Management
Becoming a Git Master - Nicola Paolucci

What's hot (19)

PDF
Unikernels and another way of secure cloud computing
PPTX
Beyond the Release: CI That Transforms Organizations
PPTX
Build 2017 - B8093 - Nextgen UWP app distribution: Building extensible, strea...
PDF
Appium mobile web+dev conference
PPTX
Async webdriverjs
PPTX
Continuous Testing in the Cloud
PPTX
Moving From a Selenium Grid to the Cloud - A Real Life Story
PPTX
Sauce Labs for Visual Studio Team Services & TFS
PDF
How To Use Selenium Successfully (Java Edition)
PDF
Selenium and Open Source Advanced Testing
KEY
Continuous Integration, the minimum viable product
PPTX
Comparing Agile QA Approaches to End-to-End Testing
PPTX
Colorful world-of-visual-automation-testing-latest
PDF
Selenium Camp 2016 - Kiev, Ukraine
PPTX
How to Get Started with Cypress
PDF
Selenium conference, 2016
PPTX
Cross browser testing
PDF
Automatic Functional Testing with Selenium and SauceLabs
PDF
Continuous Delivery: The Dirty Details
Unikernels and another way of secure cloud computing
Beyond the Release: CI That Transforms Organizations
Build 2017 - B8093 - Nextgen UWP app distribution: Building extensible, strea...
Appium mobile web+dev conference
Async webdriverjs
Continuous Testing in the Cloud
Moving From a Selenium Grid to the Cloud - A Real Life Story
Sauce Labs for Visual Studio Team Services & TFS
How To Use Selenium Successfully (Java Edition)
Selenium and Open Source Advanced Testing
Continuous Integration, the minimum viable product
Comparing Agile QA Approaches to End-to-End Testing
Colorful world-of-visual-automation-testing-latest
Selenium Camp 2016 - Kiev, Ukraine
How to Get Started with Cypress
Selenium conference, 2016
Cross browser testing
Automatic Functional Testing with Selenium and SauceLabs
Continuous Delivery: The Dirty Details
Ad

Viewers also liked (20)

PDF
SunshinePHP 2017 - Making the most out of MySQL
PPTX
Debugging Effectively - SunshinePHP 2017
PPTX
Engineer - Mastering the Art of Software
PDF
Dip Your Toes in the Sea of Security
PPTX
A World Without PHP
PDF
Learn To Test Like A Grumpy Programmer - 3 hour workshop
PDF
Amp your site: An intro to accelerated mobile pages
ODP
My app is secure... I think
PDF
JWT - To authentication and beyond!
PDF
A recommendation engine for your php application
PDF
PHP UK 2017 - Don't Lose Sleep - Secure Your REST
PPTX
Docker for Developers - Sunshine PHP
PDF
PHP Benelux 2017 - Caching The Right Way
PDF
Adding 1.21 Gigawatts to Applications with RabbitMQ (Bulgaria PHP 2016 - Tuto...
PDF
Hack the Future
PDF
Amp your site an intro to accelerated mobile pages
PDF
Zend Framework Foundations
PDF
php[world] 2015 Training - Laravel from the Ground Up
PDF
Create, test, secure, repeat
PDF
Presentation Bulgaria PHP
SunshinePHP 2017 - Making the most out of MySQL
Debugging Effectively - SunshinePHP 2017
Engineer - Mastering the Art of Software
Dip Your Toes in the Sea of Security
A World Without PHP
Learn To Test Like A Grumpy Programmer - 3 hour workshop
Amp your site: An intro to accelerated mobile pages
My app is secure... I think
JWT - To authentication and beyond!
A recommendation engine for your php application
PHP UK 2017 - Don't Lose Sleep - Secure Your REST
Docker for Developers - Sunshine PHP
PHP Benelux 2017 - Caching The Right Way
Adding 1.21 Gigawatts to Applications with RabbitMQ (Bulgaria PHP 2016 - Tuto...
Hack the Future
Amp your site an intro to accelerated mobile pages
Zend Framework Foundations
php[world] 2015 Training - Laravel from the Ground Up
Create, test, secure, repeat
Presentation Bulgaria PHP
Ad

Similar to Code Coverage for Total Security in Application Migrations (20)

PPT
SynapseIndia drupal presentation on drupal info
PPTX
Adrian marinica continuous integration in the visual studio world
PPTX
Slides from LAX & DEN usergroup meetings
PPTX
Best practices for implementing CI/CD on Salesforce
PDF
Deploying software at Scale
PDF
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
PPTX
PHP North-East - Automated Deployment
PPTX
Automated Deployment
PPTX
Appium overview (Selenium Israel #2, Feb. 2014)
PPTX
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
ODP
Kelly potvin nosurprises_odtug_oow12
PPT
Enterprise PHP (PHP London Conference 2008)
PDF
Frontend testing of (legacy) websites
PPTX
Agility Requires Safety
PPTX
Joomla! Day Chicago 2011 Presentation - Steven Pignataro
PDF
Prescriptive System Security with InSpec
PPTX
Prescriptive Security with InSpec - All Things Open 2019
PPTX
Harman deepak v - agile on steriod - dev ops led transformation
PPTX
O365 Developer Bootcamp NJ 2018 - Material
PDF
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
SynapseIndia drupal presentation on drupal info
Adrian marinica continuous integration in the visual studio world
Slides from LAX & DEN usergroup meetings
Best practices for implementing CI/CD on Salesforce
Deploying software at Scale
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
PHP North-East - Automated Deployment
Automated Deployment
Appium overview (Selenium Israel #2, Feb. 2014)
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
Kelly potvin nosurprises_odtug_oow12
Enterprise PHP (PHP London Conference 2008)
Frontend testing of (legacy) websites
Agility Requires Safety
Joomla! Day Chicago 2011 Presentation - Steven Pignataro
Prescriptive System Security with InSpec
Prescriptive Security with InSpec - All Things Open 2019
Harman deepak v - agile on steriod - dev ops led transformation
O365 Developer Bootcamp NJ 2018 - Material
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013

More from Dana Luther (14)

PDF
Convert Your Dev Environment to a Docker Stack - PHP Tek 2025.pdf
PDF
Enums In the Wild at PHP[tek] Conference 2025
PDF
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
PDF
How to analyze your codebase with Exakat using Docker - Longhorn PHP
PDF
Keep it Secret, Keep it Safe - Docker Secrets and DI
PDF
Integrated Feature Management - Using Feature Flags - PHPSerbia
PDF
Integrated Feature Management - Using Feature Flags - MidwestPHP
PDF
Integrated Feature Management - Using Feature Flags - SunshinePHP
PDF
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
PDF
Hands on Docker - Launch your own LEMP or LAMP stack
PDF
Converting Your Dev Environment to a Docker Stack - php[world]
PDF
Converting Your Dev Environment to a Docker Stack - Cascadia
PDF
Converting your DEV Environment to a Docker Stack - ZCOE18
PDF
Converting Your DEV Environment to a Docker Stack
Convert Your Dev Environment to a Docker Stack - PHP Tek 2025.pdf
Enums In the Wild at PHP[tek] Conference 2025
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
How to analyze your codebase with Exakat using Docker - Longhorn PHP
Keep it Secret, Keep it Safe - Docker Secrets and DI
Integrated Feature Management - Using Feature Flags - PHPSerbia
Integrated Feature Management - Using Feature Flags - MidwestPHP
Integrated Feature Management - Using Feature Flags - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack
Converting Your Dev Environment to a Docker Stack - php[world]
Converting Your Dev Environment to a Docker Stack - Cascadia
Converting your DEV Environment to a Docker Stack - ZCOE18
Converting Your DEV Environment to a Docker Stack

Recently uploaded (20)

PDF
Categorization of Factors Affecting Classification Algorithms Selection
PDF
SMART SIGNAL TIMING FOR URBAN INTERSECTIONS USING REAL-TIME VEHICLE DETECTI...
PPTX
Sorting and Hashing in Data Structures with Algorithms, Techniques, Implement...
PDF
Design Guidelines and solutions for Plastics parts
PPTX
6ME3A-Unit-II-Sensors and Actuators_Handouts.pptx
PPT
Occupational Health and Safety Management System
PPTX
Graph Data Structures with Types, Traversals, Connectivity, and Real-Life App...
PPTX
Fundamentals of Mechanical Engineering.pptx
PPTX
introduction to high performance computing
PDF
Accra-Kumasi Expressway - Prefeasibility Report Volume 1 of 7.11.2018.pdf
PDF
Visual Aids for Exploratory Data Analysis.pdf
PPTX
communication and presentation skills 01
PPT
INTRODUCTION -Data Warehousing and Mining-M.Tech- VTU.ppt
PDF
Unit I ESSENTIAL OF DIGITAL MARKETING.pdf
PDF
null (2) bgfbg bfgb bfgb fbfg bfbgf b.pdf
PDF
BIO-INSPIRED ARCHITECTURE FOR PARSIMONIOUS CONVERSATIONAL INTELLIGENCE : THE ...
PDF
Level 2 – IBM Data and AI Fundamentals (1)_v1.1.PDF
PPTX
Module 8- Technological and Communication Skills.pptx
PDF
III.4.1.2_The_Space_Environment.p pdffdf
PPTX
CURRICULAM DESIGN engineering FOR CSE 2025.pptx
Categorization of Factors Affecting Classification Algorithms Selection
SMART SIGNAL TIMING FOR URBAN INTERSECTIONS USING REAL-TIME VEHICLE DETECTI...
Sorting and Hashing in Data Structures with Algorithms, Techniques, Implement...
Design Guidelines and solutions for Plastics parts
6ME3A-Unit-II-Sensors and Actuators_Handouts.pptx
Occupational Health and Safety Management System
Graph Data Structures with Types, Traversals, Connectivity, and Real-Life App...
Fundamentals of Mechanical Engineering.pptx
introduction to high performance computing
Accra-Kumasi Expressway - Prefeasibility Report Volume 1 of 7.11.2018.pdf
Visual Aids for Exploratory Data Analysis.pdf
communication and presentation skills 01
INTRODUCTION -Data Warehousing and Mining-M.Tech- VTU.ppt
Unit I ESSENTIAL OF DIGITAL MARKETING.pdf
null (2) bgfbg bfgb bfgb fbfg bfbgf b.pdf
BIO-INSPIRED ARCHITECTURE FOR PARSIMONIOUS CONVERSATIONAL INTELLIGENCE : THE ...
Level 2 – IBM Data and AI Fundamentals (1)_v1.1.PDF
Module 8- Technological and Communication Skills.pptx
III.4.1.2_The_Space_Environment.p pdffdf
CURRICULAM DESIGN engineering FOR CSE 2025.pptx

Code Coverage for Total Security in Application Migrations

  • 1. CODE COVERAGE FOR TOTAL SECURITY IN APPLICATION MIGRATIONS How to prepare for and confirm with confidence that your application is working as intended after a major migration. https://joind.in/talk/e386f
  • 2. SR. WEB APPLICATION ARCHITECT DANA H LUTHER @danaluther [email protected] https://www.linkedin.com/in/danaluther/
  • 3. WHAT IS ENVISAGE? Envisage International Corporation is an international education marketing company serving students and schools around the world. Our student- focused sites offer relevant information, targeted tools, unique resources and valuable products for international students and educators. ESLdirectory
  • 4. THE AGE OLD QUESTION…. When do we upgrade?! OMG … PHP7 is OUT!! Did you see the new Bootstrap?! Ooh .. Look a MySQL update! Uh, guys, this site is behind by 2 full Bootstrap versions… Look at all the new features in Yii2! Ugh – have you seen this? It’s still in columnal… Wow, look at these includes…with more includes in them…
  • 5. THE TIPPING POINT As long as the risks outweigh the rewards, you’ll never upgrade. All things being equal … you probably won’t upgrade. You have to tip the scales. LETS DO IT! Don’t wait until the balance tips because you’ve added ‘threat of impending doom’ to the reward side of the equation! Eh, I don’t know… Risk Reward Increase your reward … or minimize your risk? Which is easier?? Cost
  • 6. HOW DO WE MAKE IT LESS RISKY? Testing suites with Code Coverage! Our test suites can answer the following questions: How will we make things better? • What was the performance improvement? • What do we tell ‘the boss’ when s/he asks what the potential risks are? Will we BREAK anything? • Infrequently used features? • Custom JavaScript or CSS? • All previous functionality should be present and working as intended!
  • 7. OK SO WE NEED TO TEST … HOW DO WE DO THAT? Codeception has supported modules for the following frameworks, to name a few, built in: • Symfony • Laravel • WordPress • Joomla • Yii • Zend Framework Codeception Tests with --coverage http://codeception.com/
  • 8. WHAT ARE WE GOING TO COVER? • No, not all the things … but close! • 80-100% coverage is the goal!
  • 9. START WITH A CLEAN SLATE The biggest job is actually going to come *before* you do your migration. Before we upgrade, we need 80-100% Coverage with (ideally) all tests in the Green! Have something you know isn’t working? Document it!
  • 10. DOWNLOAD CODECEPTION Add the composer requirement, and run composer update (if you do not have Codeception globally installed). http://codeception.com/quickstart ./vendor/bin/yiic webapp ./
  • 11. INSTALL CODECEPTION> ./vendor/bin/codecept bootstrap Default codeception.yml
  • 13. SAMPLE UNIT.YML FILE Using the modules, this unit test is updated to use the Yii2 module, and enable the orm, email and fixture elements of that model.
  • 14. SAMPLE FUNCTIONAL.YML FILE For the functional test suite, you will probably need some additional modules and helpers. Ensure that your configuration files are pointing to the proper test server locations.
  • 15. SAMPLE ACCEPTANCE.YML FILE Using the WebDriver module for the acceptance tests allows us to test the pages with JavaScript enabled. Need help getting your configuration right for your framework? Check the ‘Case Study’ section of the Codeception website for specifics on your framework. http://codeception.com/for/yii
  • 16. RUN THE SUITE! > ./vendor/bin/codecept run … Meh … but it works! Move the existing PHPUnit tests to the new tests/unit/ folder and try again… > php –S localhost:8080 Make sure your local webserver is running before you try to run the suite!
  • 17. FIXTURE DATA Your tests are only as good as the data that you’re using! False Sense of Security: • Using ”1” as the ID for everything (No!!) • Checking for a result without checking the details of the result (Also No!!) Use Fixtures specific to your Needs: • Alternate fixtures for detailed scenarios • Fixtures take time to load!! Large fixture data sets should only be included where necessary.
  • 18. FAKED FIXTURE DATA https://github.com/fzaninotto/Faker composer require fzaninotto/faker
  • 19. ORGANIZE • The @group tag: • Modules • Client/API Systems • Issue based • Filesystem Structure > codecept run --group=EGI-1125 > codecept run --group=newsletter > codecept run --skip-group=api > codecept run unit pax/ > codecept run unit pax/:FindAll
  • 20. RUN YOUR TEST SUITE WITH COVERAGE >codecept run unit --coverage --coverage-html
  • 21. DON’T OVERDO IT The @covers tag is a love/hate relationship. http://codeception.com/docs/11-Codecoverage 😀😡😭😍
  • 23. GOT IT ALL COVERED? SWEET, LET’S DO THIS!
  • 24. WHAT’S OUR DEV. BOX SETUP? Docker If you’re running in a Docker environment, and you want to test against various versions of PHP or MySQL, then your job is easy! Just swap out your Docker images for PHP or MySQL for the version you want to test. Relaunch your image and run your tests. Virtual Machine If you are using a VM for your testing environment, without Docker, then your upgrade process is going to be a little trickier, and it’s a good idea to get a solid snapshot of your VM state before you start apt-get upgrading your PHP, MySQL or whatever. Dev Machine If your dev machine is your localhost, you don’t really have much room for going backward if things don’t proceed well, unless you’re happy to play with restoring nightly backups. Aaand… go! Whether it’s an apt-get update, a composer update, or whatever the case may be, this is the point at which the actual system migration should occur – then we’re back to testing!
  • 25. THE UPGRADE / REVIEW LIFECYCLE Refactor/ Update Test Refactor/ Update Test Refactor/ Update Test Upgrade underlying system Test for green!
  • 26. TEST SUITE STATUS CHECK Errors and Failures? • Cycle back through unit by unit to focus on addressing the issues revealed by the tests. • Leverage the @group tags to narrow your focus down to specific test groups All Green? • Go for the –coverage-html check, and if you’re still all green with 80- 100% coverage, then you can give the green light to releasing the upgrade to production!
  • 27. 👍 GOOD TO GO! Once all your tests are showing green across the board and coverage is confirmed at 80-100%, you're ready to deploy your upgrade to production and can say with CERTAINTY that your new system is compatible and ready to go! • You’ve had a dry run of the upgrade process • All features are covered and passing: • No nasty surprises at launch. • Everyone goes home on time! • Clients are all happy! (or not, is there such a thing?)