Agile	
  testing:	
  
como	
  aumentar	
  a	
  
qualidade	
  do	
  produto
Vitor	
  Pelizza	
  
Co-­‐founder	
  @	
  Kanoah	
  Software
Vitor	
  Pelizza	
  
Co-­‐founder	
  @	
  Kanoah	
  Software
Ciências	
  da	
  Computação	
  -­‐	
  UFSC	
  
MBA	
  em	
  Gerenciamento	
  de	
  Projetos	
  -­‐	
  FGV	
  
Certified	
  ScrumMaster	
  (2008)
Base	
  do	
  bolo Recheio Cobertura
Cupcake Bolo	
  simples Bolo	
  de	
  casamento
Fonte: http://blog.intercom.io/start-with-a-cupcake/
Fonte: http://www.targetprocess.com/blog/2008/09/waterfall-got-you-down-with.html
Foco	
  na	
  atividade.	
  Fatia	
  horizontal
Foco	
  na	
  funcionalidade.	
  Fatia	
  vertical
Várias	
  funcionalidades	
  no	
  ciclo	
  de	
  produção
Poucas	
  funcionalidades	
  no	
  ciclo	
  de	
  produção
WaterfallAgile
Output
Output
Validar	
  se	
  o	
  que	
  foi	
  desenvolvido	
  
atende	
  aos	
  requisitos	
  e	
  corrigir	
  
desvios
Suporte	
  a	
  equipe	
  de	
  
desenvolvimento	
  e	
  ao	
  processo	
  de	
  
descoberta	
  através	
  do	
  feedback
E	
  na	
  prática?
TODO DOING TEST DONE
xUnit
TDD
Integração	
  contínua
Pair	
  programming
Revisão	
  de	
  código
Boa	
  base	
  tecnológica
Iterações	
  com	
  entregas	
  funcionando
Cobertura	
  de	
  testes
Suporte	
  a	
  equipe
Feedback
E	
  as	
  FEATURES	
  mais	
  importantes?	
  
Manual	
  ou	
  AUTOMATIZADO?	
  
Será	
  que	
  está	
  ok	
  para	
  o	
  CLIENTE?
Estratégia
Saber	
  COMO	
  testar
Saber	
  QUANDO	
  testar
Saber	
  O	
  QUE	
  testar
Saber	
  QUEM	
  testa
Agile	
  tester!!!
Abraça	
  a	
  MUDANÇA
Colabora	
  tanto	
  com	
  o	
  pessoal	
  
TÉCNICO	
  quando	
  de	
  NEGÓCIO
Entende	
  o	
  conceito	
  de	
  se	
  utilizar	
  
testes	
  para	
  documentar	
  REQUISITOS	
  
e	
  guiar	
  o	
  DESENVOLVIMENTO
O	
  que	
  é?
Macaquinho
Estagiário	
  de	
  outra	
  área	
  
profissional
Inexperiente
O	
  que	
  não	
  é?
Por	
  onde	
  começar?
Os	
  Quadrantes	
  do	
  
Teste	
  Ágil
Q1
Q2 Q3
Q4
Auxiliam	
  o	
  time
Criticam	
  o	
  produto
Tecnologia
Negócio
Testes	
  unitários
Testes	
  de	
  componentes
Testes	
  exploratórios
Testes	
  de	
  UX
Testes	
  A/B
Testes	
  de	
  Performance
Testes	
  de	
  Carga
Testes	
  de	
  Segurança
Automatizado
e Manual
Automatizado
Manual
Ferramentas
Testes	
  funcionais
Exemplos
Protótipos
Simulações
Q1
Auxiliam	
  o	
  time
Tecnologia
Testes	
  unitários
Testes	
  de	
  componentes
Automatizado
Qualidade	
  interna
DESENVOLVEDOR Design	
  do	
  código
Confiança	
  para	
  alterar
Feedback	
  contínuo	
  e	
  rápido
Deve	
  ser	
  considerado	
  
parte	
  do	
  
desenvolvimento
Integração	
  contínua
Q1
Auxiliam	
  o	
  time
Tecnologia
Testes	
  unitários
Testes	
  de	
  componentes
Automatizado
xUnit
Integração	
  Contínua
SCM
Q2
Auxiliam	
  o	
  time Negócio
Testes	
  funcionais
Exemplos
Protótipos
Simulações
Automatizado
e Manual
Confirmam	
  o	
  
comportamento	
  desejado
Qualidade	
  externa
Podem	
  ter	
  intersecção	
  
com	
  testes	
  baixo	
  nível
A	
  maioria	
  necessita	
  
automação:	
  cenário	
  
controlado
Regra	
  de	
  negócio	
  versus	
  UI
Feedback	
  razoável
Integração	
  contínua
DESENVOLVEDOR
AGILE	
  TESTER
Q2
Auxiliam	
  o	
  time Negócio
Testes	
  funcionais
Exemplos
Protótipos
Simulações
Automatizado
e Manual
Elicitar	
  requisitos	
  e	
  exemplos
Checklists	
  
Mapas	
  mentais	
  
Planilhas
Testes	
  "abaixo	
  da	
  UI"
Testes	
  através	
  da	
  UIDiagramas	
  de	
  fluxo	
  
Mock-­‐ups
Q3
Criticam	
  o	
  produto
Negócio Manual
Design	
  do	
  produto
Somente	
  pessoas	
  podem	
  fazê-­‐lo
Simulam	
  o	
  usuário	
  real	
  
Oportunidade	
  para	
  novas	
  ideias	
  e	
  melhorias	
  de	
  
user	
  stories
AGILE	
  TESTER
Testes	
  exploratórios
Testes	
  de	
  UX
Testes	
  A/B
Q4
Criticam	
  o	
  produto
Tecnologia
Testes	
  de	
  Performance
Testes	
  de	
  Carga
Testes	
  de	
  Segurança
Ferramentas
Testam	
  características	
  não	
  funcionais
Necessitam	
  de	
  ferramentas	
  
específicas
Guia	
  de	
  arquitetura	
  e	
  escolha	
  
de	
  tecnologias
Não	
  devem	
  ser	
  deixados	
  para	
  o	
  final	
  
pois	
  pode	
  ser	
  tarde	
  demais	
  para	
  
realizar	
  mudanças	
  necessárias
DESENVOLVEDOR
Q1
Q2 Q3
Q4
Auxiliam	
  o	
  time
Criticam	
  o	
  produto
Tecnologia
Negócio
Testes	
  unitários
Testes	
  de	
  componentes
Testes	
  de	
  Performance
Testes	
  de	
  Carga
Testes	
  de	
  Segurança
Automatizado
e Manual
Automatizado
Manual
Ferramentas
Testes	
  funcionais
Exemplos
Protótipos
Simulações
Testes	
  exploratórios
Testes	
  de	
  UX
Testes	
  A/B
Manual	
  
X	
  
Automatizado
Mike Cohn - http://martinfowler.com/bliki/TestPyramid.html
Volatilidade
Cobertura
Custo
Feedback
Negócio
Tecnologia
Dan North - https://speakerdeck.com/tastapod/accelerating-agile-testing
Determinístico
Aleatório
Automatizado
Manual
Testes	
  unitários
BDD
TDD
Scripts
Voláteis
Caros
Carga	
  /	
  Performance
Exploratórios
Usabilidade
Testes	
  A/B
Nebuloso
"God	
  data"
Caótico
Dan North - https://speakerdeck.com/tastapod/accelerating-agile-testing
Determinístico
Aleatório
Automatizado
Manual
Testes	
  unitários
BDD
TDD
Carga	
  /	
  Performance
Exploratórios
Usabilidade
Testes	
  A/B
Agile	
  Developer
Agile	
  Tester
Scripts
Voláteis
Caros
Nebuloso
"God	
  data"
Caótico
"Chato"
"Estranho"
COMO
QUANDO
O	
  QUE
QUEM
Product,	
  Release	
  e	
  Sprint
Roadmap	
  do	
  
produto
Release	
  1 Release	
  2 Release	
  3
Sprint	
  0 Sprint	
  1 Sprint	
  2
Risco,	
  impacto	
  e	
  custo
Plano	
  de	
  teste
Análise	
  de	
  risco	
  e	
  plano	
  de	
  mitigação
Ambiente	
  e	
  infraestrutura
Considera	
  marcos	
  e	
  entregas
Lightweight
Considera	
  diferentes	
  tipos	
  de	
  testes
Dados	
  necessários	
  para	
  os	
  testes
Resultados	
  esperados
COMO
QUANDO
O	
  QUE
QUEM
Ok.	
  Mas	
  eu	
  trabalho	
  com	
  
software	
  legado.	
  E	
  agora?
Estudo	
  de	
  Caso
Software	
  legado:	
  mais	
  
de	
  2	
  milhões	
  de	
  linhas	
  de	
  
código
Cobertura	
  de	
  testes	
  <	
  1%
Inúmeras	
  configurações	
  
específicas	
  por	
  cliente
Ciclo	
  manual	
  de	
  testes	
  
ad	
  hoc	
  na	
  release:	
  2	
  
semanas
Estratégia!!!
1)	
  Análise	
  de	
  riscos
Funcionalidade Risco Impacto
Frequência de
alteração
Prioridade
Consolidação de pagamentos Médio Alto Média 2
Recebimento de pagamentos Alto Alto Alta 1
Transferência de recursos Alto Baixo Baixa 3
Relatório de despesas Baixo Médio Alta 4
2)	
  Cobertura	
  do	
  sistema
Testers	
  da	
  equipe	
  do	
  produto	
  
escrevendo	
  casos	
  de	
  teste
Equipe	
  paralela	
  implementando	
  
testes	
  automatizados	
  de	
  UI
3)	
  Integração	
  contínua
4)	
  Visibilidade	
  e	
  feedback
• Consolidação de pagamentos
• CT1: bônus extra (passed)
• CT2: diferentes cargos (passed)
• CT3: ex-funcionários (fail)
• Stacktrace: …
• Screenshot: …
• Transferência de recursos:
• CT1: …
d)	
  Relatórios	
  customizados:
b)	
  Análise	
  do	
  Sonar
a)	
  Número	
  de	
  defeitos
c)	
  Percentual	
  de	
  cobertura
5)	
  Manutenção
A	
  equipe	
  do	
  produto	
  recebe	
  os	
  testes	
  
automatizados	
  rodando	
  na	
  integração	
  contínua	
  e	
  
passa	
  a	
  dar	
  suporte
Com	
  uma	
  rede	
  de	
  segurança	
  garantindo	
  o	
  
funcionamento	
  em	
  alto	
  nível,	
  ganha-­‐se	
  confiança	
  
para	
  realizar	
  refactorings	
  e	
  testes	
  baixo	
  nível
Finalizando…
Explore	
  as	
  diversas	
  técnicas	
  de	
  teste,	
  priorize	
  e	
  faça	
  uma	
  análise	
  
de	
  risco
Todos	
  tem	
  responsabilidade	
  pela	
  qualidade
Faça	
  o	
  planejamento	
  de	
  seus	
  testes	
  de	
  acordo	
  com	
  seu	
  cenário:	
  
como,	
  quando,	
  o	
  que	
  e	
  quem
O	
  testador	
  ágil	
  é	
  um	
  profissional	
  experiente	
  com	
  habilidades	
  de	
  
teste	
  específicas
Agile	
  Testing
Lisa	
  Crispin
Janet	
  Gregory
Working	
  
Effectively	
  with	
  
Legacy	
  Code
Michael	
  Feathers
Agile	
  Estimating	
  
and	
  Planning
Mike	
  Cohn
Obrigado!
vitor.pelizza@kanoah.com
twitter.com/kanoahinc
facebook.com/kanoahinc
linkedin.com/company/kanoah
(48) 3285 5615
www.kanoah.com

Testes ágeis

  • 1.
    Agile  testing:   como  aumentar  a   qualidade  do  produto
  • 2.
    Vitor  Pelizza   Co-­‐founder  @  Kanoah  Software
  • 3.
    Vitor  Pelizza   Co-­‐founder  @  Kanoah  Software Ciências  da  Computação  -­‐  UFSC   MBA  em  Gerenciamento  de  Projetos  -­‐  FGV   Certified  ScrumMaster  (2008)
  • 4.
    Base  do  boloRecheio Cobertura Cupcake Bolo  simples Bolo  de  casamento Fonte: http://blog.intercom.io/start-with-a-cupcake/
  • 5.
    Fonte: http://www.targetprocess.com/blog/2008/09/waterfall-got-you-down-with.html Foco  na  atividade.  Fatia  horizontal Foco  na  funcionalidade.  Fatia  vertical Várias  funcionalidades  no  ciclo  de  produção Poucas  funcionalidades  no  ciclo  de  produção WaterfallAgile Output Output
  • 6.
    Validar  se  o  que  foi  desenvolvido   atende  aos  requisitos  e  corrigir   desvios Suporte  a  equipe  de   desenvolvimento  e  ao  processo  de   descoberta  através  do  feedback
  • 8.
  • 11.
  • 12.
  • 13.
    Boa  base  tecnológica Iterações  com  entregas  funcionando Cobertura  de  testes Suporte  a  equipe Feedback
  • 15.
    E  as  FEATURES  mais  importantes?   Manual  ou  AUTOMATIZADO?   Será  que  está  ok  para  o  CLIENTE?
  • 16.
  • 17.
    Saber  COMO  testar Saber  QUANDO  testar Saber  O  QUE  testar Saber  QUEM  testa
  • 18.
  • 19.
    Abraça  a  MUDANÇA Colabora  tanto  com  o  pessoal   TÉCNICO  quando  de  NEGÓCIO Entende  o  conceito  de  se  utilizar   testes  para  documentar  REQUISITOS   e  guiar  o  DESENVOLVIMENTO O  que  é?
  • 20.
    Macaquinho Estagiário  de  outra  área   profissional Inexperiente O  que  não  é?
  • 21.
  • 22.
    Os  Quadrantes  do   Teste  Ágil
  • 23.
    Q1 Q2 Q3 Q4 Auxiliam  o  time Criticam  o  produto Tecnologia Negócio Testes  unitários Testes  de  componentes Testes  exploratórios Testes  de  UX Testes  A/B Testes  de  Performance Testes  de  Carga Testes  de  Segurança Automatizado e Manual Automatizado Manual Ferramentas Testes  funcionais Exemplos Protótipos Simulações
  • 24.
    Q1 Auxiliam  o  time Tecnologia Testes  unitários Testes  de  componentes Automatizado Qualidade  interna DESENVOLVEDOR Design  do  código Confiança  para  alterar Feedback  contínuo  e  rápido Deve  ser  considerado   parte  do   desenvolvimento Integração  contínua
  • 25.
    Q1 Auxiliam  o  time Tecnologia Testes  unitários Testes  de  componentes Automatizado xUnit Integração  Contínua SCM
  • 26.
    Q2 Auxiliam  o  timeNegócio Testes  funcionais Exemplos Protótipos Simulações Automatizado e Manual Confirmam  o   comportamento  desejado Qualidade  externa Podem  ter  intersecção   com  testes  baixo  nível A  maioria  necessita   automação:  cenário   controlado Regra  de  negócio  versus  UI Feedback  razoável Integração  contínua DESENVOLVEDOR AGILE  TESTER
  • 27.
    Q2 Auxiliam  o  timeNegócio Testes  funcionais Exemplos Protótipos Simulações Automatizado e Manual Elicitar  requisitos  e  exemplos Checklists   Mapas  mentais   Planilhas Testes  "abaixo  da  UI" Testes  através  da  UIDiagramas  de  fluxo   Mock-­‐ups
  • 28.
    Q3 Criticam  o  produto NegócioManual Design  do  produto Somente  pessoas  podem  fazê-­‐lo Simulam  o  usuário  real   Oportunidade  para  novas  ideias  e  melhorias  de   user  stories AGILE  TESTER Testes  exploratórios Testes  de  UX Testes  A/B
  • 29.
    Q4 Criticam  o  produto Tecnologia Testes  de  Performance Testes  de  Carga Testes  de  Segurança Ferramentas Testam  características  não  funcionais Necessitam  de  ferramentas   específicas Guia  de  arquitetura  e  escolha   de  tecnologias Não  devem  ser  deixados  para  o  final   pois  pode  ser  tarde  demais  para   realizar  mudanças  necessárias DESENVOLVEDOR
  • 30.
    Q1 Q2 Q3 Q4 Auxiliam  o  time Criticam  o  produto Tecnologia Negócio Testes  unitários Testes  de  componentes Testes  de  Performance Testes  de  Carga Testes  de  Segurança Automatizado e Manual Automatizado Manual Ferramentas Testes  funcionais Exemplos Protótipos Simulações Testes  exploratórios Testes  de  UX Testes  A/B
  • 31.
  • 32.
    Mike Cohn -http://martinfowler.com/bliki/TestPyramid.html Volatilidade Cobertura Custo Feedback Negócio Tecnologia
  • 33.
    Dan North -https://speakerdeck.com/tastapod/accelerating-agile-testing Determinístico Aleatório Automatizado Manual Testes  unitários BDD TDD Scripts Voláteis Caros Carga  /  Performance Exploratórios Usabilidade Testes  A/B Nebuloso "God  data" Caótico
  • 34.
    Dan North -https://speakerdeck.com/tastapod/accelerating-agile-testing Determinístico Aleatório Automatizado Manual Testes  unitários BDD TDD Carga  /  Performance Exploratórios Usabilidade Testes  A/B Agile  Developer Agile  Tester Scripts Voláteis Caros Nebuloso "God  data" Caótico "Chato" "Estranho"
  • 35.
  • 36.
    Product,  Release  e  Sprint Roadmap  do   produto Release  1 Release  2 Release  3 Sprint  0 Sprint  1 Sprint  2
  • 37.
  • 38.
    Plano  de  teste Análise  de  risco  e  plano  de  mitigação Ambiente  e  infraestrutura Considera  marcos  e  entregas Lightweight Considera  diferentes  tipos  de  testes Dados  necessários  para  os  testes Resultados  esperados
  • 39.
  • 40.
    Ok.  Mas  eu  trabalho  com   software  legado.  E  agora?
  • 41.
  • 42.
    Software  legado:  mais   de  2  milhões  de  linhas  de   código
  • 43.
  • 45.
  • 46.
    Ciclo  manual  de  testes   ad  hoc  na  release:  2   semanas
  • 48.
  • 49.
    1)  Análise  de  riscos Funcionalidade Risco Impacto Frequência de alteração Prioridade Consolidação de pagamentos Médio Alto Média 2 Recebimento de pagamentos Alto Alto Alta 1 Transferência de recursos Alto Baixo Baixa 3 Relatório de despesas Baixo Médio Alta 4
  • 50.
    2)  Cobertura  do  sistema Testers  da  equipe  do  produto   escrevendo  casos  de  teste Equipe  paralela  implementando   testes  automatizados  de  UI
  • 51.
  • 52.
    4)  Visibilidade  e  feedback • Consolidação de pagamentos • CT1: bônus extra (passed) • CT2: diferentes cargos (passed) • CT3: ex-funcionários (fail) • Stacktrace: … • Screenshot: … • Transferência de recursos: • CT1: … d)  Relatórios  customizados: b)  Análise  do  Sonar a)  Número  de  defeitos c)  Percentual  de  cobertura
  • 53.
    5)  Manutenção A  equipe  do  produto  recebe  os  testes   automatizados  rodando  na  integração  contínua  e   passa  a  dar  suporte Com  uma  rede  de  segurança  garantindo  o   funcionamento  em  alto  nível,  ganha-­‐se  confiança   para  realizar  refactorings  e  testes  baixo  nível
  • 54.
    Finalizando… Explore  as  diversas  técnicas  de  teste,  priorize  e  faça  uma  análise   de  risco Todos  tem  responsabilidade  pela  qualidade Faça  o  planejamento  de  seus  testes  de  acordo  com  seu  cenário:   como,  quando,  o  que  e  quem O  testador  ágil  é  um  profissional  experiente  com  habilidades  de   teste  específicas
  • 55.
  • 56.
    Working   Effectively  with   Legacy  Code Michael  Feathers
  • 57.
    Agile  Estimating   and  Planning Mike  Cohn
  • 59.