Importância de testes automatizados para sustentar Continuous Delivery e DevOps
@samantacicilia
Sobre mimImportância de Testes Automatizados
Quadrante de TestesPirâmide de Testes & Antipadrões
Tipos de Teste & Continuous DeliveryDemo
Referências
@samantacicilia
Sobre mim
@samantacicilia
agiletesters.com.br
insideoutproject.com.br
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
Antipadrõ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
@samantacicilia
Links 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;
- Verificacão por estilo (identação, espaços, convencã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;
- Verificacão por estilo (identação, espaços, convencã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;
- Verificacão por estilo (identação, espaços, convencã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 (Cobertura)
@samantacicilia
Links 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 (Análise)
@samantacicilia
Links 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
@samantacicilia
Links 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ço
Testes de Serviço- Depois dos Testes de Unidade e antes dos Testes de UI;
Testes de Serviço- Depois dos Testes de Unidade e antes dos Testes de UI;
- Testar seu app + módulos, componentes, banco de dados;
Testes de Serviço- 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ço- 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ço- Integração/Componentes
Testes de Serviço- Integração/Componentes- Contratos
Testes de Serviço- Integração/Componentes- Contratos- API/Webservices
Ferramentas
@samantacicilia
Links 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
@samantacicilia
Links 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
@samantacicilia
Links 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
@samantacicilia
Links 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
- Estágio de Aceite (primeiro ambiente): - Testes de Serviço
Testes X Estágios- Estágio de Commit:
- Testes Unitários- Testes de Mutação
- Estágio de Aceite (primeiro ambiente): - Testes de Serviço
- Estágio de Aceite (pré-produção): - Testes de UI- Testes de Regressão Visual- Testes de Performance
Ferramentas
@samantacicilia
Links 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
@samantacicilia
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@samantacicilia
Referências
@samantacicilia
@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
Contatos➔ testedesoftware.com➔ rtstreinamentos.com.br➔ medium.com/@samantacicilia
➔ Linkedin: Samanta Cicilia➔ Twitter: @samantacicilia➔ Slideshare: pt.slideshare.net/samantacicilia/➔ Email: [email protected]
Top Related