Desenvolvimento Ágil de Software com Qualidade Intrínseca

21
Processo de Desenvolvimento Ágil com Qualidade Intrínseca Teoria, Práticas e Ferramentas

description

This is a little presentation to make absolutely clear why test automation and test driven development are key to any software development process that strives for high quality and high productivity. Brazilian portuguese.

Transcript of Desenvolvimento Ágil de Software com Qualidade Intrínseca

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.”