Skip to content

Instantly share code, notes, and snippets.

@willsantos
Last active December 21, 2023 15:50
Show Gist options
  • Save willsantos/3d8002eed51fffbb2d458b02d22dc1f0 to your computer and use it in GitHub Desktop.
Save willsantos/3d8002eed51fffbb2d458b02d22dc1f0 to your computer and use it in GitHub Desktop.
Projeto testes de carga versão Python

Tarefa: Criar um script para testar uma API

Objetivo

O objetivo dessa tarefa é criar um script em python que faça requisições para uma API fornecida pelo usuário, usando um payload definido pelo usuário ou lido de um arquivo CSV.

O script deve ser usado para um teste de carga e retornar o response de cada tentativa, com uma marcação de sucesso ou falha dependendo do status code da response.

## Requisitos

  • Receber como argumentos a URL da API, o formato do payload, o nome do arquivo CSV (se houver), a quantidade de requisições e o tempo limite.
  • Validar os argumentos e mostrar uma mensagem de erro se algum deles for inválido ou faltar.
  • Deve:
    • usar a biblioteca requests para fazer as requisições para a API.
    • usar a biblioteca csv para ler o arquivo CSV, se houver.
    • usar a biblioteca time para medir o tempo de cada requisição.
    • usar a biblioteca json para formatar o payload e o response, se forem JSON.
    • verificar o status code da response e marcar a requisição como sucesso ou falha.
    • deve mostrar na tela o response de cada requisição, com a marcação de sucesso ou falha e o tempo gasto.
    • deve mostrar na tela um resumo do teste, com o número total de requisições, o número de sucessos, o número de falhas, o tempo médio e o tempo máximo de cada requisição.
  • Relatorio em texto ao final, com os resultados de cada requisição e o resumo final.

Tarefa: Criar as tabelas em sqlite para guardar os dados do teste de API

Objetivo

O objetivo dessa tarefa é criar as tabelas em sqlite para guardar os dados do teste de API realizado pelo script python. As tabelas devem armazenar as informações das requisições, das respostas, e do resumo do teste.

Requisitos

  • Se conectar ao banco de dados sqlite usando a biblioteca sqlite3.
  • Criar as tabelas se elas não existirem no banco de dados.
  • Inserir os dados nas tabelas após cada requisição e ao final do teste.
  • As tabelas devem ter os seguintes nomes e colunas:
    • Requisicoes: essa tabela deve armazenar os dados das requisições feitas pelo script. As colunas devem ser:
      • id: um inteiro que identifica a requisição de forma única. Deve ser a chave primária da tabela.
      • url: uma string que armazena a URL da API testada.
      • payload: uma string que armazena o payload enviado na requisição. Pode ser nulo se não houver payload.
      • formato: uma string que armazena o formato do payload. Pode ser nulo se não houver payload.
      • tempo_limite: um inteiro que armazena o tempo limite em segundos da requisição.
      • id_resumo: um inteiro que referencia o resumo correspondente na tabela Resumo. Deve ser uma chave estrangeira que referencia a coluna id da tabela Resumo.
    • Respostas: essa tabela deve armazenar os dados das respostas recebidas pelo script. As colunas devem ser:
      • id: um inteiro que identifica a resposta de forma única. Deve ser a chave primária da tabela.
      • id_requisicao: um inteiro que referencia a requisição correspondente na tabela Requisicoes. Deve ser uma chave estrangeira que referencia a coluna id da tabela Requisicoes.
      • status_code: um inteiro que armazena o código de status da resposta.
      • response: uma string que armazena o conteúdo da resposta.
      • resultado: uma string que armazena o resultado da requisição, se foi sucesso ou falha.
      • tempo: um real que armazena o tempo em segundos da requisição.
    • Resumo: essa tabela deve armazenar os dados do resumo do teste. As colunas devem ser:
      • id: um inteiro que identifica o resumo de forma única. Deve ser a chave primária da tabela.
      • data_inicio: uma string que armazena a data de início do teste no formato AAAA-MM-DD HH:MM:SS.
      • data_termino: uma string que armazena a data de término do teste no formato AAAA-MM-DD HH:MM:SS.
      • total: um inteiro que armazena o número total de requisições feitas no teste.
      • sucessos: um inteiro que armazena o número de requisições que tiveram sucesso no teste.
      • falhas: um inteiro que armazena o número de requisições que tiveram falha no teste.
      • tempo_medio: um real que armazena o tempo médio em segundos das requisições no teste.
      • tempo_maximo: um real que armazena o tempo máximo em segundos das requisições no teste.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment