Prévia do material em texto
TDD (Test Driven Development) Aqui esta uma lista de perguntas de multipla escolha sobre o tema TDD (Test Driven Development), com respostas explicativas, conforme solicitado: 1. O que significa TDD? a) Test-Driven Development b) Test-Defined Development c) Test-Design Development d) Total Development Design Resposta: a) TDD significa Test-Driven Development (Desenvolvimento Orientado a Testes). E uma abordagem de desenvolvimento onde os testes sao escritos antes do codigo de producao, garantindo que o codigo atenda aos requisitos de forma continua e precisa. 2. Qual e o primeiro passo no ciclo TDD? a) Escrever o codigo de producao b) Refatorar o codigo existente c) Escrever um teste que falha d) Executar os testes do projeto Resposta: c) No TDD, o primeiro passo e escrever um teste que falha. O objetivo e criar um teste que valide uma funcionalidade especifica, antes de escrever o codigo que fara esse teste passar. 3. Qual e a ordem dos tres passos principais do ciclo TDD? a) Escrever codigo, escrever teste, refatorar b) Refatorar, escrever codigo, escrever teste c) Escrever teste, escrever codigo, refatorar d) Escrever teste, refatorar, escrever codigo Resposta: c) Os tres passos principais do TDD seguem a sequencia: escrever o teste, escrever o codigo para passar no teste, e depois refatorar o codigo, caso necessario, para melhorar sua qualidade sem alterar seu comportamento. 4. O que significa "Refatorar" no contexto de TDD? a) Excluir partes do codigo que nao foram testadas b) Reescrever o codigo para adicionar novas funcionalidades c) Melhorar o codigo sem alterar sua funcionalidade d) Testar o codigo de maneira mais aprofundada Resposta: c) Refatorar no contexto de TDD significa melhorar o codigo sem alterar sua funcionalidade. O objetivo e tornar o codigo mais limpo e eficiente, mantendo os testes existentes funcionando corretamente. 5. Qual e o beneficio principal de escrever testes antes do codigo no TDD? a) Garantir que o codigo estara 100% correto b) Acelerar a escrita de codigo, ja que o teste ajuda a definir a estrutura do codigo c) Aumentar a cobertura de testes de forma irrelevante d) Eliminar a necessidade de testes manuais Resposta: b) Escrever testes antes do codigo ajuda a definir melhor a estrutura do codigo, alem de garantir que o codigo sera escrito para passar nos testes, o que resulta em um codigo mais bem testado e mais robusto. 6. No ciclo TDD, o que acontece apos escrever o codigo para fazer o teste passar? a) O codigo e refatorado para torna-lo mais simples e limpo b) O teste e removido, pois o codigo ja esta funcionando c) O teste e reescrito para ser mais complexo d) O codigo e testado manualmente para garantir que esta correto Resposta: a) Apos escrever o codigo para fazer o teste passar, o proximo passo e refatorar o codigo para melhora-lo sem alterar sua funcionalidade. Isso ajuda a manter o codigo limpo e facil de entender. 7. Quais sao os principais beneficios do TDD? a) Reduzir a cobertura de testes b) Garantir que o codigo nunca falhe c) Melhorar a qualidade do codigo e a deteccao precoce de erros d) Eliminar a necessidade de documentacao do codigo Resposta: c) O TDD oferece melhorias na qualidade do codigo e permite detectar erros mais cedo. Como os testes sao escritos antes do codigo, problemas de funcionalidade sao mais facilmente identificados e corrigidos. 8. Qual e o papel dos testes unitarios no TDD? a) Validar a integridade de todo o sistema, nao apenas partes especificas b) Garantir que o sistema inteiro seja testado de uma vez c) Testar individualmente partes do codigo para garantir que funcionem corretamente d) Substituir testes manuais no processo de desenvolvimento Resposta: c) No TDD, os testes unitarios sao usados para testar partes especificas do codigo de forma isolada. Isso ajuda a garantir que cada parte do sistema funcione corretamente antes de integrar com outras partes. 9. Qual das afirmacoes abaixo esta incorreta sobre TDD? a) O TDD ajuda a melhorar o design do codigo b) O TDD aumenta a confianca nos testes automatizados c) O TDD so e util em projetos grandes e complexos d) O TDD pode ajudar a encontrar erros de forma antecipada Resposta: c) A afirmacao de que o TDD so e util em projetos grandes e complexos esta incorreta. O TDD pode ser extremamente util em qualquer tamanho de projeto, pois ajuda a melhorar a qualidade do codigo e a detectar erros precocemente, independentemente do tamanho do projeto. 10. O que e um "Test-First" approach (abordagem de testes primeiro) no TDD? a) Escrever primeiro o codigo e depois testar b) Escrever os testes antes de qualquer codigo de producao c) Testar apenas a funcionalidade final apos o desenvolvimento do codigo d) Testar o codigo manualmente sem usar ferramentas de automacao Resposta: b) A abordagem Test-First significa escrever os testes antes de qualquer codigo de producao. Isso faz parte do processo TDD e garante que o codigo seja sempre escrito com a finalidade de passar nos testes previamente definidos. 11. O que significa "Codigo Testavel" em TDD? a) Codigo que pode ser executado sem a necessidade de testes b) Codigo que foi escrito de forma que seja facil de testar c) Codigo que foi testado manualmente, mas nao automatizado d) Codigo que nao precisa de testes para ser considerado valido Resposta: b) Codigo testavel e aquele que foi escrito de maneira que seja facil de testar, com funcoes ou metodos pequenos e bem definidos, sem dependencias complicadas que dificultem a criacao de testes automatizados. 12. O que e um "mock" em TDD? a) Um tipo de teste manual utilizado em TDD b) Um teste para simular o comportamento de componentes externos sem a necessidade de sua implementacao completa c) Um teste que verifica o desempenho do codigo d) Uma ferramenta usada para automatizar o processo de refatoracao Resposta: b) Um mock e uma tecnica usada para simular o comportamento de componentes externos ou de baixo nivel no processo de teste, permitindo que se teste uma parte especifica do sistema sem depender da implementacao completa de outros componentes. 13. Em que tipo de projeto o TDD pode ser mais vantajoso? a) Projetos onde os requisitos sao bem definidos e nao mudam frequentemente b) Projetos pequenos e simples, que nao exigem muitos testes c) Projetos em que a qualidade do codigo e a deteccao precoce de erros sao prioridades d) Projetos que ja possuem uma grande quantidade de codigo legado Resposta: c) O TDD e mais vantajoso em projetos onde a qualidade do codigo e a deteccao precoce de erros sao prioridades. Ele ajuda a garantir que cada parte do codigo funcione corretamente e facilita a manutencao do codigo ao longo do tempo. 14. Qual e a relacao entre TDD e Refatoracao? a) Refatoracao ocorre apos escrever o codigo, sem relacao com TDD b) Refatoracao e parte do processo de TDD, mas apenas depois de os testes passarem c) Refatoracao e opcional no processo de TDD d) Refatoracao nunca e necessaria apos os testes passarem Resposta: b) A refatoracao e parte fundamental do ciclo TDD, ocorrendo apos escrever o codigo que faz o teste passar. O objetivo da refatoracao e melhorar o codigo sem alterar seu comportamento, mantendo os testes intactos. 15. O que acontece se um teste falha durante o ciclo TDD? a) O codigo e reescrito ate o teste passar b) O codigo e descartado e o desenvolvimento e recomecado c) O teste e removido, pois nao e relevante d) O codigo e refatorado para corrigir o erro antes de continuar o desenvolvimento Resposta: a) Se um teste falhar durante o ciclo TDD, o codigo e reescrito ate que o teste passe. O objetivo do TDD e garantir que o codigo desenvolvido atenda aos requisitos definidos pelos testes, entao falhas nos testes indicam que ajustes precisam ser feitos. Essas perguntas abrangem diversos aspectos do Test Driven Development (TDD), desde os principios fundamentais ate as praticas do dia a dia no uso dessa tecnica.