cnqs - testes automatizados & continuous delivery

57
Testes Automatizados & Continuous Delivery @samantacicilia

Upload: samanta-cicilia

Post on 12-Jan-2017

446 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: CNQS - Testes Automatizados & Continuous Delivery

Testes Automatizados & Continuous Delivery

@samantacicilia

Page 2: CNQS - Testes Automatizados & Continuous Delivery

Continuous DeliveryQuadrante de TestesPirâmide de TestesTestes AutomatizadosDemoConsiderações Finais

SUMÁRIO

Page 3: CNQS - Testes Automatizados & Continuous Delivery

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

Page 4: CNQS - Testes Automatizados & Continuous Delivery
Page 5: CNQS - Testes Automatizados & Continuous Delivery

de qualidadeEntregar software

Page 6: CNQS - Testes Automatizados & Continuous Delivery

time-to-marketAtendendo ao

Page 7: CNQS - Testes Automatizados & Continuous Delivery

um problemaResolvendo

do nosso cliente

Page 8: CNQS - Testes Automatizados & Continuous Delivery

horas extrasSem

o tempo todo

Page 9: CNQS - Testes Automatizados & Continuous Delivery

Build

Deploy

Test

Release CD

ProcessoContinuous Delivery

Page 10: CNQS - Testes Automatizados & 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 DeliveryObjetivos

Page 11: CNQS - Testes Automatizados & Continuous Delivery

Continuous DeliveryPrincipais conceitos

Controle de Versão

Integração Contínua

Testes Automatizados

Testes de Capacidade

Page 12: CNQS - Testes Automatizados & Continuous Delivery

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.

Page 13: CNQS - Testes Automatizados & Continuous Delivery
Page 14: CNQS - Testes Automatizados & Continuous Delivery
Page 15: CNQS - Testes Automatizados & Continuous Delivery

deploys Mais

Page 16: CNQS - Testes Automatizados & Continuous Delivery

de tempoCurto espaço

Page 17: CNQS - Testes Automatizados & Continuous Delivery

Mas como eu testo tudo em um curto espaço de tempo?“

Page 18: CNQS - Testes Automatizados & Continuous Delivery

• 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

Page 19: CNQS - Testes Automatizados & Continuous Delivery

Pirâmide de Testes“Ideal”

UI

Service

Unit

Manual

Mike Cohn

Page 20: CNQS - Testes Automatizados & Continuous Delivery

Anti Padrão”Sorvete”

Automated GUI Tests

Integration Tests

UnitTest

s

Manual Tests

• adaptação: watirmelon.com

Page 21: CNQS - Testes Automatizados & Continuous Delivery

Anti Padrão“Cupcake”

• adaptação: Fabio Pereira

Page 22: CNQS - Testes Automatizados & Continuous Delivery

Testes Automatizados

Feedback mais rápido

Testes distribuídos pelo pipeline

Garantia de regressão

Especificação executável do sistema

Page 23: CNQS - Testes Automatizados & Continuous Delivery

Foca na pirâmide“

Page 24: CNQS - Testes Automatizados & Continuous Delivery

Vamos para os testes automatizados!

Page 25: CNQS - Testes Automatizados & Continuous Delivery

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

Page 26: CNQS - Testes Automatizados & Continuous Delivery

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

Page 27: CNQS - Testes Automatizados & Continuous Delivery

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)

Page 28: CNQS - Testes Automatizados & Continuous Delivery

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/

Page 29: CNQS - Testes Automatizados & Continuous Delivery

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/

Page 30: CNQS - Testes Automatizados & Continuous Delivery

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!

Page 31: CNQS - Testes Automatizados & Continuous Delivery

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/

Page 32: CNQS - Testes Automatizados & Continuous Delivery

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

Page 33: CNQS - Testes Automatizados & Continuous Delivery

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

Page 34: CNQS - Testes Automatizados & Continuous Delivery

Testes de User

InterfaceLentos :(

Fluxos da aplicação

Diferentes browsers (IE, Firefox, Chrome, Safari & Headless)Mobile

Page 35: CNQS - Testes Automatizados & Continuous Delivery

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/

Page 36: CNQS - Testes Automatizados & Continuous Delivery

Testes de Capacidade

Carga

Stress

Ambiente de teste de capacidadeMétricas

Page 37: CNQS - Testes Automatizados & Continuous Delivery

Ferramentas de Testes de Capacidade

http://jmeter.apache.org/

http://grinder.sourceforge.net/

http://locust.io/

http://gatling.io/

Page 38: CNQS - Testes Automatizados & Continuous Delivery
Page 39: CNQS - Testes Automatizados & Continuous Delivery

Como fazer tudo isso funcionar em conjunto e ajudar na garantia de qualidade? “

Page 40: CNQS - Testes Automatizados & Continuous Delivery

Foca no pipeline“

Page 41: CNQS - Testes Automatizados & Continuous Delivery

pipelineDistribuir os testes no decorrer do

para ter feedback durante todo cicloe antecipar a descoberta de problemas

Page 42: CNQS - Testes Automatizados & Continuous Delivery

The deployment pipeline

Commit stage

CompileUnit testAnalysis

Build installers

Automatedacceptance

testing

AutomatedCapacity testing

Manual testing

ShowcasesExploratory

testing

Release

Page 43: CNQS - Testes Automatizados & Continuous Delivery

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/

Page 44: CNQS - Testes Automatizados & Continuous Delivery
Page 45: CNQS - Testes Automatizados & Continuous Delivery

Ruby

- Unitário (RSpec)- Mutação (mutant-rspec)

https://github.com/samycici/mutation_example

Page 46: CNQS - Testes Automatizados & Continuous Delivery

Python

- Unitário (unittest + fixtures) - Integração (unittest + sqlite) - API (pyresttest) - Funcional (selenium) - Performance (locust.io)

https://github.com/samycici/todoapp-flask

Page 47: CNQS - Testes Automatizados & Continuous Delivery

Referências Bibliográficas

Page 48: CNQS - Testes Automatizados & Continuous Delivery

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

Page 49: CNQS - Testes Automatizados & Continuous Delivery

• 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

Page 50: CNQS - Testes Automatizados & Continuous Delivery

insideoutproject.com.br

Page 51: CNQS - Testes Automatizados & Continuous Delivery

Comunidades

Page 52: CNQS - Testes Automatizados & Continuous Delivery

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

Page 53: CNQS - Testes Automatizados & Continuous Delivery
Page 54: CNQS - Testes Automatizados & Continuous Delivery
Page 55: CNQS - Testes Automatizados & Continuous Delivery

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 [email protected]/samantacicilia

Page 56: CNQS - Testes Automatizados & Continuous Delivery

Temos Vagas!http://www.concretesolutions.com.br/carreira/

Page 57: CNQS - Testes Automatizados & Continuous Delivery

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