1. (48) 4052-9536 / 9540
contato@qualister.com.br
• Terceirização de profissionais
• Consultoria de teste
• Avaliação de usabilidade
• Automação de testes
• Testes de performance
• Treinamentos
Palestra
Automação de testes de aceitação
com BDD (Behavior Driven
Development) e ATDD (Acceptance
Test Driven Development)
www.qualister.com.br
3. Instrutor
Cristiano Caetano
Email: cristiano.caetano@qualister.com.br
Apresentações: slideshare.net/cristianocaetano
Blog: cristianocaetano.wordpress.com
É certificado CBTS pela ALATS. Diretor técnico da Qualister com mais de 10 anos de experiência, já
trabalhou na área de qualidade e teste de software para grandes empresas como Zero G, DELL e HP Invent.
É colunista na área de Teste e Qualidade de software do site linhadecodigo.com.br e autor dos livros "CVS:
Controle de Versões e Desenvolvimento Colaborativo de Software" e "Automação e Gerenciamento de
Testes: Aumentando a Produtividade com as Principais Soluções Open Source e Gratuitas". Participante ativo
da comunidade de teste de software brasileira, é o criador e mantenedor do portal TestExpert: A sua
comunidade gratuita de teste e qualidade de software (www.testexpert.com.br).
www.qualister.com.br
7. Sobre a Qualister
• Fundação: 2007.
• Sobre a Qualister: A Qualister é uma empresa nacional, constituída a partir da união
de profissionais qualificados e certificados na área de testes e qualidade de
software, com o objetivo de integrar, implementar e implantar soluções com base nas
melhores práticas do mercado e normas internacionais.
• Colaboradores: A Qualister é composta por colaboradores pós-graduados e
certificados na área de testes (CBTS, CSTE) com larga experiência na indústria de
Tecnologia da Informação.
• Área de atuação: A Qualister é uma empresa especializada em serviços de
qualidade e teste de software. Tem como linhas de atuação consultoria em
teste/qualidade de software, outsourcing (terceirização dos serviços através da
alocação de profissionais) e treinamentos.
• Localização: A Qualister está localizada em Biguaçu na Grande Florianópolis/SC e
está instalada no CITEB – Centro de Inovação Tecnologia de Biguaçu no campus da
universidade UNIVALI.
www.qualister.com.br
8. Parcerias internacionais
Soluções para automação, profilling e gestão
Soluções para testes de performance
Soluções de apoio a avaliação de usabilidade
www.qualister.com.br
9. Tópico
Testes unitários e TDD
(Desenvolvimento
dirigido por testes)
www.qualister.com.br
10. Testes unitários
Classe Setup
Mocks/Stubs Exercise
Método(a, b, c): d
Verify
Teardown
http://xunitpatterns.com/Four%20Phase%20Test.html
www.qualister.com.br
12. Test Driven Development (Desenvolvimento dirigido por testes)
• Test Driven Development é uma prática de desenvolvimento de
software em que os testes unitários automatizados são escritos antes do
código.
www.qualister.com.br
13. Tópico
BDD (Desenvolvimento
dirigido por
comportamento)
www.qualister.com.br
14. Behavior Driven Development (Desenvolvimento dirigido por comportamento)
• Dan North, criador do BDD (Desenvolvimento dirigido por
comportamento) percebeu que os testes deveriam ser descritos em
sentenças/frases representando o comportamento esperado pelo
sistema ao invés de nomes de métodos
Testes descritos em nomes de métodos
TestComprarPassagemPromocionalSomenteIdaParaUmAdultoVooDisponivel
TestComprarPassagemPromocionalIdaEVoltaParaUmAdultoVooDisponivel
TestComprarPassagemFlexSomenteIdaParaUmAdultoVooDisponivel
www.qualister.com.br
15. Behavior Driven Development (Desenvolvimento dirigido por comportamento)
Estória: Compra de passagem via WEB
Como um (As a)
Profissional da área de testes
Eu quero (I want to)
Ir de avião para Florianópolis
Para que (So that)
Eu possa participar de um evento sobre testes
Teste de aceitação: Comprar passagem com sucesso
Dado que (Given)
Existem voos disponíveis para o trecho POA/FLN
Existem assentos disponíveis nos voos
Quando (When)
Eu escolho a origem igual a Porto Alegre
Eu escolho o destino igual a Florianópolis
(...)
Então (Then)
A compra é realizada com sucesso
O assento escolhido é reservado
www.qualister.com.br
16. Behavior Driven Development (Desenvolvimento dirigido por comportamento)
• Como transformar os
testes escritos em
linguagem natural em
testes/especificação
automatizados?
www.qualister.com.br
17. Behavior Driven Development (Desenvolvimento dirigido por comportamento)
• No BDD, os testes de aceitação são descritos em
linguagens naturais próximas do domínio do negócio
usando DSL´s.
– DSL (Domain Specific Language) – Linguagens
específicas de um domínio.
• Exemplo em terminologia náutica:
– Proa = extremidade frontal do navio
– Popa = extremidade posterior do navio
– Bombordo = lado esquerdo do navio
– Estibordo = lado direito do navio
www.qualister.com.br
18. Behavior Driven Development (Desenvolvimento dirigido por comportamento)
• SQL (Structured Query Language) é um exemplo clássico de DSL:
– SELECT * FROM clientes WHERE codigo < 100
– UPDATE clientes SET id = 51 WHERE nome = „José da Silva‟
– SELECT * FROM clientes WHERE nome LIKE „%José%'
www.qualister.com.br
19. Behavior Driven Development (Desenvolvimento dirigido por comportamento)
• Para testes de aceitação usamos DSTL (Domain Specific Test
Language) – Linguagens específicas de teste de um domínio.
www.qualister.com.br
20. Behavior Driven Development (Desenvolvimento dirigido por comportamento)
• Para testes de aceitação usamos DSTL (Domain Specific Test
Language) – Linguagens específicas de teste de um domínio.
www.qualister.com.br
21. Behavior Driven Development (Desenvolvimento dirigido por comportamento)
• Os testes descritos em linguagem natural são interpretados por ferramentas
especializadas que, por sua vez, exercitam o código/API do sistema para
demonstrar se o comportamento foi atendido.
Código
API
Interface
gráfica
Codigo de suporte
Testes de aceitação “fixture” que
em linguagem encapsula a
natural na filosofia implementação da
Etc...
BDD ação descrita em
linguagem natural
www.qualister.com.br
22. Behavior Driven Development (Desenvolvimento dirigido por comportamento)
2
Codigo de suporte
“fixture” que
encapsula a
implementação da
ação descrita em
linguagem natural
1
Testes de aceitação
em linguagem
natural na filosofia
BDD
3
Código/API do sistema
sendo exercitado para
validar um comportamento
www.qualister.com.br
23. Behavior Driven Development (Desenvolvimento dirigido por comportamento)
• Existem dezenas de ferramentas que implementam a filosofia BDD no
nível da unidade/código
http://en.wikipedia.org/wiki/Behavior_Driven_Development
http://blog.dannorth.net/introducing-bdd/
www.qualister.com.br
24. Behavior Driven Development (Desenvolvimento dirigido por comportamento)
http://cukes.info/
www.qualister.com.br
25. Behavior Driven Development (Desenvolvimento dirigido por comportamento)
http://www.concordion.org/
www.qualister.com.br
26. Behavior Driven Development (Desenvolvimento dirigido por comportamento)
www.qualister.com.br
http://jbehave.org/
27. Behavior Driven Development (Desenvolvimento dirigido por comportamento)
http://storyq.codeplex.com/
www.qualister.com.br
28. Behavior Driven Development (Desenvolvimento dirigido por comportamento)
http://www.thoughtworks-studios.com/agile-test-automation/features-benefits
www.qualister.com.br
30. Acceptance Test Driven Development (Desenvolvimento dirigido por testes de aceitação)
• O ATDD é uma abordagem ágil de desenvolvimento onde a
construção do software é guiada pelos testes de aceitação.
• Nesta técnica, os testes de aceitação são criados de maneira
colaborativa e descritos em uma linguagem comum a todos os
membros da equipe. Dessa forma, toda a equipe compartilha o
mesmo entendimento do que deve ser feito, as restrições e as
definições de "Pronto".
• Os testes são descritos em uma linguagem natural similar a
linguagem do negócio e deve ser facilmente entendida pelo cliente.
• Os testes (critérios de aceitação) devem ser executáveis
www.qualister.com.br
31. Acceptance Test Driven Development (Desenvolvimento dirigido por testes de aceitação)
• Etapas do ATDD:
– Discutir (Discuss)
– Refinar (Distill)
– Desenvolver (Develop)
www.qualister.com.br
32. Acceptance Test Driven Development (Desenvolvimento dirigido por testes de aceitação)
– Discutir (Discuss)
• Discutir colaborativamente com a equipe as restrições, assunções,
premissas, expectativas, etc para definir os critérios de aceitação
E se não houver
assentos
disponíveis no
voo?
Devemos exibir
uma mensagem
de alerta para o
usuário?
Como vamos
validar os
mecanismos de
segurança?
www.qualister.com.br
33. Acceptance Test Driven Development (Desenvolvimento dirigido por testes de aceitação)
– Refinar (Distill)
• Refinar os critérios de aceitação em um conjunto concreto de
cenários/exemplos de uso descrevendo o comportamento esperado da
aplicação em uma linguagem comum a todos os membros da equipe
Teste de aceitação: Comprar passagem com sucesso
Dado que (Given)
Existem voos disponíveis para o trecho POA/FLN
Existem assentos disponíveis nos voos
Quando (When)
Eu escolho a origem igual a Porto Alegre
Eu escolho o destino igual a Florianópolis
(...)
Então (Then)
A compra é realizada com sucesso
O assento escolhido é reservado
www.qualister.com.br
34. Acceptance Test Driven Development (Desenvolvimento dirigido por testes de aceitação)
– Desenvolver (Develop)
• Transformar os testes de aceitação (descrevendo o comportamento
esperado do software) em testes/especificação automatizados
Testes de aceitação
em linguagem
natural na filosofia
BDD
Testes
automatizados
www.qualister.com.br
35. Principais vantagens
Cenários de
uso
Exemplos
Expectativas
de uso
Assunções Limitações
Linguagem Ubíqua
Premissas Restrições
www.qualister.com.br
37. Principais vantagens
• Testes de aceitação automatizados são usados como medida de progresso e
indicador dos níveis de qualidade
Funcionalidade
www.qualister.com.br
39. Acceptance Test Driven Development (Desenvolvimento dirigido por testes de aceitação)
• O problema
– Sistema desenvolvido em tecnologia legada
– Falta de arquitetura (OO, Frameworks, etc)
– Equipe de testes sem experiência em programação
• A solução proposta
– Testes na filosofia BDD/ATDD
– Criação de um Framework de testes sob medida para permitir a criação
de testes BDD/ATDD em um sistema com tecnologia legada
www.qualister.com.br
40. Acceptance Test Driven Development (Desenvolvimento dirigido por testes de aceitação)
• Ferramentas de desenvolvimento dirigido por testes normalmente executam testes de comportamento no nível da
unidade/código.
• Para que os testes escritos em linguagem natural possam ser executados, é necessário que os programadores
codifiquem “fixtures”, ou seja, o código de suporte que implementa nos métodos das classes do software as ações
descritas em linguagem natural.
Código
API
Interface
gráfica
Codigo de suporte
Testes de aceitação
“fixture” que
em linguagem
natural na filosofia
implementa a ação Etc...
descrita em
BDD
linguagem natural
www.qualister.com.br
41. Acceptance Test Driven Development (Desenvolvimento dirigido por testes de aceitação)
• Ferramentas de desenvolvimento dirigido por testes normalmente executam testes de comportamento no nível da
unidade/código.
• Para que os testes escritos em linguagem natural possam ser executados, é necessário que os programadores
codifiquem “fixtures”, ou seja, o código de suporte que implementa nos métodos das classes do software as ações
descritas em linguagem natural.
Código
API
Sistemas
Interface
Testes de aceitação
Legados gráfica
Codigo de suporte
“fixture” que
em linguagem
natural na filosofia
implementa a ação Etc...
descrita em
BDD
linguagem natural
www.qualister.com.br
42. Acceptance Test Driven Development (Desenvolvimento dirigido por testes de aceitação)
Testes de aceitação
em linguagem Interface gráfica do
natural na filosofia sistema
BDD
www.qualister.com.br
43. Acceptance Test Driven Development (Desenvolvimento dirigido por testes de aceitação)
Framework
BDD
Framework BDD que Localiza
Testes de aceitação utiliza o TestComplete dinamicamente os
em linguagem como meio para objetos da Interface
natural na filosofia interagir com a gráfica do sistema e
BDD Interface Gráfica do executa ações e valida
sistema os resultados
esperados
www.qualister.com.br
44. Acceptance Test Driven Development (Desenvolvimento dirigido por testes de aceitação)
• O Framework ATDD foi desenvolvido em VBScript usando orientação a objetos.
• É possível usar o Framework ATDD para testar outras plataformas (.NET, WEB, Delphi, etc) com
pequenos ajustes.
• O Framework ATDD encapsula toda a complexidade da automação. O usuário/testador/
programador/etc escreve os testes apenas usando a DSTL (Domain Specific Test Language).
www.qualister.com.br
45. Acceptance Test Driven Development (Desenvolvimento dirigido por testes de aceitação)
• Foi embutida no Framework uma DSTL (Domain Specific Test Language) –
Linguagens específicas de teste de um domínio com foco em ações
imperativas de interação com a interface gráfica. Abaixo alguns exemplos:
No processo "NomeDoProcesso"
Na janela "NomeDaJanela"
Eu vejo o texto "Texto" no rótulo "NomeDoRotulo"
Eu clico na caixa de verificação "NomeDaCaixaDeVerificação"
Eu escolho a opção "Opção" na caixa de seleção "NomeDaCaixaDeSeleção"
Eu digito "Texto" na caixa de seleção "NomeDaCaixaDeSeleção"
Eu clico no menu "Menu"
Eu vejo o texto "Texto" no campo "NomeDoCampo"
Eu preencho "Texto" no campo "NomeDoCampo"
Eu clico no botao "NomeDoBotão"
Eu executo a consulta sql "ExpressãoSQL" e vejo o resultado "Resultado" no campo "Campo"
Eu armazeno o valor do objeto "NomeDoObjeto" na variavel "NomeDaVariavel"
www.qualister.com.br
46. Acceptance Test Driven Development (Desenvolvimento dirigido por testes de aceitação)
• Os testes de aceitação são organizados em pastas de acordo com os
grupos de testes similares (suítes ou roteiros de testes)
www.qualister.com.br
47. Acceptance Test Driven Development (Desenvolvimento dirigido por testes de aceitação)
• Os testes de aceitação são escritos em formato texto puro.
www.qualister.com.br
48. Acceptance Test Driven Development (Desenvolvimento dirigido por testes de aceitação)
www.qualister.com.br
49. Acceptance Test Driven Development (Desenvolvimento dirigido por testes de aceitação)
www.qualister.com.br
50. Acceptance Test Driven Development (Desenvolvimento dirigido por testes de aceitação)
www.qualister.com.br
51. Acceptance Test Driven Development (Desenvolvimento dirigido por testes de aceitação)
• No TestComplete os testes são organizados e executados em suítes ou em
regressões completas conforme a necessidade do testador/usuário.
www.qualister.com.br
52. Acceptance Test Driven Development (Desenvolvimento dirigido por testes de aceitação)
• Relatórios de execução são gerados automaticamente pelo TestComplete
www.qualister.com.br