CNQS - Testes Automatizados & Continuous Delivery
Post on 12-Jan-2017
446 Views
Preview:
Transcript
Testes Automatizados & Continuous Delivery
@samantacicilia
Continuous DeliveryQuadrante de TestesPirâmide de TestesTestes AutomatizadosDemoConsiderações Finais
SUMÁRIO
A forma como as empresas desenvolvem software muda rapidamente – seja por necessidades do mercado, evolução de tecnologias ou até mesmo redução de custos. Todos os
dias essas empresas precisam fazer mais com menos investimento, para simultaneamente manter a
competitividade e reduzir os custos.–The Phoenix Project
“
de qualidadeEntregar software
time-to-marketAtendendo ao
um problemaResolvendo
do nosso cliente
horas extrasSem
o tempo todo
Build
Deploy
Test
Release CD
ProcessoContinuous Delivery
Permitir as entregas em qualquer ambiente e a qualquer momento
Tornar todas as partes do processo visíveis.
Melhorar o feedback do processo para identificar os problemas rapidamente.
Continuous DeliveryObjetivos
Continuous DeliveryPrincipais conceitos
Controle de Versão
Integração Contínua
Testes Automatizados
Testes de Capacidade
Pipeline de Implantação
Implementação automatizada do processo de compilar todas as partes de uma aplicação, implantá-las em um ambiente qualquer – homologação ou produção – testá-la e efetuar sua entrega final.
deploys Mais
de tempoCurto espaço
Mas como eu testo tudo em um curto espaço de tempo?“
• Lisa Crispin, Brian Marick
Supp
orti
ng t
he T
eam
Business Facing
Quadrante de Testes Ágeis
Technology Facing
Critique Product
Q1 Q4
Q2 Q3
Unit TestsComponent Tests
Performance & Load TestingSecurity Testing”Ility” Testing
Exploratory TestingScenarios
Usability TestingUAT (User Acceptance Testing)
Alpha / Beta
Functional TestsExamplesStory TestsPrototypesSimulations
Automated Tools
ManualAutomates & Manual
Pirâmide de Testes“Ideal”
UI
Service
Unit
Manual
Mike Cohn
Anti Padrão”Sorvete”
Automated GUI Tests
Integration Tests
UnitTest
s
Manual Tests
• adaptação: watirmelon.com
Anti Padrão“Cupcake”
• adaptação: Fabio Pereira
Testes Automatizados
Feedback mais rápido
Testes distribuídos pelo pipeline
Garantia de regressão
Especificação executável do sistema
Foca na pirâmide“
Vamos para os testes automatizados!
Testes UnitáriosFeedback extremamente rápido.10min. build (eXtreme Programming)Testes de valores limite, diferentes combinações etc
Cobertura de Código
Segurança para fazer mudanças (XP)Test Driven Development
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://goo.gl/1zW1Ir
Ferramentas de Testes Unitários
Cobertura & Análise EstáticaPorcentagem de código sendo exercitado por testes
Análise de acordo com regras:
• Estilo (identação, comentários)
• Boas práticas (duplicação de código, tamanho de métodos)
Ferramentas de Cobertura
https://github.com/colszowka/simplecov
http://emma.sourceforge.net/
https://github.com/jacoco/jacoco
https://www.ncover.com/
http://blanketjs.org/
https://coveralls.io/
https://coverage.readthedocs.io/en/coverage-4.0.3/
Ferramentas de Análise Estática
http://www.sonarqube.org/ https://
codeclimate.com/
https://github.com/es-analysis/plato/
http://checkstyle.sourceforge.net/
http://findbugs.sourceforge.net/
https://www.pylint.org/
https://stylecop.codeplex.com/
Testes de Mutação
Testar seus Testes Unitários
Ferramenta introduz mutações no seu código e executa os testes unitáriosSe os testes falharem = OK!
Se os testes passarem = NOK!
Ferramentas de Testes de Mutação
http://pitest.org/
https://pypi.python.org/pypi/MutPy
http://visualmutator.github.io/web/
https://ninjaturtles.codeplex.com/
https://github.com/mbj/mutant
http://jumble.sourceforge.net/
Testes de ServiçoDepois dos Testes de Unidade e antes dos Testes de UITestar seu app + módulos componentes, banco de dados
Sem interface
Integração/Componentes
Contratos
API/Webservices
Ferramentas de Testes de Serviço
http://flask-restless.readthedocs.io/en/stable/
http://frisbyjs.com/
https://www.soapui.org/
https://github.com/visionmedia/supertest
https://github.com/jayway/rest-assured
https://github.com/rest-client/rest-client
https://github.com/brooklynDev/airborne
https://github.com/svanoort/pyresttest
Testes de User
InterfaceLentos :(
Fluxos da aplicação
Diferentes browsers (IE, Firefox, Chrome, Safari & Headless)Mobile
Ferramentas de Testes de UI
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 Capacidade
Carga
Stress
Ambiente de teste de capacidadeMétricas
Ferramentas de Testes de Capacidade
http://jmeter.apache.org/
http://grinder.sourceforge.net/
http://locust.io/
http://gatling.io/
Como fazer tudo isso funcionar em conjunto e ajudar na garantia de qualidade? “
Foca no pipeline“
pipelineDistribuir os testes no decorrer do
para ter feedback durante todo cicloe antecipar a descoberta de problemas
The deployment pipeline
Commit stage
CompileUnit testAnalysis
Build installers
Automatedacceptance
testing
AutomatedCapacity testing
Manual testing
ShowcasesExploratory
testing
Release
Ferramentas de Integração e Entrega Contínua
https://travis-ci.org/
http://circleci.com/https://jenkins.io
https://www.go.cd/https://snap-ci.com/
https://semaphoreci.com/
Ruby
- Unitário (RSpec)- Mutação (mutant-rspec)
https://github.com/samycici/mutation_example
Python
- Unitário (unittest + fixtures) - Integração (unittest + sqlite) - API (pyresttest) - Funcional (selenium) - Performance (locust.io)
https://github.com/samycici/todoapp-flask
Referências Bibliográficas
Agile Testing: A Practical Guide for Testers and Agile Teamspor Brian Marick (Prólogo), Lisa Crispin (Autor), Janet Gregory (Autor)https://www.amazon.com.br/Agile-Testing-Practical-Guide-Testers/dp/0321534468
More Agile Testing: Learning Journeys for the Whole Teampor Janet Gregory (Autor), Lisa Crispin (Autor)https://www.amazon.com/More-Agile-Testing-Addison-Wesley-Signature/dp/0321967054
Entrega Contínua. Como Entregar Software de Forma Rápida e Confiávelpor Jez Humble (Autor)https://www.amazon.com.br/Entrega-Cont%C3%ADnua-Entregar-Software-Confi%C3%A1vel/dp/8582601034
The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Winpor Gene Kim (Autor), Kevin Behr (Autor), George Spafford (Autor)https://www.amazon.com.br/Phoenix-Project-DevOps-Helping-Business/dp/0988262592
Succeeding with Agile: Software Development Using ScrumPor Mike Cohn (Autor)https://www.amazon.com/Succeeding-Agile-Software-Development-Using/dp/0321579364
• 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/tag/e2e-testing/• https://robots.thoughtbot.com/how-to-stub-external-services-in-tests• http://www.devmedia.com.br/como-adotar-a-analise-estatica-de-codigo/32727• http://www.slideshare.net/samantacicilia/continuous-delivery-verso-estendida• http://www.slideshare.net/grupodetestescarioca
insideoutproject.com.br
Comunidades
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
About.me• QA @ Concrete Solutions• Owner @ RTS Treinamentos www.rtstreinamentos.com.br / testedesoftware.com
• Apaixonada por comunidades• Diversidade em TI
@samantacicilia Samanta Cicilia pt.slideshare.net/samantacicilia samycici@gmail.com/samantacicilia
Temos Vagas!http://www.concretesolutions.com.br/carreira/
www.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
Ajudamos empresas a criar produtos digitais de sucesso
top related