85 lines
4.1 KiB
TeX
85 lines
4.1 KiB
TeX
\documentclass[11pt,a4paper,oneside]{report}
|
|
|
|
\input{preamble}
|
|
|
|
\begin{document}
|
|
|
|
\makecover
|
|
|
|
\chapter*{Control de cambios}
|
|
\begin{tabularx}{\textwidth}{@{}l l X@{}}
|
|
\toprule
|
|
\textbf{Versi\'on} & \textbf{Fecha} & \textbf{Descripci\'on} \\
|
|
\midrule
|
|
1.0.0 & 13 jul 2026 & Versi\'on inicial del plan de pruebas y estr\'es. \\
|
|
1.1.0 & 13 jul 2026 & Entorno real de ejecuci\'on (host Ubuntu compartido 8\,GiB) y perfiles de carga. \\
|
|
1.2.0 & 13 jul 2026 & Informe campa\~na k6: smoke, ST-GW-01 PASS, ST-BOT-01 PASS (reintento). \\
|
|
\bottomrule
|
|
\end{tabularx}
|
|
|
|
\chapter*{Resumen ejecutivo}
|
|
Este documento define la estrategia y la matriz de pruebas del monorepo \textbf{IPSExtractor}: API Gateway, extraction/workers ARQ, cleaning, count-api (Go), bot-descarga (API + agent Selenium), PostgreSQL, Redis, MinIO y la aplicaci\'on de escritorio.
|
|
|
|
Hoy el repositorio cuenta principalmente con pruebas unitarias aisladas; no existe pipeline CI, ni suites de integraci\'on/E2E automatizadas. Este plan cierra ese gap con identificadores trazables (\texttt{UT-*}, \texttt{IT-*}, \texttt{E2E-*}, \texttt{ST-*}, \texttt{CH-*}), SLOs medibles y scripts \textbf{k6} de referencia en \texttt{docs/plan\_pruebas/scripts/}.
|
|
|
|
\textbf{Importante:} las pruebas de integraci\'on, humo y estr\'es documentadas contra el stack vivo se ejecutan en el host descrito en la secci\'on~\ref{sec:host-pruebas} (laptop Ubuntu 24.04, 8\,GiB RAM, Docker compartido con MLflow, Airflow, n8n, etc.). Los resultados deben interpretarse en ese contexto: un OOM o p95 alto puede deberse a contenci\'on del host, no solo a IPSExtractor.
|
|
|
|
\textbf{Estado campa\~na 2026-07-13:} smoke PASS; ST-GW-01 PASS; ST-BOT-01 PASS en reintento (detalle en cap.~\ref{ch:informe-2026-07-13}).
|
|
|
|
\tableofcontents
|
|
\clearpage
|
|
|
|
\input{sections/01_introduccion}
|
|
\input{sections/02_arquitectura}
|
|
\input{sections/03_estrategia}
|
|
\input{sections/04_unitarias}
|
|
\input{sections/05_integracion}
|
|
\input{sections/06_e2e}
|
|
\input{sections/07_estres}
|
|
\input{sections/08_resiliencia}
|
|
\input{sections/09_datos_entornos}
|
|
\input{sections/10_herramientas_ci}
|
|
\input{sections/11_cronograma_aceptacion}
|
|
\input{sections/12_informe_2026_07_13}
|
|
|
|
\appendix
|
|
\chapter{Glosario}
|
|
\begin{description}[style=nextline,leftmargin=2.2cm,labelwidth=2cm]
|
|
\item[ARQ] Cola as\'incrona de workers de extracci\'on sobre Redis.
|
|
\item[Claim] Operaci\'on at\'omica que asigna un job \texttt{pending} a un worker.
|
|
\item[Gateway] \texttt{api\_gateway}, \'unica puerta HTTP expuesta en el host (:8189).
|
|
\item[Imaging] Portal web automatizado por Selenium en el PC del bot.
|
|
\item[k6] Herramienta profesional de pruebas de carga (Grafana Labs).
|
|
\item[MinIO] Almacenamiento S3-compatible para Excel y PDFs del bot.
|
|
\item[SLO] Objetivo de nivel de servicio (latencia, error rate, etc.).
|
|
\end{description}
|
|
|
|
\chapter{Checklist de release}
|
|
\begin{enumerate}
|
|
\item Unitarios verdes: bots, bot-descarga store, Vitest, \texttt{go test}.
|
|
\item Migraciones Alembic en BD limpia (0001--0004).
|
|
\item Smoke Compose: \texttt{GET /health/live} y \texttt{GET /health}.
|
|
\item E2E-01 a E2E-05 ejecutados en staging (E2E-05 con agent real si hay Imaging).
|
|
\item Al menos ST-GW-01, ST-BOT-01, ST-COUNT-01 y ST-EXT-01 con umbrales cumplidos.
|
|
\item Informe: p95, error rate, picos RAM, jobs fallidos, costos LLM.
|
|
\item \textbf{Entorno citado:} hostname, \texttt{free -h}, \texttt{docker stats}, perfil k6 (\texttt{shared8g}/\texttt{lab}).
|
|
\item Sin secretos hardcodeados en compose para entornos de prueba.
|
|
\end{enumerate}
|
|
|
|
\chapter{Mapa de rutas relevantes}
|
|
\section*{Gateway (\texttt{:8189})}
|
|
\begin{itemize}
|
|
\item \texttt{GET /health/live}, \texttt{GET /health}
|
|
\item Proxy: \texttt{/tasks/*}, \texttt{/cleaning/*}, \texttt{/count/*}, \texttt{/bot-descarga/*}
|
|
\item Timeout JSON 30\,s; uploads (incl.\ \texttt{POST /bot-descarga/jobs}) 600\,s
|
|
\end{itemize}
|
|
|
|
\section*{Bot-descarga API (\texttt{:8200}, v\'ia gateway)}
|
|
\begin{itemize}
|
|
\item Workers: \texttt{POST /workers/register}, \texttt{POST /workers/heartbeat}
|
|
\item Workers: \texttt{GET /workers}, \texttt{GET /workers/me/pending}
|
|
\item Jobs: \texttt{POST /jobs}, \texttt{GET/PATCH /jobs/\{id\}}, events, cancel, file, files MinIO
|
|
\end{itemize}
|
|
|
|
\end{document}
|