Buscar

SLIDES - UNIDADE 04- TDD e Automação de Testes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 6 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 6 páginas

Prévia do material em texto

1
Test Driven Development (TDD) 
Priscila Souza
O que é TDD? 
O Test Driven Development ou Desenvolvimento Dirigido por 
Testes (TDD) foi criado por Kent Beck em 1999, o mesmo 
criador da metodologia eXtreme Programming.
“TDD é um conjunto de técnicas que qualquer engenheiro de 
software pode seguir, que encoraja projetos simples e 
conjuntos de testes que inspiram confiança." - Kent Beck
O que é TDD? 
“Código limpo que funciona” -
Ron Jeffries.
No TDD fazemos o processo 
inverso ao tradicional: 
Testamos e depois Codificamos 
e não Codificamos e Testamos.
Fonte: Shutterstock
O que é TDD? 
 É uma técnica para programadores 
(e não para testadores).
 Essa técnica é fortemente baseada 
em testes automatizados, que são 
escritos antes do código, 
influenciando e orientando o design 
e a divisão das responsabilidades 
entre as classes do sistema. 
Fonte: Shutterstock
TDD
É uma metodologia 
para o processo de 
desenvolvimento de 
software guiado por 
TESTES
PRIMEIRO são criados 
os TESTES, para 
POSTERIORMENTE 
escrever-se o CÓDIGO 
necessário para passar 
por eles
Histórico do TDD - Experimento
[Müller and Hagner ] conduziram um experimento estruturado 
comparando TDD com programação Tradicional.
Foram medidos:
 Eficiência do TDD em termos do time de 
desenvolvimento
 Qualidade do código resultante
 Nível de entendimento do mesmo
2
Experimento
O grupo que desenvolveu 
começar a implementação. 
O grupo que desenvolveu 
com TDD escreveu os 
casos de teste antes de 
começar a implementação. 
Já o grupo da Já o grupo da 
programação tradicional 
escreveu os testes depois 
de completar o código.
x
Fonte: Shutterstock Fonte: Shutterstock
Experimento - Conclusão
 O código produzido pelo grupo que usou TDD teve menos 
erros significantes quando reusado.
 Os pesquisadores perceberam que a abordagem TDD 
aumenta substancialmente a qualidade do software e 
proporciona um maior entendimento do código.
Como funciona o TDD? 
A ideia é bem simples: 
Escreva seus testes antes mesmo 
de escrever o código de 
produção.
Mas como testar algo que ainda 
não existe? 
Fonte: Shutterstock
Ciclo em passos pequenos
1- Escreva um teste que falhe: antes de começar a codificar e baseado na 
especificação do software, escreva um código de teste.
2- Faça o teste passar: escreva outro código limitando-se somente no que 
o código deve fazer. Codifique da forma mais simples possível para fazer o 
teste passar.
3- Refatore: depois que o teste passar verifique se o código pode ser 
melhorado. É neste momento que retiramos duplicidade, renomeamos 
variáveis, extraímos métodos, extraímos Classes, usamos algum padrão 
conhecido, etc. 
Mantra do TDD: Red – Green – Refactor
2- Escreva um 
teste que passe
1- Escreva um teste que falhe
3- Refatore o código
RED
REFACTOR GREEN
TDD
Fonte: Profa. Priscila Souza
Lei do TDD
 Primeira lei: você não deve escrever qualquer implementação
antes que você tenha escrito um teste que falhe;
 Segunda lei: você não deve escrever mais que um teste unitário
para demonstrar uma falha;
 Terceira lei: você não deve escrever mais do que o necessário
para passar por um teste que está falhando.
3
Por quê usar TDD?
“O desenvolvedor não irá 
demorar mais tempo para 
desenvolver um sistema se usar 
TDD?”
Fonte: Shutterstock
“ Quais são as vantagens
de se usar TDD ao invés de 
usar um ciclo tradicional
de desenvolvimento? 
Por quê usar TDD?
Fonte: Shutterstock
 “ Quanto maior for o tempo entre a inserção de um erro no 
código e sua descoberta pelo desenvolvedor maior será a 
probabilidade deste erro repetir-se em outros locais do 
sistema e menor a possibilidade de aprendizado. 
 Se o erro é descoberto alguns segundos após ser introduzido, 
são maiores as chances do desenvolvedor corrigí-lo 
rapidamente, aprender com isto e passar a codificar melhor.
Aprendizado
 O que torna a depuração muito
custosa é o tempo entre a 
inserção do bug e o momento
em que este é detectado. 
 Quanto maior o tempo, maior o 
custo de depuração!
Redução dos custos e vulnerabilidades do sistema
Fonte: Shutterstock
 O desenvolvimento dirigido por
testes segue o caminho da 
prevenção.
 O teste expõe o erro assim que ele
entra no sistema, o que evita
muita perda de tempo com 
depurações demoradas.
Redução dos custos e vulnerabilidades do sistema
Fonte: Shutterstock
 Mais tempo disponível e melhores
oportunidades de aprendizado, os
desenvolvedores codificam mais
rapidamente e com maior
qualidade.
 Aumenta-se a produtividade e 
reduz-se a incidência de defeitos.
Aumento da qualidade e produtividade
Fonte: Shutterstock
4
 Escrever um caso de teste 
completo força a criação de 
um código desacoplado, 
aumentando assim a sua
coesão e diminuindo seu
acoplamento.
Aprimoramento de projeto
Fonte: Shutterstock
 Um caso de teste de unidade
bem escrito proporciona uma
especificação de 
implementação e comunica a 
finalidade do código de forma 
clara. 
Documentação
Fonte: Shutterstock
Mudanças seguras no código
 O TDD fornece feedback contínuo
quanto ao resultado das 
mudanças do código em outras
partes do sistema.
 Código Nítido.
 Dentre outras vantagens. Fonte: Shutterstock
“TDD é a segunda coisa que um programador deve 
aprender. A primeira é o Hello World”. 
(Robert Martin)
Automação de Testes
Priscila Souza
Automação de Testes
“Automação de teste é o uso 
de software para controlar a 
execução do teste de software, 
a comparação dos resultados 
esperados com os resultados 
reais, a configuração das pré-
condições de teste e outras 
funções de controle e relatório 
de teste.” 
Fonte: Shutterstock
5
Automação de Testes
 O propósito da automação de testes pode ser resumidamente 
descrito como a aplicação de estratégias e ferramentas tendo 
em vista a redução do envolvimento humano em atividades 
manuais repetitivas.
 Porém, a automação de testes não deve ser empregada como 
um substituto de 100% do teste manual!
Automação de Testes - Conceitos
 Script de Teste: Arquivo que compõe os passos do caso de 
teste a serem executados sobre o sistema. 
 Gravador ou “Recorder”: Grava na forma de uma 
linguagem própria passos da execução dos testes manuais. 
 Executor de teste ou “Playback”: Recurso das ferramentas 
para reexecutar tudo o que foi gravado no script de teste. 
Razões para Automação de Testes
No livro Agile Testing, da Lisa Crispin e da Janet Gregory, são 
citadas as seguintes razões para realizar a automação de 
testes: 
 Teste manual é demorado; 
 Reduzir a probabilidade de erros das tarefas de teste; 
 Liberar tempo para fazer o trabalho da melhor forma; 
 Prover feedback cedo e frequente; 
Razões para Automação de Testes
 Prover uma rede de segurança;
 Os testes que direcionarão a 
codificação (TDD) podem fazer mais 
do que isso;
 Os testes provem documentação;
 ROI, com o passar do tempo o 
esforço gasto na automação dos 
testes se paga. 
Fonte: Shutterstock
Automação de Testes no Contexto Ágil
 A automação dos testes está entre as principais práticas ágeis, 
uma vez que as metodologias ágeis focam em entregas 
pequenas e curtas e que devem ter valor para o cliente. 
 É necessário poder executar os testes à vontade e de forma 
rápida para obter feedback a respeito da qualidade do código. 
 Escrever e executar os testes deve ser realizado junto com o 
sistema sendo desenvolvido.
Testes Manuais X Testes Automatizados
 TESTES MANUAIS
 Requerem grande esforço de criação e manutenção; 
Dependente da linguagem natural; Demorados para executar; 
Susceptível ao testador; Exige profissionais com experiência; 
Etc...
 CANDIDATOS A TESTES MANUAIS:
 Funcionalidades pouco usadas; Funcionalidades que exigem 
inspeção visual; Protótipos
6
Testes Manuais X Testes Automatizados
 TESTES AUTOMATIZADOS
 Alta reutilização; Exigem que cada ação seja programada; Não 
lidam com situações inesperadas; Não exploram situações 
diferentes; Rápidos; Repetíveis e consistentes; Exige 
profissionaiscapacitados; etc.
 CANDIDATOS À AUTOMATIZAÇÃO
 Testes de regressão; Testes de fumaça; Tarefas repetitivas; 
Cálculos matemáticos; Funcionalidades críticas; Etc.
Pirâmide de Automação de Testes
UI
Serviços
Unitário
MANUAL
Fonte: Profa. Priscila Souza
Principais dicas para Automação Automação de Testes
 A automação está longe de ser a bala de prata para o Teste de 
Software, mas pode trazer benefícios significativos para o 
projeto, quando utilizada adequadamente dentro do mesmo.
 Pode ser utilizada em qualquer metodologia e não demanda 
grande investimento financeiro, pois boa parte das ferramentas 
são gratuitas.

Continue navegando