Ensaios unitários vs ensaios funcionais

Qual é a diferença entre os testes unitários e os testes funcionais? Um teste de unidade também pode testar uma função?

Author: Renan Araújo, 2010-04-30

13 answers

Teste de Unidade-Teste de uma unidade individual, como um método (função) numa classe, com todas as dependências reunidas.

Teste funcional-teste de integração, teste de uma fatia de funcionalidade num sistema. Isto irá testar muitos métodos e pode interagir com dependências como bases de dados ou serviços Web.
 201
Author: bpapa, 2010-04-30 01:45:09

Os testes de unidade dizem a um programador que o código está a fazer as coisas certas; os testes funcionais dizem a um programador que o código está a fazer as coisas certas.

Pode ler mais em testes unitários versus testes funcionais


Uma analogia bem explicada da vida real dos ensaios unitários e dos ensaios funcionais pode ser descrita da seguinte forma,

Muitas vezes o desenvolvimento de um sistema é comparado à construção de uma casa. Enquanto esta analogia não é bem correto, podemos estendê-lo com o propósito de entender a diferença entre a unidade e os testes funcionais. O ensaio da unidade é análogo a um inspector de edifícios que visita um estaleiro de construção. Ele está focado nos vários sistemas internos da casa, a fundação, enquadramento, elétrica, canalização, e assim por diante. Ele garante (testes) que as partes da casa vai funcionar corretamente e com segurança, ou seja, cumprir o código de construção.

Ensaios funcionais neste campo o cenário é análogo ao proprietário que visita este mesmo local de construção. Ele assume que os sistemas internos se comportarão adequadamente, que o inspector do edifício está executando sua tarefa. O proprietário está focado em como será viver nesta casa. Ele está preocupado com a aparência da casa, são os vários quartos um tamanho confortável, se a casa se adapta às necessidades da família, são as janelas em um bom local para pegar o sol da manhã.

O dono da casa está a actuar. testes funcionais na casa. Ele tem a perspectiva do utilizador. O inspector do edifício está a realizar testes unitários na casa. Ele tem a perspectiva do construtor.

Como resumo,

Os testes unitários são escritos numa perspectiva de programadores. Eles são feitos para garantir que um método particular (ou uma unidade de uma classe ([31]}) executa um conjunto de tarefas específicas.

Os testes funcionais são escritos do ponto de vista do utilizador. Ele assegurar que o sistema está a funcionar como os utilizadores esperam que funcione.

 438
Author: Anthony Forloney, 2016-01-13 23:56:54
  • Uma unidade de teste testa uma unidade de comportamento independente . O que é uma unidade de comportamento? É a menor peça do sistema que pode ser testada de forma independente. (Esta definição é na verdade circular, agora não é realmente uma definição de todo, mas parece funcionar muito bem na prática, porque você pode entender intuitivamente isso.)

  • Um ensaio funcional testa uma peça independente de funcionalidade.


  • Uma unidade de comportamento é muito pequena: embora eu absolutamente não goste deste estúpido" teste de uma unidade por método " mantra, a partir de uma perspectiva Tamanho é sobre o certo. Uma unidade de comportamento é algo entre uma parte de um método e talvez um par de métodos. No máximo um objeto, mas não mais do que um.

  • Uma Peça de funcionalidade geralmente compreende muitos métodos e corta através de vários objetos e muitas vezes através de múltiplos camadas arquitectónicas.


  • Um teste de unidade seria algo como: quando eu chamo a função validate_country_code() e passo o código do país {[1] } ele deve retornar false.

  • Um teste funcional seria: quando eu preencher o envio de formulário com um código de país de ZZ, eu deveria ser redirecionado para uma página de ajuda que me permite escolher o meu código do país de um menu.


  • Testes de unidade são escritos por desenvolvedores, para desenvolvedores, de a perspectiva do desenvolvedor.

  • Testes funcionais podem ser enfrentados pelo Usuário, caso em que eles são escritos por desenvolvedores juntamente com usuários (ou talvez com as ferramentas certas e usuários certos, mesmo pelos próprios usuários), para os usuários, a partir da perspectiva do Usuário. Ou eles podem ser de frente para o desenvolvedor (por exemplo, quando eles descrevem alguma parte interna de funcionalidade que o Usuário não se importa), caso em que eles são escritos por desenvolvedores, para desenvolvedores, mas ainda a partir do Usuário perspectiva.


  • No primeiro caso, os testes funcionais também podem servir como testes de aceitação e como codificação executável de requisitos funcionais ou uma especificação funcional, no segundo caso, eles também podem servir como testes de integração.

  • Os testes de unidade mudam frequentemente, os testes funcionais nunca devem mudar dentro de uma grande liberação.


 127
Author: Jörg W Mittag, 2010-05-12 10:03:59

TLDR:

Para responder à pergunta: O teste unitário é um subtipo de Teste Funcional.


Existem dois grandes grupos: funcionais e não funcionais testes. A melhor ilustração (não exaustiva) que encontrei é esta (fonte: www.inflectra.com):

enter image description here

(1) Ensaio unitário: ensaio de pequenos fragmentos de código (funções/métodos). Pode ser considerado funcional (caixa branca) teste.

Quando as funções são montadas, você cria um módulo = uma peça autônoma, possivelmente com uma Interface de usuário que pode ser testada (teste de Módulo). Uma vez que você tem pelo menos dois módulos separados, então você colá-los juntos e depois vem:

(2) Teste de integração: quando juntar duas ou mais peças de (sub)módulos ou (sub)sistemas e ver se funcionam bem em conjunto.

Depois integras o 3º Módulo, depois o 4º e o 5º em qualquer ordem que você ou sua equipe achem conveniente, e uma vez que todas as peças do puzzle são colocadas juntas, vem

(3) ensaio do sistema: ensaio SW no seu conjunto. Isto é praticamente "teste de integração de todas as peças juntas".

Se estiver tudo bem, então vem

(4) testes de aceitação: construímos o que o cliente pediu realmente? É claro que os testes de aceitação devem ser realizados durante todo o ciclo de vida, e não apenas no última etapa, onde você percebe que o cliente queria um sportscar e você construiu uma van.

enter image description here

 60
Author: Andrejs, 2016-07-06 16:07:06

"Teste Funcional" não significa que esteja a testar uma função (método) no seu código. Isso significa, geralmente, que você está testando a funcionalidade do sistema -- quando eu executar foo file.txt na linha de comando, as linhas em file.txt ficam invertidas, talvez. Em contraste, um único teste unitário geralmente cobre um único caso de um único método -- length("hello") deve retornar 5, e length("hi") deve retornar 2.

Ver também a posição da IBM entre os ensaios unitários e os ensaios funcionais.

 11
Author: Mark Rushakoff, 2010-04-30 01:47:20

Em Carris, a pasta de unidade é destinada a realizar testes para os seus modelos, a pasta funcional é destinada a realizar testes para os seus controladores, e a pasta de integração é destinada a realizar testes que envolvem qualquer número de controladores interagindo. Fixtures são uma forma de organizar os dados de teste; eles residem na pasta fixtures. O test_helper.o ficheiro rb contém a configuração predefinida para os seus testes. u pode visitar este .

 5
Author: Bhimasen Rautaray, 2014-03-19 20:49:06
A distinção básica, porém, é que os testes funcionais testam a aplicação do lado de fora, do ponto de vista do utilizador. A unidade testa a aplicação a partir do interior, do ponto de vista do programador. Testes funcionais devem ajudá-lo a construir um aplicativo com a funcionalidade certa, e garantir que você nunca quebrá-lo acidentalmente. Os testes de unidade devem ajudá-lo a escrever um código que seja limpo e livre de erros.

extraído do livro" Python TDD " de Harry Percival

 5
Author: Humoyun, 2017-03-04 02:05:37

De acordo com o ISTQB estes dois não são comparáveis. Testes funcionais não são testes de integração.

O ensaio por unidade é um dos ensaios de nível e o ensaio funcional é o tipo de ensaio.

Basicamente:

A função de um sistema (ou componente) é 'o que ele faz'. Isto é ... normalmente descrito em uma especificação de requisitos, um funcional especificação, ou em casos de Utilização.

Enquanto

Ensaio de componentes, também conhecido por unidade, módulo e teste do programa, procura defeitos no software e verifica o seu funcionamento (por exemplo, módulos, programas, objetos, classes, etc.) que são separados testavel.

De acordo com o ensaio componente/unidade ISTQB pode ser funcional ou não funcional:

Os ensaios de componentes podem incluir ensaios de funcionalidade e características não funcionais específicas, tais como comportamento dos recursos (por exemplo, fugas de memória), ensaio de desempenho ou robustez, bem como ensaios estruturais (por exemplo, fugas de memória). cobertura da decisão).

Citações de fundações de testes de software - certificação ISTQB

 5
Author: Dominik, 2017-12-05 17:20:00

O jeito que eu penso que é assim: Um teste de unidade estabelece que o código faz o que você pretendia o código para o fazer (por exemplo, você quiser adicionar parâmetro a e b, no fato de adicioná-los, e não subtraí-los), testes funcionais de teste que todo o código funciona em conjunto para obter um resultado correto, de modo que o que se pretende que o código de facto, obtém o resultado no sistema.

 3
Author: Yishai, 2010-05-16 12:36:23

ENSAIO UNITÁRIO

O ensaio por unidade inclui o ensaio de uma unidade de código mais pequena, que normalmente são funções ou métodos. O teste de unidade é feito principalmente pelo desenvolvedor da unidade/método/função, porque eles entendem o núcleo de uma função. O objetivo principal do desenvolvedor é cobrir o código por testes unitários.

Existe uma limitação de que algumas funções não podem ser testadas através de testes unitários. Mesmo após a conclusão bem sucedida de todos os testes unitários, não garante operação do produto. A mesma função pode ser usada em poucas partes do sistema, enquanto o teste de unidade foi escrito apenas para um uso.

ENSAIO FUNCIONAL

É um tipo de teste de caixa preta em que os testes serão feitos sobre os aspectos funcionais de um produto sem olhar para o código. Testes funcionais são feitos principalmente por um testador de Software dedicado. Incluirá técnicas positivas, negativas e BVA que utilizem dados normalizados da ONU para testar as especificações funcionalidade do produto. A cobertura dos ensaios é realizada de forma melhorada através de ensaios funcionais e não de ensaios unitários. Ele usa GUI de aplicação para testes, então é mais fácil determinar o que exatamente uma parte específica da interface é responsável ao invés de determinar para que um código é a função responsável.

 2
Author: Ashish Gupta, 2015-09-15 05:55:45

AFAIK, o teste de unidade não é um teste funcional. Permitam-me que explique com um pequeno exemplo. Você quer testar se a funcionalidade de login de um aplicativo web de E-mail está funcionando ou não, assim como um usuário faria. Para isso, os teus testes funcionais devem ser assim.

1- existing email, wrong password -> login page should show error "wrong password"!
2- non-existing email, any password -> login page should show error "no such email".
3- existing email, right password -> user should be taken to his inbox page.
4- no @symbol in email, right password -> login page should say "errors in form, please fix them!" 

Os nossos testes funcionais devem verificar se podemos fazer login com entradas inválidas ? Exemplo. O e-mail não tem símbolo@, o utilizador tem mais do que um ponto (só é permitido um ponto), o .com aparece antes do @ etc. ? Geralmente, não ! Esse tipo de teste vai para os testes da unidade.

Pode verificar se as entradas inválidas são rejeitadas nos testes unitários, como indicado nos testes abaixo.

class LoginInputsValidator
  method validate_inputs_values(email, password)
    1-If email is not like [email protected], then throw error.
    2-If email contains abusive words, then throw error.
    3-If password is less than 10 chars, throw error.

Observe que o teste funcional 4 está realmente a fazer o que o teste de Unidade 1 está a fazer. Às vezes, os testes funcionais podem repetir alguns (não todos) dos testes feitos por testes unitários, por diferentes razões. No nosso exemplo, usamos o teste funcional 4 para verificar se uma determinada mensagem de erro aparece Ao introduzir uma entrada inválida. Não queremos testar se está tudo mal. os inputs são rejeitados ou não. Esse é o trabalho dos testes unitários.

 2
Author: testerjoe2, 2016-10-31 03:18:46

Ensaio Unitário :- O ensaio por unidade é particularmente utilizado para testar o componente do produto por componente, especialmente durante o desenvolvimento do produto. Junit e Nunit tipo de ferramentas também irá ajudá-lo a testar o produto como por unidade. **Ao invés de resolver os problemas após a integração, é sempre confortável resolvê-los no início do desenvolvimento.

Ensaio Funcional:- No que se refere aos ensaios, existem dois tipos principais de ensaios: 1.Funcional Teste 2.Ensaio Não Funcional.

Teste não funcional é um teste onde um testador irá testar que o produto irá realizar todos os atributos de qualidade que o cliente não menciona, mas esses atributos de qualidade deve estar lá. Como: - desempenho,usabilidade,segurança,carga, estresse, etc. mas no Teste Funcional : - o cliente já está presente com os seus requisitos e estes estão devidamente documentados, a tarefa dos testadores é verificar se a funcionalidade da aplicação é executar de acordo com o sistema proposto ou não. Para esse efeito, o testador deve testar a funcionalidade implementada com o sistema proposto.

 1
Author: mohit sarsar, 2015-02-20 09:26:27

O teste de Unidade é normalmente feito pelos programadores. O objetivo de fazer o mesmo é garantir que seu código funcione corretamente. Regra geral de ouro é cobrir todos os caminhos em código usando teste de unidade.

Teste Funcional : Esta é uma boa referência. Explicação Dos Ensaios Funcionais

 0
Author: automationuser, 2016-06-06 19:57:59