Download - Desenvolvimento Ágil de Software com Qualidade Intrínseca

Transcript
Page 1: Desenvolvimento Ágil de Software com Qualidade Intrínseca

Processo de Desenvolvimento Ágil

com Qualidade Intrínseca

Teoria, Práticas e Ferramentas

Page 2: Desenvolvimento Ágil de Software com Qualidade Intrínseca

Processo TípicoDesenvolvimento-Teste Segregado

Desenvolvimen

to

Testes

Desenvolvimen

to

Testes

Bug Introduzido

Bug Detectado

Bug Corrigido

Bug Verificado

Ágil?

1 mês

Page 3: Desenvolvimento Ágil de Software com Qualidade Intrínseca

Processo “Pull”

Visão

Valor

Funcionalidades

HistóriasCenários e Critérios de Aceitação

Código

Clientes e Usuários

Analista de Negócio

Analista deQualidade

Desenvolvedor

Analista deSuporte

Page 4: Desenvolvimento Ágil de Software com Qualidade Intrínseca

Como?• Competências

– Linguagem de Histórias e Cenários– Automação de Cenários– Desenvolvimento de Software

• Práticas– AATDD – Automated Acceptance Test Driven-Development– BDD & TDD – Behaviour & Test Driven-Development

• Ferramentas– RFT– Selenium– Watir– Jemmy– Cucumber– Twist– Junit– Java– Ruby– ...

Page 5: Desenvolvimento Ágil de Software com Qualidade Intrínseca

EscrevendoAutomatizandoExecutandoAnalisando

Testes, testes, testes...

Tradicional

EscrevendoAutomatizandoExecutandoAnalisando

Intrínseca

Onde está o trabalho doanalista de qualidade?

Page 6: Desenvolvimento Ágil de Software com Qualidade Intrínseca

Meta: eliminar o trabalho de execução de testes

Teste manual é um imposto caro pago a cada ciclo de desenvolvimento

Page 7: Desenvolvimento Ágil de Software com Qualidade Intrínseca

Qualidade Tradicional x Ágil

Tradicional• Manual• Desmotivante• Lenta• Falha• Baixa competência• Baixo valor agregado• Reativa• Defensiva• Segregada

Intrínseca• Automatizada• Divertida• Rápida• Sistemática, abrangente• Alta competência• Alto valor agregado• Proativa• Direcionadora• Integrada

Page 8: Desenvolvimento Ágil de Software com Qualidade Intrínseca

Próximo Nível de Qualidade

Qualidade por Inspeção(Manual)

Qualidade Intrínseca

(Automatizada)

Automação de TestesLinguagem de Cenários

DesenvolvedorA. de Testes

A. de Negócios

Page 9: Desenvolvimento Ágil de Software com Qualidade Intrínseca

5 razões para amar testes ágeis

1. Sempre existe tempo para testes, pois os testes são a primeira coisa que é feita

2. Chega de testes manuais3. Os resultados dos testes aparecem várias

vezes por dia4. O clima é de “time jogando junto”5. O testador pode consertar bugs

Page 10: Desenvolvimento Ágil de Software com Qualidade Intrínseca

Linguagem de Histórias e Cenários

http://dannorth.net/whats-in-a-story

Page 11: Desenvolvimento Ágil de Software com Qualidade Intrínseca

Linguagem de Histórias

• Para que ...

• Eu, como ...

• Quero ...

Page 12: Desenvolvimento Ágil de Software com Qualidade Intrínseca

Linguagem de Histórias

• Para que ... VALOR

• Eu, como ... PAPEL

• Quero ... FUNCIONALIDADE

Page 13: Desenvolvimento Ágil de Software com Qualidade Intrínseca

Linguagem de Histórias

• Para que se possa decidir sobre ações numa emergência

• Eu, como gerente de recursos materiais,

• Quero consultar que materiais de um determinado tipo estão disponíveis para potencial uso na resposta a emergência

Page 14: Desenvolvimento Ágil de Software com Qualidade Intrínseca

Linguagem de Cenários

• Dado que ...– E ...

• Quando ...– E ...

• Então ...– E ...

Page 15: Desenvolvimento Ágil de Software com Qualidade Intrínseca

Linguagem de Cenários

• Dado que ... CONTEXTO / PRÉ-CONDIÇÕES– E ...

• Quando ... EVENTO / ENTRADA– E ...

• Então ... EXPECTATIVA / SAÍDA– E ...

Page 16: Desenvolvimento Ágil de Software com Qualidade Intrínseca

Linguagem de Cenários

• Dado que estou acompanhando uma emergência em andamento na fábrica

• Quando eu entrar no módulo de Consultas– E clicar em “Recursos Materiais” na árvore de classes– E buscar por tipo “Barreiras”

• Então eu devo ver uma lista de objetos do tipo “Barreiras”– E eu devo ver a quantidade disponível de cada recurso para

minha unidade– E eu devo ver a distância de cada recurso para minha unidade– E eu devo ver o status de expiração para cada recurso– E eu devo ver um link “Solicitar” para cada recurso

Page 17: Desenvolvimento Ágil de Software com Qualidade Intrínseca

Automação de Cenários• Dado que estou acompanhando uma emergência em

andamento na fábrica

• Quando eu entrar no módulo de Consultas– E clicar em “Recursos Materiais” na árvore de classes– E buscar por tipo “Barreiras”

• Então eu devo ver uma lista de objetos do tipo “Barreiras”– E eu devo ver a quantidade disponível de cada recurso para

minha unidade– E eu devo ver a distância de cada recurso para minha unidade– E eu devo ver o status de expiração para cada recurso– E eu devo ver um link “Solicitar” para cada recurso

Código executável

Código executável

Código executável

Page 18: Desenvolvimento Ágil de Software com Qualidade Intrínseca

Automação de Cenários com Cucumber

Page 19: Desenvolvimento Ágil de Software com Qualidade Intrínseca

Automação de Cenários com Cucumber

When /clicar em “(.*)” na árvore de classes/ do |classe|arvore = browser.current_page.arvore_de_classesarvore.click(classe)

end

Then /eu devo ver uma lista de objetos do tipo “(.*)”/ do |tipo|pagina = browser.current_pageassert_true(pagina.contains_text?(“Resultado”))assert_true(pagina.contains_text?(“ encontrados”))assert_true(pagina.contains_text?(tipo))

end

Page 20: Desenvolvimento Ágil de Software com Qualidade Intrínseca

Automação de Cenários com Cucumber-Java

public class ArvoreSteps {

@When(“clicar em \“(.*)\” na árvore de classes”) public void clicarEmClasse(String classe) { arvore = new ArvoreClasses(browser().getCurrentPage())

arvore.click(classe) }

}

Page 21: Desenvolvimento Ágil de Software com Qualidade Intrínseca

THE END

Moral da história: “Teste de regressão manual é uma

prática totalmente inviável e inaceitável.””Use os testes de aceitação automatizados

para direcionar o desenvolvimento.”