SóProvas


ID
1823089
Banca
CESPE / CEBRASPE
Órgão
TRE-PI
Ano
2016
Provas
Disciplina
Engenharia de Software
Assuntos

O TDD (test driven development)

Alternativas
Comentários
  • 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.