Qual a diferença entre teste unitário e teste integrado – testes engenharia-de-software tdd

Pergunta:


Qual a diferença entre teste unitário e teste integrado, seus benefícios e exemplos de um para o outro.

Autor da pergunta Al Unser Albuquerque

Resposta Rodrigo Guiotti:

Teste Unitário

Descrição: É a forma de se testar unidades individuais de código fonte. Unidades podem ser métodos, classes, funcionalidades, módulos, etc. Depende muito do que é a menor parte que seu Software pode ser testado.

Objetivo: dos testes unitários é mostrar que cada unidade atende corretamente sua especificação.

Exemplo: testes automáticos criados para darem entradas e conferirem saídas a cada método, permitindo que se saiba que está funcionando de acordo com o esperado.

Benefícios: encontrar problemas o quanto antes, facilitam a mudança da unidade, simplificam a integração e melhoram a documentação.

Teste Integrado

Descrição: É a forma de se testar a combinação das unidades em conjunto.

Objetivo: Nesse caso, a ideia é encontrar falhas na junção destas unidades. Pode ser que a classe X funcione bem sozinha, mas ao ser utilizada pela classe Y, ela deixe de funcionar.

Exemplo: Colocar todo o software para rodar e começar a usar diversas funcionalidades consideradas centrais no seu programa para confirmar que ele roda e as principais funcionalidades fazem o esperado.

Benefícios: além de testar funcionalmente, pode assegurar performance e confiabilidade. Ajudam a garantir que o trabalho de um desenvolvedor não está afetando o trabalho de outro e em equipes grandes isso pode fazer toda a diferença se forem realizados com frequência.

Complementando a resposta do Rodrigo com exemplos:

Teste Unitário (que os puristas gostam de chamar de “teste de unidade”. Blorg!): você tem a seguinte função no seu sistema (super simplista):

def soma(a, b):
    return a + b

Em seus testes unitários você fará “afirmações” (assertions) para ter certeza de que sua função está funcionando como deve. Em Python:

assert soma(7, 1) == 8
assert soma(-1, -1) == -2

Teste Integrado (ou “teste de integração”): você tem as seguintes funções (novamente simplistas):

def soma(a, b):
    return a + b

def multiplicacao(a, b):
    return a * b

def minhaFuncaoNadaVer(a, b):
    return soma(
        multiplicacao(a, b),
        multiplicacao(a + b, b)
    )

Após você ter feito Testes Unitários para as funções soma e multiplicacao, agora você vai fazer um Teste de Integração da função minhaFuncaoNadaVer, afinal ela integra duas funções do seu sistema (soma e multiplicacao). Em Python:

assert minhaFuncaoNadaVer(12, 6) == 180
assert minhaFuncaoNadaVer(1, 90) == 8280

Fonte

Related Posts:

Qual a diferença entre AppCompatActivity e Activity? – android android-activity
Pergunta: Qual a diferença da AppCompatActivity para Activity ? A partir de qual versão a AppCompatActivity foi adicionada ao Android? Autor da pergunta Luhhh A diferença reside ...
Como abreviar palavras em PHP? – php string
Pergunta: Possuo informações comuns como nome de pessoas e endereços, e preciso que elas contenham no máximo 30 caracteres sem cortar palavras. Exemplo: 'Avenida Natalino João Brescansin' ...
Qual é a finalidade de um parêntese vazio numa declaração Lambda? – c# expressões-lambda característica-linguagem
Pergunta: Criei um exemplo de uma declaração Lambda sem argumentos, entretanto, estou com duvidas referente a omissão do parêntese vazio () na declaração. Veja o exemplo: class ...
Boas práticas para URI em API RESTful – api rest restful
Pergunta: Estou com dúvida em relação às URIs de alguns recursos da api que estou desenvolvendo. Tenho os recursos projetos e atividades com relação 1-N, ...
Dúvidas sobre a integração do MySQL com Java – java mysql netbeans
Pergunta: Estou criando um sistema no NetBeans, utilizando a linguagem Java e o banco de dados MySQL. Escrevi o seguinte código para realizar a conexão ...
Qual é a finalidade da pasta Model do framework Inphinit? – php inphinit
Pergunta: No Inphinit micro-framework existe a pasta Model que fica dentro da pasta application, e nela é onde ficam as classes, mas eu estou muito ...
Uso do ‘@’ em variáveis – javascript typescript coffeescript
Pergunta: Vejo em algumas linguagens que compilam para javascript, como TypeScript e CoffeeScript, o uso do @ em variáveis, como também, casos em que o ...
Qual tamanho máximo um arquivo JSON pode ter? – json arquivo
Pergunta: Vou dar um exemplo para conseguir explicar minha duvida: Preciso recuperar informação de imagens vindas de uma API, esse banco de imagens me retorna JSON's ...
O que é Teste de Regressão? – terminologia engenharia-de-software testes
Pergunta: Na matéria de Teste de Software o professor abordou um termo chamado Teste de Regressão, isto dentro da disciplina de teste de software. Sendo ...
O que é um construtor da linguagem? – php característica-linguagem
Pergunta: Em PHP, já li e ouvi várias vezes a respeito dos Construtores da Linguagem. Os casos que sempre ouvi falar deles foi em casos ...
Função intrínseca para converter numérico para string – cobol
Pergunta: Estou a tentar saber se existe alguma função intrínseca do COBOL para converter um data numérico para string sem precisar usar a cláusula REDEFINES: ( ...
Porque usar implements? – java android
Pergunta: Qual a diferença entre usar btn.setOnClickListener(new OnClickListener() { e public class MainActivity extends Activity implements OnClickListener{ Estive fazendo um curso de Android e meu professor falou que ...
O que é XHTML e quando deve ser usado? – html xml xhtml
Pergunta: O que eu sei é que o XHTML precisa ser XML válido. Isso implica, por exemplo, que todas as tags precisam ser fechadas. Por ...
Uma placa aceleradora de vídeo pode melhorar o desempenho não-gráfico? [fechada] – desempenho
Pergunta: Para desenvolver em Ruby on Rails, eu utilizo aqui uma máquina virtual do VirtualBox com Ubuntu Server 14.04 sem interface gráfica instalada. Recentemente descobri uma ...
Concat() VS Union() – c# .net
Pergunta: Qual a diferença entre Concat() e Union() ? Quando usar Concat() e quando usar Union() ? Somente pode ser usado em list ? ...

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *