1 of 14

Testes de Carga API First

com Postman

Adriano Borges

João Guilherme Ribeiro

V&V Profissional

Prof. Gustavo Alves

2 of 14

�Desenvolvimento API First

3 of 14

Postman

Ambiente de desenvolvimento integrado para APIs

Permite a construção, teste e validação de APIs

Permite colaboração e versionamento

Permite testar requests e responses utilizando linguagem de script

Permite a depuração de APIs utilizando Mock Server, evitando a necessidade de implementação para testes iniciais da API

Suporta teste de carga através do Postman Runner

Permite integração com esteiras CI/CD

4 of 14

�Pontos fortes e fracos

Facilidade de uso - Com uma interface simples, os testadores podem criar suítes de teste rapidamente preenchendo modelos. Postman também fornece trechos de código, que suportam a criação de scripts com exemplos de validações para tempo de resposta, código de resposta, etc.

Acessibilidade - Os usuários do Postman podem acessar seus arquivos perfeitamente fazendo login em sua conta em um dispositivo com o aplicativo Postman instalado ou a extensão do navegador Postman.

Diversas funcionalidades - Postman oferece suporte a todos os métodos HTTP possíveis, salvando o progresso, convertendo de APIs em código, alterando o ambiente de desenvolvimento de API e muitos outros.

Capacidade de rastreamento de recursos - Para resposta HTTP no Postman, ele oferece suporte a vários códigos de status para que os usuários verifiquem a resposta. Elas são solicitações bem-sucedidas, resposta vazia, solicitação incorreta e acesso não autorizado, para mencionar apenas alguns.

Área de teste limitada - Embora o Postman seja ideal para testes de API RESTful, ele não é bem projetado para APIs SOAP e outras APIs.

Baixa capacidade de reutilização do script - Os usuários do Postman não podem reutilizar seus scripts pré-gravados ou adicionar mais solicitações. Isso significa que os testadores precisam criar novos scripts de teste repetidamente para cada projeto.

Integração restrita - Embora as APIs habilitem o processo Agile, a ferramenta em si não oferece muitos recursos de integração. Torna-se um obstáculo para conectar Postman com os sistemas existentes e colaborar dentro da equipe.

5 of 14

Projete e desenvolva mais rápido com suporte a esquemas

O suporte ao esquema Postman oferece visibilidade das especificações e estrutura da API

  • O objetivo principal de desenvolver API First é eliminar os gargalos no desenvolvimento, especialmente quando há uma equipe grande envolvida
  • A prática de API First permite que times ágeis atuem simultaneamente utilizando uma API já definida durante a análise do projeto
  • A técnica API First ajuda a amadurecer o produto. Mesmo num contexto de mock, é possível identificar erros e melhorias no design da API
  • O API First também incentiva a criação de APIs num formato padronizado como OpenAPI e GraphQL

6 of 14

Qualidade através de testes de API

Ambiente integrado de testes para API

  • O Postman possui um ambiente integrado para testes, permitindo a criação de testes de API sofisticados utilizando um subset do Javascript com features de assertion e auto-complete
  • Através desse recurso, aliado às técnicas de API First, é possível aumentar a qualidade de chamadas desde a criação do schema da API

7 of 14

Collection Runner

Reaproveite as coleções do Postman em testes de integração contínua

  • O Collection Runner permite executar e coletar métricas de requests de uma API
  • Ao executar uma Collection no Runner, os testes dos requests também são executados e validados
  • É possível utilizar scripts para coletar métricas adicionais de negócio por exemplo

8 of 14

Do Postman à esteira CI/CD

Reaproveite as coleções do Postman em testes de integração contínua

  • O Newman é uma interface de linha de comando (CLI) que permite a execução de Collections do Postman num ambiente de terminal
  • Ideal para testar APIs em contextos de esteira como Jenkins ou Bamboo
  • Permite funcionalidades adicionais via plugins
  • npm install -g newman

9 of 14

Newman Custom Reporter

Crie relatórios dos testes de Carga utilizando plugins do Newman

npm install -g newman-reporter-htmlextra

10 of 14

HANDS ON

  • Demonstração do Postman Workspace
  • Criando e testando APIs na especificação SWAGGER
  • Importando API SWAGGER em projetos JAVA utilizando MAVEN �para geração de códigos boilerplate
  • Testando a API no Postman utilizando Collections
  • Testando a API no Postman utilizando Postman Runner
  • Realizando testes de cargas na API utilizando linha de comando com o Newman
  • Coletando métricas de performance e negócio utilizando o Newman

11 of 14

Cenário de Teste:

Iniciar Treinamento

Inicializa o treinamento de uma imagem no motor de visão computacional.

Critérios de aceitação:

  • Executar request na API /training
  • Deve enviar um produto valido
  • Deve enviar um sku válido
  • Deve enviar uma imagem em base64
  • Deve receber um request_id
  • Deve receber um status de treinamento

12 of 14

Cenário de Teste:

Verificar Status de Treinamento

Obtém o status do treinamento identificado por request_id

Critérios de aceitação:

  • Executar request na API /training/status
  • Deve enviar um produto válido
  • Deve enviar um request_id válido
  • Deve retornar status 200
  • Deve receber um status de treinamento do request_id informado

13 of 14

�Teste de Carga - Performance

Utiliza o Newman para executar um teste de 100 chamadas e coletar os tempos médios de execução de cada request.

Critérios de aceitação:

  • Não deve retornar nenhum erro
  • Retornar todas as chamadas em menos de 1000ms
  • Deve sempre retornar um request_id
  • Deve sempre retornar um status do treinamento

14 of 14

�Teste de Carga - Negócio

Utiliza o Newman para executar um teste de 100 chamadas e coletar os dados de status de treinamento através de plugin escrito em nodeJS.

Critérios de aceitação:

  • Nenhum request pode falhar
  • Deve gerar um csv de métricas
  • A taxa de erro não pode superar 20% das chamadas