differences between unit testing
Uma comparação detalhada de teste de unidade, integração e funcional:
Para qualquer aplicativo de software, tanto o teste de unidade quanto o teste de integração são muito importantes, pois cada um deles emprega um processo único para testar um aplicativo de software.
Mas qualquer um ou mesmo ambos não podem substituir o teste funcional em nenhum ponto.
O que você aprenderá:
- Teste de Unidade Vs Teste de Integração Vs Teste Funcional
- O que é teste de unidade?
- O que é teste de integração?
- Teste de Unidade vs Teste de Integração
- Teste funcional
- Diferença exata
- Conclusão
- Leitura recomendada
Teste de Unidade Vs Teste de Integração Vs Teste Funcional
Teste de unidade significa testar módulos individuais de um aplicativo isoladamente (sem nenhuma interação com dependências) para confirmar se o código está funcionando corretamente.
Teste de integração significa verificar se os diferentes módulos estão funcionando bem quando combinados como um grupo.
Teste funcional significa testar uma fatia de funcionalidade no sistema (pode interagir com dependências) para confirmar se o código está fazendo as coisas certas.
Os testes funcionais estão relacionados aos testes de integração, no entanto, eles significam os testes que verificam toda a funcionalidade do aplicativo com todo o código rodando junto, quase um super teste de integração.
O teste de unidade considera a verificação de um único componente do sistema, enquanto o teste de funcionalidade considera a verificação do funcionamento de um aplicativo em relação à funcionalidade pretendida descrita na especificação de requisitos do sistema. Por outro lado, o teste de integração considera a verificação de módulos integrados no sistema.
E, o mais importante, para otimizar o retorno sobre o investimento (ROI), sua base de código deve ter tantos testes de unidade quanto possível, menos testes de integração e o menor número de testes funcionais.
Isso é melhor ilustrado na seguinte pirâmide de teste:
Os testes de unidade são mais fáceis de escrever e mais rápidos de executar. O tempo e o esforço para implementar e manter os testes aumentam do teste de unidade ao teste funcional, conforme mostrado na pirâmide acima.
Exemplo:
qual é o melhor conversor de youtube para mp3?
Vamos entender esses três tipos de teste com um exemplo simplificado demais.
Por exemplo . Para um telefone móvel funcional, as peças principais necessárias são “bateria” e “cartão SIM”.
Exemplo de teste de unidade - A vida da bateria é verificada, capacidade e outros parâmetros. O cartão SIM é verificado para sua ativação.
Exemplo de teste de integração - A bateria e o cartão SIM estão integrados, ou seja, montados para ligar o celular.
Exemplo de teste funcional - A funcionalidade de um telefone móvel é verificada em termos de recursos e uso da bateria, bem como recursos do cartão SIM.
Vimos um exemplo em termos leigos.
Agora, vamos dar um exemplo técnico de uma página de login:
Quase todo aplicativo da web exige que seus usuários / clientes façam login. Para isso, todo aplicativo deve ter uma página de “Login” que contém os seguintes elementos:
- Nome de usuário da conta
- Senha
- Botão Login / Login
Para Teste de Unidade, os seguintes podem ser os casos de teste:
- Comprimento do campo - campos de nome de usuário e senha.
- Os valores do campo de entrada devem ser válidos.
- O botão de login é habilitado somente depois que os valores válidos (formato e comprimento) são inseridos em ambos os campos.
Para o Teste de Integração, os seguintes podem ser os casos de teste:
- O usuário vê a mensagem de boas-vindas após inserir valores válidos e clicar no botão de login.
- O usuário deve navegar para a página de boas-vindas ou página inicial após uma entrada válida e clicar no botão Login.
Agora, depois que os testes de unidade e integração forem feitos, vamos ver o casos de teste que são considerados para teste funcional:
- O comportamento esperado é verificado, ou seja, o usuário consegue fazer login clicando no botão de login depois de inserir um nome de usuário e uma senha válidos.
- Há uma mensagem de boas-vindas que deve aparecer após um login bem-sucedido?
- Existe uma mensagem de erro que deve aparecer em um login inválido?
- Existem cookies de site armazenados para campos de login?
- Um usuário inativo pode fazer login?
- Existe algum link ‘esqueci a senha’ para os usuários que esqueceram suas senhas?
Existem muitos mais casos semelhantes que vêm à mente de um testador funcional durante a execução de um teste funcional. Mas um desenvolvedor não pode assumir todos os casos durante a construção de casos de teste de Unidade e Integração.
Portanto, há uma abundância de cenários que ainda precisam ser testados, mesmo após os testes de unidade e integração.
Agora é hora de examinar os testes de unidade, integração e funcional um por um.
O que é teste de unidade?
Como o nome sugere, este nível envolve o teste de uma ‘Unidade’.
Aqui, a unidade pode ser a menor parte de um aplicativo testável, seja a menor função individual, método etc. Os desenvolvedores de software são aqueles que escrevem os casos de teste de unidade. O objetivo aqui é combinar os requisitos e o comportamento esperado da unidade.
Abaixo estão alguns pontos importantes sobre o teste de unidade e seus benefícios:
- O teste de unidade é feito antes do teste de integração por desenvolvedores de software usando técnicas de teste de caixa branca .
- O teste de unidade não verifica apenas o comportamento positivo, ou seja, a saída correta no caso de entrada válida, mas também as falhas que ocorrem com entrada inválida.
- Encontrar problemas / bugs em um estágio inicial é muito útil e reduz os custos gerais do projeto. Como o teste de unidade é feito antes da integração do código, os problemas encontrados nesta fase podem ser resolvidos com muita facilidade e seu impacto também é muito menor.
- Um teste de unidade testa pequenos pedaços de código ou funções individuais para que os problemas / erros encontrados nesses casos de teste sejam independentes e não afetem os outros casos de teste.
- Outra vantagem importante é que os casos de teste de unidade simplificam e tornam o teste de código mais fácil. Portanto, fica mais fácil resolver os problemas em um estágio posterior, pois apenas a última alteração no código deve ser testada.
- O teste de unidade economiza tempo e custos, é reutilizável e fácil de manter.
JUnit ( Framework Java ), PHPUnit (estrutura PHP), NUnit (estrutura .Net) etc. são ferramentas populares de teste de unidade usadas para diferentes linguagens.
O que é teste de integração?
O teste de integração testa a integração de diferentes partes do sistema. Duas partes ou módulos diferentes do sistema são integrados primeiro e, em seguida, o teste de integração é executado.
O objetivo do teste de integração é verificar a funcionalidade, confiabilidade e desempenho do sistema quando integrado.
O teste de integração é executado nos módulos que são testados pela unidade primeiro e, em seguida, o teste de integração define se a combinação dos módulos fornece a saída desejada ou não.
O teste de integração pode ser feito por testadores independentes ou também por desenvolvedores.
Existem 3 tipos diferentes de abordagens de teste de integração. Vamos discutir cada um deles brevemente:
youtube to mp4 converter download free version full version
a) Abordagem de integração do Big Bang
Nesta abordagem, todos os módulos ou unidades são integrados e testados como um todo ao mesmo tempo. Isso geralmente é feito quando todo o sistema está pronto para o teste de integração em um único ponto do tempo.
Por favor, não confunda essa abordagem de teste de integração com teste de sistema, apenas a integração de módulos ou unidades é testada e não todo o sistema como é feito no teste de sistema.
A abordagem do big bang é importante vantagem é que tudo integrado é testado ao mesmo tempo.
Um importante desvantagem é que fica difícil identificar as falhas.
Exemplo: Na figura abaixo, a Unidade 1 a Unidade 6 são integradas e testadas usando a abordagem Big Bang.
b) Abordagem Top-Down
A integração das unidades / módulos é testada passo a passo de cima para baixo.
A primeira unidade é testada individualmente por escrito teste STUBS . Depois disso, os níveis inferiores são integrados um a um, até que o último nível seja reunido e testado.
A abordagem de cima para baixo é uma forma muito orgânica de integração, pois é consistente com a forma como as coisas acontecem no ambiente real.
O único preocupação com essa abordagem é que a principal funcionalidade é testada no final.
c) Abordagem Bottom-Up
As unidades / módulos são testados do nível inferior ao superior, passo a passo, até que todos os níveis de unidades / módulos sejam integrados e testados como uma unidade. Programas estimuladores chamados DRIVERS são usados nesta abordagem. É mais fácil detectar problemas ou erros nos níveis mais baixos.
O prefeito desvantagem desta abordagem é que os problemas de nível superior só podem ser identificados no final, quando todas as unidades foram integradas.
Teste de Unidade vs Teste de Integração
Tendo discutido o suficiente sobre o teste de unidade e o teste de integração, vamos examinar rapidamente as diferenças entre os dois na tabela a seguir:
Teste de Unidade | Teste de integração |
---|---|
Realizado na fase inicial de teste e, em seguida, pode ser realizado a qualquer momento | Deve ser realizado após o teste de unidade e antes do teste de sistema |
Testa o único componente de todo o sistema, ou seja, testa uma unidade isolada. | Testa os componentes do sistema trabalhando juntos, ou seja, testa a colaboração de várias unidades. |
Mais rápido de executar | Pode correr devagar |
Sem dependência externa. Qualquer dependência externa é simulada ou eliminada. | Requer interação com dependências externas (por exemplo, banco de dados, hardware, etc.) |
Simples | Complexo |
Conduzido pelo desenvolvedor | Conduzido pelo testador |
É um tipo de teste de caixa branca | É um tipo de teste de caixa preta |
Manutenção barata | Manutenção cara |
Começa com a especificação do módulo | Começa com a especificação da interface |
O teste de unidade tem um escopo estreito, pois apenas verifica se cada pequeno trecho de código está fazendo o que deve. | Tem um escopo mais amplo, pois cobre toda a aplicação |
O resultado do teste de unidade é a visibilidade detalhada do código | O resultado do teste de integração é a visibilidade detalhada da estrutura de integração |
Descubra os problemas dentro da funcionalidade de módulos individuais apenas. Não expõe erros de integração ou problemas de todo o sistema. | Descubra os bugs que surgem quando diferentes módulos interagem entre si para formar o sistema geral |
Teste funcional
PARA técnica de teste de caixa preta , onde a funcionalidade do aplicativo é testada para gerar a saída desejada ao fornecer uma determinada entrada é chamado de 'teste funcional'.
Na nossa processos de teste de software , fazemos isso escrevendo casos de teste de acordo com os requisitos e cenários. Para qualquer funcionalidade, o número de casos de teste escritos pode variar de um a muitos.
Os casos de teste consistem basicamente nas seguintes partes:
- Resumo do Teste
- Pré-requisitos (se houver)
- Etapas de entrada do caso de teste
- Dados de teste (se houver)
- Saída esperada
- Notas (se houver)
“Baseado em Requisitos” e “Baseado em Cenários de Negócios” são as duas formas de teste funcional realizadas.
o que usar em vez de ccleaner
No teste baseado em requisitos, os casos de teste são criados de acordo com o requisito e testados de acordo. Em um teste funcional baseado em cenário de negócios, o teste é executado tendo em mente todos os cenários de uma perspectiva de negócios.
No entanto, o principal desvantagem de teste funcional é a redundância provável no teste e a possibilidade de perder alguns erros lógicos.
Diferença exata
Vamos ver suas diferenças.
Aqui estão alguns dos principais:
Teste de unidade | Teste de integração | Teste funcional | |
---|---|---|---|
Definição e propósito | Testando unidades ou módulos menores individualmente. | Teste de integração de duas ou mais unidades / módulos combinados para a execução de tarefas. | Testando o comportamento do aplicativo de acordo com o requisito. |
Complexidade | Nem um pouco complexo, pois inclui os menores códigos. | Um pouco mais complexo do que os testes de unidade. | Mais complexo em comparação com os testes de unidade e integração. |
Técnicas de teste | Técnica de teste de caixa branca. | Técnica de teste de caixa branca e caixa preta. Teste de caixa cinza | Técnica de teste de caixa preta. |
Atenção principal | Módulos ou unidades individuais. | Integração de módulos ou unidades. | Funcionalidade do aplicativo inteiro. |
Erro / problemas cobertos | Os testes de unidade encontram problemas que podem ocorrer com frequência nos módulos. | Os testes de integração encontram problemas que podem ocorrer durante a integração de diferentes módulos. | Os testes funcionais encontram problemas que não permitem que um aplicativo execute sua funcionalidade. Isso também inclui alguns problemas baseados em cenários. |
Escape do problema | Sem chance de escapar do problema. | Menos chance de escape do problema. | Mais chances de escapar do problema, pois a lista de testes a serem executados é sempre infinita. |
Leia também => O que é teste de recursos
Conclusão
Todos esses três tipos de teste são correlacionados.
Para atingir a cobertura total, é necessário ter testes de unidade para os caminhos / linhas de código, testes funcionais e de integração para garantir que as 'unidades' funcionam juntas de forma coesa.
Espero que este artigo tenha dado a você uma ideia clara sobre os testes de Unidade, Integração e Funcional, juntamente com suas diferenças, embora haja muito mais nessas formas de teste!
Leitura recomendada
- Melhores ferramentas de teste de software 2021 (QA Test Automation Tools)
- Spock para integração e testes funcionais com selênio
- Teste Funcional Vs Teste Não Funcional
- Download do e-book do Testing Primer
- Dez principais ferramentas de teste de integração para escrever testes de integração
- Principais diferenças entre o teste de caixa preta e o teste de caixa branca
- Guia de teste funcional completo com seus tipos e exemplos
- Teste funcional versus teste de desempenho: deve ser feito simultaneamente?