Pular para o conteúdo

Thiago Viriato Accioly

Escrevo testes automatizados que pegam o problema antes do usuário. Se uma falha acontece, entendo o que acontece por debaixo dos panos: leio a base de código para apontar a causa raiz, e não apenas o sintoma.

  • Playwright · pytest
  • Testes E2E e de integração
  • Por baixo do capô até a causa raiz
LocalBrasília, DF
FocoPlaywright, pytest, Robot Framework
Topologia de TestesPlaywright · E2E headless
PlaywrightOWASP ZAPpytest-xdistWebTest / DjangoExcalidrawModel BakeryCI/CD Gate
Playwright (Headless)Automação E2E (Senado Federal)

Cobertura de fluxos críticos ponta a ponta em modo headless.

Sobre

Python foi minha primeira linguagem. Eu já me interessava por IA antes de saber programar, e foi por aí que entrei.

Gosto de entender o sistema inteiro antes de mexer numa parte dele. Foi assim que acabei caindo em testes: para automatizar um fluxo eu precisava conhecer a arquitetura, o banco e as regras de negócio. Aí percebi que era isso que eu queria fazer, e não o contrário.

Continuo programando, e não por saudade. Um QA que entende o que acontece por debaixo dos panos não reporta só o sintoma: ele consegue apontar onde provavelmente está a causa, e isso economiza o tempo de todo mundo.

Sobre otimização: se existe um jeito mais simples que serve ao mesmo propósito, eu troco. Não gosto de sistema lento, nem de suíte de teste lenta.

$ pytest -q
tests/unit/test_assertions.py ........................34%
tests/integration/test_contracts.py ..................71%
tests/e2e/test_root_cause.py .........................100%
297 passed in 15.2s
$ pytest -k thiago --collect-only
tests/test_thiago.py::test_le_o_codigo_antes_de_reportartests/test_thiago.py::test_nao_para_no_sintomatests/test_thiago.py::test_nao_gosta_de_suite_lenta
3 tests collected

Nem tudo é o que parece.

Duas vezes em que o sintoma apontava para um lugar e a causa estava em outro.

Caso 01 / Senado Federal (Typst)
falhouinvestigadoresolvido

Geração de documentos com renderização quebrada

No Senado, eu estava testando uma feature nova de geração de documentos em Typst, e o resultado saía visualmente quebrado. Fui atrás da causa: parte eram campos obrigatórios que ainda não tinham sido populados naquele ambiente de teste, parte eram campos opcionais que, na prática, deveriam ser obrigatórios. Nos dois casos, o motivo de fundo era o mesmo: nada ali tinha tratamento para a ausência de dado.

Desde então eu investigo a razão antes de concluir a causa.

Caso 02 / Projeto acadêmico (Cell-Detector)
falhouinvestigadoresolvido

A métrica que media a coisa errada

Num detector de uso de celular ao volante, o modelo reportava 1 ms de latência e o sistema entregava de 3 a 8 quadros por segundo. Os dois números estavam certos: a métrica só media a rede neural. Fora dela havia a câmera limitando a entrega, um laço de extração de features sem vetorização e a exibição de vídeo comendo boa parte do tempo.

Aprendi ali uma coisa que uso até hoje ao ler um relatório de teste: antes de acreditar no número, vale perguntar o que exatamente ele está medindo.

Suítes de automação, ferramentas e cenários reais.

Projetos documentados no GitHub que comprovam experiência prática em Playwright, pytest-xdist, testes de concorrência com threads e contribuição open source.

origem: demanda real
364testes~32s em xdist

ImóvelDF

364 testes automatizados paralelizados contra PostgreSQL

Portal imobiliário completo com suíte de 364 testes paralelizada com pytest-xdist (~32s) e GitHub Actions como gate de qualidade na branch. Inclui testes de concorrência real simulando acessos simultâneos ao mesmo registro com threads.

✓ pytest -n auto364 passed

threads simultâneas verificadas contra concorrência e isolamento DB

  • pytest-xdist
  • Docker
  • GitHub Actions
  • Concorrência
Demo ao vivo

Primeiro acesso pode levar ~30s (hospedagem adormece por inatividade).

github.com/Acciolyy/imoveldf-vitrine
origem: prática
5bugs propositaistest suite

Catalog Under Test

Aplicação construída com 5 falhas reais para prática de QA

Aplicação em Django, PostgreSQL e Playwright projetada intencionalmente com 5 bugs documentados:

ACHADO 01SEVERIDADE: ALTA

Preço negativo aceito no cadastro

Status: documentado, com teste automatizado

ACHADO 02SEVERIDADE: BAIXA

Ausência de limite de caracteres

Status: documentado, com teste automatizado

ACHADO 03SEVERIDADE: BAIXA

Off-by-one na paginação

Status: documentado, com teste automatizado

ACHADO 04SEVERIDADE: CRÍTICA

Rota administrativa vulnerável

Status: documentado, com teste automatizado

ACHADO 05SEVERIDADE: ALTA

Vazamento de sessão por falta de Cache-Control após logout

Status: documentado, com teste automatizado

  • Playwright
  • pytest
  • Django
  • PostgreSQL
origem: contribuição
2PRs abertosMC/DC

Excalidraw Open Source

Duas contribuições em revisão, uma delas com MC/DC

Duas contribuições em aberto no Excalidraw (+130 mil estrelas no GitHub). A primeira corrige um bug no seletor de cor de fundo para desenho de linha aberta, com 21 testes cobrindo a correção. A segunda aplica MC/DC (Modified Condition/Decision Coverage) em 6 testes unitários sobre a função de exportação, usando Vitest e mocks para isolar dependências. É a técnica mais rigorosa de cobertura que já apliquei.

// exportCanvas.test.tsMC/DC: 6/6 testes

expect(exportToBlob(condA, condB)).resolves.toBeDefined();

Independência de cada condição booleana comprovada isoladamente.

  • TypeScript
  • Vitest
  • MC/DC
  • Open Source

Arsenal técnico em automação e engenharia de software.

Ferramentas utilizadas na prática em testes E2E headless, suítes paralelizadas, leitura de código-fonte e cobertura estrita.

Filtrado por: Todas. 17 ferramentas visíveis.

Testes & Automação

Playwright
E2E headless no Senado Federal
pytest
297 testes automatizados no Senado Federal
pytest-xdist
paralelização da suíte do ImóvelDF (~32s)
Model Bakery
geração de massa de dados nos testes de integração
WebTest
testes de integração rápidos e sem overhead de navegador
Postman
automação e validação de contratos de API REST
Robot Framework
Usado na disciplina de Testes de Software, UnB

Linguagens & Dev

Python
TypeScript
testes unitários com Vitest e MC/DC no Excalidraw
Django
leitura de código-fonte e testes de caixa-branca no Senado
PostgreSQL
inspeção direta de estado de banco e integridade referencial

CI/CD & Infra

GitHub Actions
gate de qualidade na branch bloqueando merge
Docker & Compose
Pre-commit Hooks
Linux & Bash

Segurança

OWASP ZAP
varredura DAST, disciplina de Testes de Software (UnB)
Redmine
registro e acompanhamento de bugs no Senado

Coisas que eu fiz por curiosidade, por necessidade, ou porque a faculdade pediu.

Agente de Triagem de Vagas

origem: necessidade própria

Python · Streamlit · Gemini API · Function Calling

Eu estava me candidatando a dezenas de vagas remotas e cansei de rolar site atrás de site. Construí um agente em Python com a API do Gemini e function calling para filtrar vagas por critérios em linguagem natural. Comecei consumindo a API do RemoteOK e percebi que os resultados eram bons demais. Era um dataset chamariz, servido para quem não tem contrato. Migrei para o RSS do We Work Remotely.

github.com/Acciolyy/agente-triagem-vagas

Dashboard de Análise Salarial

origem: prática

Python · Pandas · Plotly · Streamlit · Adzuna API

Ferramenta de BI sobre mais de 130 mil registros do mercado de tecnologia, com Pandas e Plotly. Integra dados em tempo real da API da Adzuna com cache de 24h para respeitar o limite de requisições, e continua funcionando se a API externa cair.

github.com/Acciolyy/Dashboard-Salarios

Portfólio de IA e Machine Learning

origem: acadêmico

Python · PyTorch · scikit-learn · NumPy

Implementações dos quatro paradigmas de aprendizado de máquina: supervisionado, não supervisionado, por reforço e profundo. Tem uma CNN com 98,9% de acurácia em PyTorch, redes bayesianas, HMM, filtro de Kalman e os métodos clássicos de busca.

Foi onde eu aprendi a desconfiar de acurácia alta. Um número bonito no fim do treino não diz quase nada sobre onde o modelo erra, e olhar a matriz de confusão é o equivalente, ali, a olhar quais casos o teste não cobre.

github.com/Acciolyy/portfolio-ia

Vamos conversar

Disponível para contratação

Disponibilidade imediata para atuar como Analista de QA / Automação de Testes em Brasília (presencial ou híbrido) ou 100% Remoto.

thiagoacciolyest@gmail.com(61) 99595-4663Engenharia de Software (UnB)