Text Material Preview
TDD (Test Driven Development) O que e TDD (Test Driven Development)? a) Uma tecnica de desenvolvimento de software onde os testes sao escritos apos o codigo ser implementado b) Uma pratica de desenvolvimento agil onde os testes sao escritos antes do codigo c) Uma metodologia que foca apenas em testes manuais d) Um modelo de gestao de projetos que prioriza os testes de desempenho Resposta correta: b) Explicacao: TDD (Test Driven Development) e uma pratica de desenvolvimento de software onde os testes sao escritos antes da implementacao do codigo, com o objetivo de garantir que o codigo atenda aos requisitos desde o inicio. Qual das seguintes afirmativas e uma das principais vantagens do TDD? a) Aumenta o tempo de desenvolvimento, mas reduz o custo de manutencao b) A diminuicao dos testes manuais no processo de desenvolvimento c) Reduz a quantidade de codigo necessario para a solucao d) Melhora a qualidade do codigo e ajuda na deteccao precoce de erros Resposta correta: d) Explicacao: O TDD ajuda a melhorar a qualidade do codigo, pois promove a escrita de testes antes do codigo e garante que o sistema seja testado durante todo o processo de desenvolvimento, o que ajuda a identificar erros precocemente. Qual e a sequencia correta de etapas no ciclo do TDD? a) Escrever o codigo, rodar os testes, refatorar o codigo b) Escrever o teste, escrever o codigo, rodar os testes, refatorar o codigo c) Refatorar o codigo, escrever o teste, rodar os testes d) Escrever o codigo, refatorar o codigo, rodar os testes Resposta correta: b) Explicacao: No ciclo do TDD, a sequencia correta e escrever o teste primeiro, depois escrever o codigo para que o teste passe, rodar os testes para garantir que o codigo funcione corretamente e, por fim, refatorar o codigo para melhorar sua estrutura. No contexto do TDD, o que significa refatorar? a) Escrever testes mais especificos e detalhados b) Reescrever o codigo de forma a melhorar sua estrutura, mantendo o comportamento inalterado c) Apagar codigo redundante que nao e mais necessario d) Ajustar os testes para que se adaptem melhor ao codigo Resposta correta: b) Explicacao: Refatorar no TDD significa melhorar a estrutura do codigo sem alterar seu comportamento, com o objetivo de tornar o codigo mais limpo, legivel e eficiente. Qual e a principal funcao dos testes no TDD? a) Validar se o codigo atende aos requisitos apos sua implementacao b) Garantir que o codigo funciona corretamente, sem a necessidade de testar manualmente c) Garantir que o codigo foi escrito sem erros de sintaxe d) Verificar a compatibilidade do codigo com diferentes ambientes de desenvolvimento Resposta correta: b) Explicacao: A principal funcao dos testes no TDD e garantir que o codigo atenda aos requisitos e funcione corretamente desde o inicio, evitando a necessidade de testes manuais e diminuindo a probabilidade de introduzir erros no sistema. Como o TDD ajuda na manutencao do codigo a longo prazo? a) Facilita a reescrita do codigo b) Melhora a cobertura de testes, o que torna mais facil modificar e manter o codigo c) Impede que o codigo seja alterado sem a execucao de testes d) Reduz a quantidade de testes, tornando o processo mais rapido Resposta correta: b) Explicacao: O TDD melhora a cobertura de testes, tornando mais facil modificar e manter o codigo a longo prazo. Como o codigo e sempre acompanhado de testes, qualquer alteracao pode ser validada rapidamente para garantir que nao introduza erros. Quais sao as "tres leis do TDD" que guiam o processo de desenvolvimento? a) Escrever codigo, refatorar, testar b) Escrever codigo, corrigir erros, documentar c) Focar em pequenos testes, escrever codigo simples, refatorar constantemente d) Reduzir a quantidade de codigo, evitar refatoracao, escrever testes complexos Resposta correta: c) Explicacao: As tres leis do TDD sao: escrever pequenos testes, garantir que o codigo seja simples e o mais direto possivel e refatorar constantemente para manter a qualidade do codigo. O que acontece se um teste falhar no TDD? a) O codigo e refatorado imediatamente b) O codigo e considerado correto, pois o teste nao e mais necessario c) O codigo e alterado para corrigir o erro e o teste e reexecutado ate passar d) O teste e removido e o processo e reiniciado Resposta correta: c) Explicacao: Quando um teste falha, o codigo deve ser alterado ate que o erro seja corrigido. O teste e reexecutado ate que passe, garantindo que o codigo atenda ao que foi especificado. O TDD pode ser usado em qualquer linguagem de programacao? a) Nao, ele so pode ser usado em linguagens de baixo nivel b) Nao, ele e exclusivo de linguagens orientadas a objetos c) Sim, desde que existam frameworks de testes compativeis com a linguagem d) Sim, mas apenas em linguagens de programacao modernas Resposta correta: c) Explicacao: O TDD pode ser usado em qualquer linguagem de programacao, desde que existam frameworks de teste compativeis com a linguagem, como JUnit para Java, PyTest para Python, entre outros. Qual das alternativas descreve corretamente a abordagem do TDD em relacao ao desenvolvimento agil? a) O TDD e uma abordagem rigida e nao se adapta bem a mudancas rapidas b) O TDD e uma tecnica que complementa o desenvolvimento agil ao garantir que o codigo seja sempre testado c) O TDD nao e compativel com metodologias ageis d) O TDD impede que o codigo seja alterado durante o desenvolvimento agil Resposta correta: b) Explicacao: O TDD complementa o desenvolvimento agil, pois assegura que o codigo seja testado continuamente. Isso ajuda a manter a qualidade do codigo, mesmo com as mudancas rapidas caracteristicas das metodologias ageis. Em TDD, qual e o objetivo de escrever um teste que falha? a) Garantir que o codigo falhe inicialmente, para que a solucao seja mais simples b) Validar que a estrutura do codigo esta correta c) Verificar se o teste esta cobrindo todos os cenarios possiveis d) Definir um ponto de partida claro para a implementacao do codigo Resposta correta: d) Explicacao: Escrever um teste que falha no inicio tem como objetivo definir um ponto de partida claro para a implementacao do codigo, ou seja, o teste define a funcionalidade que deve ser implementada. Qual e o papel do "mocking" no TDD? a) Simular o comportamento de partes do sistema que ainda nao foram implementadas ou nao estao prontas para testes b) Criar um codigo substituto para o sistema principal durante o desenvolvimento c) Refatorar o codigo automaticamente d) Fazer o codigo rodar em diferentes sistemas operacionais Resposta correta: a) Explicacao: O "mocking" no TDD e uma tecnica usada para simular o comportamento de partes do sistema que ainda nao foram implementadas ou que nao estao prontas para serem testadas. Isso permite que os testes sejam realizados sem a dependencia de componentes externos. O que significa a frase "Red, Green, Refactor" no contexto do TDD? a) Escrever um codigo ineficiente, otimizar e refatorar b) Escrever um teste, implementar codigo para fazer o teste passar, e refatorar o codigo c) Escrever testes complexos, passar os testes, e refatorar o codigo d) Definir testes de unidade, rodar os testes, e limpar o codigo Resposta correta: b) Explicacao: "Red, Green, Refactor" e o ciclo basico do TDD. Primeiro, escreve-se um teste (Red), depois implementa-se o codigo para que o teste passe (Green), e finalmente refatora-se o codigo para melhorar sua qualidade sem alterar o comportamento (Refactor). O TDD e eficaz apenas para testes unitarios? a) Sim, pois o TDD se concentra apenas em testes unitarios b) Nao, o TDD pode ser utilizado para diferentes tipos de testes, como testes de integracao c) Sim, mas com a ajuda de outras ferramentas de teste d) Nao, pois TDD so e aplicavel a pequenos testes de funcionalidade Resposta correta: b) Explicacao: Embora o TDD seja mais comumente usado para testes unitarios, ele tambem pode ser aplicado para outros tipos de testes, como testes deintegracao, garantindo que diferentes partes do sistema interajam corretamente. Qual a relacao entre o TDD e o codigo legivel e manutenivel? a) O TDD cria codigo complexo e dificil de entender b) O TDD contribui para um codigo mais legivel e manutenivel, pois cada parte do codigo e escrita para passar testes especificos c) O TDD nao tem impacto sobre a legibilidade ou manutencao do codigo d) O TDD enfoca a criacao de codigo sem se preocupar com legibilidade Resposta correta: b) Explicacao: O TDD contribui para a criacao de um codigo mais legivel e man