LogoLogo
Site da {struct}Organização no GitlabOrganização no GithubGitbook no Github
Gitbook
Gitbook
  • Bem-Vindo à Wiki da {struct}
    • Guia Markdown
  • Gestão
    • Presidência
    • Administrativo-Financeiro
      • Pesquisa e Desenvolvimento (R&D)
      • Reembolso de membros
      • Cupons e Prêmios
    • Projetos
    • Marketing
    • Comercial
      • Funil de Vendas
      • Fazer Proposta
      • Inserir Projetos no Portal BJ
      • Interação com Clientes
    • Gestão de Pessoas
    • MEJ
    • Processo Seletivo
      • Processo Trainee
        • Guias Utilizados
        • Ferramentas
      • Readmissão de Membros
  • Execução
    • Git
      • Conceitos básicos
      • Utilização em projetos
      • Soluções para problemas comuns
    • Ruby on Rails
      • Instalação
      • Obtenção de licença Jetbrains
      • Bash de Ubuntu no Windows
      • Geradores Rails
    • Devise
    • Rspec e Factory Bot
      • Instalação Rspec
      • Testando Models
      • Instalação Factory Bot
      • Usando o Factory Bot
      • Testando Controllers
      • Testando Controllers Versionadas
      • Testes com Associatividade
      • Testando Devise
    • Front-end
      • HTML
      • CSS
      • React js
        • Instalação
        • Componentes
        • Estilizando
        • Hooks
        • Mais sobre
    • Flutter
    • Projetos
      • Cloudinary
      • Gerência de projetos
      • Finalização de Projetos
      • Gitlab
        • CI-CD
      • Integrações
        • Discord - GitHub
    • Técnicas de Programação Ágil
      • Scrum
      • Behavior Driven Design
      • Test-Driven Development
    • Dados Estruturados
    • Gamificação
      • Clockify
    • Mailer
    • Assinatura Digital de Documentos
Powered by GitBook
On this page
  • Ciclo TDD
  • Características de um bom teste
  • Vantagens
  • Desvantagens
  • TDD em Ruby on Rails
  • Disciplinas do curso que abordam esse conteúdo

Was this helpful?

  1. Execução
  2. Técnicas de Programação Ágil

Test-Driven Development

Test-Driven Development (Desenvolvimento Orientado a Testes) é uma metodologia de desenvolvimento em que os testes são escritos antes do código em si e são utilizados para direcionar a criação de código. Essa metodologia é a melhor forma de, no longo prazo, usar seu tempo eficientemente e ao mesmo tempo evitar que problemas apareçam no seu código.

Ciclo TDD

No Test-driven development, o ciclo de desenvolvimento que o programador deve adotar é constituído pelos seguintes passos:

  1. Crie um teste automatizado para uma funcionalidade de um módulo. Certifique-se de que esse teste falha porque o código necessário ainda não foi escrito (e não porque o teste foi escrito de forma errada).

  2. Escreva a menor quantidade de código possível para que o novo teste passe, mas sem quebrar qualquer teste escrito anteriormente.

  3. Caso necessário, refatore o código de forma que todos os testes ainda passem. Também é possível modificar os testes para melhor refletir a funcionalidade desejada. Ao final, retorne para o passo 1.

Esse ciclo de desenvolvimento garante que os requisitos de uma funcionalidade (expressos na forma de testes) dirijam o desenvolvimento de código e que apenas o código estritamente necessário para a funcionalidade será escrito.

Características de um bom teste

Procure sempre criar testes automatizados que possuam as seguintes qualidades:

  • Rapidez: Testes automatizados devem ser rápidos para permitir que eles sejam executados várias vezes.

  • Independência: Testes automatizados não devem ser influenciados por testes anteriores, de forma que qualquer teste ou conjunto de testes possa ser executado a qualquer hora.

  • Repetibilidade: Testes automatizados devem ter o mesmo resultado se executados várias vezes seguidas, não dependendo, assim, de aleatoriedade.

  • Auto-verificação: Testes automatizados devem informar automaticamente ao programador se o teste falhou ou foi bem sucedido.

  • Paridade: Os testes automatizados devem sempre ser desenvolvidos em par com o código da aplicação, de forma que os dois não estejam disconexos.

Vantagens

  • Garante a corretude do seu código perante o cliente e outros programadores.

  • Diminui exponencialmente o tempo gasto com debugging.

  • Permite que uma refatoração seja feita sem quebrar alguma parte do código.

  • Diminui o esforço gasto com testes manuais.

Desvantagens

  • Requer paciência do programador, mesmo para tarefas supostamente simples.

  • No curto prazo, consome mais tempo que o desenvolvimento normal.

  • Requer o domínio de uma DSL (Linguagem de domínio específico) para a escrita dos testes.

TDD em Ruby on Rails

O Test-driven development em Ruby on Rails é feito por meio da gem rspec-rails, permitindo a criação de testes de unidade e de módulo para models, controllers, views e helper modules.

Disciplinas do curso que abordam esse conteúdo

  • Métodos de programação (3º Semestre)

  • Técnicas de programação I (4º Semestre)

  • Engenharia de software (6º Semestre)

PreviousBehavior Driven DesignNextDados Estruturados

Last updated 2 years ago

Was this helpful?