109
Ajudamos empresas a criar produtos digitais de sucesso @samantacicil ia

Importância de Testes Automatizados para Continuous Delivery & DevOps

Embed Size (px)

Citation preview

Page 1: Importância de Testes Automatizados para Continuous Delivery & DevOps

Ajudamos empresas a criar produtos digitais de sucesso

@samantacicilia

Page 2: Importância de Testes Automatizados para Continuous Delivery & DevOps

Importância de Testes Automatizados para Continuous Delivery & DevOps

@samantacicilia

Page 3: Importância de Testes Automatizados para Continuous Delivery & DevOps

Conteúdo:

● Importância de Testes Automatizados● Quadrante de Testes● Pirâmide de Testes & Anti-padrões● Tipos de Teste & Continuous Delivery● Demo● Referências

Page 4: Importância de Testes Automatizados para Continuous Delivery & DevOps

Importância de Testes Automatizados

@samantacicilia

Page 5: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes automatizados?

Page 6: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes automatizados?

● Feedback rápido;

Page 7: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes automatizados?

● Feedback rápido; ● Menos passível de erro de execução;

Page 8: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes automatizados?

● Feedback rápido; ● Menos passível de erro de execução; ● Executar testes automatizados no decorrer do pipeline ++

qualidade;

Page 9: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes automatizados?

● Feedback rápido; ● Menos passível de erro de execução; ● Executar testes automatizados no decorrer do pipeline ++

qualidade; ● Melhoria Contínua na Estratégia de Testes;

Page 10: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes automatizados?

● Feedback rápido; ● Menos passível de erro de execução; ● Executar testes automatizados no decorrer do pipeline ++

qualidade; ● Melhoria Contínua na Estratégia de Testes; ● Testes = especificação executável do comportamento do

sistema;

Page 11: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes automatizados?

● Feedback rápido; ● Menos passível de erro de execução; ● Executar testes automatizados no decorrer do pipeline ++

qualidade; ● Melhoria Contínua na Estratégia de Testes; ● Testes = especificação executável do comportamento do

sistema; ● Feedback, Feedback, Feedback;

Page 12: Importância de Testes Automatizados para Continuous Delivery & DevOps

Quadrante de Testes

@samantacicilia

Page 13: Importância de Testes Automatizados para Continuous Delivery & DevOps
Page 14: Importância de Testes Automatizados para Continuous Delivery & DevOps

Pirâmide de Testes

@samantacicilia

Page 15: Importância de Testes Automatizados para Continuous Delivery & DevOps
Page 16: Importância de Testes Automatizados para Continuous Delivery & DevOps
Page 17: Importância de Testes Automatizados para Continuous Delivery & DevOps

Anti-padrões

@samantacicilia

Page 18: Importância de Testes Automatizados para Continuous Delivery & DevOps
Page 19: Importância de Testes Automatizados para Continuous Delivery & DevOps
Page 20: Importância de Testes Automatizados para Continuous Delivery & DevOps

Tipos de Teste & Continuous Delivery

@samantacicilia

Page 21: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes Unitários

@samantacicilia

Page 22: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes Unitários:

Page 23: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes Unitários:

● Feedback extremamente rápido;

Page 24: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes Unitários:

● Feedback extremamente rápido; ● 10-minute build (eXtreme Programming);

Page 25: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes Unitários:

● Feedback extremamente rápido; ● 10-minute build (eXtreme Programming); ● Testes de valores limite, diferentes combinações, exceções…

Page 26: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes Unitários:

● Feedback extremamente rápido; ● 10-minute build (eXtreme Programming); ● Testes de valores limite, diferentes combinações, exceções… ● Cobertura de Código;

Page 27: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes Unitários:

● Feedback extremamente rápido; ● 10-minute build (eXtreme Programming); ● Testes de valores limite, diferentes combinações, exceções… ● Cobertura de Código;● Segurança para fazer mudanças (eXtreme Programming);

Page 28: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes Unitários:

● Feedback extremamente rápido; ● 10-minute build (eXtreme Programming); ● Testes de valores limite, diferentes combinações, exceções… ● Cobertura de Código;● Segurança para fazer mudanças (eXtreme Programming); ● Qualidade também nos testes unitários!

Page 29: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes Unitários:

● Feedback extremamente rápido; ● 10-minute build (eXtreme Programming); ● Testes de valores limite, diferentes combinações, exceções… ● Cobertura de Código;● Segurança para fazer mudanças (eXtreme Programming); ● Qualidade também nos testes unitários! ● Test Driven Development;

Page 30: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes Unitários:

● Feedback extremamente rápido; ● 10-minute build (eXtreme Programming); ● Testes de valores limite, diferentes combinações, exceções… ● Cobertura de Código;● Segurança para fazer mudanças (eXtreme Programming); ● Qualidade também nos testes unitários! ● Test Driven Development; ● Design de Código que permita testes;

Page 31: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes Unitários:

● Feedback extremamente rápido; ● 10-minute build (eXtreme Programming); ● Testes de valores limite, diferentes combinações, exceções… ● Cobertura de Código;● Segurança para fazer mudanças (eXtreme Programming); ● Qualidade também nos testes unitários! ● Test Driven Development; ● Design de Código que permita testes; ● Mocks;

Page 32: Importância de Testes Automatizados para Continuous Delivery & DevOps

Ferramentas:

Page 33: Importância de Testes Automatizados para Continuous Delivery & DevOps

Link das Ferramentas:

● http://junit.org/junit4/● http://www.nunit.org/● http://testng.org/doc/index.html● https://phpunit.de/● http://jasmine.github.io/● https://mochajs.org/● http://robolectric.org/● http://rspec.info/● https://docs.python.org/2.7/library/unittest.html

Page 34: Importância de Testes Automatizados para Continuous Delivery & DevOps

Cobertura & Análise Estática:

Page 35: Importância de Testes Automatizados para Continuous Delivery & DevOps

Cobertura & Análise Estática:

● Verificar qual a % do seu código da aplicação está coberto por testes;

Page 36: Importância de Testes Automatizados para Continuous Delivery & DevOps

Cobertura & Análise Estática:

● Verificar qual a % do seu código da aplicação está coberto por testes; ● Analisar seu código de acordo com algumas regras;

Page 37: Importância de Testes Automatizados para Continuous Delivery & DevOps

Cobertura & Análise Estática:

● Verificar qual a % do seu código da aplicação está coberto por testes; ● Analisar seu código de acordo com algumas regras; ● Verificação por estilo (identação, espaços, convenção de nomes,

comentários…);

Page 38: Importância de Testes Automatizados para Continuous Delivery & DevOps

Cobertura & Análise Estática:

● Verificar qual a % do seu código da aplicação está coberto por testes; ● Analisar seu código de acordo com algumas regras; ● Verificação por estilo (identação, espaços, convenção de nomes,

comentários…); ● Verificação por boas práticas (duplicação de código, encoding, tamanho de

métodos e classes, criação de variáveis desnecessárias…);

Page 39: Importância de Testes Automatizados para Continuous Delivery & DevOps

Cobertura & Análise Estática:

● Verificar qual a % do seu código da aplicação está coberto por testes; ● Analisar seu código de acordo com algumas regras; ● Verificação por estilo (identação, espaços, convenção de nomes,

comentários…); ● Verificação por boas práticas (duplicação de código, encoding, tamanho de

métodos e classes, criação de variáveis desnecessárias…); ● Verificação por bugs (antecipar possíveis problemas);

Page 40: Importância de Testes Automatizados para Continuous Delivery & DevOps

Ferramentas:

Page 41: Importância de Testes Automatizados para Continuous Delivery & DevOps

Link das Ferramentas:

● https://coverage.readthedocs.io/en/coverage-4.0.3/● https://github.com/colszowka/simplecov● http://emma.sourceforge.net/● https://github.com/jacoco/jacoco● https://www.ncover.com/● http://blanketjs.org/● https://github.com/jonreid/XcodeCoverage● https://coveralls.io/

Page 42: Importância de Testes Automatizados para Continuous Delivery & DevOps

Ferramentas:

Page 43: Importância de Testes Automatizados para Continuous Delivery & DevOps

Link das Ferramentas:

● http://www.sonarqube.org/● https://codeclimate.com/● https://github.com/es-analysis/plato/● https://github.com/dafiti/cs/● http://checkstyle.sourceforge.net/● http://findbugs.sourceforge.net/● https://www.pylint.org/● https://stylecop.codeplex.com/

Page 44: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes de Mutação:

Page 45: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes de Mutação:

● Testar seus Testes Unitários;

Page 46: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes de Mutação:

● Testar seus Testes Unitários; ● Ferramenta introduz mutações no seu código e executa os testes unitários;

Page 47: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes de Mutação:

● Testar seus Testes Unitários; ● Ferramenta introduz mutações no seu código e executa os testes unitários; ● Se os testes falharem = OK!

Page 48: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes de Mutação:

● Testar seus Testes Unitários; ● Ferramenta introduz mutações no seu código e executa os testes unitários; ● Se os testes falharem = OK! ● Se os testes passarem = NOK!

Page 49: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes de Mutação:

Page 50: Importância de Testes Automatizados para Continuous Delivery & DevOps

Ferramentas:

Page 51: Importância de Testes Automatizados para Continuous Delivery & DevOps

Link das Ferramentas:

● http://pitest.org/● https://pypi.python.org/pypi/MutPy● https://ninjaturtles.codeplex.com/● http://visualmutator.github.io/web/● https://github.com/mbj/mutant● http://jumble.sourceforge.net/

Page 52: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes de Serviços

@samantacicilia

Page 53: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes de Serviços:

Page 54: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes de Serviços:

● Depois dos Testes de Unidade e antes dos Testes de UI;

Page 55: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes de Serviços:

● Depois dos Testes de Unidade e antes dos Testes de UI; ● Testar seu app + módulos, componentes, banco de dados;

Page 56: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes de Serviços:

● Depois dos Testes de Unidade e antes dos Testes de UI; ● Testar seu app + módulos, componentes, banco de dados; ● Sem interface;

Page 57: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes de Serviços:

● Depois dos Testes de Unidade e antes dos Testes de UI; ● Testar seu app + módulos, componentes, banco de dados; ● Sem interface; ● Stubs;

Page 58: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes de Serviços:

●Integração/Componentes●Contratos●API/Webservices

Page 59: Importância de Testes Automatizados para Continuous Delivery & DevOps

Ferramentas:

Page 60: Importância de Testes Automatizados para Continuous Delivery & DevOps

Link das Ferramentas:

● https://www.soapui.org/● https://github.com/jayway/rest-assured● http://flask-restless.readthedocs.io/en/stable/● http://frisbyjs.com/● https://github.com/visionmedia/supertest● https://github.com/svanoort/pyresttest● https://github.com/rest-client/rest-client● https://github.com/brooklynDev/airborne

Page 61: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes de UI

@samantacicilia

Page 62: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes Funcionais:

Page 63: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes Funcionais:

● Lentos :(

Page 64: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes Funcionais:

● Lentos :( ● Fluxos principais da aplicação;

Page 65: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes Funcionais:

● Lentos :( ● Fluxos principais da aplicação; ● Diferentes browsers (IE, Firefox, Chrome, Safari & Headless);

Page 66: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes Funcionais:

● Lentos :( ● Fluxos principais da aplicação; ● Diferentes browsers (IE, Firefox, Chrome, Safari & Headless); ● Mobile;

Page 67: Importância de Testes Automatizados para Continuous Delivery & DevOps

Ferramentas:

Page 68: Importância de Testes Automatizados para Continuous Delivery & DevOps

Link das Ferramentas:

● http://www.seleniumhq.org/● https://github.com/jnicklas/capybara● http://angular.github.io/protractor/#/● https://github.com/RobotiumTech/robotium● http://calaba.sh/● http://appium.io/

Page 69: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes de Regressão Visual:

● Comparação de Imagens;

Page 70: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes de Regressão Visual:

● Comparação de Imagens;

Page 71: Importância de Testes Automatizados para Continuous Delivery & DevOps

Ferramentas:

Page 72: Importância de Testes Automatizados para Continuous Delivery & DevOps

Link das Ferramentas:

● https://github.com/yahoo/kobold● https://github.com/Huddle/PhantomCSS● https://applitools.com/● https://dpxdt-test.appspot.com/● https://github.com/BBC-News/wraith● https://github.com/xebia/VisualReview

Page 73: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes de Performance:

Page 74: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes de Performance:

● Comportamento da aplicação diante de uma carga conhecida;

Page 75: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes de Performance:

● Comportamento da aplicação diante de uma carga conhecida; ● Baselines;

Page 76: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes de Performance:

● Comportamento da aplicação diante de uma carga conhecida; ● Baselines; ● Ter um ambiente para esses testes;

Page 77: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes de Performance:

● Comportamento da aplicação diante de uma carga conhecida; ● Baselines; ● Ter um ambiente para esses testes; ● Definir as métricas;

Page 78: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes de Performance:

● Comportamento da aplicação diante de uma carga conhecida; ● Baselines; ● Ter um ambiente para esses testes; ● Definir as métricas; ● Análise automática???

Page 79: Importância de Testes Automatizados para Continuous Delivery & DevOps

Ferramentas:

Page 80: Importância de Testes Automatizados para Continuous Delivery & DevOps

Link das Ferramentas:

● http://www.radview.com/pt-br/baixe-o-webload/● https://smartbear.com/product/loadcomplete/overview/● http://www.neotys.com/neoload/overview● http://jmeter.apache.org/● http://grinder.sourceforge.net/● http://locust.io/● http://gatling.io/● https://www.loadui.org/

Page 81: Importância de Testes Automatizados para Continuous Delivery & DevOps

E Continuous Delivery?

@samantacicilia

Page 82: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes X Estágios:

Page 83: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes X Estágios:

● Estágio de Commit:

● Testes Unitários ● Testes de Mutação

Page 84: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes X Estágios:

● Estágio de Commit:

● Testes Unitários ● Testes de Mutação● Testes de Integração

● Estágio de Aceite (primeiro ambiente):

● Testes de API

Page 85: Importância de Testes Automatizados para Continuous Delivery & DevOps

Testes X Estágios:

● Estágio de Commit:

● Testes Unitários ● Testes de Mutação● Testes de Integração

● Estágio de Aceite (primeiro ambiente):

● Testes de API● Estágio de Aceite (pré-produção):

● Testes de UI ● Testes de Regressão Visual ● Testes de Performance

Page 86: Importância de Testes Automatizados para Continuous Delivery & DevOps

Ferramentas:

Page 87: Importância de Testes Automatizados para Continuous Delivery & DevOps

Link das Ferramentas:

● https://semaphoreci.com/● https://travis-ci.org/● http://circleci.com/● https://jenkins.io● https://www.go.cd/● https://snap-ci.com/

Page 88: Importância de Testes Automatizados para Continuous Delivery & DevOps

Demo

@samantacicilia

Page 89: Importância de Testes Automatizados para Continuous Delivery & DevOps

Ruby:

Unitário (Rspec) Mutação (mutant-rspec)

https://github.com/samycici/mutation_example

Page 90: Importância de Testes Automatizados para Continuous Delivery & DevOps

Exemplo 1:

Page 91: Importância de Testes Automatizados para Continuous Delivery & DevOps

Exemplo 1:

Page 92: Importância de Testes Automatizados para Continuous Delivery & DevOps

Exemplo 1:

Page 93: Importância de Testes Automatizados para Continuous Delivery & DevOps

Exemplo 1:

Page 94: Importância de Testes Automatizados para Continuous Delivery & DevOps

Exemplo 2:

Page 95: Importância de Testes Automatizados para Continuous Delivery & DevOps

Exemplo 2:

Page 96: Importância de Testes Automatizados para Continuous Delivery & DevOps

Exemplo 2:

Page 97: Importância de Testes Automatizados para Continuous Delivery & DevOps

App em Python usando Flask:

Unitário (unittest + fixtures) Integração (unittest + sqlite)

API (pyresttest) Funcional (selenium)

Performance (locust.io)

https://github.com/samycici/todoapp-flask

Page 98: Importância de Testes Automatizados para Continuous Delivery & DevOps

Referências

@samantacicilia

Page 99: Importância de Testes Automatizados para Continuous Delivery & DevOps
Page 100: Importância de Testes Automatizados para Continuous Delivery & DevOps

● http://www.guru99.com/mutation-testing.html● http://blog.arkency.com/2015/05/mutation-testing-and-continuous-integration/● http://blog.arkency.com/2015/06/how-good-are-your-ruby-tests-testing-your-tests-with-

mutant/● https://blog.blockscore.com/how-to-write-better-code-using-mutation-testing/● http://www.slideshare.net/stefanteixeira/vr-dev-summit-2016-primeiros-passos-em-

automao-de-testes● http://pt.slideshare.net/fredoriginal/palestra-de-como-testar-sua-api-rest-no-grupo-de-

teste-carioca● https://css-tricks.com/visual-regression-testing-with-phantomcss/● http://www.softwaretestinghelp.com/performance-testing-tools-load-testing-tools/● https://talkingabouttesting.com/2015/08/19/mao-na-massa-com-visual-review-e-

protractor/● https://robots.thoughtbot.com/how-to-stub-external-services-in-tests● http://www.devmedia.com.br/como-adotar-a-analise-estatica-de-codigo/32727

Page 101: Importância de Testes Automatizados para Continuous Delivery & DevOps
Page 102: Importância de Testes Automatizados para Continuous Delivery & DevOps

insideoutproject.com.br

Page 103: Importância de Testes Automatizados para Continuous Delivery & DevOps
Page 104: Importância de Testes Automatizados para Continuous Delivery & DevOps
Page 105: Importância de Testes Automatizados para Continuous Delivery & DevOps

insideoutproject.com.br/mulheres-palestrantes

Page 106: Importância de Testes Automatizados para Continuous Delivery & DevOps
Page 107: Importância de Testes Automatizados para Continuous Delivery & DevOps

Comunidades:

● meetup.com/pt-BR/DevOps-Carioca/● meetup.com/pt-BR/Grupo-de-Testes-Carioca/● meetup.com/pt-BR/Data-Science-Meetup-Rio-de-Janeiro/● facebook.com/RioAgile/● agiletesters.com.br ● insideoutproject.com.br

Page 108: Importância de Testes Automatizados para Continuous Delivery & DevOps

Contatos:

● testedesoftware.com ● rtstreinamentos.com.br ● medium.com/@samantacicilia

● Linkedin: Samanta Cicilia ● Twitter: @samantacicilia ● Slideshare: pt.slideshare.net/samantacicilia/ ● Email: [email protected]

Page 109: Importância de Testes Automatizados para Continuous Delivery & DevOps

www.concretesolutions.com.brblog.concretesolutions.com.br

Rio de Janeiro – Rua São José, 90 – cj. 2121Centro – (21) 2240-2030

São Paulo - Rua Sansão Alves dos Santos, 433 4º andar - Brooklin - (11) 4119-0449