cnqs - testes automatizados & continuous delivery

Post on 12-Jan-2017

446 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

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