Sobre desenvolvimento baseado em testes, considere: I. ...

Próximas questões
Com base no mesmo assunto
Q233865 Engenharia de Software
Sobre desenvolvimento baseado em testes, considere:

I. Este processo requer que desenvolvedores criem unidades de testes para definir os requisitos que um determinado código deve conter. Estes testes devem ser criados assim que uma pequena parte funcional do código esteja disponível.

II. Frequentemente são utilizados frameworks de teste pelos desenvolvedores como o xUnit ou jUnit para a criação de casos de teste automatizados.

III. É importante que o código escrito seja apenas projetado para passar o teste específico. Nenhuma outra funcionalidade deve ser prevista ou permitida fora do escopo do teste em nenhum estágio do processo.

Está correto o que consta em
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: D - II e III, apenas.

Para resolver essa questão, é necessário compreender o conceito de Desenvolvimento Baseado em Testes (Test-Driven Development - TDD), que é uma metodologia de desenvolvimento de software onde a escrita do teste automatizado acontece antes do desenvolvimento do código da funcionalidade a ser testada. A premissa do TDD é que o desenvolvedor escreva testes que falhem inicialmente, e a seguir implemente o código necessário para fazer o teste passar, seguindo o ciclo de vermelho-verde-refatorar, ou seja, falha no teste, sucesso no teste, e melhoria do código.

Item II está correto pois os frameworks de teste, como xUnit e jUnit, são ferramentas comumente utilizadas em TDD para escrever e rodar os casos de teste de forma automatizada. Eles são essenciais na implementação de testes unitários, que validam as menores partes do código, como funções ou métodos isoladamente.

Item III também está correto e é um princípio central do TDD. Ele estabelece que o código deve ser escrito estritamente para fazer o teste passar, sem antecipar funcionalidades futuras ou requisitos que não foram especificados ainda. Esta prática evita suposições e sobre-engenharia, focando no requisito atual e mantendo o código simples e limpo.

Item I, por outro lado, contém uma imprecisão. Ele sugere que os testes são escritos após uma pequena parte funcional do código ficar disponível, o que contraria o fluxo do TDD em que os testes são escritos antes do código funcional. Portanto, esse item está incorreto.

Concluímos, portanto, que apenas os itens II e III estão corretos e representam adequadamente a prática e os princípios do Desenvolvimento Baseado em Testes (TDD). Logo, a alternativa D é a resposta correta para essa questão.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

No TDD (Test-driven Development) o foco são pequenos ciclos de desenvolvimento.
1 - Começa desenvolvendo o caso de teste.
2 - Aplica-se o teste ao software (Como o software não existe, ele obviamente falha no teste)
3 - em caso de falha Corrige-se a falha e volta-se ao passo 2
4- Incremento pronto

Os casos de teste definem o escopo do incremento. Por isso não devemos implementar nada fora do escopo, ou seja que não possua teste definido

Acho que o erro do item I é esse:
"Estes testes devem ser criados assim que uma pequena parte funcional do código esteja disponível",
Acredito que o teste deve ser criado antes do código ter sido escrito, pois em desenvlvimento baseado em testes como podemos ver até mesmo no Extreme Programming - XP os testes são escritos antes de gerar código, ou seja faço os casos de teste e depois que começo a programação.

Apesar de ter errado a questão acho que esse é o erro.
Pessoal, o item 3 é muito generalizador. Não caberia recurso?:

"É importante que o código escrito seja apenas projetado para passar o teste específico. Nenhuma outra funcionalidade deve ser prevista ou permitida fora do escopo do teste em nenhum estágio do processo."

A ideia do TDD é mesmo de, a cada iteração, implementar apenas a parte do código referente ao caso de teste, e nada mais. Por isso a expressão "nenhuma outra funcionalidade", apesar de forte, está correta. As demais funções vão sendo implementadas aos poucos, a cada novo ciclo de teste. A ideia é focar em um problema de cada vez.

III. É importante que o código escrito seja apenas projetado para passar o teste específico. Nenhuma outra funcionalidade deve ser prevista ou permitida fora do escopo do teste em nenhum estágio do processo.

O item 3 faz menção ao I do F.I.R.S.T de Isolated:

Testes unitários são isolados, testando individualmente as unidades e não sua integração.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo