SóProvas


ID
2846317
Banca
FCC
Órgão
SEFAZ-SC
Ano
2018
Provas
Disciplina
Engenharia de Software
Assuntos

O Test-Driven Development (TDD) é uma abordagem para o desenvolvimento de programas em que se intercalam testes e desenvolvimento de código. As etapas do processo fundamental de TDD são mostradas abaixo em ordem alfabética:


I. Escrever um teste para a funcionalidade identificada e implementá-lo como um teste automatizado.

II. Executar o teste, junto com os demais testes já implementados, sem implementar a nova funcionalidade no código.

III. Identificar e implementar uma outra funcionalidade, após todos os testes serem executados com sucesso.

IV. Identificar uma nova funcionalidade pequena para ser incrementada com poucas linhas em um código.

V. Implementar a nova funcionalidade no código e reexecutar o teste.

VI. Refatorar o código com melhorias incrementais até que o teste execute sem erros.

VII. Revisar a funcionalidade e o teste, caso o código execute sem falhar.


Considerando o item IV a primeira etapa e o item III a última etapa, a sequência intermediária correta das etapas do processo é:

Alternativas
Comentários
  • GABARITO A

    IV. Identificar uma nova funcionalidade pequena para ser incrementada com poucas linhas em um código.

    I. Escrever um teste para a funcionalidade identificada e implementá-lo como um teste automatizado.

    II. Executar o teste, junto com os demais testes já implementados, sem implementar a nova funcionalidade no código.

    VII. Revisar a funcionalidade e o teste, caso o código execute sem falhar.

    V. Implementar a nova funcionalidade no código e reexecutar o teste.

    VI. Refatorar o código com melhorias incrementais até que o teste execute sem erros.

    II. Identificar e implementar uma outra funcionalidade, após todos os testes serem executados com sucesso.


    -

    Basicamente o TDD se baseia em pequenos ciclos de repetições, onde para cada funcionalidade do sistema um teste é criado antes. Este novo teste criado inicialmente falha, já que ainda não temos a implementação da funcionalidade em questão e, em seguida, implementamos a funcionalidade para fazer o teste passar! Simples assim!

    Não podemos simplesmente escrever outro teste só por que já temos um teste passando. É preciso que esta funcionalidade que acabamos de escrever seja refatorada, ou seja, ela precisa passar por um pequeno banho de "boas práticas” de Desenvolvimento de Software. Estas boas práticas que garantirão um software com código mais limpo, coeso e menos acoplado.



    Ciclo de desenvolvimento

    Red,Green, Refactor. Ou seja:


    Escrevemos um Teste que inicialmente não passa (Red) Adicionamos uma nova funcionalidade do sistema Fazemos o Teste passar (Green) Refatoramos o código da nova funcionalidade (Refactoring) Escrevemos o próximo Teste


    Nós temos, neste tipo de estratégia, um feedback rápido sobre a nova funcionalidade e sobre uma possível quebra de outra funcionalidade do sistema. Assim tempos muito mais segurança para as refatorações e muito mais segurança na adição de novas funcionalidades.


    https://www.devmedia.com.br/test-driven-development-tdd-simples-e-pratico/18533

  • Sommerville, Engenharia de Software, 9a. edição. Capítulo 8. Página 155.

    ...

    As etapas do processo são:

    1. Você começa identificando o incremento de funcionalidade necessário. Este, normalmente, deve ser pequeno e implementável em poucas linhas de código.

    2. Você escreve um teste para essa funcionalidade e o implementa como um teste automatizado. Isso significa que o teste pode ser executado e relatará se passou ou falhou.

    3. Você, então, executa o teste, junto com todos os outros testes implementados. Inicialmente, você não terá implementado a funcionalidade, logo, o novo teste falhará. Isso é proposital, pois mostra que o teste acrescenta algo ao conjunto de testes.

    4. Você, então, implementa a funcionalidade e executa novamente o teste. Isso pode envolver a refatoração do código existente para melhorá-lo e adicionar um novo código sobre o que já está lá.

    5. Depois que todos os testes forem executados com sucesso, você caminha para implementar a próxima parte da funcionalidade.

    ...