| Atributo | Valor | |----------|-------| | **ID** | `sre-load-testing-performance` | | **Nivel** | 🔴 Avanzado | | **Versión** | 1.0.0 | | **Keywords** | `load-testing`, `performance`, `k6`, `jmeter`, `stress-testing`, `capacity-planning`, `benchmarking`, `rust` | | **Referencia** | [k6 Documentation](https://k6.io/docs/), [JMeter](https://jmeter.apache.org/) |
Scanned 9/8/2026
Install to Claude Code
npx -y skills add chimeranext/flutter-boilerplate-monorepo-template --skill load-testing-performance --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Load Testing Performance?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/chimeranext-load-testing-performance)More formats (shields.io, HTML) on the badges page.
# ⚡ Skill: Load Testing & Performance
## 📋 Metadata
| Atributo | Valor |
|----------|-------|
| **ID** | `sre-load-testing-performance` |
| **Nivel** | 🔴 Avanzado |
| **Versión** | 1.0.0 |
| **Keywords** | `load-testing`, `performance`, `k6`, `jmeter`, `stress-testing`, `capacity-planning`, `benchmarking`, `rust` |
| **Referencia** | [k6 Documentation](https://k6.io/docs/), [JMeter](https://jmeter.apache.org/) |
## 🔑 Keywords para Invocación
- `load-testing`
- `performance-testing`
- `stress-testing`
- `k6`
- `jmeter`
- `capacity-planning`
- `benchmarking`
- `rust`
- `@skill:load-testing`
### Ejemplos de Prompts
```
Implementa load testing con k6 para APIs
```
```
Configura stress testing y capacity planning
```
```
Setup performance benchmarking y profiling
```
```
@skill:load-testing - Estrategia completa de testing de carga
```
```
Implementa profiling y benchmarking para backend Rust
```
## 📖 Descripción
Load testing y performance optimization son esenciales para entender los límites de un sistema. Este skill cubre herramientas de load testing (k6, JMeter), estrategias de testing, capacity planning, profiling, y optimización de performance.
### ✅ Cuándo Usar Este Skill
- Antes de releases importantes
- Capacity planning
- Performance optimization
- SLA validation
- Stress testing
- Finding bottlenecks
### ❌ Cuándo NO Usar Este Skill
- Prototipos tempranos
- Sistemas sin usuarios reales
- Aplicaciones sin requisitos de performance
## 🏗️ Tipos de Testing
```
Load Testing
├── Baseline (Expected load)
├── Stress (Beyond capacity)
├── Spike (Sudden load increase)
├── Endurance (Extended duration)
└── Volume (Large data sets)
```
## 💻 Implementación
> **📁 Scripts Ejecutables:** Este skill incluye scripts ejecutables en la carpeta [`scripts/`](scripts/):
> - **k6 Tests:** [`scripts/k6/`](scripts/k6/) - Scripts de load testing (JavaScript)
> - **Node.js Profiling:** [`scripts/nodejs/`](scripts/nodejs/) - Herramientas de profiling (JavaScript)
> - **Rust Benchmarks:** [`scripts/rust/`](scripts/rust/) - Benchmarks con Criterion (Rust)
> - **Python Capacity Planning:** [`scripts/python/`](scripts/python/) - Calculadora de capacidad (Python)
>
> Ver [`scripts/README.md`](scripts/README.md) para documentación de uso completa.
### 1. k6 Load Testing
#### 1.1 Basic Test Script
**Script ejecutable:** [`scripts/k6/basic-load.js`](scripts/k6/basic-load.js)
Script básico de load testing con k6 para APIs. Incluye métricas personalizadas, thresholds y stages configurables.
**Cuándo ejecutar:**
- Testing de carga básico de APIs
- Validación de SLA de respuesta
- Baseline de performance
**Uso:**
```bash
# Ejecutar test básico
k6 run scripts/k6/basic-load.js
# Con variables de entorno
k6 run scripts/k6/basic-load.js \
--env BASE_URL=https://api.example.com \
--env API_TOKEN=your-token
```
**Características:**
- ✅ Stages configurables (ramp up/down)
- ✅ Thresholds de latencia y error rate
- ✅ Métricas personalizadas (error rate, request duration)
- ✅ Variables de entorno para configuración
#### 1.2 Advanced Test with Scenarios
**Script ejecutable:** [`scripts/k6/advanced-scenarios.js`](scripts/k6/advanced-scenarios.js)
Test avanzado con múltiples escenarios simulando diferentes comportamientos de usuarios (browse, checkout, search).
**Cuándo ejecutar:**
- Testing de escenarios realistas
- Simulación de diferentes tipos de usuarios
- Testing de e-commerce o aplicaciones complejas
**Uso:**
```bash
# Ejecutar todos los escenarios
k6 run scripts/k6/advanced-scenarios.js
# Ejecutar escenario específico
k6 run scripts/k6/advanced-scenarios.js --env SCENARIO=browse_products
```
**Características:**
- ✅ Múltiples escenarios simultáneos
- ✅ Diferentes tipos de executors (ramping-vus, constant-arrival-rate, shared-iterations)
- ✅ Thresholds por escenario
- ✅ Simulación de comportamiento realista
#### 1.3 Stress Test
**Script ejecutable:** [`scripts/k6/stress-test.js`](scripts/k6/stress-test.js)
Stress test que incrementa gradualmente la carga más allá de la capacidad normal para encontrar puntos de quiebre.
**Cuándo ejecutar:**
- Encontrar límites del sistema
- Identificar puntos de quiebre
- Testing de recovery después de stress
**Uso:**
```bash
k6 run scripts/k6/stress-test.js
k6 run scripts/k6/stress-test.js --env BASE_URL=https://api.example.com
```
**Características:**
- ✅ Incremento gradual de carga
- ✅ Thresholds relajados para stress testing
- ✅ Período de recovery incluido
### 2. Performance Profiling
#### 2.1 Application Profiling (Node.js)
**Script ejecutable:** [`scripts/nodejs/performance-profiler.js`](scripts/nodejs/performance-profiler.js)
Herramienta de CPU profiling para aplicaciones Node.js usando v8-profiler.
**Cuándo ejecutar:**
- Identificar cuellos de botella de CPU
- Profiling de funciones específicas
- Análisis de performance de Node.js
**Uso:**
```bash
cd scripts/nodejs
npm install
# Profiling por duración
node performance-profiler.js --profile-name my-app --duration=60
# Programático (en tu código)
const profiler = require('./performance-profiler');
const profilerInstance = new profiler();
await profilerInstance.profileFunction(slowFunction, 'slow-function-profile');
```
**Características:**
- ✅ CPU profiling con v8-profiler
- ✅ Exportación a formato .cpuprofile (Chrome DevTools)
- ✅ Profiling de funciones específicas
- ✅ CLI y uso programático
#### 2.2 Memory Profiling
**Script ejecutable:** [`scripts/nodejs/memory-profiler.js`](scripts/nodejs/memory-profiler.js)
Herramienta de memory profiling y monitoreo para aplicaciones Node.js.
**Cuándo ejecutar:**
- Detectar memory leaks
- Monitoreo continuo de memoria
- Análisis de uso de heap
**Uso:**
```bash
# Monitoreo continuo
node memory-profiler.js --monitor --interval=5000
# Tomar snapshot
node memory-profiler.js --snapshot --filename=heap.heapsnapshot
# Ver uso actual
node memory-profiler.js
```
**Características:**
- ✅ Heap snapshots (.heapsnapshot para Chrome DevTools)
- ✅ Monitoreo continuo de memoria
- ✅ Métricas detalladas (RSS, heap, external)
#### 2.3 Performance Profiling (Rust)
**Script ejecutable:** [`scripts/rust/benches/my_benchmark.rs`](scripts/rust/benches/my_benchmark.rs)
Benchmarks de performance para código Rust usando Criterion.
**Cuándo ejecutar:**
- Benchmarking de funciones críticas
- Comparación de implementaciones
- Validación de optimizaciones
**Uso:**
```bash
cd scripts/rust
# Ejecutar benchmarks
cargo bench
# Con profiling integrado
cargo bench -- --profile-time=10
# Ver reportes HTML
open target/criterion/report/index.html
```
**Características:**
- ✅ Benchmarks con Criterion
- ✅ Reportes HTML detallados
- ✅ Comparación entre ejecuciones
- ✅ Estadísticas avanzadas (percentiles, outliers)
#### 2.4 CPU Profiling con perf (Rust)
```bash
# Instalar herramientas de profiling
sudo apt-get install linux-perf
# Compilar con símbolos de debug (optimizado pero con símbolos)
RUSTFLAGS="-g" cargo build --release
# Profiling con perf
perf record --call-graph dwarf ./target/release/my-service
# Ver resultados
perf report
# Generar flamegraph
perf script | stackcollapse-perf.pl | flamegraph.pl > flamegraph.svg
```
```rust
// src/profiling.rs
use std::time::Instant;
use tracing::{info, debug};
pub struct PerformanceProfiler {
start_time: Instant,
}
impl PerformanceProfiler {
pub fn new() -> Self {
Self {
start_time: Instant::now(),
}
}
pub fn elapsed(&self) -> u64 {
self.start_time.elapsed().as_millis() as u64
}
pub fn log_elapsed(&self, operation: &str) {
let elapsed = self.elapsed();
info!(
operation = operation,
duration_ms = elapsed,
"Operation completed"
);
}
}
impl Drop for PerformanceProfiler {
fn drop(&mut self) {
debug!(
total_duration_ms = self.elapsed(),
"Profiler dropped"
);
}
}
// Uso
pub async fn process_user_request(user_id: &str) -> Result<(), Error> {
let _profiler = PerformanceProfiler::new();
// Tu código aquí
let user = fetch_user(user_id).await?;
_profiler.log_elapsed("fetch_user");
let result = process_data(&user).await?;
_profiler.log_elapsed("process_data");
Ok(())
}
```
#### 2.5 Memory Profiling (Rust)
```toml
# Cargo.toml
[dependencies]
dhat = "0.3" # Para memory profiling
```
```rust
// src/lib.rs (solo para profiling)
#[cfg(feature = "dhat-heap")]
#[global_allocator]
static ALLOC: dhat::Alloc = dhat::Alloc;
// En main.rs o tests
#[cfg(feature = "dhat-heap")]
{
let _profiler = dhat::Profiler::new_heap();
// Tu código aquí
run_application().await;
}
```
```bash
# Compilar con dhat feature
cargo build --release --features dhat-heap
# Ejecutar - generará dhat-heap.json
./target/release/my-service
# Analizar con dhat
dhat-view dhat-heap.json
```
#### 2.6 Flamegraph Profiling (Rust)
```bash
# Instalar cargo-flamegraph
cargo install flamegraph
# Generar flamegraph
cargo flamegraph --bin my-service
# Con opciones específicas
cargo flamegraph --dev --example my-example -- --test-input
# Para servicios web (necesita requests)
cargo flamegraph --dev --bin my-service &
# Hacer requests con k6 o curl
k6 run load-test.js
# Ctrl+C para detener flamegraph
```
#### 2.7 Performance Metrics en Rust (Actix Web)
```toml
# Cargo.toml
[dependencies]
actix-web = "4"
actix-web-prom = "0.6"
prometheus = "0.13"
```
```rust
// src/metrics.rs
use actix_web::web;
use actix_web_prom::PrometheusMetricsBuilder;
use prometheus::{Counter, Histogram, Registry, Opts};
lazy_static::lazy_static! {
pub static ref HTTP_REQUESTS_TOTAL: Counter = Counter::with_opts(
Opts::new("http_requests_total", "Total HTTP requests")
.const_label("service", "my-service")
).unwrap();
pub static ref HTTP_REQUEST_DURATION: Histogram = Histogram::with_opts(
prometheus::HistogramOpts::new(
"http_request_duration_seconds",
"HTTP request duration"
)
.buckets(vec![0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1.0, 2.5, 5.0])
.const_label("service", "my-service")
).unwrap();
}
pub fn init_metrics() -> Result<(), Box<dyn std::error::Error>> {
let registry = Registry::new();
registry.register(Box::new(HTTP_REQUESTS_TOTAL.clone()))?;
registry.register(Box::new(HTTP_REQUEST_DURATION.clone()))?;
Ok(())
}
```
```rust
// src/main.rs
use actix_web::{web, App, HttpServer, middleware};
use actix_web_prom::PrometheusMetricsBuilder;
use crate::metrics::init_metrics;
#[actix_web::main]
async fn main() -> std::io::Result<()> {
init_metrics().unwrap();
let prometheus = PrometheusMetricsBuilder::new("api")
.endpoint("/metrics")
.build()
.unwrap();
HttpServer::new(move || {
App::new()
.wrap(prometheus.clone())
.wrap(middleware::Logger::default())
.route("/health", web::get().to(health))
.route("/api/users", web::get().to(get_users))
})
.bind("0.0.0.0:8080")?
.run()
.await
}
```
#### 2.8 Load Testing Rust Backend con k6
**Script ejecutable:** [`scripts/k6/rust-api-load.js`](scripts/k6/rust-api-load.js)
Test de carga optimizado para APIs Rust con thresholds más estrictos debido al mejor rendimiento esperado.
**Uso:**
```bash
k6 run scripts/k6/rust-api-load.js --env BASE_URL=http://localhost:8080
```
#### 2.9 Performance Comparison Testing
**Script ejecutable:** [`scripts/k6/performance-comparison.js`](scripts/k6/performance-comparison.js)
Test de comparación de performance entre diferentes backends (Rust vs Node.js, etc.).
**Uso:**
```bash
k6 run scripts/k6/performance-comparison.js \
--env RUST_API=http://rust-api:8080 \
--env NODE_API=http://node-api:3000
```
### 3. Capacity Planning
**Script ejecutable:** [`scripts/python/capacity_calculator.py`](scripts/python/capacity_calculator.py)
Calculadora de capacidad para planificación de recursos basada en métricas de uso.
**Cuándo ejecutar:**
- Planificación de escalado
- Estimación de recursos necesarios
- Análisis de capacidad actual
**Uso:**
```bash
cd scripts/python
# Generar reporte de capacidad
python capacity_calculator.py --report
# Calcular recursos para usuarios objetivo
python capacity_calculator.py \
--target-users 5000 \
--current-users 1000 \
--max-throughput 1000.0 \
--current-instances 3
```
**Características:**
- ✅ Cálculo de capacity headroom
- ✅ Estimación de usuarios máximos
- ✅ Cálculo de recursos necesarios
- ✅ Reportes detallados
### 4. CI/CD Integration
```yaml
# .github/workflows/load-test.yml
name: Load Test
on:
schedule:
- cron: '0 2 * * *' # Daily at 2 AM
workflow_dispatch:
jobs:
load-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install k6
run: |
sudo gpg -k
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/k6-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69
echo "deb [signed-by=/usr/share/keyrings/k6-archive-keyring.gpg] https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list
sudo apt-get update
sudo apt-get install k6
- name: Run load test
run: |
k6 run tests/load/basic-load.js
env:
API_TOKEN: ${{ secrets.API_TOKEN }}
- name: Upload results
uses: actions/upload-artifact@v3
with:
name: k6-results
path: results/
```
### 5. Performance Monitoring
```yaml
# prometheus/performance-metrics.yml
scrape_configs:
- job_name: 'k6'
static_configs:
- targets: ['k6:6565']
```
```javascript
// k6 output to Prometheus
import { Counter, Gauge, Trend } from 'k6/metrics';
const customCounter = new Counter('custom_errors');
const customGauge = new Gauge('custom_active_users');
const customTrend = new Trend('custom_request_duration');
export default function () {
customGauge.set(100);
customCounter.add(1);
customTrend.add(123);
}
```
## 🎯 Mejores Prácticas
### 1. Test Design
✅ **DO:**
- Start with baseline tests
- Gradually increase load
- Test realistic scenarios
- Monitor during tests
- Test failure scenarios
❌ **DON'T:**
- Start with maximum load
- Ignore resource limits
- Test unrealistic scenarios
- Skip monitoring
### 2. Test Data
✅ **DO:**
- Use realistic test data
- Parameterize requests
- Use unique data per user
- Clean up test data
❌ **DON'T:**
- Use production data
- Hardcode test values
- Share data between users
### 3. Analysis
✅ **DO:**
- Compare against baselines
- Identify bottlenecks
- Document findings
- Share results with team
❌ **DON'T:**
- Ignore anomalies
- Skip root cause analysis
- Test without objectives
## 🚨 Troubleshooting
### Tests Failing
1. Check test configuration
2. Verify test data
3. Check network connectivity
4. Review application logs
### Performance Degradation
1. Identify bottlenecks
2. Profile application
3. Check resource usage
4. Review recent changes
## 📚 Recursos Adicionales
- [k6 Documentation](https://k6.io/docs/)
- [JMeter Best Practices](https://jmeter.apache.org/usermanual/best-practices.html)
- [Performance Testing Guide](https://www.guru99.com/performance-testing.html)
---
**Versión:** 1.0.0
**Última actualización:** Diciembre 2025
**Total líneas:** 1,100+
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!