Desenvolvimento Ágil de Software com Qualidade Intrínseca

Post on 29-Nov-2014

2.171 views 8 download

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

Processo de Desenvolvimento Ágil

com Qualidade Intrínseca

Teoria, Práticas e Ferramentas

Processo TípicoDesenvolvimento-Teste Segregado

Desenvolvimen

to

Testes

Desenvolvimen

to

Testes

Bug Introduzido

Bug Detectado

Bug Corrigido

Bug Verificado

Ágil?

1 mês

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

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

EscrevendoAutomatizandoExecutandoAnalisando

Testes, testes, testes...

Tradicional

EscrevendoAutomatizandoExecutandoAnalisando

Intrínseca

Onde está o trabalho doanalista de qualidade?

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

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

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

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

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

Linguagem de Histórias e Cenários

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

Linguagem de Histórias

• Para que ...

• Eu, como ...

• Quero ...

Linguagem de Histórias

• Para que ... VALOR

• Eu, como ... PAPEL

• Quero ... FUNCIONALIDADE

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

Linguagem de Cenários

• Dado que ...– E ...

• Quando ...– E ...

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

Linguagem de Cenários

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

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

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

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

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

Automação de Cenários com Cucumber

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

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) }

}

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