View
450
Download
1
Category
Preview:
Citation preview
Ajudamos empresas a criar produtos digitais de sucesso
@samantacicilia
Importância de Testes Automatizados para Continuous Delivery & DevOps
@samantacicilia
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
Importância de Testes Automatizados
@samantacicilia
Testes automatizados?
Testes automatizados?
● Feedback rápido;
Testes automatizados?
● Feedback rápido; ● Menos passível de erro de execução;
Testes automatizados?
● Feedback rápido; ● Menos passível de erro de execução; ● Executar testes automatizados no decorrer do pipeline ++
qualidade;
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 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;
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;
Quadrante de Testes
@samantacicilia
Pirâmide de Testes
@samantacicilia
Anti-padrões
@samantacicilia
Tipos de Teste & Continuous Delivery
@samantacicilia
Testes Unitários
@samantacicilia
Testes Unitários:
Testes Unitários:
● Feedback extremamente rápido;
Testes Unitários:
● Feedback extremamente rápido; ● 10-minute build (eXtreme Programming);
Testes Unitários:
● Feedback extremamente rápido; ● 10-minute build (eXtreme Programming); ● Testes de valores limite, diferentes combinações, exceções…
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;
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);
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!
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;
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;
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;
Ferramentas:
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
Cobertura & Análise Estática:
Cobertura & Análise Estática:
● Verificar qual a % do seu código da aplicação está coberto por testes;
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;
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…);
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…);
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);
Ferramentas:
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/
Ferramentas:
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/
Testes de Mutação:
Testes de Mutação:
● Testar seus Testes Unitários;
Testes de Mutação:
● Testar seus Testes Unitários; ● Ferramenta introduz mutações no seu código e executa os testes unitários;
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!
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!
Testes de Mutação:
Ferramentas:
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/
Testes de Serviços
@samantacicilia
Testes de Serviços:
Testes de Serviços:
● Depois dos Testes de Unidade e antes dos Testes de UI;
Testes de Serviços:
● Depois dos Testes de Unidade e antes dos Testes de UI; ● Testar seu app + módulos, componentes, banco de dados;
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;
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;
Testes de Serviços:
●Integração/Componentes●Contratos●API/Webservices
Ferramentas:
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
Testes de UI
@samantacicilia
Testes Funcionais:
Testes Funcionais:
● Lentos :(
Testes Funcionais:
● Lentos :( ● Fluxos principais da aplicação;
Testes Funcionais:
● Lentos :( ● Fluxos principais da aplicação; ● Diferentes browsers (IE, Firefox, Chrome, Safari & Headless);
Testes Funcionais:
● Lentos :( ● Fluxos principais da aplicação; ● Diferentes browsers (IE, Firefox, Chrome, Safari & Headless); ● Mobile;
Ferramentas:
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/
Testes de Regressão Visual:
● Comparação de Imagens;
Testes de Regressão Visual:
● Comparação de Imagens;
Ferramentas:
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
Testes de Performance:
Testes de Performance:
● Comportamento da aplicação diante de uma carga conhecida;
Testes de Performance:
● Comportamento da aplicação diante de uma carga conhecida; ● Baselines;
Testes de Performance:
● Comportamento da aplicação diante de uma carga conhecida; ● Baselines; ● Ter um ambiente para esses testes;
Testes de Performance:
● Comportamento da aplicação diante de uma carga conhecida; ● Baselines; ● Ter um ambiente para esses testes; ● Definir as métricas;
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???
Ferramentas:
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/
E Continuous Delivery?
@samantacicilia
Testes X Estágios:
Testes X Estágios:
● Estágio de Commit:
● Testes Unitários ● Testes de Mutação
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
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
Ferramentas:
Link das Ferramentas:
● https://semaphoreci.com/● https://travis-ci.org/● http://circleci.com/● https://jenkins.io● https://www.go.cd/● https://snap-ci.com/
Demo
@samantacicilia
Ruby:
Unitário (Rspec) Mutação (mutant-rspec)
https://github.com/samycici/mutation_example
Exemplo 1:
Exemplo 1:
Exemplo 1:
Exemplo 1:
Exemplo 2:
Exemplo 2:
Exemplo 2:
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
Referências
@samantacicilia
● 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
insideoutproject.com.br
insideoutproject.com.br/mulheres-palestrantes
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
Contatos:
● testedesoftware.com ● rtstreinamentos.com.br ● medium.com/@samantacicilia
● Linkedin: Samanta Cicilia ● Twitter: @samantacicilia ● Slideshare: pt.slideshare.net/samantacicilia/ ● Email: samycici@gmail.com
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
Recommended