TEMA 03 Flashcards

1
Q

O que é o desenvolvimento orientado a testes (TDD)?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

O que propõe o Test-Driven Development(TDD)?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Quais são as características do Test-Driven Development (TDD)?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Quais são as vantagens do TDD?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Quais são as desvantagens do TDD?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly