Qual é a diferença entre testes de unidade e testes funcionais? Um teste de unidade também pode testar uma função?
407
Qual é a diferença entre testes de unidade e testes funcionais? Um teste de unidade também pode testar uma função?
Respostas:
Teste de unidade - teste de uma unidade individual, como um método (função) em uma classe, com todas as dependências simuladas.
Teste Funcional - AKA Integration Test, testando uma fatia da funcionalidade em um sistema. Isso testará muitos métodos e pode interagir com dependências como bancos de dados ou serviços da Web.
fonte
Você pode ler mais em Teste de unidade versus Teste funcional
Uma analogia da vida real bem explicada dos testes de unidade e testes funcionais pode ser descrita a seguir,
Como resumo,
Os testes de unidade são escritos da perspectiva dos programadores . Eles são feitos para garantir que um método específico (ou uma unidade ) de uma classe execute um conjunto de tarefas específicas.
Os testes funcionais são escritos da perspectiva do usuário . Eles garantem que o sistema esteja funcionando como os usuários esperam.
fonte
Um teste de unidade testa uma unidade de comportamento independente . O que é uma unidade de comportamento? É a menor parte do sistema que pode ser testada independentemente. (Esta definição é realmente circular, IOW não é realmente uma definição em tudo , mas parece funcionar muito bem na prática, porque você pode classificar-de compreendê-lo intuitivamente.)
Um teste funcional testa uma parte independente da funcionalidade.
Uma unidade de comportamento é muito pequena: embora eu absolutamente não goste desse mantra estúpido de "um teste de unidade por método", de uma perspectiva de tamanho , é quase certo. Uma unidade de comportamento é algo entre uma parte de um método e talvez alguns. No máximo, um objeto, mas não mais que um.
Uma parte da funcionalidade geralmente compreende muitos métodos e corta vários objetos e, muitas vezes, várias camadas da arquitetura.
Um teste de unidade seria algo como: quando eu chamo a
validate_country_code()
função e passo o código do país,'ZZ'
ele deve retornarfalse
.Um teste funcional seria: quando eu preencher o formulário de remessa com um código de país
ZZ
, eu deveria ser redirecionado para uma página de ajuda que me permita escolher meu código de país em um menu.Os testes de unidade são escritos por desenvolvedores, para desenvolvedores, da perspectiva do desenvolvedor.
Os testes funcionais podem ser voltados para o usuário; nesse caso, eles são escritos pelos desenvolvedores juntamente com os usuários (ou talvez com as ferramentas e os usuários certos, mesmo pelos próprios usuários), para os usuários, da perspectiva do usuário. Ou eles podem estar enfrentando desenvolvedores (por exemplo, quando descrevem alguma parte interna da funcionalidade com a qual o usuário não se importa); nesse caso, eles são escritos por desenvolvedores, para desenvolvedores, mas ainda da perspectiva do usuário.
No primeiro caso, os testes funcionais também podem servir como testes de aceitação e como uma codificação executável de requisitos funcionais ou uma especificação funcional; no último caso, eles também podem servir como testes de integração.
Os testes de unidade mudam frequentemente, os testes funcionais nunca devem mudar em uma versão principal.
fonte
TLDR:
Para responder à pergunta: O teste de unidade é um subtipo de teste funcional.
Existem dois grandes grupos: testes funcionais e não funcionais . A melhor ilustração (não exaustiva) que encontrei é esta (fonte: www.inflectra.com ):
Quando as funções são reunidas, você cria um módulo = uma peça independente, possivelmente com uma interface do usuário que pode ser testada (teste do módulo). Depois de ter pelo menos dois módulos separados, cole-os e depois vem:
Então você integra o 3º módulo, depois o 4º e o 5º, em qualquer ordem que você ou sua equipe entenderem, e quando todas as peças do quebra-cabeças estiverem juntas, vem
Se estiver tudo bem, então vem
fonte
Functional Test
é um termo padronizado e tem um significado diferente para pessoas diferentes."Teste funcional" não significa que você está testando uma função (método) no seu código. Significa, geralmente, que você está testando a funcionalidade do sistema - quando eu corro
foo file.txt
na linha de comando, as linhasfile.txt
ficam invertidas, talvez. Por outro lado, um único teste de unidade geralmente cobre um único caso de um único método -length("hello")
deve retornar 5 elength("hi")
retornar 2.Veja também a opinião da IBM na linha entre teste de unidade e teste funcional .
fonte
A distinção básica, no entanto, é que os testes funcionais testam o aplicativo de fora, do ponto de vista do usuário. Os testes de unidade testam a aplicação por dentro, do ponto de vista do programador. Os testes funcionais devem ajudá-lo a criar um aplicativo com a funcionalidade correta e garantir que você nunca o interrompa acidentalmente. Os testes de unidade devem ajudá-lo a escrever um código limpo e sem erros.
Extraído do livro "Python TDD" de Harry Percival
fonte
Segundo o ISTQB, esses dois não são comparáveis. Teste funcional não é teste de integração.
O teste de unidade é um dos níveis de teste e o teste funcional é o tipo de teste.
Basicamente:
enquanto
De acordo com o ISTQB, o teste de componente / unidade pode ser funcional ou não funcional:
Citações das Fundações de teste de software - certificação ISTQB
fonte
No Rails, a pasta unit destina-se a realizar testes para seus modelos, a pasta funcional destina-se a realizar testes para seus controladores e a pasta de integração destina-se a realizar testes que envolvem qualquer número de controladores interagindo. As luminárias são uma maneira de organizar dados de teste; eles residem na pasta de acessórios. O arquivo test_helper.rb mantém a configuração padrão para seus testes. você pode visitar isso .
fonte
A maneira como penso é assim: Um teste de unidade estabelece que o código faz o que você pretendia que ele fizesse (por exemplo, você queria adicionar os parâmetros aeb, na verdade você os adiciona e não os subtrai), Os testes funcionais testam que todo o código trabalha em conjunto para obter um resultado correto, de modo que o que você pretendia que o código realmente obtivesse o resultado certo no sistema.
fonte
AFAIK, teste de unidade NÃO é teste funcional. Deixe-me explicar com um pequeno exemplo. Você deseja testar se a funcionalidade de login de um aplicativo Web de email está funcionando ou não, exatamente como um usuário faria. Para isso, seus testes funcionais devem ser assim.
Nossos testes funcionais devem verificar se podemos fazer login com entradas inválidas? Por exemplo. O e-mail não possui o símbolo @, o nome de usuário possui mais de um ponto (somente um ponto é permitido), .com aparece antes de @ etc.? Geralmente não! Esse tipo de teste entra nos seus testes de unidade.
Você pode verificar se entradas inválidas são rejeitadas dentro dos testes de unidade, conforme mostrado nos testes abaixo.
Observe que o teste funcional 4 está realmente fazendo o que o teste unitário 1 está fazendo. Às vezes, os testes funcionais podem repetir alguns (não todos) os testes realizados por testes de unidade, por diferentes razões. Em nosso exemplo, usamos o teste funcional 4 para verificar se uma mensagem de erro específica aparece ao inserir uma entrada inválida. Não queremos testar se todas as entradas incorretas são rejeitadas ou não. Esse é o trabalho dos testes de unidade.
fonte
TESTE DA UNIDADE
O teste de unidade inclui o teste da menor unidade de código que geralmente 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 principal objetivo do desenvolvedor é cobrir o código por testes de unidade.
Tem uma limitação de que algumas funções não podem ser testadas através de testes de unidade. Mesmo após a conclusão bem-sucedida de todos os testes de unidade; não garante a operação correta do produto. A mesma função pode ser usada em poucas partes do sistema enquanto o teste de unidade foi gravado apenas para um uso.
TESTE FUNCIONAL
É um tipo de teste de caixa preta em que o teste será realizado nos aspectos funcionais de um produto sem examinar o código. O teste funcional é feito principalmente por um testador de software dedicado. Incluirá técnicas positivas, negativas e BVA, usando dados não padronizados para testar a funcionalidade especificada do produto. A cobertura do teste é realizada de maneira aprimorada por testes funcionais do que por testes de unidade. Ele usa a GUI do aplicativo para teste, portanto, é mais fácil determinar pelo que exatamente uma parte específica da interface é responsável, em vez de determinar pelo que um código é responsável pela função.
fonte
muito simplesmente podemos dizer:
leia mais aqui .
fonte
Teste de unidade : - O teste de unidade é particularmente usado para testar o componente do produto por componente, especialmente enquanto o produto está em desenvolvimento. As ferramentas Junit e Nunit também ajudarão você a testar o produto conforme a Unidade. ** Em vez de resolver os problemas após a integração, é sempre confortável resolvê-lo no início do desenvolvimento.
Teste funcional: - No que diz respeito ao teste, existem dois tipos principais de teste como 1. Teste funcional 2. Teste não funcional.
Teste Não-Funcional é um teste em que um Testador testará que O produto executará todos os atributos de qualidade que o cliente não menciona, mas esses atributos de qualidade devem estar lá. Como: -Desempenho, Usabilidade, Segurança, Carga, Estresse, etc., mas no Teste Funcional : - O cliente já está presente com seus requisitos e aqueles devidamente documentados. A tarefa dos testadores é verificar cruzadamente se a Funcionalidade do Aplicativo está executando de acordo com ao sistema proposto ou não. Para esse propósito, o Testador deve testar a funcionalidade Implementada com o Sistema proposto.
fonte
O teste de unidade geralmente é feito pelos desenvolvedores. O objetivo de fazer o mesmo é garantir que o código funcione corretamente. A regra geral é cobrir todos os caminhos no código usando o teste de unidade.
Teste funcional : Esta é uma boa referência. Explicação do Teste Funcional
fonte