Classificação da informação: Uso Interno
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
#DESCOMPLICANDOTESTES
DESCOMPLICANDO
TESTES
AUTOMATIZADOS DE
CONTRATO
Com RestAssured e JsonSchemaValidator
. . . .
. . . .
. . . .
. . . .
. . . .
TDC
FUTURE
STATUS CODE
RESPONSE BODY
SCHEMA
HEADER
+
. . . .
. . . .
. . . .
. . . .
. . . .
Classificação da informação: Uso Interno
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
Porto Alegre - RS
+ 10 anos de TI
QEL no Sicredi
/brunolusa
/bruno.lusa
/in/brunolusa
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
Bruno Lusa
Classificação da informação: Uso Interno
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
O que é teste de contrato?
O que é Pact FrameWork?
O que validar?
Exemplo de código
Estratégia de execução
Bibliotecas
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Contract First
+
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
AGENDA
Classificação da informação: Uso Interno
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
O QUE É TESTE DE CONTRATO?
. . . .
. . . .
. . . .
. . . .
. . . .
+
. . . .
. . . .
. . . .
. . . .
. . . .
• É diferente do Pact Framework;
• Tipo de teste realizado em aplicações, contido na
parte central da pirâmide de testes;
• É um dos testes mais importantes em arquiteturas
de microsserviços;
• A validação do jsonSchema é uma das etapas do
teste de contrato;
• Não substitui outros tipos de testes, complementa!
Classificação da informação: Uso Interno
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
+
. . . .
. . . .
. . . .
. . . .
. . . .
O Pact Framework realiza a criação e os testes dos contratos entre as
partes sem contar com uma linguagem de programação.
Pontos Negativos:
• Necessidade de uma infraestrutura
• Curva de Aprendizado
• Manutenção de Pactos
• Falsos Positivos/Negativos
• Complexidade em Sistemas Grandes
• Necessidade de Coordenação
Pontos Positivos:
• Desenvolvimento Orientado a Consumidor
• Isolamento de Testes
• Integração Contínua
• Mock Services
• Documentação Viva
• Suporte a Múltiplas Linguagens
O QUE É O PACT
FRAMEWORK?
Classificação da informação: Uso Interno
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
O QUE VALIDAR?
. . . .
. . . .
. . . .
. . . .
. . . .
+
. . . .
. . . .
. . . .
. . . .
. . . .
• Status Code: O código http retornado quando
interagirmos com um dos verbos da aplicação;
• Formato: O formato da resposta no corpo (quando
existente);
• Cabeçalho: Validar informações das autorizações
ou autenticações;
• Corpo: Validar a tipagem dos dados retornados.
Classificação da informação: Uso Interno
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
+
. . . .
. . . .
. . . .
. . . .
. . . .
Projeto
E COMO FICA NO CÓDIGO?
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Classificação da informação: Uso Interno
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
+
Projeto
Como estratégia devemos sempre executar após o deploy
da aplicação, garantindo assim que os contratos
acordados seguem inalterados!
. . . .
. . . .
. . . .
. . . .
. . . .
ESTRATÉGIA DE EXECUÇÃO
Classificação da informação: Uso Interno
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
+
Projeto
Acesse o projeto para ter mais informações.
. . . .
. . . .
. . . .
. . . .
. . . .
BIBLIOTECAS UTILIZADAS
Classificação da informação: Uso Interno
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
+
. . . .
. . . .
. . . .
. . . .
. . . .
CONTRACT FIRST
• "Contract-first" é uma abordagem usada no desenvolvimento de
aplicações onde o primeiro passo é definir um contrato;
• O contrato define o que o serviço vai fazer, quais operações ele suporta,
quais tipos de dados ele usa, e como as mensagens serão trocadas entre o
cliente e o serviço;
• Uma vez que o contrato é definido, ele habilita o desenvolvimento por
parte do cliente, do servidor e da automação;
• A abordagem "contract-first" é contrastada com a abordagem "code-
first", onde o código é escrito primeiro e o contrato é gerado a partir do
código.
Alternativas para iniciar a automação sem a Aplicação pronta e disponível: MockServer`s: Hoverfly,
Wiremock Server ou Cloud, jSonServer, etc.
Fonte: Material sobre Contract First: https://www.zup.com.br/blog/desenvolvimento-de-apis-design-first-e-code-first
Classificação da informação: Uso Interno
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
DESCOMPLICANDO
. . . .
. . . .
. . . .
. . . .
. . . .
+
. . . .
. . . .
. . . .
. . . .
. . . .
• Teste de contrato não é Pact Framework;
• Não confunda “Teste de Contrato” com “Teste de
Schema”, isso é uma parte do Teste de Contrato;
• O contrato é composto por status code, formato,
cabeçalho e corpo (quando existente);
• Lembre-se de construir o contrato antes da primeira
linha de código;
• Podemos começar por ele e já ter ganhos desde o
primeiro build da aplicação.
Classificação da informação: Uso Interno
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
Obrigado!

TheDevConf - DEVTEST - POA - 2023.pdf

  • 1.
    Classificação da informação:Uso Interno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . #DESCOMPLICANDOTESTES DESCOMPLICANDO TESTES AUTOMATIZADOS DE CONTRATO Com RestAssured e JsonSchemaValidator . . . . . . . . . . . . . . . . . . . . TDC FUTURE STATUS CODE RESPONSE BODY SCHEMA HEADER + . . . . . . . . . . . . . . . . . . . .
  • 2.
    Classificação da informação:Uso Interno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Porto Alegre - RS + 10 anos de TI QEL no Sicredi /brunolusa /bruno.lusa /in/brunolusa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bruno Lusa
  • 3.
    Classificação da informação:Uso Interno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O que é teste de contrato? O que é Pact FrameWork? O que validar? Exemplo de código Estratégia de execução Bibliotecas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Contract First + . . . . . . . . . . . . . . . . . . . . AGENDA
  • 4.
    Classificação da informação:Uso Interno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O QUE É TESTE DE CONTRATO? . . . . . . . . . . . . . . . . . . . . + . . . . . . . . . . . . . . . . . . . . • É diferente do Pact Framework; • Tipo de teste realizado em aplicações, contido na parte central da pirâmide de testes; • É um dos testes mais importantes em arquiteturas de microsserviços; • A validação do jsonSchema é uma das etapas do teste de contrato; • Não substitui outros tipos de testes, complementa!
  • 5.
    Classificação da informação:Uso Interno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + . . . . . . . . . . . . . . . . . . . . O Pact Framework realiza a criação e os testes dos contratos entre as partes sem contar com uma linguagem de programação. Pontos Negativos: • Necessidade de uma infraestrutura • Curva de Aprendizado • Manutenção de Pactos • Falsos Positivos/Negativos • Complexidade em Sistemas Grandes • Necessidade de Coordenação Pontos Positivos: • Desenvolvimento Orientado a Consumidor • Isolamento de Testes • Integração Contínua • Mock Services • Documentação Viva • Suporte a Múltiplas Linguagens O QUE É O PACT FRAMEWORK?
  • 6.
    Classificação da informação:Uso Interno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O QUE VALIDAR? . . . . . . . . . . . . . . . . . . . . + . . . . . . . . . . . . . . . . . . . . • Status Code: O código http retornado quando interagirmos com um dos verbos da aplicação; • Formato: O formato da resposta no corpo (quando existente); • Cabeçalho: Validar informações das autorizações ou autenticações; • Corpo: Validar a tipagem dos dados retornados.
  • 7.
    Classificação da informação:Uso Interno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + . . . . . . . . . . . . . . . . . . . . Projeto E COMO FICA NO CÓDIGO? . . . . . . . . . . . . . . . .
  • 8.
    Classificação da informação:Uso Interno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + Projeto Como estratégia devemos sempre executar após o deploy da aplicação, garantindo assim que os contratos acordados seguem inalterados! . . . . . . . . . . . . . . . . . . . . ESTRATÉGIA DE EXECUÇÃO
  • 9.
    Classificação da informação:Uso Interno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + Projeto Acesse o projeto para ter mais informações. . . . . . . . . . . . . . . . . . . . . BIBLIOTECAS UTILIZADAS
  • 10.
    Classificação da informação:Uso Interno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + . . . . . . . . . . . . . . . . . . . . CONTRACT FIRST • "Contract-first" é uma abordagem usada no desenvolvimento de aplicações onde o primeiro passo é definir um contrato; • O contrato define o que o serviço vai fazer, quais operações ele suporta, quais tipos de dados ele usa, e como as mensagens serão trocadas entre o cliente e o serviço; • Uma vez que o contrato é definido, ele habilita o desenvolvimento por parte do cliente, do servidor e da automação; • A abordagem "contract-first" é contrastada com a abordagem "code- first", onde o código é escrito primeiro e o contrato é gerado a partir do código. Alternativas para iniciar a automação sem a Aplicação pronta e disponível: MockServer`s: Hoverfly, Wiremock Server ou Cloud, jSonServer, etc. Fonte: Material sobre Contract First: https://www.zup.com.br/blog/desenvolvimento-de-apis-design-first-e-code-first
  • 11.
    Classificação da informação:Uso Interno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DESCOMPLICANDO . . . . . . . . . . . . . . . . . . . . + . . . . . . . . . . . . . . . . . . . . • Teste de contrato não é Pact Framework; • Não confunda “Teste de Contrato” com “Teste de Schema”, isso é uma parte do Teste de Contrato; • O contrato é composto por status code, formato, cabeçalho e corpo (quando existente); • Lembre-se de construir o contrato antes da primeira linha de código; • Podemos começar por ele e já ter ganhos desde o primeiro build da aplicação.
  • 12.
    Classificação da informação:Uso Interno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Obrigado!