feat: Add comprehensive testing plan for IPSExtractor, including unit, integration, E2E, stress, and resilience tests. Introduce LaTeX documentation structure with sections for architecture, test strategy, and execution guidelines. Enhance README with setup instructions and k6 stress testing scripts.

This commit is contained in:
erik
2026-07-13 17:45:39 -05:00
parent 103bcea15b
commit 6bf413c4ce
25 changed files with 1662 additions and 0 deletions
@@ -0,0 +1,63 @@
\chapter{Estrategia de pruebas}
\label{ch:estrategia}
\section{Pir\'amide}
\begin{table}[h]
\centering
\begin{tabular}{@{}llp{4.5cm}l@{}}
\toprule
\textbf{Capa} & \textbf{Qu\'e valida} & \textbf{D\'onde} & \textbf{Frecuencia} \\
\midrule
Unitaria & Dominio, parsers, auth, store & Local + CI & Cada PR \\
Integraci\'on & HTTP + PG/Redis/MinIO & Compose test & PR / nightly \\
Contrato & OpenAPI / rutas gateway & CI & Cada PR \\
E2E & Flujos de negocio & Staging & Nightly / release \\
Estr\'es & L\'imites y degradaci\'on & Staging aislado & Pre-release \\
Chaos & Ca\'idas de dependencias & Staging & Mensual \\
\bottomrule
\end{tabular}
\caption{Pir\'amide de pruebas IPSExtractor.}
\end{table}
\section{Convenci\'on de identificadores}
\begin{itemize}
\item \texttt{UT-<SERVICIO>-<NN>} --- unitarias
\item \texttt{IT-<SERVICIO>-<NN>} --- integraci\'on
\item \texttt{E2E-<NN>} --- end-to-end de negocio
\item \texttt{ST-<AREA>-<NN>} --- estr\'es / carga
\item \texttt{CH-<NN>} --- chaos / resiliencia
\end{itemize}
\section{Entornos}
\begin{description}
\item[local] Mocks de LLM, Imaging y MinIO (moto/LocalStack).
\item[ci] Unitarios + smoke Compose (\texttt{/health/live}).
\item[staging] Stack completo + MinIO staging + LLM con cuota; Imaging solo con VPN de prueba.
\item[stress] Igual que staging, sin usuarios reales; datos sint\'eticos.
\end{description}
\section{Mocks vs sistemas reales}
\begin{table}[h]
\centering
\begin{tabular}{@{}lcccc@{}}
\toprule
\textbf{Dependencia} & \textbf{Unit/CI} & \textbf{Integr.} & \textbf{Estr\'es} & \textbf{E2E} \\
\midrule
PostgreSQL & SQLite/TC & Real & Real & Real \\
Redis & Mock/TC & Real & Real & Real \\
MinIO & moto/LS & LocalStack & Staging & Staging \\
LLM & Fake HTTP & Fake & Fake+1 real & Real \\
Imaging & Mock & Mock & N/A & Real \\
Chrome & Mock & Mock & N/A & Real \\
\bottomrule
\end{tabular}
\caption{TC = Testcontainers; LS = LocalStack.}
\end{table}
\section{Principios}
\begin{enumerate}
\item Un caso = un objetivo verificable (assert expl\'icito).
\item Datos de prueba versionados (fixtures), no datos de producci\'on.
\item Estr\'es solo en staging aislado; umbrales escritos antes de ejecutar.
\item Fallos externos (LLM/Imaging) se aislan con mocks en CI.
\end{enumerate}