O que é o Teste de Integração de Sistemas?
Teste de Integração de Sistemas (SIT) é o teste global de todo o sistema que é composto por muitos sub-sistemas. O principal objectivo do SIT é assegurar que todas as dependências dos módulos de software estão a funcionar correctamente e que a integridade dos dados é preservada entre módulos distintos de todo o sistema.
SUT (System Under Test) pode ser composto por hardware, base de dados, software, uma combinação de hardware e software ou um sistema que requer interacção humana (HITL – Human in the Loop Testing).
Do contexto da engenharia de software e dos testes de software, o SIT pode ser considerado como um processo de teste que verifica a co-ocorrência do sistema de software com outros.
SIT tem um pré-requisito no qual múltiplos sistemas integrados subjacentes já foram submetidos e passaram nos testes do sistema. O SIT testa então as interacções necessárias entre estes sistemas como um todo. Os resultados do SIT são passados ao UAT (User acceptance testing).
Need of System Integration Test
A principal função do SIT é fazer o teste de dependências entre diferentes componentes do sistema e, portanto, o teste de regressão é uma parte importante do SIT.
Para projectos colaborativos, o SIT é uma parte do STLC (Software Testing lifecycle). Geralmente, uma ronda pré-SIT é conduzida pelo fornecedor de software antes do cliente executar os seus próprios casos de teste SIT.
Na maioria das organizações que trabalham em projectos de TI seguindo o modelo Agile sprint, uma ronda de SIT é conduzida pela equipa de GQ antes de cada lançamento. Os defeitos encontrados no SIT são enviados de volta à equipa de desenvolvimento e trabalham nas correcções.
O lançamento do MVP (Produto Mínimo Viáveis) do sprint só vai quando este passa pelo SIT.
SIT é necessário para expor as falhas que ocorrem quando a interacção acontece entre os subsistemas integrados.
Existem vários componentes utilizados no sistema e não podem ser testados individualmente por unidade. Mesmo que a unidade seja testada individualmente, também há a possibilidade de falhar quando combinada no sistema, pois há muitos problemas que surgem quando os subsistemas interagem uns com os outros.
Assim, o SIT é muito necessário para expor e corrigir as falhas antes de implantar o sistema no fim do utilizador. O SIT detecta os defeitos numa fase inicial e assim poupa o tempo e o custo da sua reparação mais tarde. Também ajuda a obter feedback mais cedo sobre a aceitabilidade do módulo.
A granularidade do SIT
SIT pode ser realizada em três níveis diferentes de granularidade:
(i) Testes Intra-Sistemas: Este é um baixo nível de testes de integração que visa fundir os módulos para construir um sistema unificado.
(ii) Testes Intra-Sistemas: Este é um teste de alto nível que necessita de fazer interface com sistemas testados independentemente.
(iii) Testes em pares: Aqui, apenas dois subsistemas interligados em todo o sistema são testados de cada vez. Isto visa assegurar que os dois subsistemas podem funcionar bem quando combinados em conjunto, presumindo que os outros subsistemas já estão a funcionar bem.
Como realizar testes de integração de sistemas?
A forma mais simples de realizar o SIT é através do método Data-driven. Requer o uso mínimo de ferramentas de teste de software.
P>Primeiro, o intercâmbio de dados (importação e exportação de dados) acontece entre os componentes do sistema e depois o comportamento de cada campo de dados dentro da camada individual é examinado.
Após o software estar integrado, há três estados principais de fluxo de dados como mencionado abaixo:
#1) Estado dos dados dentro da camada de integração
A camada de integração actua como uma interface entre a importação e exportação de dados. A execução do SIT nesta camada requer alguns conhecimentos básicos sobre certas tecnologias como o esquema (XSD), XML, WSDL, DTD, e EDI.
O desempenho do intercâmbio de dados pode ser examinado nesta camada através dos passos abaixo:
- Validar as propriedades dos dados dentro desta camada contra BRD/ FRD/ TRD (Documento de requisitos comerciais/ Documento de requisitos funcionais/ Documento de requisitos técnicos).
- Verifica o pedido de serviço web utilizando XSD e WSDL.
- Executar alguns testes unitários e validar os mapeamentos e pedidos de dados.
- Realizar os registos de middleware.
#2) Estado dos dados dentro da camada de base de dados
Executar o SIT nesta camada requer um conhecimento básico de SQL e procedimentos armazenados.
O desempenho da troca de dados nesta camada pode ser examinado através dos seguintes passos:
- Verifica se todos os dados da camada de integração chegaram com sucesso à camada de base de dados e foram comprometidos.
- Validar as restrições e as regras de validação de dados aplicadas na base de dados de acordo com as especificações da empresa.
- Verifica os procedimentos armazenados para qualquer processamento de dados.
- Reveja os registos do servidor.
li>Validar as propriedades da tabela e da coluna contra BRD/ FRD/ TRD.
#3) O estado dos dados dentro da camada Aplicação
SIT pode ser executado nesta camada através dos passos abaixo:
- Verifica se todos os campos requeridos estão visíveis na IU.
- Executar alguns casos de teste positivos e negativos e validar as propriedades dos dados.
Nota: Pode haver muitas combinações correspondentes à importação e exportação de dados. Terá de executar o SIT para as melhores combinações, considerando o tempo disponível.
Testes do Sistema Vs Testes de Integração do Sistema
Diferenças entre Testes do Sistema e SIT:
SIT (System Integration Testing) | |
---|---|
SIT é feito principalmente para verificar como os módulos individuais interagem uns com os outros quando integrados num sistema como um todo. | Teste do sistema é feito principalmente para verificar se todo o sistema está a funcionar como esperado com referência aos requisitos especificados. |
É conduzido após o teste da unidade e será feito sempre que um novo módulo for adicionado ao sistema. | É conduzido ao nível final i.e. após a conclusão dos testes de integração e imediatamente antes de entregar o sistema para UAT. |
É um teste de baixo nível. | É um teste de alto nível. |
Casos de teste do SIT centram-se na interface entre os componentes do sistema. | Casos de teste, neste caso, focam-se na simulação dos cenários da vida real. |
Teste de Integração do Sistema Vs Teste de Aceitação do Utilizador
Aqui está a diferença entre o SIT e o UAT:
SIT (Teste de Integração do Sistema) | UAT (Aceitação do Utilizador Testing) |
---|---|
Este teste é da perspectiva de interface entre módulos. | Este teste é da perspectiva dos requisitos do utilizador. |
SIT é feito por desenvolvedores e testadores. | UAT é feito por clientes e utilizadores finais. |
Done after unit testing and before system testing. | Este é o último nível de testes e é feito após os testes do sistema. |
De um modo geral, os problemas encontrados no SIT estariam relacionados com o fluxo de dados, fluxo de controlo, etc. | As questões encontradas no UAT seriam geralmente como as características que não estão a funcionar de acordo com os requisitos do utilizador. |
A imagem abaixo sobre os níveis de testes tornaria claro para si o fluxo de testes da Unidade para o UAT:
SIT Exemplo
Deixe-nos assumir que uma empresa está a utilizar software para armazenar os detalhes do cliente.
Este software tem dois ecrãs na UI – Ecrã 1 & Ecrã 2, e tem uma base de dados. Os detalhes introduzidos no Ecrã 1 e no Ecrã 2 são introduzidos na base de dados. A partir de agora, a empresa está satisfeita com este software.
No entanto, alguns anos mais tarde, a empresa descobre que o software não está a cumprir os requisitos e que existe uma necessidade de melhoramento. Por conseguinte, desenvolveram um ecrã 3 e uma base de dados. Agora, este sistema com Ecrã 3 e uma base de dados está integrado com o software mais antigo/existente.
/p>
Agora, o teste feito em todo o sistema após a integração chama-se Teste de Integração do Sistema. Aqui, a coexistência de um novo sistema com um já existente é testada para assegurar que todo o sistema integrado funciona bem.
Técnicas SIT
Principalmente, existem 4 abordagens para fazer SIT:
- Abordagem de baixo para cima
- Abordagem de baixo para cima
- Abordagem de sanduíche
- Abordagem de grande impacto
A abordagem de cima para baixo e a abordagem de baixo para cima é uma espécie de abordagens incrementais. Comecemos primeiro a discussão com a abordagem de cima para baixo.
#1) Abordagem de cima para baixo:
p>A partir disto, o teste começa apenas com o módulo mais alto de uma aplicação, ou seja, a IU a que chamamos como um driver de teste.
A funcionalidade dos módulos subjacentes é simulada com stubs. O módulo superior é integrado com o stub do módulo de nível inferior um por um e mais tarde a funcionalidade é testada.
Após cada teste ser concluído, o stub é substituído pelo módulo real. Os módulos podem ser integrados de forma ampla ou de forma profunda. O teste continua até que toda a aplicação seja construída.
A vantagem desta abordagem é que não há necessidade de controladores e os casos de teste podem ser especificados em termos da funcionalidade do sistema.
O principal desafio neste tipo de abordagem é a dependência da disponibilidade da funcionalidade do módulo de nível inferior. Pode haver um atraso nos testes até que os módulos reais sejam substituídos por stubs. A escrita de stubs também é difícil.
#2) Abordagem de baixo para cima:
Elimina as limitações da abordagem de cima para baixo.
Neste método, primeiro, os módulos de nível mais baixo são montados para formar clusters. Estes clusters servem como uma sub-função da aplicação. Depois é criado um condutor para gerir a entrada e saída do caso de teste. Depois disto, o cluster é testado.
Após o cluster ser testado, o driver é removido, e o cluster é combinado com o nível superior seguinte. Este processo continua até que toda a estrutura da aplicação seja alcançada.
Não há necessidade de stubs nesta abordagem. Torna-se simplificado à medida que o processamento se move para cima e a necessidade de condutores é reduzida. Esta abordagem é aconselhável para fazer SIT para sistemas orientados para objectos, sistemas em tempo real, e sistemas com necessidades rigorosas de desempenho.
No entanto, a limitação desta abordagem é o subsistema mais importante, ou seja, a IU é testada no último.
##3) Abordagem Sandwich:
Aqui, as abordagens top down e bottom up discutidas acima são combinadas.
O sistema é visto como tendo três camadas – a camada intermédia que é a camada alvo, uma camada acima do alvo e uma camada abaixo do alvo. Os testes são feitos em ambas as direcções e congregados na camada alvo que está no meio e isto é ilustrado na imagem abaixo.
Sandwich Testing Strategy
Uma vantagem desta abordagem é que a camada superior e a camada inferior do sistema podem ser testadas em paralelo. Contudo, a limitação desta abordagem é que não testa exaustivamente os subsistemas individuais antes da integração.
Para eliminar esta limitação, modificámos os testes em sanduíche em que a integração das camadas superior, média e inferior são testadas em paralelo utilizando tocos e controladores.
#4) Abordagem Big Bang:
Nesta abordagem, a integração é feita uma vez que todos os módulos da aplicação estejam completamente prontos. Os testes são feitos após a integração de todos os módulos para verificar se o sistema integrado está a funcionar ou não.
É um desafio encontrar a causa raiz do problema nesta abordagem, uma vez que tudo é integrado de uma só vez, em oposição aos testes incrementais. Esta abordagem é geralmente adoptada quando apenas uma ronda de SIT é necessária.
Conclusion
Neste artigo, aprendemos o que é o Teste de Integração de Sistemas (SIT) e porque é que é importante realizá-lo.
Compreendemos os conceitos centrais, técnicas, abordagens e os métodos envolvidos na realização do SIT. Também percorremos o modo como o SIT é diferente do UAT e dos testes de sistemas.
Esperamos que tenha gostado deste excelente artigo!!