-
A) Não existe esta regra de mais linhas de código que a abordagem tradicional.
B) Não impede a utilização da programação em pares.
C) É compatível com refactoring. O teste é escrito antes da funcionalidade, mas à medida em que ela vai sendo testada, a mesma passa por melhorias na estrutura do código.
D) Correto! O teste inicialmente irá "quebrar", entretanto à medida que a estrutura vai sendo alterada, o código irá fazer exatamente aquilo que foi proposto a fazer, permitindo que a coesão seja mantida e o código esteja da forma mais simples.
E) Não existe regra para que o polimorfismo não seja testado.
Definição do Sommerville para TDD:
O desenvolvimento orientado a testes é uma abordagem para o desenvolvimento de programas em que se intercalam testes e desenvolvimento de código. Essencialmente, você desenvolve um código de forma incremental, em conjunto com um teste para esse incremento. Você não caminha para o próximo incremento até que o código desenvolvido passe no teste. O desenvolvimento dirigido a testes foi apresentado como parte dos métodos ágeis, como o Extreme Programming. No entanto, ele também pode ser usado em processos de desenvolvimento dirigido a planos.
Fonte: Sommerville, 9ª Edição, Capítulo 8.
Bons estudos!
-
Não concordo com a letra A.
apresenta como vantagem a leitura das regras de negócio a partir dos testes, e, como desvantagem, a necessidade de mais linhas de códigos que a abordagem tradicional, o que gera um código adicional.
A primeira parte está claramente correta. E a segunda parte pode ser considerada também verdade, pois considerando a implementação dos testes, se tem linhas de códigos adicionais sim.
Questão mal formuláda, à lá CESPE!
-
A letra D está claramente mais correta, mas a letra A não está inteiramente errada não.
A desvantangem é que invevitalvemente que faz teste automatizado acaba programando mais.
Mas enfim, a letra D está mais correta
-
Com relação à letra a:
apresenta como vantagem a leitura das regras de negócio a partir dos testes, e, como desvantagem, a necessidade de mais linhas de códigos que a abordagem tradicional, o que gera um código adicional.
Quando a opção fala em abordagem tradicional, acredito que ela esteja comparando com a abordagem de fazer os testes após a implementação(tradicional). Neste cenário, não é possível afirmar que fazer testes antes(TDD) irá gerar mais código do que fazer os mesmos testes depois. A questão não compara a abordagem de fazer testes com não fazer testes, como alguns colegas interpretaram.
Portanto, a letra A está errada.
-
Letra D
PORRA, a partir do excerto exposto pelo Silas Junior, podemos ver que a alternativa D está, digamos, errada..
Na minha visão e na visão dos principais autores que tenho estudado há uma diferença enorme entre TÉCNICAS DE PROGRAMAÇÃO e ABORDAGENS PARA DESENOLVIMENTO DE SOFTWARE. Logo se formos analisar, a LETRA D estaria errada por Afirmar que TDD é uma técnica de programação.
-
na minha experiencia pessoal (mais de 10 anos de desenvolvimento, com TDD e sem TDD). TDD força escrever menos código, código mais limpo e as refatorações frequentes reforçam essa limpeza. LOC (lines of code) é uma métrica interessante quado se faz manutenção. É como uma redação de concurso quanto menos você escrever, menor será a chance de encontrarem erros (gramática, ortografia, etc.). Claro que o objetivo deve ser cumprido, e se você consegui cumprir o objetivo com o menor programa possível, melhor.