Upgrade to Pro — share decks privately, control downloads, hide ads and more …

VCS - TEST - CI

Boynux
October 03, 2014

VCS - TEST - CI

Version Control System, Tests and Continues integration patterns.

Boynux

October 03, 2014
Tweet

More Decks by Boynux

Other Decks in Technology

Transcript

  1. Version Control System (VCS) – If you don't use one,

    leave this room now! – Everything in VCS – Source Code – Tests – Application Configuration – Environment Configuration – Check-in regularly into master – Add proper message in every commit
  2. Tests from A-Z – Unit Tests (< 5 min) –

    Smoke tests – Functional Tests: – Component Tests – Integration Tests – Acceptance Tests: – Subcutaneous Tests – UI Tests (< 1 hrs) – Non-functional Tests: – Load Test – Performance Test – Security Test
  3. Commit stage tests – Kind of tests: – Unit test

    (Mockist / Classicist style) – Component tests – Functional tests – Smoke tests – Should be: – < 5 minutes – No real 3rd party access – No Databse – No External Services – 75% minimum code coverage – CRAP-iness < 30
  4. Automate Acceptance Tests – Type of tests: – Integration Tests

    – Subcutaneous Tests – UI Tests – Requirements: – Less than 1 hrs – No external services – Business values – Cover at least 80%
  5. Test Driven Development – Acceptance Test for every user story

    at the beginning – Cover at least on important happy path – Unit test before writing any line of code – At least 75% percent code coverage – Reduce code CRAP-iness < 30 – Change Risk Anti-Patterns – Run unit and component tests often – Do not comment tests except for a very valid reason – Do not remove tests except for a very valid reason
  6. What is CI? “Continuous integration (CI) is the practice, in

    software engineering, of merging all developer working copies with a shared mainline several times a day. It was first named and proposed by Grady Booch in his method,[1] who did not advocate integrating several times a day.” – wikipedia “Continues Integration represents a paradigm shift. Without continues integration , your software is broken until somebody proves it works, usually during a testing or integration stage.” –Continues devlivery “Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible.” – Martin fowler
  7. What's good about CI? – Say goodbye to long and

    tense integrations – Increase visibility which enables greater communication – Catch issues fast and nip them in the bud – Spend less time debugging and more time adding features – Proceed in the confidence you’re building on a solid foundation – Stop waiting to find out if your code’s going to work – Reduce integration problems allowing you to deliver software more rapidly
  8. Continues Integration – Run commit tests with every commit –

    Commit test should not take more that 10 minutes – Team should stop their job if tests are broken to fix – Smoke tests should run – Functional tests should run upon successful commit – Functional tests should run in parallel (< 2 hrs) – Non-functional tests should run at this stage Environment should be same as production
  9. I want to do every thing in the world that

    can be done. Fanny Kemble