Qual é a diferença entre teste de integração e teste funcional? [fechadas]


132

Os testes funcionais e de integração são os mesmos?

Você inicia seus testes por meio de testes de unidade e, após concluir o teste de unidade, realiza o teste de integração, onde testa o sistema como um todo. O teste funcional é o mesmo que o teste de integração? Você ainda usa o sistema como um todo e o testa quanto à conformidade da funcionalidade.


1
possível duplicata de [The Agile Way: Integration Testing vs Functional Testing ou ambos? ] ( stackoverflow.com/questions/555899/… )
Pascal Thivent

14
Posso sugerir que você aceite algumas respostas de perguntas anteriores que fez?
Stefano Borini


6
Devo dizer que esta pergunta representa o que há de errado com este site. O que há de errado com esta pergunta? Como é amplo demais? Está perguntando algo MUITO específico, relacionado à programação. Qual é a diferença entre algo que pode até ser representado matematicamente? Parece que há um grande número de perguntas realmente importantes e realmente relevantes que são encerradas por razões inexplicáveis. Eu sei que você é sério, as pessoas vão me dizer que estou errado, mas o fato dessas perguntas estarem sendo fraturadas em sites como o Quara.com prova que estou certo. [Basicamente, a SO está abdicando da participação de mercado].
Jim Maguire

1
Concordo com @JimMaguire: a pergunta feita é uma pergunta "sim / não" (mais uma explicação de por que sim ou não). Não estou vendo por que é considerado não focado.
bob

Respostas:


101

Teste de integração é quando você testa mais de um componente e como eles funcionam juntos. Por exemplo, como outro sistema interage com seu sistema ou o banco de dados interage com sua camada de abstração de dados. Geralmente, isso requer um sistema totalmente instalado, embora em suas formas mais puras não.

Teste funcional é quando você testa o sistema em relação aos requisitos funcionais do produto. O gerenciamento de produtos / projetos geralmente os redige e o controle de qualidade formaliza o processo do que um usuário deve ver e experimentar e qual deve ser o resultado final desses processos. Dependendo do produto, isso pode ser automatizado ou não.


9
Thanx ... sim, mas em testes funcionais também quando estamos testando o sistema contra o requisito funcional de que também o tempo é considerado como um sistema integrado. E durante a execução de testes funcionais, também descobriremos como as diferentes unidades estão funcionando em conjunto para que possa ser thoght como teste de integração ...
Mishthi

3
Especialmente em nosso ambiente, sempre consideramos o teste de unidade como um teste de unidade escrito em uma única classe, testes de integração como testes de unidade ou testes de script sql que exigiam mais do que classe, banco de dados ou outro sistema (geralmente exigindo uma instalação completa) e testes funcionais são o teste executado pelo controle de qualidade ou o teste automatizado da interface do usuário.
Aceinthehole 9/09/10

1
Além disso, eu diria que, se você não fez o teste de integração antes do teste funcional, está fazendo os dois ao mesmo tempo e só encontrará erros nas partes de integração enquanto estiver testando os requisitos funcionais.
Aceinthehole 9/09/10

1
como essa não é a resposta aceita?
Tftd

@tftd porque o autor deste quesiton esteve inativo desde 2010 ...
t3chb0t

20

Teste funcional :

Sim, estamos testando funcionalmente o produto ou o software como um todo, funcionando ou não funcionando corretamente (botões, links etc.)

Por exemplo: Página de login.

você fornece o nome de usuário e a senha e testa se está levando você para a página inicial ou não.

Teste de integração :

Sim, você testa apenas o software integrado, mas testa onde o fluxo de dados está acontecendo e se há alguma alteração acontecendo no banco de dados.

Por exemplo: Enviando email

Você envia um email para alguém, há um fluxo de dados e também altera o banco de dados (a tabela enviada aumenta o valor em 1)


Lembre-se - clicar em links e imagens não é um teste de integração. Espero que você entenda o porquê, porque não há alterações no banco de dados, basta clicar em um link.

Espero que isso tenha ajudado.


3
Banco de dados é detalhe de implementação do estado do programa. Clicar no link também pode alterar o estado do programa.
21317 Alehro #

@ jsborn17 o teste de integração é aplicável a um aplicativo front-end que se comunica com uma API, mesmo que não possamos executar a API?
Wancieho

8

Esta é uma distinção importante, mas infelizmente você nunca encontrará acordo. O problema é que a maioria dos desenvolvedores os define do seu próprio ponto de vista. É muito semelhante ao debate sobre Plutão. (Se estivesse mais perto do Sol, seria um planeta?)

O teste de unidade é fácil de definir. Ele testa o CUT ( código em teste ) e nada mais. (Bem, o mínimo possível.) Isso significa zombaria, falsificação e acessórios.

No outro extremo do espectro, há o que muitas pessoas chamam de teste de integração de sistemas . Isso está testando o máximo possível, mas ainda está procurando bugs em seu próprio CUT.

Mas e a vasta extensão entre eles?

  • Por exemplo, e se você testar um pouco mais do que o CUT? E se você incluir uma função Fibonacci, em vez de usar um acessório que você injetou? Eu chamaria isso de teste funcional , mas o mundo discorda de mim.
  • E se você incluir time()ou rand()? Ou se você ligar http://google.com? Eu chamaria isso de teste do sistema , mas, novamente, estou sozinho.

Por que isso importa? Porque os testes do sistema não são confiáveis. Eles são necessários, mas às vezes falham por razões fora do seu controle. Por outro lado, os testes funcionais devem sempre passar, não falhar aleatoriamente; se eles são rápidos, também podem ser usados ​​desde o início para usar o Desenvolvimento Orientado a Testes sem escrever muitos testes para sua implementação interna. Em outras palavras, acho que os testes unitários podem ser mais problemáticos do que valem, e eu tenho uma boa companhia .

Coloquei testes em 3 eixos, com todos os seus zeros no teste de unidade :

  1. Teste funcional: usando o código real cada vez mais fundo na sua pilha de chamadas.
  2. Teste de integração: cada vez mais alto sua pilha de chamadas; em outras palavras, testando seu CUT executando o código que o utilizaria.
  3. Teste do sistema: operações cada vez mais irrepetíveis (agendador de O / S, relógio, rede, etc. )

Um teste pode ser facilmente todos os 3, em vários graus.


testes funcionais sempre passam? ou você quer dizer que os testes funcionais devem sempre passar?
Aceinthehole

1
Eles não devem falhar aleatoriamente. Quando eles falham, eles devem falhar sempre. Por exemplo, eles não devem incluir chamadas para outros hosts. Talvez eles devam ser chamados de testes comportamentais ? Eu não sei o melhor termo. Eu apenas sei que eles são os testes mais importantes e geralmente são negligenciados na grande diferença entre testes de unidade puros e totalmente simulados e testes de integração de sistemas de alto nível .
cdunn2001

"Eles não devem falhar aleatoriamente." - O termo pode ser que eles são "determinísticos"
kleaver 28/07

7

Teste funcional: é um processo de teste no qual todos os componentes do módulo são testados. Por exemplo: se uma página da web contiver campo de texto, botões de opção, botões e componentes suspensos, etc, precisam ser verificados.

Teste de integração: Processo em que o fluxo de dados entre 2 módulos é verificado.


4

Eu diria que ambos estão intimamente ligados e muito difíceis de distinguir entre eles. Na minha opinião, o teste de integração é um subconjunto de testes funcionais.

O teste de funcionalidade é baseado nos requisitos iniciais que você recebe. Você testará o comportamento do aplicativo conforme o esperado com os requisitos.

Quando se trata de teste de integração, é a interação entre os módulos. Se um módulo enviar uma entrada, o módulo B poderá processá-lo ou não.


+1 para "Teste de integração é um subconjunto de teste funcional" - minha experiência também mostra que essa abordagem de teste é mais significativa se você busca um resultado rapidamente. Por exemplo, no meu código de teste, geralmente trato o sistema como uma única unidade integrada - configuro o banco de dados na memória e, em seguida, alimento os controladores MVC do meu aplicativo com alguns dados de teste, verifico sua resposta e também os dados do banco de dados para certifique-se de que toda a validação de dados funcionou conforme o esperado, para evitar erros quando o controlador MVC retornar a resposta correta, mas na verdade não é passado corretamente para a camada do banco de dados.
precisa saber é o seguinte

4

Teste de integração - O teste de integração nada mais é do que testes de diferentes módulos. Você precisa testar o relacionamento entre os módulos. Por exemplo, você abre o facebook e depois vê a página de login depois de inserir a ID e a senha de login. Você pode ver a página inicial do facebook, portanto, a página de login é um módulo e a página inicial é outro módulo. você precisa verificar apenas o relacionamento entre eles significa que quando você fez login, apenas a página inicial deve estar aberta, não a caixa de mensagem ou qualquer outra coisa. Existem 2 tipos principais de teste de integração: abordagem TOP-DOWN e BOTTOM UP.

Teste Funcional - Nos testes funcionais, você precisa apenas pensar em entrada e saída. Nesse caso, você precisa pensar como um usuário real. Teste de qual entrada você deu e de qual resultado você obteve é ​​teste funcional. você precisa apenas observar a saída. Nos testes funcionais, você não precisa testar a codificação do aplicativo ou software.


2

Em um teste funcional, o testador concentra-se apenas na funcionalidade e subfuncionalidade do aplicativo. A funcionalidade do aplicativo deve estar funcionando corretamente ou não.

No teste de integração, o testador deve verificar a dependência entre os módulos ou submódulos. Por exemplo, os registros dos módulos devem ser buscados e exibidos corretamente em outro módulo.


2

Teste de integração: - Quando o teste de unidade é concluído e os problemas são resolvidos com os componentes relacionados, todos os componentes necessários precisam ser integrados no mesmo sistema para que ele possa executar uma operação. Após combinar os componentes do sistema, Para testar se o sistema está funcionando corretamente ou não, esse tipo de teste é chamado de Teste de Integração.

Teste funcional: - O teste é dividido principalmente em duas categorias como 1. Teste funcional 2. Teste não funcional ** Teste funcional: - Para testar se o software está funcionando de acordo com os requisitos do usuário ou não. ** Teste não funcional: - Para testar se o software atende aos critérios de qualidade, como teste de estresse, teste de segurança etc.

Normalmente, o Cliente fornecerá os requisitos apenas para o Teste Funcional e para o Teste Não-Funcional. Os requisitos não devem ser mencionados, mas o aplicativo necessariamente executa essas atividades.


2

Teste de integração

  • Pode ser visto como os diferentes módulos do sistema trabalham juntos.
  • Nós nos referimos principalmente à funcionalidade integrada dos diferentes módulos, componentes bastante diferentes do sistema.
  • Para que qualquer produto de sistema ou software funcione com eficiência, todos os componentes precisam estar sincronizados.
  • Na maioria das vezes, a ferramenta que usamos para o teste de integração será escolhida para o teste de unidade.
  • É usado em situações complexas, quando o teste de unidade se mostra insuficiente para testar o sistema.

    Teste funcional

  • Pode ser definido como testar a funcionalidade individual dos módulos.
  • Refere-se ao teste do produto de software em um nível individual, para verificar sua funcionalidade.
  • Os casos de teste são desenvolvidos para verificar o software quanto a resultados esperados e inesperados.
  • Esse tipo de teste é realizado mais da perspectiva do usuário. Ou seja, considera a expectativa do usuário para um tipo de entrada.
  • Também é conhecido como teste de caixa preta e teste de caixa fechada


  • 1

    A verificação da funcionalidade do aplicativo é geralmente conhecida como teste funcional, onde o teste de integração é verificar o fluxo de dados de um módulo para outro. Vamos dar um exemplo de aplicativo de transferência de dinheiro. Suponha que tenhamos uma página na qual inserimos todas as credenciais e se pressionarmos o botão de transferência e, depois disso, se obtivermos algum sucesso, então esse é o teste funcional. Mas, no mesmo exemplo, se verificarmos a quantidade transferida, será um teste de integração.


    0

    Os autores divergem muito sobre isso. Não acredito que haja "a" interpretação correta para isso. Isso realmente depende.

    Por exemplo: a maioria dos desenvolvedores do Rails considera testes de unidade como modelos, testes funcionais como testes de controlador e testes de integração como aqueles que usam algo como Capybara para explorar o aplicativo da perspectiva do usuário final - ou seja, navegando pelo HTML gerado pela página, usando o DOM para verificar as expectativas.

    Há também testes de aceitação, que por sua vez são uma documentação "ao vivo" do sistema (geralmente eles usam o Gherkin para possibilitar a gravação em linguagem natural), descrevendo todos os recursos do aplicativo por meio de vários cenários, que por sua vez são automatizados por um desenvolvedor. Esses, IMHO, também podem ser considerados como testes funcionais e testes de integração.

    Depois de entender o conceito-chave por trás de cada um deles, você fica mais flexível em relação ao certo ou errado. Então, novamente IMHO, um teste funcional também pode ser considerado um teste de integração. Para o teste de integração, dependendo do tipo de integração que ele está exercendo, pode não ser considerado um teste funcional - mas você geralmente tem alguns requisitos em mente ao escrever um teste de integração; portanto, na maioria das vezes, também pode ser considerado como um teste funcional.

    Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
    Licensed under cc by-sa 3.0 with attribution required.