TEMA 03 Flashcards
O que é o desenvolvimento orientado a testes (TDD)?
O TDD é uma prática de desenvolvimento de software que foi criada com o objetivo de garantir a
qualidade do código produzido, permitindo que os desenvolvedores escrevam testes antes mesmo
de escreverem o código em si.
Nos anos 1990, Kent Beck regulamentou e difundiu o Test-Driven Development (TDD) como uma
prática, participante da metodologia Extreme Programming (XP), que tem por objetivo escrever um
teste, falhar propositalmente, escrever o código para passar no teste e refatorar o código.
Essa prática popularizou-se por minimizar os bugs e assegurar a qualidade do código.
Atualmente, o TDD é frequentemente utilizado com outras práticas ágeis, com o objetivo de
intensificar o ciclo de desenvolvimento e elevar a qualidade do software.
O método de programação em pares (pair programming),
auxiliou no desenvolvimento do conceito de TDD. A qualidade do software aumenta e o tempo de
desenvolvimento reduz quando dois programadores trabalham em conjunto no mesmo código.
O que propõe o Test-Driven Development(TDD)?
O Test-Driven Development (TDD) propõe que, mesmo antes de implementar o código de cada
funcionalidade, devem ser escritos os testes automatizados, e o desenvolvedor fará a verificação do
software por meio dos testes.
O TDD é uma técnica de programação que ajuda a melhorar a qualidade do software, reduzindo o
número de defeitos e facilitando a manutenção do código. Ao escrever testes antes de escrever o
próprio código, o desenvolvedor consegue validar continuamente se o software está funcionando
corretamente e se comportando conforme o esperado. Isso resulta em um código mais seguro,
confiável e fácil de manter.
Quais são as características do Test-Driven Development (TDD)?
Algumas das principais características do Test-Driven Development (TDD) são:
foco em testes – a escrita dos testes automatizados, primeira etapa do desenvolvimento do
software, auxilia na especificação das funcionalidades do projeto e certifica que está
funcionando adequadamente;
desenvolvimento iterativo – os testes automatizados de cada funcionalidade são escritos e
realizados em iterações curtas que garantem a identificação e correções dos erros encontrados
com mais celeridade;
código mais seguro – as funcionalidades são minuciosamente testadas antes de serem
liberadas;
refatoração constante – a frequente refatoração do código garante um código limpo e de fácil
manutenção; essa prática contribui para o aprimoramento progressivo da qualidade do código;
equipe mais produtiva – os erros são identificados precocemente, o que garante a qualidade do
código desenvolvido e reduz o tempo gasto no desenvolvimento das funcionalidades.
Quais são as vantagens do TDD?
Redução do número de defeitos: com essa prática, o programador pode validar
constantemente se o funcionamento do software está de acordo com o esperado e, com isso,
reduzir erros.
Melhoria na qualidade do código: induz o programador a escrever um código em módulos e a
tratar os testes como parte do desenvolvimento.
Facilidade em detectar regressões: a criação de testes de unidade para cada uma das
funcionalidades permite detectar mais facilmente quando uma funcionalidade, que antes
funcionava normalmente, para de funcionar.
Maior confiança no software: com uma cobertura de testes abrangente, os erros são mais
facilmente detectados e, com isso, sua manutenção é mais simples.
Quais são as desvantagens do TDD?
O TDD pode levar a uma ênfase excessiva na cobertura de
teste e a testes mal escritos, que não detectam erros críticos. Além disso, pode ser demorado e
aumentar o custo do desenvolvimento.
Algumas desvantagens da utilização do TDD:
Possível aumento no tempo de desenvolvimento: cada uma das funcionalidades demanda a
criação de testes automatizados, podendo aumentar o tempo de desenvolvimento.
Possível aumento da complexidade do código: a criação de testes para as funcionalidades
pode tornar o código complexo, devido às validações.
Pode requerer maior habilidade do desenvolvedor: a habilidade em escrever os testes
automatizados pode ser um obstáculo para programadores com menos experiência.