Testes Automatizados &
Continuous Delivery
@samantacicilia
Continuous Delivery
Quadrante de Testes
Pirâmide de Testes
Testes Automatizados
Demo
Consideraçõ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 qualidade
Entregar software
time-to-market
Atendendo ao
um problema
Resolvendo
do nosso cliente
horas extras
Sem
o tempo todo
Build
Deploy
Test
Release CD
Processo
Continuous 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 Delivery
Objetivos
Continuous Delivery
Principais 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 tempo
Curto espaço
Mas como eu testo tudo em
um curto espaço de tempo?“
• Lisa Crispin, Brian Marick
SupportingtheTeam
Business Facing
Quadrante de Testes Ágeis
Technology Facing
CritiqueProduct
Q1 Q4
Q2 Q3
Unit Tests
Component Tests
Performance & Load Testing
Security Testing
”Ility” Testing
Exploratory Testing
Scenarios
Usability Testing
UAT (User Acceptance Testing)
Alpha / Beta
Functional Tests
Examples
Story Tests
Prototypes
Simulations
Automated Tools
ManualAutomates & Manual
Pirâmide de Testes
“Ideal”
UI
Service
Unit
Manual
Mike Cohn
Anti Padrão
”Sorvete”
Automated GUI Tests
Integration
Tests
Unit
Tests
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ários
Feedback 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ática
Porcentagem 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ários
Se 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ço
Depois dos Testes de Unidade
e antes dos Testes de UI
Testar 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 Interface
Lentos :(
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 capacidade
Mé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
“
pipeline
Distribuir os testes no
decorrer do
para ter feedback durante todo ciclo
e antecipar a descoberta de problemas
The deployment pipeline
Commit stage
Compile
Unit test
Analysis
Build installers
Automated
acceptance
testing
Automated
Capacity testing
Manual testing
Showcases
Exploratory
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 Teams
por 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 Team
por 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ável
por 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 Win
por 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 Scrum
Por 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. 2121
Centro – (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

CNQS - Testes Automatizados & Continuous Delivery