Testing for Continuous Delivery

@deadpyxel
Robson Cruz
DevOps Engineer @ Venturus

AGENDA

  • Por que testar?
  • Quando testar?
  • Como testar?

Quality is not an act, it is a habit.

- Aristotle

Intro

  • CI vs CD vs CI/CD
  • O que é qualidade?
  • Mais testes = Bons testes?
  • Commit vs Deploy

O que queremos é um ambiente estável do commit ao deploy!

Existem muitas discussões sobre teste...

The 4 stages of testing

Commit stage

fail fast and fail well.

Nesse passo testes comuns são:

  • Code style checks;
  • FAST unit tests;
  • Static Analysis;
  • Antipattern checks;
  • Data migration...

Acceptance Stage

Define what is releseable.

Nesse ponto são comuns:

  • Integration tests;
  • BDD;
  • Security assessment;
  • Performance tests;
  • Compliance checks;
  • Configuration checking;

Release Stage

Support our release.

Aqui iremos encontrar:

  • Smoke tests;
  • Monitoring and tracking;
  • Canary testing;

Product Stage

Now its time for business.

Nesse ponto, é comum aplicar:

  • A/B tests;
  • Capacity monitoring;
  • Bughunting;
  • Commercial Analysis;
  • Chaos Engineering!!!

Microservices...

are complicated...

Beware

  • Dependencies
  • DeSynchronisation
  • Deprecation of services

What about TDD

Well...it is a dicipline

The rules

  • One SHALL NOT write code that is not to pass a test
  • One SHALL NOT write any more of the failing test, and compilation failures are failures 
  • One SHALL NOT stop writing code when we have a passing test

Remember the mantra

But how?

How do we test and be happy?

Design for testability

Mock as often as possible

Use SOLID principles and DDD

when in doubt, test it out!

Closing words

Continuous Delivery

Dave Farley, um dos grandes nomes da engenharia de software.

Foca em muitos tópicos polêmicos, mas principalmente em como alcançar a tão sonhada Entrega Contínua.

Test & Code

O host é Brian Okken, entrevistando grandes nomes da computação, bem como os mantenedores de múltiplas ferramentas que utilizamos.

Tem conteúdo sobre testes, sobre automatização, sobre design patterns, e muito mais.

Refactoring

A bíblia para quem quer aprender como lidar com código legado, mal escrito ou como sobreviver a um grande processo de refatoração.

Q&A

Obrigado!

Técnicas de Teste para CI/CD

By Robson Cruz

Técnicas de Teste para CI/CD

  • 90