Files
IPSExtractor/docs/plan_pruebas/main.tex
T

82 lines
3.4 KiB
TeX

\documentclass[11pt,a4paper,oneside]{report}
\input{preamble}
\begin{document}
\makecover
\chapter*{Resumen ejecutivo}
Este documento define la \textbf{estrategia y la matriz de pruebas} del monorepo IPSExtractor:
API Gateway, extraction/workers ARQ, cleaning, count-api, bot-descarga (API + agent Selenium),
PostgreSQL, Redis, MinIO y la aplicaci\'on de escritorio.
\begin{itemize}
\item \textbf{Objetivo:} cerrar el gap entre unitarias aisladas y un plan trazable
(UT / IT / E2E / ST / CH) con SLOs y scripts k6.
\item \textbf{Arquitectura:} microservicios + API Gateway + cola ARQ + claim del bot
(cap.~\ref{ch:arquitectura}).
\item \textbf{Entorno de referencia:} host Ubuntu 8\,GiB compartido (sec.~\ref{sec:host-pruebas});
perfiles \texttt{shared8g} / \texttt{lab}.
\item \textbf{Estado campa\~na:} smoke PASS; ST-GW-01 PASS; ST-BOT-01 PASS (reintento);
ST-EXT-02 LLM medido --- detalle en el \emph{Informe de Pruebas}.
\item \textbf{Volumen 100k/mes:} modelo y veredicto en el PDF \emph{Capacidad 100k}.
\end{itemize}
\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.
\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 de resultados + PDF Capacidad 100k actualizados si aplica.
\item Entorno citado: hostname, \texttt{free -h}, \texttt{docker stats}, perfil k6.
\item Sin secretos hardcodeados en compose 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}