Técnicas de Integração de Sistema – Big Bang e Sandwich

Para finalizar a série de posts sobre técnicas de integração de sistema, irei abordar a técnica Big-bang e a Sandwich.

Big-Bang

big-bang

Na técnica Big-bang, os módulos são testados isoladamente e depois integrados de uma só vez, como pode ser visto na figura abaixo.

Integração usando a técnica Big Bang

Para executar uma integração usando a técnica Big-bang necessitamos de stubs e drives para testar os módulos isoladamente.

Ela é normalmente usada devido às pressões do dia a dia e os testes são aplicados para demonstrar uma operabilidade mínima do sistema.

O maior problema do uso da técnica Big-bang é caso haja alguma falha na interface de um módulo com outro, pois neste caso, será difícil ser preciso e encontrar a causa da falha. Já que ela é uma técnica que usa uma abordagem não incremental.

Vantagens

  • Conveniente para sistemas pequenos

Desvantagens

  • Necessita de drivers e stubs para cada módulo;
  • Só permite o teste em paralelo no início dos testes;
  • Localização difícil da falha;
  • Fácil perder falhas de interface.

Sandwich

Sanduíche de mortadela do Bar do Mané no Mercadão SP

Na técnica Sandwich, um sistema é integrado misturando a técnica Top-down com a Botton-up, dividindo o sistema em três camadas:

  • Lógica – camada que contém os módulos que são mais frequentemente chamados. Esta camada é testada utilizando a técnica Bottom-up;
  • Meio (middle) – são os restantes dos módulos;
  • Operacional- camada que contém os módulos principais, do ponto de vista operacional. Sendo testada utilizando a técnica Top-down.

Muitas vezes uma abordagem combinada Top-down para os níveis superiores e Botton-up para os níveis inferiores pode ser o melhor ajuste para o teste de integração da sua aplicação. Se os níveis superiores da estrutura do programa forem integrados de cima para baixo, o número de drivers pode ser reduzido substancialmente na integração dos módulos inferiores. Agora se os módulos inferiores forem integrados de baixo para cima, o número de clusters (módulos que executam uma sub-função do sistema) pode ser reduzido substancialmente na integração dos módulos superiores.

Usando a técnica Sandwich a integração é mais flexível e adaptativa, porém ela é mais complexa de ser planejada.

Comparação

Para encerrar o último post dessa série, segue abaixo, uma tabela comparativa das 4 técnicas de integração que vimos nessa série:

Tabela Comparativa

Fique por dentro das novidades, assine o feed do QualidadeBR.

Fonte:

Chapter 8 – Testing the Programs, Software Engineering: Theory and Practice: wps.prenhall.com/wps/media/objects/3087/3161346/slides08.ppt

V. Binder. Testing Object-Oriented System: Models, Patterns, and Tools. Addison Wesley, 2000.

Aula 13 – Teste de Software, Walter de Abreu Cybis: http://www.inf.ufsc.br/~cybis/ine5322/Aula13_Teste_de_SW_cont.pdf

System Integration, Dr. Stéphane S. Somé. University of Ottawa: http://www.site.uottawa.ca/~ssome/Cours/SEG3203/integration.pdf

Técnicas de Integração de Sistema – Bottom Up

Continuando a série de posts sobre as técnicas de integração de sistema, aliás, preciso parar de começar e não terminar essas séries de posts (a das resoluções de questões da CTFL terminou, pelo menos por enquanto :)).

No último post sobre técnicas de integração de sistema, tínhamos comentado sobre a Top-down. Agora irei falar sobre a inversa da Top-down a Botton-up.

Na técnica Botton-up, a integração do sistema começa com a partir do nível mais baixo do software, ou seja, o módulo. O módulo é dito como o mais baixo nível se ele não depende de outro módulo. A Bottom-Up assume que todos os módulos foram individualmente testados antes.

Para integrar um conjunto de módulos usando a Bottom-Up, nós precisamos construir driver (controlador) que chamará o módulo a ser integrado. Uma vez que a integração de um grupo de baixo nível de módulos tenha sido considera satisfatória, o driver irá substituir o atual módulo e um ou mais drivers serão usados para integrar mais módulos com um conjunto de módulos já integrados. O processo de integração Botton-Up continua até todos os módulos terem sido integrados.

Segue abaixo um exemplo de uma integração usando a técnica Botton-up:

Integração Bottom-up dos módulos E, F, e G

Integração Bottom-up dos módulos E, F, e G

Integração Bottom-up dos módulos B, C, e D com o E, F, e G

Integração Bottom-up dos módulos B, C, e D com o E, F, e G

Integração Bottom-up do módulo A com todos os outros.

Integração Bottom-up do módulo A com todos os outros.

As vantagens da técnica Botton-up são:

  • Permite verificação antecipada de comportamento de baixo nível;
  • Stubs não são necessários;
  • Mais fácil para formular dados de entrada para algumas sub-árvores;
  • Mais fácil para interpretar dados de saída para outras sub-árvores.

As desvantagens da técnica Botton-up são:

  • Os testadores não podem visualizar as funções em nível de sistema a partir de uma parte do sistema já integrada. Aliás, eles não podem visualizar as funções em nível de sistema até o último driver ser colocado;
  • Geralmente, as decisões principais estão incorporadas nos módulos de alto nível. Desta maneira as principais falhas do sistema não podem ser encontradas até que os módulos de alto nível estejam integrados. Logo a verificação de comportamento de  alto nível é retardada.

Após ter visto a técnica Botton-up e a Top-down (aqui), podemos comparar as duas:

  • Validação das principais decisões: Os módulos de alto nível contêm as principais decisões. As falhas na modelagem dessas decisões são detectadas antecipadamente, se a integração realizada é a Top-down. Na técnica Botton-up, essas falhas são detectadas no final do processo de integração;
  • Dificuldade em elaborar os casos de teste: na abtécnica Top-down, como mais e mais módulos são integrados e stubs são utilizados mais distantes do módulo de alto nível, torna-se cada vez mais difícil a elaboração do comportamento do stub e a entrada do teste. No entanto, na técnica Botton-up, um comportamento é elaborado para um driver, através da simplificação de um comportamento de real do módulo;
  • Reusabilidade de casos de teste: usando a técnica Top-down os casos de teste são elaborados para testar a interface de um novo módulo e pode ser reusado para fazer testes de regressão nas próximas iterações. E futuramente os casos de teste podem ser reusados para o teste de nível de sistema. No entanto, usando a técnica Botton-up, todos os casos de testes incorporados aos drivers, exceto o driver para o teste alto nível, não podem ser reusados.

Fique por dentro das novidades, assine o feed do QualidadeBR.

Assine o feed

Fonte:

NAIK, Kshirasagar; TRIPATHY, Priyadarshi. Software Testing and Quality Assurance. Hoboken (New Jersey): John Wiley & Sons, Inc., 2008.

Teste de Integração, Sistema e Aceitação, Alexandre Mota. (link)

Técnicas de Integração de Sistema – Top Down

A Top Down, que em tradução literal seria algo como “de cima para baixo”, é uma das técnicas mais conhecidas para teste de Integração usando a abordagem incremental.

Como se pode perceber pelo próprio nome, usando a técnica Top-down, o teste começa do nível mais alto para o mais baixo, ou seja, os componentes de mais alto nível são integrados primeiro.

Para entender melhor, vamos pensar no exemplo abaixo:

Exemplo Top Down

Exemplo Top Down

Como pode ser percebido, o sistema nesse exemplo, é o álbum de música, que é formado por várias músicas, que serão chamadas de componentes. Por fim, uma música é formada pela junção de vários instrumentos, que serão chamados de módulos.

Pela técnica Top-down iremos primeiro testar os componentes de alto nível, que são as músicas, só para depois verificar cada módulo (instrumento) de cada componente (música).

Algo importante de se notar, é que no final do Teste de Integração teremos a integração dos módulos testados e não o sistema como um tudo. Na analogia apresentada, teríamos cada música verificada e não o álbum inteiro. O teste que verificaria o álbum inteiro seria o Teste de Sistema.

Vantagens

  • Permite verificação antecipada de comportamento de alto nível;
  • Módulos podem ser adicionados, um por vez, em cada passo, se desejado;
  • Permiti a busca em profundidade (depth-first search) e a busca em largura (breadth-first search).

Desvantagens

  • Retarda verificação de comportamento de baixo nível;
  • Entradas de casos de teste podem ser difíceis de formular, por geralmente, demandar de uma entrada maior de informações;
  • Saídas de casos de teste podem ser difíceis de interpretar, cada passo executado, pode gerar um resultado e o Tester deverá ficar atento a esses resultados, pois essas saídas intermediárias pode apresentar alguma inconsistência.

Bem, hoje vimos como que a técnica Top-down funciona na realização dos Testes de Integração, espero ter ajudado na compreensão dessa técnica, caso tenha ficado alguma dúvida, sinta-se à vontade em colocá-la nos comentários. Até a próxima!

Fique por dentro das novidades, assine o feed do QualidadeBR.

Fonte:

Teste de Integração, Sistema e Aceitação, Alexandre Mota. (link)

Técnicas de Integração de Sistema – Incremental

Ao realizar os testes de integração uma dúvida que pode surgir é a de como combinar os módulos do software. Existem 5 abordagens diferentes para realizar a junção dos módulos, a fim de obter a montagem de todo o sistema:

  • Incremental
  • Top down
  • Bottom up
  • Sandwich
  • Big bang

Neste post, irei falar sobre a abordagem Incremental, que como o próprio nome sugere ocorre aos poucos, módulo a módulo.

A interação ocorre através de uma série de ciclos de teste. Em cada ciclo de teste, os módulos vão se integrando com os já existentes e testados para gerar maiores módulos. A idéia é concluir um ciclo de testes, os desenvolvedores corrigirem todos os erros encontrados, e continuar o próximo ciclo de testes. O sistema completo é construído incrementalmente, ciclo por ciclo, até que o sistema esteja operacional e pronto para a realização dos testes de nível de sistema.

Uma aplicação da abordagem Incremental ocorre frequentemente na fabricação de bolos: a confeiteira degusta a massa do bolo antes de colocá-la no forno, e antes de colocar a cobertura ela verifica a sua consistência e sabor.

A seguir veremos as vantagens e desvantagens do uso da abordagem Incremental na realização dos testes de integração, sendo interessante notar que boa parte das vantagens e desvantagens apresentadas, também ocorre no desenvolvimento incremental.

Vantagens

  • O tester não precisa esperar até que todo o sistema esteja pronto, para iniciar os testes;
  • Há um menor risco de fracasso geral do projeto, já que cada módulo é verificado antes e caso algo esteja errado a correção será implementada já no próximo ciclo de teste;
  • A integração dos módulos só é realizada, após eles já terem sido verificados, ou seja, se algum erro acontecer a causa, provavelmente, será a comunicação entre esses módulos.

Desvantagens

  • A modulação pode ser uma tarefa difícil de ser realizada, pois os módulos necessitam ser pequenos, mas com alguma funcionalidade completa;
  • Em determinadas situações, a realização do teste só poderá ser feita com a utilização de Mock Object.

Considerações Finais

Na utilização da abordagem Incremental para a realização dos testes de integração, alguns aspectos devem ser considerados, tendo em vista o número de ciclos de testes:

  • O número de módulos do sistema;
  • A complexidade dos módulos;
  • A complexidade da interface entre os módulos;
  • O número de módulos a serem usados para o agrupamento em cada ciclo de teste;
  • Verificar se os módulos a serem integrados foram devidamente testados antes;
  • O tempo de resposta da equipe de desenvolvimento em cada ciclo de teste.

Por hoje é só pessoal. Em breve comentarei sobre a técnica Top-down, que é uma técnica de fazer a integração de forma incremental. Até lá!

Fique por dentro das novidades, assine o feed do QualidadeBR.

Fonte:

NAIK, Kshirasagar; TRIPATHY, Priyadarshi. Software Testing and Quality Assurance. Hoboken (New Jersey): John Wiley & Sons, Inc., 2008.

alisson.brito.googlepages.com/ProcessoDeSoftware_AlissonBrito.ppt