FL-2.2.1-B (K2) Compare os diferentes níveis de teste da perspectiva de seus objetivos, da base de teste, dos artefatos de teste, das falhas e defeitos típicos e das abordagens e responsabilidades.

Tópico - Progresso:

Visão Geral – Teste Integração

 

 

O teste de integração supõe que os componentes já foram testados. Eventuais defeitos deveriam ter sido corrigidos.

 

A integração

 

Grupos de componentes são integrados de modo a formar e subsistemas. É realizada por desenvolvedores, testadores, ou equipes especiais de integração. Depois da integração dos componentes, deve ser confirmada através de testes que todos os componentes funcionam corretamente. O objetivo deste teste de integração é expor falhas nas interfaces e na interação entre os componentes integrados.

 

 

Exemplo de um defeito de integração – Sistema DreamCar

 

 

check_config () recupera os dados do veículo de um banco de dados e os apresenta para o usuário através de uma interface gráfica. check_config () valida a configuração escolhida – veículo, extras e equipamentos. calculate_price() efetua o cálculo do preço baseado nas informações de check_config().

 

Assim, o total resultante do veículo escolhido, o modelo especial, e os equipamentos extra deve ser de:

29.000 +  1.413 + 900 = 31.313

 

 

No entanto, o preço indicado é de apenas 30.413. Em algum lugar no caminho da interface gráfica para calculate_price () perdeu-se o fato de que rodas de liga leve foram escolhidas. Mesmo se um teste de unidade completo tenha sido executado anteriormente, esses problemas de interface ainda podem ocorrer. Daí a necessidade do teste de integração.

 

Há ainda que se considerar as integrações com interfaces  para outros sistemas.

 Nesse caso trata-se de um “teste de integração de sistemas” (diferentemente do teste de integração de componentes).

 

 

Um teste de integração passada não é garantia de um funcionamento perfeito para a integração do momento atual.

 

Drivers:

Drivers de teste também são necessários no teste de integração. Como os objetos de teste são componentes que não têm interfaces externas é sensato reutilizar os drivers de testes que foram usados nos testes unitários.

 

Reutilização:

Em um teste unitário mal organizado pode haver drivers de testes para apenas alguns dos componentes. O testador agora em um estágio muito mais avançado do projeto gastará muito esforço para a criação , alteração ou reparo do ambiente de teste, o que significa perder um tempo valioso para o teste.

 

Monitores:

São programas necessários para os testes de integração, que leem e registram o tráfego de dados entre componentes. Monitores de protocolos de rede estão disponíveis comercialmente. Monitores especiais devem ser desenvolvidos para a observação de interfaces de componentes específicos.

 


O teste de integração visa  revelar problemas de interface, de cooperação bem como os conflitos entre as partes integradas.


 

Erro no formato da interface:

 

→  Formatos de interface incompatíveis entre dois componentes.

→  Falta de arquivos.

→  Programadores dividiram o sistema em componentes completamente diferentes do que estavam no projeto original.

 

Erro na troca de dados:

 

→  Um componente envia dado errado ou nenhum dado.

→  A comunicação funciona, mas os componentes envolvidos interpretam os dados recebidos de uma forma diferente.

→ Os dados são transmitidos corretamente, mas é transmitida na hora errada , ou os intervalos entre as transmissões são muito curtos.

 

É mais difícil encontrar problemas quando da execução de partes conectadas dos programas. Estes só podem ser encontrados por meio de testes dinâmicos.

 

Exemplos:

 

→  Acessórios opcionais selecionados não são repassados ​​para check_config (). Portanto, o preço e os dados do pedido estariam errados.

→  Um código, por exemplo 442 para azul metálico, representa a cor do carro. No sistema de gerenciamento de pedidos em execução no mainframe, os códigos são interpretados de forma diferente e 442 representa vermelho. Um pedido correto no feito no DREAMCAR levaria a entrega de um produto errado.

→  O mainframe confirma um pedido após verificar a viabilidade da entrega. Em alguns casos, esta verificação leva tanto tempo que o DREAMCAR assume uma falha de transmissão e aborta o pedido. Assim um cliente não seria capaz de finalizar o seu pedido.

 

É possível fazer o teste de integração sem ter feito o teste unitário?

Sim, mas com as seguintes desvantagens:

 

→  A maioria dos defeitos ocorrerão ​​por falhas funcionais localizadas nos componentes e não na integração entre eles.

→  Um teste de componente acaba sendo realizado em um ambiente inadequado, onde é mais difícil de acessar os componentes individuais.

→  Devido a dificuldade de acesso ao componente individualmente,  muitas falhas podem não serem identificadas.

→  No caso de uma falha, pode ser difícil ou mesmo impossível localizar sua origem e isolar a sua causa.

 

O custo de cortar o teste de componente é identificar menos falhas existentes e ter mais dificuldade no diagnóstico, resultando em > esforço em vez de < esforço.  A combinação de um teste unitário e em sequência um teste de integração é mais eficaz e eficiente.

 

Em que ordem os componentes devem ser integrados para maior eficiência?

Uma estratégia trivial é integrar os componentes na ordem em que eles ficarem prontos.

 

 

→  O planejamento de teste de integração deve buscar uma entrega de componentes que reduza os risco do projeto.

→  O gerente do projeto e o de teste não podem permitir que os testadores fiquem parados até a finalização de todos os componentes.

→  Os componentes são finalizados em momentos diferentes.

 

Quanto mais cedo o teste de integração é iniciado (a fim de economizar tempo), mais esforço é necessário para a programação de stubs.

 

 

O gerente de teste tem que escolher sua estratégia de integração para otimizar os dois fatores economia de tempo versus custo para o ambiente de teste.

 

A melhor estratégia para o teste de integração dependerá das circunstâncias individuais de cada projeto. Os seguintes itens devem ser analisados:

 

 

Como a estratégia de integração depende da data de entrega, o gerente de teste deve interagir com o gerente do projeto na elaboração do plano de projeto. A ordem de implementação dos componentes deve ser adequada aos testes de integração.

 

Estratégias de Integração de Componentes

 

Na integração Top-down o teste inicia-se com o componente de nível superior do sistema que chama outros componentes. Stubs substituem todos os componentes subordinados. A integração prossegue com componentes de nível mais baixo. O nível mais elevado que já foi testado serve como driver de teste.

 

 

Na integração Bottom-up o teste inicia-se com os componentes de mais baixo nível do sistema e que não invocam componentes adicionais. Subsistemas maiores são montados a partir de componentes testados e, em seguida essas partes integradas são testadas.

 

 

Na integração Ad hoc os componentes vão sendo integrados na ordem em que são finalizados.

Vantagem: Cada componente é integrado o mais cedo possível.

Desvantagem: Stubs e drivers são necessários.

 

Na integração Backbone uma espinha dorsal é construída, na qual os componentes são gradualmente integrados.

Vantagem: Os componentes podem ser integrados em qualquer ordem.

Desvantagem: Dificuldade na criação do backbone.

 


Integrações Top-down ou Bottom-up só podem ser aplicadas para sistemas que foram estruturados de uma forma estritamente hierárquica, o que é muito raro. Esta é a razão pela qual uma mescla das estratégias de integração mencionadas deve ser utilizada.


 

Integração Big Bang significa não fazer a integração até que todos os componentes estejam finalizados e, em seguida, fazer toda a integração em uma única etapa. Isto acontece devido à falta de uma estratégia de integração. No pior dos casos, até o teste unitário é ignorado.

Vantagem: Não há.

Desvantagem: O tempo gasto até o big bang é perda de tempo que poderia ter sido gasto em testes. Todas as falhas irão ocorrer ao mesmo tempo. Vai ser difícil, se não impossível, fazer todo o sistema rodar ao mesmo tempo.