Testes de Integração
Os testes que escrevemos até agora verificam se unidades do software funcionam separadamente. Ou seja, testamos o comportamento dela sem se preocupar com o comportamento das outras classes, graças aos Mocks.
Se quisermos um teste que se pareça com o mundo real, é necessário escrever o que chamamos de teste de sistema, que é idêntico ao executado pelo usuário e executa tarefas como inicializar o browser, clicar em links, submeter formulários, e etc. No entanto, muitas vezes queremos testar não só uma classe, mas também não o sistema todo; queremos testar a integração entre um componente e um sistema externo/outro componente. Esse tipo de teste, que garante a integração entre 2 ou mais componentes da aplicação, é conhecido por teste de integração.
Nos testes de unidade, nossas classes são testadas isoladamente. Essas unidades devem ser integradas para verificar se o comportamento está de acordo com os requisitos quando são usadas em conjunto.
O quadro abaixo mostra as diferenças entre Testes de Unidade e Integração
Testes de Unidade
Testes de Integração
Resultado depende apenas de código
Resultado depende de sistemas externos
Fácil de escrever e verificar
A escrita e configuração dos testes pode ser complicado
Uma única classe/unidade é testada
Um ou mais componentes são testados
Todas as dependências são “mocks”
Não há uso de mocks (com exceção de componentes não usados)
O teste verifica apenas a implementação do código
O teste verifica a implementação do componentes individualmente e seu comportamento quando usado em conjunto
Uso de Junit e frameworks de mock
Containers reais, bancos de dados reais e frameworks para testes integrados (DBUnit)
Geralmente usado por desenvolvedores
Usado pelo QA, Help Desk, etc.
Falha sempre indica uma regressão (caso o requisito não tenha mudado)
Falha pode indicar que o código continua correto, mas que o ambiente mudou.
São rápidos
Podem durar horas
Mesmo que os módulos estejam funcionando individualmente, defeitos podem surgir por vários motivos.

Um componente feito por um desenvolvedor pode ter uma lógica diferente dos componentes feitos por outros desenvolvedores; erro com as interfaces de persistência pode causar perca de dados ou quebra de integridade; interface com itens de hardware, geralmente feito com simuladores/emuladores pode estar errada ao ser executado em ambiente de produção.
Last updated
Was this helpful?