[devops carioca] testes automatizados

Post on 12-Jan-2017

408 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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: samycici@gmail.com

top related