Testes de integração

Introdução a Testes em Java

Maria Milusheva

Senior Software Engineer

Definindo testes de integração

  • Integração - processo de combinar componentes ou subsistemas de software em um sistema unificado que funciona de forma coesa.
  • Teste de integração - teste que verifica a interação entre vários componentes ou módulos do aplicativo para garantir que funcionem juntos corretamente. Frequentemente envolve dependências externas.

Uma imagem de móveis da Ikea prestes a serem montados

Introdução a Testes em Java

Dependências

  • Dependência de software - relação em que um componente depende de outro para funcionar corretamente

Gráfico de relações de dependência entre classes

1 Chart made using Mermaid: https://mermaid.live
Introdução a Testes em Java

Teste de integração vs. teste de unidade

Testes de unidade:

  • Testam componentes isoladamente
  • Falhas indicam o ponto exato do problema
  • Mais rápidos de escrever e executar
  • Usam ferramentas para evitar testar dependências
  • Fazem asserções sobre resultados exatos

Testes de integração:

  • Testam vários componentes e suas interações
  • Falhas exigem análise mais profunda para rastrear
  • Podem ser pesados e levar mais tempo para configurar e executar
  • Testam interações reais com dependências reais
  • Podem afirmar comportamentos gerais em vez de resultados exatos
Introdução a Testes em Java

Exemplo: câmbio

Suponha que estamos criando um app de câmbio:

public class ExchangeApp {
    private EuropeanCentralBankServer bank; // Enables ExchangeApp to use the bank server

    public ExchangeApp(EuropeanCentralBankServer bank) {
        this.bank = bank; // Save the object passed through the constructor
    }


public double convertEuroTo(String currency, double amount) { double rate = this.bank.getRateEuroTo(currency); return amount * rate; // Use the return values of the bank method in calculations } }
Introdução a Testes em Java

Testando integração no câmbio

O teste de integração verifica tanto o método convertEuroTo quanto o EuropeanCentralBankServer:

@Test
void convert_convertsWithoutError() {
    EuropeanCentralBankServer bank = new EuropeanCentralBankServer();
    ExchangeApp exchangeApp = new ExchangeApp(bank); // Pass bank object to constructor

double amount = 1000.0; String currency = "USD"; // convertEuroTo calls getRateEuroTo from the bank object double result = exchangeApp.convertEuroTo(currency, amount); assertTrue(result > 0); // Can't predict exact value, can only sanity test }
Introdução a Testes em Java

Vamos praticar!

Introdução a Testes em Java

Preparing Video For Download...