what is incremental testing
Com a ajuda deste artigo, vou cobrir uma das abordagens de integração importantes - teste incremental.
Ao final desta seção, o público terá um bom conhecimento do seguinte:
- O que é teste incremental?
- Seu objetivo
- Metodologias
- Vantagens
- Desvantagens
O que você aprenderá:
- O que é teste incremental
O que é teste incremental
O Teste Incremental, também conhecido como Teste de Integração Incremental, é uma das abordagens do Teste de Integração e incorpora seus conceitos fundamentais.
É como um teste que combina Módulo e Integração estratégia de teste .
Neste teste, testamos cada módulo individualmente na fase de teste de unidade e, em seguida, os módulos são integrados de forma incremental e testados para garantir interface e interação entre os módulos.
Nesta abordagem, cada módulo é combinado de forma incremental, ou seja, um por um até que todos os módulos ou componentes sejam adicionados logicamente para fazer a aplicação necessária, em vez de integrar todo o sistema de uma vez e, em seguida, realizar testes no produto final. Os módulos integrados são testados como um grupo para garantir a integração bem-sucedida e o fluxo de dados entre os módulos.
Como no teste de integração, o foco principal de fazer esse teste é verificar a interface, os links integrados e o fluxo de informações entre os módulos. Este processo é repetido até que os módulos sejam combinados e testados com sucesso.
Exemplo
Vamos entender esse conceito com um exemplo:
O sistema ou aplicativo de software consiste nos seguintes Módulos:
Abordagem de teste de integração incremental
- Cada módulo, ou seja, M1, M2, M3, etc., são testados individualmente como parte do teste de unidade
- Os módulos são combinados de forma incremental, ou seja, um por um e testados para interação bem-sucedida
- Na Fig2, Módulo M1 e Módulo M2 são combinados e testados
- Na Fig3, Módulo M3 é adicionado e testado
- Na Fig4, o Módulo M4 é adicionado e o teste é feito para garantir que tudo funcione junto com sucesso
- O restante dos módulos também são adicionados de forma incremental em cada etapa e testados para integração bem-sucedida
Figura 2
Fig3
conceitos de programação orientada a objetos c #
Fig4
Objetivo do Teste Incremental
- Para garantir que diferentes módulos funcionem juntos com sucesso após a integração
- Identifique os defeitos mais cedo e em cada fase. Isso dá aos desenvolvedores uma vantagem para identificar onde está o problema. Como se o teste após M1 e M2 serem integrados for bem-sucedido, mas quando M3 for adicionado, o teste falhará; isso ajudará o desenvolvedor a segregar o problema
- Os problemas podem ser corrigidos na fase inicial sem muito retrabalho e com menos custo
Metodologias de teste de integração incremental
Antes de começarmos com este tópico, gostaria de fazer uma breve introdução sobre Stubs e drivers já que usaremos esses termos com freqüência.
Stubs e drivers são pseudo código ou código fictício usado na integração ou teste de componente quando um ou mais módulos não são desenvolvidos, mas são necessários para testar algum outro módulo.
Stubs são usados na abordagem de teste Top-down e são conhecidos como “programas chamados”. Os stubs ajudam a simular a interface entre os módulos da alavanca inferior que não estão disponíveis ou não foram desenvolvidos.
Motoristas são usados na abordagem de teste Bottom-up e são conhecidos como “programas de chamada”. Os drivers ajudam a simular a interface entre os módulos de nível superior que não estão desenvolvidos ou disponíveis.
Uma pergunta que pode ocorrer a alguns de nós é por que não esperar até que todos os módulos do aplicativo sejam desenvolvidos em vez de usar stub / driver antes de iniciar o teste?
A resposta simples é que isso aumenta o tempo de execução do projeto, pois os testadores ficarão ociosos até que todos os módulos sejam desenvolvidos. Além disso, isso dificulta a análise da raiz do defeito. Esse tipo de abordagem de teste é conhecido como teste de integração Big-Bang.
Agora que cobrimos Stubs e drivers, vamos passar para diferentes metodologias de teste incremental:
# 1) De cima para baixo
Como o nome sugere, o teste ocorre de cima para baixo, ou seja, do módulo central para o submódulo. Os módulos que enquadram a camada superior da aplicação são testados primeiro.
Essa abordagem segue o fluxo estrutural do aplicativo em teste. Módulos ou componentes indisponíveis ou não desenvolvidos são substituídos por stubs.
Vamos entender isso com um exemplo:
- Módulo : Login no site, também conhecido como L
- Módulo : Pedido também conhecido como O
- Resumo do pedido do módulo, também conhecido como SO (ainda não desenvolvido)
- Módulo : Pagamento também conhecido como P
- Módulo de Pagamento em Dinheiro, também conhecido como CP
- Módulo de Débito / Crédito, também conhecido como DP (ainda não desenvolvido)
- Módulo Wallet Payment aka WP (ainda não desenvolvido)
- Módulo: Reporting aka R (ainda não desenvolvido)
Abordagem de teste de integração incremental de cima para baixo
Os seguintes casos de teste serão derivados:
Caso de teste 1: Módulo L e Módulo O serão integrados e testados
Caso de teste 2: Módulo L, O e P serão integrados e testados
Caso de teste 3: Módulos L, O, P e R serão integrados e testados.
E assim por diante, outros casos de teste são derivados.
o gateway padrão não está disponível o Windows 10 continua acontecendo
Esse tipo de teste em que todos os módulos em uma camada são integrados e testados pela primeira vez é conhecido como “amplitude”. Outra categoria é “primeiro em profundidade”.
Os seguintes casos de teste serão derivados para 'profundidade em primeiro lugar':
Caso de teste 1: Módulo L e Módulo O serão integrados e testados
Caso de teste 2: Módulo L, O e SO serão integrados e testados
Caso de teste 3: Módulo L, O, OS, P será integrado e testado
Caso de teste 4: Módulo L, O, OS, P, CP será integrado e testado
E assim por diante, outros casos de teste são derivados.
Méritos da metodologia de cima para baixo
- Exposição precoce de defeitos de arquitetura
- Ele descreve o funcionamento de um aplicativo como um todo nos estágios iniciais e ajuda na divulgação antecipada de defeitos de design
- Os principais pontos de controle são testados cedo
De-méritos da metodologia de cima para baixo
- Módulos significativos são testados no final do ciclo
- É muito desafiador escrever condições de teste
- Um stub não é uma implementação perfeita de um módulo relacionado. Ele apenas simula o fluxo de dados entre dois módulos
# 2) De baixo para cima
Nesta abordagem, o teste ocorre de baixo para cima, ou seja, os módulos na camada inferior são integrados e testados primeiro e, em seguida, sequencialmente, outros módulos são integrados à medida que avançamos. Módulos indisponíveis ou não desenvolvidos são substituídos por drivers.
Vejamos um exemplo mencionado abaixo para melhor compreensão:
Módulos de classificação, notas, porcentagem e nota esportiva ainda não foram desenvolvidos, então eles serão substituídos pelo driver relacionado:
Abordagem de teste de integração incremental ascendente
Os seguintes casos de teste serão derivados:
Caso de teste 1: Teste de unidade do módulo Prático e Teórico
Caso de teste 2: Integração e teste de Módulos Marcas-Teoria-Prática
Caso de Teste 3 : Integração e Teste de Módulos Percentagem-Marcas-Prática-Teoria
Caso de teste 4: Teste de unidade do Módulo Sports Grade
Caso de teste 5: Integração e teste de Módulos Classificação - Esportes Grau-Percentagem-Marcas-Prática-Teoria
Méritos da Metodologia Bottom-up
- Esta metodologia é muito útil para aplicações onde o modelo de design de baixo para cima é usado
- É mais fácil criar condições de teste na abordagem ascendente
- Começar o teste no nível inferior da hierarquia significa testar módulos ou funcionalidades críticas em um estágio inicial. Isso ajuda na descoberta precoce de erros
- Os defeitos da interface são detectados na fase inicial
De-méritos da Metodologia Bottom-up
- Os drivers são mais difíceis de escrever do que stub
- Os defeitos de design são detectados na fase posterior
- Nesta abordagem, não temos um aplicativo funcionando até que o último módulo seja compilado
- O driver não é uma implementação completa do módulo relacionado. Ele apenas simula o fluxo de dados entre dois módulos.
# 3) Teste de sanduíche
Essa abordagem é um híbrido de metodologia de cima para baixo e de baixo para cima. Stub e drivers são usados para módulos incompletos ou não desenvolvidos.
Abordagem de Teste
- Uma camada intermediária é identificada, a partir da qual os testes de baixo para cima e de cima para baixo são feitos. Esta camada do meio também é conhecida como camada de destino
- A camada de destino é identificada de acordo com a abordagem heurística, ou seja, selecione uma camada que permita o uso mínimo de Stubs e drivers
- O teste de cima para baixo começa na camada intermediária e segue para baixo em direção aos módulos de nível inferior. Esta camada abaixo da camada do meio é conhecida como camada inferior
- O teste ascendente também começa na camada intermediária e sobe em direção aos módulos da camada superior. Esta camada acima da camada do meio é conhecida como camada superior
- Com o uso de stubs e drivers, a interface do usuário e as funções dos módulos de nível inferior são testados respectivamente
- No final, apenas a camada intermediária é deixada para a execução do teste final
Exemplo:
Os seguintes casos de teste podem ser derivados com a Estratégia de Teste Sanduíche:
Caso de teste 1: Teste A, X, Y e Z individualmente - onde o Teste A vem em teste de camada superior e o Teste X, Y e Z vem em testes de camada inferior
Caso de teste 2: Teste A, G, H e I
Caso de teste 3: Teste G, X e Y
Caso de teste 4: Mão de teste Z
Caso de teste 5: Teste A, G, H, I, X, Y e Z
Méritos da metodologia de teste de sanduíche
- É muito benéfico para um grande projeto que tem vários subprojetos
- A metodologia de teste de cima para baixo e de baixo para cima pode ser executada lado a lado
De-méritos da metodologia de teste de sanduíche
- Antes da unificação do módulo, os subsistemas e suas interfaces não são testados completamente
- Custo mais alto devido ao envolvimento da metodologia de teste de cima para baixo e de baixo para cima
- Este tipo de teste não é recomendado para um sistema onde os módulos são altamente interdependentes
Conclusão
O Teste Incremental vem sob o manto dos testes de integração. Nesta abordagem de teste, o teste de integração é feito no módulo individual como parte do teste de unidade e, na próxima fase, os módulos ou componentes do aplicativo são integrados de forma incremental e o teste é realizado em módulos combinados como um grupo.
Das três metodologias de Teste de Integração Incremental, a escolha da metodologia a ser escolhida depende da estrutura da aplicação e também da posição dos módulos de alto risco.
Todas as três metodologias de teste incremental estão na categoria Horizontal devido aos seguintes aspectos comportamentais:
- Todas as três metodologias se concentram em testes de camada
- Todos eles consideram um projeto estrutural ou hierárquico
- Todos eles integram camadas de forma incremental
Méritos:
Com essa abordagem de teste, é mais fácil identificar defeitos antecipadamente e também ajuda o desenvolvedor a determinar a causa do problema. Uma vez que usa os princípios básicos de teste estruturado, essa abordagem de teste é muito eficaz e precisa.
Deméritos:
Esse tipo de abordagem de teste é demorado devido ao uso de stubs e drivers. Também é repetitivo.
Sobre a autor: Este tutorial útil foi escrito por Neha B. Ela é Analista de Qualidade de Líderes certificada pelo ISTQB com mais de 8 anos de experiência.
Deixe-nos saber se você tiver alguma dúvida / sugestão.
Leitura recomendada
- Melhores ferramentas de teste de software 2021 [QA Test Automation Tools]
- O que é Teste de Componente ou Teste de Módulo (Aprenda com Exemplos)
- Download do e-book do Testing Primer
- Teste Funcional Vs Teste Não Funcional
- O que é teste de resistência em teste de software (exemplos)
- Tutorial de Teste Pairwise ou Teste All-Pairs com ferramentas e exemplos
- Tipos de teste de software: diferentes tipos de teste com detalhes
- Tutorial de teste de volume: exemplos e ferramentas de teste de volume