Projeto da matéria de Engenharia de Software
Project description
Downloader Multithread com GUI
Projeto desenvolvido para a disciplina de Engenharia de Software. A aplicação foi construída em Python com interface em Tkinter e realiza downloads em múltiplas threads, dividindo o arquivo em partes para melhorar o desempenho e montar o resultado final ao término da transferência.
Integrantes
- Guilherme
- Luan Robert
Funcionalidades
- Download de arquivos em múltiplas threads
- Interface gráfica com Tkinter
- Montagem automática do arquivo final
- Geração de logs auxiliares do processo de download
Estrutura do Projeto
app.py: ponto de entrada da aplicaçãodownloader/: lógica principal de download, segmentação e IOgui/: interface gráficatests/: testes unitários.github/workflows/cicd.yml: pipeline CI/CD
Requisitos
- Python 3.9 ou superior
- Dependências listadas em
requirements.txt
Instalação das dependências:
pip install -r requirements.txt
Como Executar
Para iniciar a aplicação:
python app.py
Como Rodar os Testes
Execução dos testes unitários:
pytest
Execução com geração de relatório JUnit:
pytest --junitxml=report.xml
Cobertura de Testes
O projeto utiliza pytest-cov para gerar relatório de cobertura em HTML.
pytest --cov=downloader --cov=gui --cov=app --cov-report=html
O relatório gerado fica na pasta htmlcov/.
Pipeline CI/CD
O projeto possui um pipeline configurado no GitHub Actions com as seguintes etapas:
testsExecuta os testes unitários e salva o relatório como artifact.buildGera o pacote distribuível da aplicação.coverageExecuta os testes com cobertura e armazena o relatório HTML como artifact.pypi-publishEtapa de deploy/publicação do pacote para o PyPI.notificationExecuta um script externo para envio de notificação por e-mail ao final do pipeline.
Artifacts Gerados
test-report: relatório dos testes unitáriosrelease-dists: arquivos gerados emdist/coverage-report: relatório HTML de cobertura
Deploy
O deploy adotado neste projeto é a publicação do pacote Python no PyPI, caracterizando deploy de artefato de build. Essa etapa ocorre no workflow do GitHub Actions após as validações do pipeline.
Testes Implementados
O projeto possui mais de 20 cenários de testes unitários cobrindo:
- fluxo principal de segmentação e montagem de arquivos
- formatação e conversão de taxas e tamanhos
- casos de erro e entradas inválidas
- cenários de borda, como valores vazios, zero e ordenação de partes
Links de Teste
Alguns arquivos públicos que podem ser usados para validar a aplicação:
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file c14_np1-0.1.2.tar.gz.
File metadata
- Download URL: c14_np1-0.1.2.tar.gz
- Upload date:
- Size: 11.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c8f5dc5c965007f1fbb6a0cb66009e725016509f80653d54e745d9784811eb30
|
|
| MD5 |
623ce8e768329de382cd133afab556fe
|
|
| BLAKE2b-256 |
bfc6c6a24f6acf607952283e2c77154028881346e2be579518fa5565ac2151ff
|
Provenance
The following attestation bundles were made for c14_np1-0.1.2.tar.gz:
Publisher:
cicd.yml on guilhermecmr/C14-NP1
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
c14_np1-0.1.2.tar.gz -
Subject digest:
c8f5dc5c965007f1fbb6a0cb66009e725016509f80653d54e745d9784811eb30 - Sigstore transparency entry: 1265575555
- Sigstore integration time:
-
Permalink:
guilhermecmr/C14-NP1@4b1aaba5ceb421852a20b211f6e929634fa40b0c -
Branch / Tag:
refs/heads/guilherme - Owner: https://github.com/guilhermecmr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
cicd.yml@4b1aaba5ceb421852a20b211f6e929634fa40b0c -
Trigger Event:
push
-
Statement type:
File details
Details for the file c14_np1-0.1.2-py3-none-any.whl.
File metadata
- Download URL: c14_np1-0.1.2-py3-none-any.whl
- Upload date:
- Size: 12.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f522322e02ed924d94bfb8baa7880f32402f0f4e8c04058535c6d87016333c57
|
|
| MD5 |
fb8169fd0f2208d6c7b64ba33d034e86
|
|
| BLAKE2b-256 |
e715a599716d8a419f165a82bc8df6f2d5372265ba7cbfe685f43fe06025a75d
|
Provenance
The following attestation bundles were made for c14_np1-0.1.2-py3-none-any.whl:
Publisher:
cicd.yml on guilhermecmr/C14-NP1
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
c14_np1-0.1.2-py3-none-any.whl -
Subject digest:
f522322e02ed924d94bfb8baa7880f32402f0f4e8c04058535c6d87016333c57 - Sigstore transparency entry: 1265575624
- Sigstore integration time:
-
Permalink:
guilhermecmr/C14-NP1@4b1aaba5ceb421852a20b211f6e929634fa40b0c -
Branch / Tag:
refs/heads/guilherme - Owner: https://github.com/guilhermecmr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
cicd.yml@4b1aaba5ceb421852a20b211f6e929634fa40b0c -
Trigger Event:
push
-
Statement type: