•   Continuous Integration
•   Continuous Delivery
•   A Good Testing Strategy
•   Testing in Production
•   Agile
Rapid Componentized Builds
Continuous Integration
Unit Testing Improve service quality and
engineering agility
Operate at Near Zero Bugs
Focused Integration Testing
Effective Exploratory Testing
integrate frequently
           multiple integrations per
day
automated build and test
                 as quickly as
possible.

 http://www.martinfowler.com/articles/continuous
 Integration.html
 Continuous Integration in .NET
Every Commit should build the mainline on
integration machine
Keep the Build fast
Everyone can see what's happening
http://google-engtools.blogspot.com/
Continuous Delivery


          Building, Testing
releasing           faster
frequently


   Continuous Delivery: Reliable Software
   Releases through Build, Test, and
   Deployment Automation
The process for releasing/deploying software
MUST be repeatable and reliable.
Automate everything!
Done means “released”.
If something difficult or painful, do it more often.
Mike McGarr
Deployment Pipeline models the part of your project’s
value stream that goes from check-in to release, and then
to automate it.
Acceptance         Test       Run test on
                                     Tests          Deployment    deployment




 Code                 Unit Tests
         Build
Change



                                     Functional
                                       Tests




                                                  Run test on       Pre
                 Monitor in        Production
                                                     Pre         Production
                 Production        Deployment
                                                  Production     Deployment
Testing Strategy
to fit into the deployment
pipeline
know what the customer thinks is truly
important and test for those subjects.
Agile Testing: A Practical Guide for Testers and Agile
Teams
http://specflow.org
          http://cukes.info
Production       Monitoring
  Level

               A simulation of
 Staging        the production
              environment with
                                  Uses monitoring
                                                         Load testing
                                    techniques
  Level        faked identities
                     etc.


              Automated testing
Integration     of every code
                                      End-to-End
                                  testing with partial
               change over the
                                      component
   Level         dependency
                    closure
                                        isolation


                 Super-strict
                 component        Extensive use of
Unit Level     isolation using
              e.g. dependency
                                    mock-based
                                      testing
                   injection
is NOT
Mind
Shift
Experimentation in Production

different experiences      controlled
manner
                            built the
right thing   we build the thing right
enables
continuous and frequent customer value
delivery

                           high quality
predictable lower cost.”
Test In Production (TiP)

• Continuously and extensively Monitoring and experimental our service in
  production

Continuous Deployment

• Frequent deployments of small changes to production environment (starting
  with weekly releases)

Continuous Integration

• Minimize the gap between code development and deployment readiness

Pushing Quality Upstream

• Efficient processes to reduce the cost and gaps between product and quality
  development

Continuous Improvement

• Constant observation, measurement and feedback on processes ,systems
  and cost

Service engineering

  • 3.
    Continuous Integration • Continuous Delivery • A Good Testing Strategy • Testing in Production • Agile
  • 6.
    Rapid Componentized Builds ContinuousIntegration Unit Testing Improve service quality and engineering agility Operate at Near Zero Bugs Focused Integration Testing Effective Exploratory Testing
  • 8.
    integrate frequently multiple integrations per day automated build and test as quickly as possible. http://www.martinfowler.com/articles/continuous Integration.html Continuous Integration in .NET
  • 9.
    Every Commit shouldbuild the mainline on integration machine Keep the Build fast Everyone can see what's happening
  • 11.
  • 14.
    Continuous Delivery Building, Testing releasing faster frequently Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation
  • 15.
    The process forreleasing/deploying software MUST be repeatable and reliable. Automate everything! Done means “released”. If something difficult or painful, do it more often.
  • 17.
  • 19.
    Deployment Pipeline modelsthe part of your project’s value stream that goes from check-in to release, and then to automate it.
  • 21.
    Acceptance Test Run test on Tests Deployment deployment Code Unit Tests Build Change Functional Tests Run test on Pre Monitor in Production Pre Production Production Deployment Production Deployment
  • 24.
    Testing Strategy to fitinto the deployment pipeline
  • 25.
    know what thecustomer thinks is truly important and test for those subjects.
  • 27.
    Agile Testing: APractical Guide for Testers and Agile Teams
  • 30.
    http://specflow.org http://cukes.info
  • 33.
    Production Monitoring Level A simulation of Staging the production environment with Uses monitoring Load testing techniques Level faked identities etc. Automated testing Integration of every code End-to-End testing with partial change over the component Level dependency closure isolation Super-strict component Extensive use of Unit Level isolation using e.g. dependency mock-based testing injection
  • 36.
  • 37.
  • 39.
    Experimentation in Production differentexperiences controlled manner built the right thing we build the thing right
  • 43.
    enables continuous and frequentcustomer value delivery high quality predictable lower cost.”
  • 44.
    Test In Production(TiP) • Continuously and extensively Monitoring and experimental our service in production Continuous Deployment • Frequent deployments of small changes to production environment (starting with weekly releases) Continuous Integration • Minimize the gap between code development and deployment readiness Pushing Quality Upstream • Efficient processes to reduce the cost and gaps between product and quality development Continuous Improvement • Constant observation, measurement and feedback on processes ,systems and cost

Editor's Notes

  • #4  We want to bring a set of well known engineering system principle and practice into your daily work and shift your mind:
  • #30 BDD – Dan North (2003)