<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Testing - RandomBitsOnFire</title>
	<atom:link href="https://randombitsonfire.com/tag/testing/feed/" rel="self" type="application/rss+xml" />
	<link>https://randombitsonfire.com</link>
	<description>Home</description>
	<lastBuildDate>Fri, 20 Feb 2026 02:08:55 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://randombitsonfire.com/wp-content/uploads/2024/08/cropped-favicon512x512-32x32.png</url>
	<title>Testing - RandomBitsOnFire</title>
	<link>https://randombitsonfire.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Stack para Testing (Swarm+ jMeter)</title>
		<link>https://randombitsonfire.com/arquitectura/stack-para-testing-swarm-jmeter/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=stack-para-testing-swarm-jmeter</link>
					<comments>https://randombitsonfire.com/arquitectura/stack-para-testing-swarm-jmeter/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 20 Feb 2026 01:54:32 +0000</pubDate>
				<category><![CDATA[Arquitectura]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[jMeter]]></category>
		<category><![CDATA[Swarm]]></category>
		<guid isPermaLink="false">https://randombitsonfire.com/?p=128</guid>

					<description><![CDATA[<p>Introducción Es común que cuando se diseña una arquitectura de aplicaciones no baste con el desarrollo de Tests Unitarios o Tests de Integraciones, y se pase a un nivel superior, llamando se así Pruebas de Rendimiento (Performance Testing). Pruebas de rendimiento Las Pruebas de Rendimiento son una técnica de testing que consiste en someter un [&#8230;]</p>
<p>The post <a href="https://randombitsonfire.com/arquitectura/stack-para-testing-swarm-jmeter/">Stack para Testing (Swarm+ jMeter)</a> first appeared on <a href="https://randombitsonfire.com">RandomBitsOnFire</a>.</p>]]></description>
										<content:encoded><![CDATA[<h2 class="wp-block-heading">Introducción</h2>



<p>Es común que cuando se diseña una arquitectura de aplicaciones no baste con el desarrollo de Tests Unitarios o Tests de Integraciones, y se pase a un nivel superior, llamando se así <strong>Pruebas de Rendimiento</strong> (Performance Testing). </p>



<h3 class="wp-block-heading">Pruebas de rendimiento</h3>



<p>Las <strong>Pruebas de Rendimiento</strong> son una técnica de testing que consiste en someter un sistema a un volumen de peticiones controlado para analizar cómo se comporta bajo condiciones reales o esperadas de uso.</p>



<p>No se trata solo de “ver si aguanta”, sino de entender:</p>



<ul class="wp-block-list">
<li>Cuándo empieza a degradarse el rendimiento</li>



<li>Cómo responde el sistema cuando crece el tráfico</li>



<li>Dónde están los cuellos de botella</li>
</ul>



<p>Suelen a tender a las siguientes modalidades en base a la pregunta que se quiere contestar:</p>



<ul class="wp-block-list">
<li><strong>Load testing</strong> → tráfico esperado normal</li>



<li><strong>Stress testing</strong> → llevar el sistema al límite</li>



<li><strong>Spike testing</strong> → picos bruscos de tráfico</li>



<li><strong>Soak testing</strong> → carga sostenida durante mucho tiempo</li>
</ul>



<h3 class="wp-block-heading">Optimización tras las pruebas</h3>



<p>Una vez identificados los límites, el siguiente paso consiste en aplicar mejoras. Entre las más habituales encontramos:</p>



<ul class="wp-block-list">
<li>Aumento de memoria o CPU</li>



<li>Ajustes de configuración (fine tuning)</li>



<li>Pools de conexiones</li>



<li>Pools de threads</li>
</ul>



<p>En consecuencia, estas optimizaciones permiten escalar el sistema de forma controlada y eficiente.</p>



<h2 class="wp-block-heading">Testing Tools</h2>



<p>Un entorno de pruebas controlado no es un lujo, es una necesidad.</p>



<p>La combinación de:</p>



<ul class="wp-block-list">
<li><a href="https://docs.docker.com/engine/swarm/" title="Docker Swarm">Docker Swarm</a> (orquestación): Permite tener varias instancias de un contenedor y ver como se comporta en casos de balanceos</li>



<li><a href="https://prometheus.io/" title="">Prometheus </a>(métricas)</li>



<li><a href="https://grafana.com/" title="">Grafana </a>(visualización)</li>



<li><a href="https://spring.io/projects/spring-boot" title="">Spring Boot</a> + <a href="https://micrometer.io/" title="">Micrometer </a>(instrumentación)</li>



<li><a href="https://jmeter.apache.org/" title="">jMeter</a></li>
</ul>



<p>De este modo, se obtiene un ecosistema completo de observabilidad en local, muy cercano a producción y completamente reproducible.</p>



<p>Esto se traduce en <strong>menos errores, despliegues más seguros y sistemas más robustos</strong>.</p>



<p>Para ello encontré el siguiente stack que me vino de lujo para la monitorización de los diferentes micros, para ejecutar en entornos locales de prueba (y un buen maquinón xD):</p>



<p><a href="https://github.com/stefanprodan/swarmprom">https://github.com/stefanprodan/swarmprom</a></p>



<p><a href="https://dockerswarm.rocks/swarmprom">https://dockerswarm.rocks/swarmprom</a></p>



<p>Este stack integra Prometheus, Grafana y múltiples exporters listos para usar.</p>



<p>No obstante, en mi caso decidí simplificarlo ligeramente, eliminando componentes como el alerting o la integración con Slack, ya que no eran necesarios en un entorno local.</p>



<p>También quité Treffic y utilice accesos directo por localhost y sus respectivas apertura de puertos.</p>



<h2 class="wp-block-heading">jMeter</h2>



<p>Por otro lado, la generación de carga es una pieza clave. Para ello, utilicé Apache JMeter, una herramienta ampliamente utilizada en pruebas de rendimiento.</p>



<p>Sin embargo, jMeter suele venir bastante limitado de serie. Por esta razón, es recomendable ampliar sus capacidades mediante plugins.</p>



<p>En particular, una colección muy útil incluye:</p>



<ul class="wp-block-list">
<li>3 Basic Graphs</li>



<li>5 Additional Graphs</li>



<li>Composite Timeline Graph</li>



<li>Custom Thread Groups</li>



<li>Parallel Controller &amp; Sampler</li>
</ul>



<p>Gracias a estos plugins, es posible obtener una visión mucho más completa del comportamiento del sistema.</p>



<h2 class="wp-block-heading">Resultados de Testing</h2>



<p>Finalmente, el resultado es un conjunto de métricas y estadísticas que, aunque mejorables, ofrecen una base sólida para analizar la robustez de la solución planteada.</p>



<p>A partir de aquí, además, se pueden empezar a explotar métricas clave, detectar patrones de comportamiento y tomar decisiones informadas para mejorar el sistema.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="512" height="205" data-id="132" src="https://randombitsonfire.com/wp-content/uploads/2026/02/theeshold.png" alt="testing Custom Thread Groups" class="wp-image-132" srcset="https://randombitsonfire.com/wp-content/uploads/2026/02/theeshold.png 512w, https://randombitsonfire.com/wp-content/uploads/2026/02/theeshold-300x120.png 300w" sizes="(max-width: 512px) 100vw, 512px" /></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="512" height="198" data-id="134" src="https://randombitsonfire.com/wp-content/uploads/2026/02/responseTimes.png" alt="testing 5 Additional Graphs" class="wp-image-134" srcset="https://randombitsonfire.com/wp-content/uploads/2026/02/responseTimes.png 512w, https://randombitsonfire.com/wp-content/uploads/2026/02/responseTimes-300x116.png 300w" sizes="(max-width: 512px) 100vw, 512px" /></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="512" height="187" data-id="133" src="https://randombitsonfire.com/wp-content/uploads/2026/02/httpcodes.png" alt="testing 5 Additional Graphs" class="wp-image-133" srcset="https://randombitsonfire.com/wp-content/uploads/2026/02/httpcodes.png 512w, https://randombitsonfire.com/wp-content/uploads/2026/02/httpcodes-300x110.png 300w" sizes="(max-width: 512px) 100vw, 512px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="512" height="79" data-id="136" src="https://randombitsonfire.com/wp-content/uploads/2026/02/cpu.png" alt="Testing grafana CPU Service" class="wp-image-136" srcset="https://randombitsonfire.com/wp-content/uploads/2026/02/cpu.png 512w, https://randombitsonfire.com/wp-content/uploads/2026/02/cpu-300x46.png 300w" sizes="auto, (max-width: 512px) 100vw, 512px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="512" height="102" data-id="135" src="https://randombitsonfire.com/wp-content/uploads/2026/02/mem.png" alt="Testing grafana Memory Service" class="wp-image-135" srcset="https://randombitsonfire.com/wp-content/uploads/2026/02/mem.png 512w, https://randombitsonfire.com/wp-content/uploads/2026/02/mem-300x60.png 300w" sizes="auto, (max-width: 512px) 100vw, 512px" /></figure>
</figure>



<p class="has-text-align-right">Saludos and Happy Codding!!</p>



<p></p><p>The post <a href="https://randombitsonfire.com/arquitectura/stack-para-testing-swarm-jmeter/">Stack para Testing (Swarm+ jMeter)</a> first appeared on <a href="https://randombitsonfire.com">RandomBitsOnFire</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://randombitsonfire.com/arquitectura/stack-para-testing-swarm-jmeter/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
