View
2.172
Download
8
Category
Preview:
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.
Citation preview
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.”
Recommended