freeCodeCamp/guide/portuguese/software-engineering/unit-tests/index.md

3.4 KiB

title localeTitle
Unit Tests Testes Unitários

Testes Unitários

O teste unitário é um tipo de teste encontrado na parte inferior da pirâmide de teste de software. Isso envolve quebrar a base de código em partes menores (ou unidades) e testá-las isoladamente. Dependendo do tipo de linguagem de programação (ou paradigma), isso pode ser contra qualquer coisa que você defina como uma unidade, embora a prática mais comum seja contra funções.

Por que fazê-lo?

  • Proteção - Teste de unidade protege contra a introdução de bugs novos ou antigos para programação defensiva
  • Confiança - Você pode adicionar alterações, reutilizar ou refatorar códigos (ambos muito comuns) e ter certeza de que não adicionou um bug
  • Documentação - O teste de unidade documenta o comportamento e o fluxo de código, facilitando a compreensão de alguém novo no código
  • Isolation - isola um módulo do recurso inteiro. Essa abordagem obriga você a pensar em um módulo por si só e perguntar qual é o seu trabalho?
  • Qualidade - Como o teste de unidade força você a pensar e usar sua própria API, ele impõe interfaces e padrões bons / extensíveis. Pode indicar qualquer acoplamento ou complexidade excessiva que deva ser abordado. Código ruim geralmente é muito mais difícil de testar
  • Padrão da indústria - O teste de unidade é uma disciplina comum nos dias de hoje e é um requisito para uma grande parte das empresas de software
  • Menos bugs - Pesquisas substanciais sugerem que a aplicação de testes a uma aplicação pode reduzir a densidade de bugs de produção em 40% - 80%.

Exemplo (em Javascript)

Suponha que haja uma função escrita no arquivo add.js

var add = function(number1, number2){ 
  return number1 + number2; 
 } 

Agora, a fim de escrever o teste unitário desta função em particular, podemos usar ferramentas de teste como o mocha

const mocha = require('mocha') 
 const chai = require('chai')  // It is an assertion library 
 describe('Test to check add function', function(){ 
  it('should add two numbers', function(){ 
    (add(2,3)).should.equal(5)  //Checking that 2+3 should equal 5 using the given add function 
  }); 
 }); 

Desenvolvimento Orientado a Testes

O teste unitário é uma característica fundamental da abordagem de desenvolvimento orientado a testes (TDD) para o desenvolvimento de software. Nesta abordagem, o código para recursos ou funções específicas é escrito através do uso repetido de um ciclo muito curto. Primeiro, o desenvolvedor escreve um conjunto de testes unitários automatizados e garante que eles falhem inicialmente. Em seguida, o desenvolvedor implementa a quantidade mínima de código necessária para passar nos casos de teste. Uma vez que tenha sido validado que o código está se comportando conforme o esperado, o desenvolvedor volta atrás e refatora o código para aderir a qualquer padrão de codificação relevante.

Mais Informações

Martin Fowler em testes unitários: martinfowler.com

Robert Martin também conhecido como "Dr. Bob" em TDD: butunclebob.com

Eric Elliot em testes unitários e TDD: Medium