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

Continous Testing at Scale

Continous Testing at Scale

Continuous Delivery Summit 2016 Stockholm

Dmitry Buzdin

May 26, 2016
Tweet

More Decks by Dmitry Buzdin

Other Decks in Programming

Transcript

  1. What does “Tests” Mean? • Just a box in a

    CD pipeline • Write tests in your favoured test framework and execute - and you are done!
  2. Have You Considered?… environment live checks smoke testing functional testing

    security testing performance testing fault-tolerance testing micro-services testing browser compatibility testing mobile testing test environment preparation testing strategy test scheduling test reporting testing process traceability
  3. Development Only CD sprint 1 sprint 2 sprint 3 Version

    1 Version 2 testing 1 testing 2 Manual Testing
  4. “Continuous testing is the process of executing automated tests as

    part of the software delivery pipeline to obtain immediate feedback on the business risks associated with a software release candidate.” Shippable feature DEV OPS TEST https://en.wikipedia.org/wiki/Continuous_testing
  5. Testers Test management Test plans Manual testing Non-functional testing Structured

    approach System level testing Developers Write in TDD No bureaucracy All automated tests Ad-hoc decisions Feature-level testing How do you bring both together?
  6. Setting the Context • Telecom company had a software product

    it developed for past 15 years • Time to do a complete rewrite for 4G/5G • Continuous Delivery model selected
  7. Expectations • Quality statement several times a day • Testing

    has to be compliant to quality standards • Traceability throughout the development process
  8. Traceability is the ability to verify the history, location, or

    application of an item by means of documented recorded identification. Boring bureaucratic stuff relevant in non-agile environments only, right?
  9. Container Artefact Test Case Requirement Change Relates to Deploys container

    Covers Build Executes Tests Produces JIRA ID BUILD ID ARTIFACT ID SHA CONTAINER ID ???
  10. CD Meets Microservices Build Test Deploy Build Test Deploy Build

    Test Deploy Service A Service B Service C x1000
  11. Service A Service B Service C 1.0 1.1 1.2 1.3

    2.1 2.2 2.3 2.4 1.12 1.13 1.14 1.15 1.16 System Version
  12. Testware 1 Testware 2 Testware 3 Test Schedule Test Executor

    Team A Team B Team C Testware packages are combined with help of test schedules
  13. Test Schedule Team A Testware Team B Testware Team C

    Testware Consistency Check Smoke Testing Environment Cleanup Schedule items are coming from different teams Environment Preparation
  14. https://wiki.jenkins-ci.org/display/JENKINS/Build+Flow+Plugin parallel ({ guard { build(“run-tests”, “testware1”) build(“run-tests”, “testware2”) }

    rescue { build(“run-tests”, “cleanup”) } }) Tests schedule produces build flow definition, which is given to Jenkins build farm Visualisation
  15. TE based on Swarm Plugin https://wiki.jenkins-ci.org/display/JENKINS/Swarm+Plugin This plugin consists of

    two pieces: A self-contained CLI client that discovers a nearby Jenkins (via a UDP broadcast) and joins it A plugin that needs to be installed on Jenkins master to accept swarm clients Swarm is embeddable
  16. Interpreting Results • 100% green tests pipeline all the time

    - not realistic at this scale • what is failed test severity? • is it a new test? • was it rerun several times?
  17. Testing Flow Smoke Tests Quick Regression Long Regression Full Regression

    Component Tests Isolated runs Environment up and running Core use-cases Important use-cases All use-cases Component Tests Component Tests After every step decision is taken if to continue testing pipeline
  18. There are not too many tools out there to support

    large scale continuous testing today
  19. • Jenkins as a platform - super extensible • Saved

    us lots of time • May be not the most beautiful tool sometimes • But a very decent choice for building your CT flow
  20. Instead of using vendor specific monolithic tools - aim for

    extensible independent services and interoperability standards
  21. CD Standards • Not too many standards at the moment

    • JUnit 5 is a good example • Allure reporting API is another example
  22. Copyright: nisanga / 123RF Stock Photo martinm303 / 123RF Stock

    Photo dundanim / 123RF Stock Photo enjoyphoto / 123RF Stock Photo pedrosala / 123RF Stock Photo saranya2908 / 123RF Stock Photo kzwwsko / 123RF Stock Photo