{"id":19719412,"url":"https://github.com/vhnegrisoli/api-stress-test","last_synced_at":"2026-05-11T21:39:20.520Z","repository":{"id":127126320,"uuid":"439623025","full_name":"vhnegrisoli/api-stress-test","owner":"vhnegrisoli","description":"Aplicação em Python para realizar testes de carga e estresse em sites e APIs","archived":false,"fork":false,"pushed_at":"2022-06-18T12:34:48.000Z","size":84,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-27T23:36:39.993Z","etag":null,"topics":["http-client","load-testing","multithreading","python3","requests-library-python","stress-testing"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vhnegrisoli.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-12-18T13:31:57.000Z","updated_at":"2024-11-11T03:16:12.000Z","dependencies_parsed_at":"2023-07-14T05:15:55.566Z","dependency_job_id":null,"html_url":"https://github.com/vhnegrisoli/api-stress-test","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/vhnegrisoli/api-stress-test","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vhnegrisoli%2Fapi-stress-test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vhnegrisoli%2Fapi-stress-test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vhnegrisoli%2Fapi-stress-test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vhnegrisoli%2Fapi-stress-test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vhnegrisoli","download_url":"https://codeload.github.com/vhnegrisoli/api-stress-test/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vhnegrisoli%2Fapi-stress-test/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32914503,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-11T17:09:15.040Z","status":"ssl_error","status_checked_at":"2026-05-11T17:08:45.420Z","response_time":120,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["http-client","load-testing","multithreading","python3","requests-library-python","stress-testing"],"created_at":"2024-11-11T23:08:13.369Z","updated_at":"2026-05-11T21:39:20.501Z","avatar_url":"https://github.com/vhnegrisoli.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# API Stress Test\n\nAplicação em Python para realizar testes de carga e estresse em sites e APIs utilizando client HTTP e multithreading.\n\n# Tecnologias\n\n- Python 3\n- Requests\n- Time\n- Threading\n\n# Executando\n\nÉ possível executar de 2 maneiras diferentes:\n\n* Rodando com valores padrões de concorrência e tempo\n* Rodando com valores de concorrência e tempo especificados por parâmetro\n\n### Executando com valores padrões\n\nBasta rodar o comando:\n\n`python api_stress_test.py`\n\nA concorrência e o tempo serão os que estão setados no arquivo `config.py`, caso queira um valor default diferente, terá que alterar o arquivo.\n\n### Executando com valores informados por parâmetro\n\nBasta rodar o comando:\n\n`python api_stress_test.py valor_concorrencia valor_tempo`\n\nExemplo:\n\n`python api_stress_test.py 10 60` -\u003e executará o teste de estresse com 10 usuários concorrentes por 60 segundos.\n\nO valor `default`, caso não sejam informados os parâmetros, será de **10 usuários durante 3 segundos**.\n\n# Worflow do funcionamento do teste\n\nAbaixo, está exemplificado em um worflow qual será o funcionamento do software.\n\n![Workflow](https://github.com/vhnegrisoli/api-stress-test/blob/master/API%20Stress%20Test%20Flow.png)\n\n# Configurar teste\n\nA configuração do teste fica no arquivo `config.py`.\n\nNeste arquivo, existirão 3 objetos e uma função para exportá-los.\n\n- concorrencia\n- tempo\n- requisicao\n\n## Configuração do teste\n\nExistem 2 configurações principais do teste de carga:\n\n- Concorrência\n- Duração\n\nA concorrência será a quantidade de threads que serão criadas para simular requisições sendo enviadas, e a duração será a quantidade de segundos em que o total de threads criadas estará disparando requisições.\n\nCada thread irá simular um usuário realizando uma requisição ao servidor.\n\nExemplo:\n\n```python\nconcorrencia = 100\ntempo = 120\n```\n\nNo exemplo acima, serão criadas 100 threads que farão loops de disparos durante 120 segundos (2 minutos). Cada thread irá disparar uma requisição após a outra em loop. Ao fim dos 120 segundos, as requisições não serão mais disparadas, e a aplicação irá aguardar as restantes (caso existam) para realizar o cálculo das métricas.\n\n## Configuração da requisição\n\nO objeto requisicao é um dicionário contendo método, url, dados (body) e headers, que também é um dicionário contendo um par chave/valor.\n\nExemplo de configuração (dados fictícios):\n\n```python\nrequisicao = {\n    'metodo': 'POST',\n    'url': 'http://localhost:8080/api/v1/user/save',\n    'dados': '{\"usuario\":\"teste@teste.com\",\"senha\":\"123456\"}',\n    'headers': {\n        'content-type': 'application/json'\n    }\n}\n```\n\n# Output da aplicação\n\nO output da aplicação irá informar os seguintes dados:\n\n- URL - Método HTTP - Status HTTP - Tempo em ms\n- Total de requisições enviadas\n- Disponibilidade (total de sucessos pelo total de requisições)\n- Total de sucessos\n- Total de falhas\n- Tempo médio\n\n```shell\nhttp://localhost:8080/api/v1/cep/86010580/ - POST - Resposta: 200 - 0.2s\nhttp://localhost:8080/api/v1/cep/86010580/ - POST - Resposta: 200 - 0.25s\nhttp://localhost:8080/api/v1/cep/86010580/ - POST - Resposta: 200 - 0.08s\nhttp://localhost:8080/api/v1/cep/86010580/ - POST - Resposta: 200 - 0.22s\nhttp://localhost:8080/api/v1/cep/86010580/ - POST - Resposta: 200 - 0.25s\nhttp://localhost:8080/api/v1/cep/86010580/ - POST - Resposta: 200 - 0.16s\nhttp://localhost:8080/api/v1/cep/86010580/ - POST - Resposta: 200 - 0.14s\nhttp://localhost:8080/api/v1/cep/86010580/ - POST - Resposta: 200 - 0.16s\nhttp://localhost:8080/api/v1/cep/86010580/ - POST - Resposta: 200 - 0.23s\nhttp://localhost:8080/api/v1/cep/86010580/ - POST - Resposta: 200 - 0.27s\nhttp://localhost:8080/api/v1/cep/86010580/ - POST - Resposta: 200 - 0.3s\nhttp://localhost:8080/api/v1/cep/86010580/ - POST - Resposta: 200 - 0.33s\nhttp://localhost:8080/api/v1/cep/86010580/ - POST - Resposta: 200 - 0.33s\nhttp://localhost:8080/api/v1/cep/86010580/ - POST - Resposta: 200 - 0.19s\nTotal: 256\nDisponibilidade: 100.0%\nSucessos: 256\nFalhas: 0\nRequisição mais rápida: 0.06s\nRequisição mais lenta: 0.66s\nTempo médio: 0.19s\n```\n\n# Autor\n\n- Victor Hugo Negrisoli\n- Desenvolvedor de Software Back-End\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvhnegrisoli%2Fapi-stress-test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvhnegrisoli%2Fapi-stress-test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvhnegrisoli%2Fapi-stress-test/lists"}