Análisis de herramientas

Pruebas de carga con NBomber: análisis del framework .NET

7 min de lectura

NBomber es un framework de pruebas de carga para .NET: escribes cada prueba como un escenario en C# o F#, la añades a un proyecto normal y la ejecutas como cualquier otro programa. Las pruebas de carga con NBomber encajan con equipos que ya desarrollan en .NET y quieren sus pruebas de carga en el mismo lenguaje, el mismo repositorio y el mismo ejecutor de pruebas. Solo es gratis para uso personal y académico; una empresa necesita una licencia de pago, y ese dato decide más evaluaciones que cualquier función.

No hemos ejecutado NBomber para este análisis. Los datos salen de la documentación, la página de precios, el repositorio de GitHub y el paquete de NuGet de NBomber, comprobados el 21 de octubre de 2026, y las valoraciones son nuestras.

TemaNBomber
LicenciaGratis para uso personal y académico; de pago para organizaciones
Precio para una empresaBusiness 1.500 $ al año, Enterprise 2.500 $ al año
Versión actual6.7.1 (16 de octubre de 2026)
Entorno.NET Standard 2.1, es decir, .NET Core 3.0 o posterior
Pruebas escritas comoEscenarios en C# o F#
Modelo de cargaInject (tasa de llegada) o copias constantes
Comprobaciones de aprobaciónUmbrales durante la ejecución, aserciones sobre las estadísticas finales
EscaladoNBomber Cluster, licencia Enterprise

¿Quién desarrolla NBomber y es gratis?

Lo desarrolla NBomber LLC, con el código en GitHub. Es gratis para uso personal, de aficionado y académico, y la página de licencia dice sin rodeos que NBomber no es gratis para organizaciones.

La página de licencia incluye en el uso personal los benchmarks, los tutoriales y el contenido de análisis. Dentro de una empresa necesitas una licencia Business o Enterprise, que se emite por organización y no por puesto de desarrollador, sin límite de instancias ni de ejecuciones en paralelo. La página de precios indica 1.500 $ al año para Business y 2.500 $ al año para Enterprise, ambas con 30 días de garantía de devolución. La clave de licencia se pasa al ejecutor con .WithLicense(...) o con un argumento --license, y NBomber necesita acceso a internet para validarla, con validación sin conexión disponible si la pides por correo (comprobado el 21 de octubre de 2026).

La última versión es la v6.7.1, publicada el 16 de octubre de 2026, cuatro días después de la 6.7.0 (comprobado el 21 de octubre de 2026).

¿Cómo funciona un escenario de NBomber?

Un escenario es un nombre más una función asíncrona que NBomber cronometra en cada llamada. Le añades simulaciones de carga y umbrales, lo registras en NBomberRunner y ejecutas el programa.

Esta prueba se salta el warm-up, sube la tasa de llegada a 50 copias nuevas del escenario por segundo en dos minutos, la mantiene diez minutos y termina con código de salida 1 si el 1 % o más de las peticiones han fallado. Usa el plugin NBomber.Http para la petición:

var http = Http.CreateDefaultClient();

var scenario = Scenario.Create("browse", async context =>
{
    var request = Http.CreateRequest("GET",
        "https://staging.example.com/products");
    return await Http.Send(http, request);
})
.WithoutWarmUp()
.WithLoadSimulations(
    Simulation.RampingInject(rate: 50,
        interval: TimeSpan.FromSeconds(1),
        during: TimeSpan.FromMinutes(2)),
    Simulation.Inject(rate: 50,
        interval: TimeSpan.FromSeconds(1),
        during: TimeSpan.FromMinutes(10)))
.WithThresholds(
    Threshold.Create(s => s.Fail.Request.Percent < 1));

var result = NBomberRunner
    .RegisterScenarios(scenario).Run();
return result.Thresholds.Any(t => t.IsFailed) ? 1 : 0;

La página del cliente HTTP recomienda Http.CreateDefaultClient() en lugar de un simple new HttpClient() y dice que el plugin registra los códigos de estado y los datos transferidos (comprobado el 21 de octubre de 2026). Un umbral por sí mismo únicamente deja constancia del fallo en el informe; la última línea es la que lo convierte en un código de salida que un pipeline puede leer. Sin .WithoutWarmUp(), NBomber ejecuta primero un warm-up de 30 segundos con las simulaciones del escenario, según la página de escenarios (comprobado el 21 de octubre de 2026). Como el escenario es C# normal, todo lo que pueda llamar una biblioteca de .NET se puede someter a carga de la misma forma.

¿Qué modelos de carga ofrece NBomber?

Los dos. Las simulaciones inject lanzan copias nuevas a un ritmo fijo, hagan lo que hagan las anteriores, que es un modelo de carga abierto; las simulaciones constant mantienen un número fijo de copias en marcha, que es uno cerrado.

La página de simulaciones de carga las enumera (comprobado el 21 de octubre de 2026):

  • Abiertas: Inject, RampingInject, InjectRandom e IterationsForInject.
  • Cerradas: KeepConstant, RampingConstant e IterationsForConstant.
  • Control de tiempo: Pause, que retrasa el inicio de un escenario o lo pausa durante un tiempo fijado.

Nuestro artículo sobre el modelo de carga abierto vs cerrado explica cuál encaja con tu tráfico. Un sitio web público suele comportarse como el modelo abierto; un grupo fijo de clientes internos, como el cerrado.

¿Cómo funcionan los umbrales y las comprobaciones de aprobación?

Los umbrales en tiempo de ejecución revisan las estadísticas en curso, cada 5 segundos por defecto, y aparecen en el informe HTML. Las aserciones, escritas con xUnit o NUnit, revisan las estadísticas finales tras la ejecución, y una aserción fallida termina la ejecución con estado fallido.

La página de umbrales muestra comprobaciones sobre el porcentaje de errores, los códigos de estado, los percentiles de latencia (p50, p75, p95, p99 y máximo), las peticiones por segundo y los bytes transferidos. Por defecto un umbral no detiene la prueba; abortWhenErrorCount la detiene tras un número dado de comprobaciones fallidas (comprobado el 21 de octubre de 2026). La página no indica un código de salida, por eso el ejemplo de arriba devuelve uno a partir del resultado. Nuestra guía de criterios de aprobación en pruebas de carga ayuda a elegir los límites.

¿Qué protocolos puede probar NBomber?

Cualquier protocolo que hable una biblioteca de .NET, porque NBomber solo cronometra el código que le das. Hay plugins listos para HTTP, WebSockets, MQTT y AMQP, además de una opción WebBrowser.

La página de introducción describe el framework como independiente del protocolo, y la página de precios incluye esos plugins en todos los planes, también en el gratuito. Eso abarca también las bases de datos y las colas de mensajes que llamas con sus propios clientes de .NET (comprobado el 21 de octubre de 2026). A cambio, fuera de los plugins tienes que escribir y mantener tú el código del cliente.

¿Cómo se escala una prueba de NBomber?

Con NBomber Cluster: un Coordinator orquesta la ejecución y los Agents ejecutan los escenarios, todos comunicados a través de un broker de mensajes NATS. Cluster forma parte de la licencia Enterprise.

La introducción al clúster explica los roles, y la página de licencia indica que los desarrolladores pueden probarlo en local con un Local Dev Cluster antes de comprar; la página del Local Dev Cluster lo limita a 1 Coordinator y 2 Agents y detiene cada ejecución al cabo de un minuto (comprobado el 21 de octubre de 2026). La integración con Kubernetes de NBomber Studio, también exclusiva de Enterprise, prepara por ti NATS y los pods de los Agents. Sin Cluster, un proceso de NBomber corre en una sola máquina; la página de requisitos del sistema recomienda de 4 a 8 núcleos de CPU para carga alta.

LoadFocus, que publica este sitio, no ejecuta pruebas de NBomber. Ejecuta planes de prueba JMeter y scripts de k6 desde 25 regiones en la nube.

¿Qué hace bien NBomber y dónde están sus límites?

Es fuerte para equipos .NET: las pruebas son código C# o F#, cualquier cliente de .NET se convierte en una prueba de carga y los dos modelos de carga vienen integrados. Sus límites son la licencia para empresas, un ecosistema de un solo lenguaje y las ejecuciones distribuidas de pago.

  • Las pruebas viven junto al código de la aplicación, con el mismo IDE, los mismos paquetes y las mismas revisiones.
  • Los umbrales vienen integrados, y las aserciones se ejecutan dentro de las pruebas de xUnit o NUnit que ya tienes.
  • El uso comercial requiere licencia, incluso para un solo desarrollador.
  • Las ejecuciones distribuidas requieren Enterprise y un broker NATS.
  • Quien no conozca .NET tendrá que aprender antes C# o F#.

¿Cuándo elegir k6, Gatling o JMeter en lugar de NBomber?

Elige otra herramienta cuando tu equipo no programe en .NET o cuando el coste de la licencia no encaje.

Elige k6 si quieres scripts en JavaScript y una herramienta open source sin coste de licencia para uso en empresa: su repositorio tiene licencia AGPL-3.0 (comprobado el 21 de octubre de 2026). LoadFocus ejecuta scripts de k6 desde 25 regiones en la nube, aunque lanza los escenarios arrival-rate con un número fijo de usuarios. Elige Gatling para una herramienta de código sobre la JVM; nuestro análisis de Gatling la cubre. Elige JMeter si tus testers prefieren una interfaz gráfica o necesitas samplers JDBC, JMS o LDAP de serie. El repaso de herramientas de pruebas de carga open source las compara.

FAQ

¿NBomber es gratis para uso comercial? No. NBomber solo es gratis para uso personal y académico. Una empresa necesita una licencia Business de 1.500 $ al año o una licencia Enterprise de 2.500 $ al año.

¿Qué versiones de .NET admite NBomber? Apunta a .NET Standard 2.1, así que funciona en .NET Core 3.0 y en todas las versiones de .NET posteriores. La documentación recomienda .NET 10.

¿Puede LoadFocus ejecutar pruebas de NBomber? No. LoadFocus ejecuta planes de prueba JMeter y scripts de k6. Para ejecutar NBomber en más de una máquina, usa NBomber Cluster, que requiere una licencia Enterprise.

Lecturas relacionadas


Las afirmaciones técnicas de este artículo no se han revisado de forma independiente.

LoadFocus team
Escrito por el equipo de LoadFocus, las personas detrás de un servicio de pruebas de carga en la nube.