1 of 25

Testes de contrato para microserviços orientados a eventos utilizando o Pact

2 of 25

Olá!

Ana LudmilaQA - Thoughtworks

Bruna GonçalvesQA - Thoughtworks

2

3 of 25

Expectativas

  • A nossa história
  • E qual foi o problema?
  • Pausa para a pirâmide de testes
  • Testes de contrato
  • CDC vs PDC
  • Detalhar a abordagem utilizada - CDC
  • Exemplos

3

4 of 25

A nossa história

  • Sistema em desenvolvimento distribuído;
  • Equipes diferentes trabalhando para uma mesma entrega;
  • Prazos diversos para entrega de cada parte do sistema;
  • Tempo curto até a entrega! 🕙

4

5 of 25

Nossa história

5

A

B

C

D

🕙

🕙

🕙

🕙

6 of 25

O problema

6

7 of 25

Pirâmide de Testes

Pausa para a Pirâmide de Testes

1

8 of 25

8

Lento

Acoplado

Caro

Rápido

Barato

Desacoplado

9 of 25

9

E2E

Integração

Unitários

10 of 25

Testes de

(e2e)

Testes de Api

Testes de Contrato

Testes de Componente

Testes unitários

Testes Manuais

Exploratórios

11 of 25

Testes de Contrato

Uma breve introdução

2

12 of 25

Tem como objetivo garantir que o conteúdo fornecido não tenha sido modificado, podemos dizer que tem a finalidade de validar se o contrato acordado foi ou não quebrado; deve validar se o schema permanece o mesmo garantindo assim a integridade dos dados na comunicação entre cliente/servidor.

12

13 of 25

13

14 of 25

Abordagens

3

15 of 25

Consumer-Driven Contract

Os Consumidores definem suas expectativas e o Provedor verifica se elas foram cumpridas

Provider-Driven Contract

O Provedor define o contrato e os Consumidores verificam se são compatíveis com ele

15

Revela interfaces não utilizadas

Revela atributos de interfaces não utilizados

16 of 25

CDC

Permite que os consumidores dirijam a implementação de um contrato.

Usando o CDC, os consumidores de uma interface geram contratos e executam testes que verificam as interfaces consumidas. A equipe consumidora pública esses contratos para que a equipe provedora possa buscar e executar esses testes facilmente. A equipe provedora agora pode desenvolver sua aplicação executando os testes do CDC. Depois que todos os testes passam, eles sabem que implementaram tudo que a equipe consumidora precisa.

16

17 of 25

HTTP vs AMQP

4

18 of 25

18

19 of 25

Exemplo

5

20 of 25

Como o provider lida com os pactos

20

Baixa os Stubs do repositório

Testa com os stubs do repositório

Provider

21 of 25

Como o consumer lida com os pactos

21

Gera um stub da mensagem na fila

Testa usando o Stub

Disponibiliza Stubs em repositório

Consumer

22 of 25

22

23 of 25

23

24 of 25

Referências

24

25 of 25

Obrigada!

Bruna GonçalvesQA - Thoughtworks

Ana LudmilaQA - Thoughtworks

25