Volver a Learning
Performance Testing Skills
⚡
Skill
Claude Code
Performance Testing Skills
gatling-best-practices
GatlingJavaKotlinScalaTypeScriptClaude CodeLoad Testing
Tabla de contenidos
rcampos09/performance-testing-skills
¿Qué es un Claude Code Skill?
🎯
Activación automática
📄
Archivos completos
⚡
Multi-lenguaje
Instalación
Requisitos del entorno
| Runtime | Versión mínima | Uso |
|---|---|---|
| Java (JVM) | 11+ | Gatling en Java, Kotlin o Scala |
| Maven | 3.8+ | Build tool para Java/Kotlin |
| Gradle | 8.x (Gradle 9 no soportado aún) | Alternativa a Maven |
| Node.js | 18+ | Gatling en JavaScript/TypeScript |
Skills disponibles
GB
gatling-best-practices
Se activa cuando mencionas:
JavaKotlinScalaTypeScriptJavaScript
Cómo funciona en la práctica
1
Archivo completo y ejecutable
2
El comando exacto para ejecutarlo
3
Explicación del enfoque elegido
El patrón de 5 bloques
01
Protocol
02
Feeders
03
Scenario
04
Injection Profiles
05
Assertions
Los 7 errores críticos que el skill detecta
1
Missing pause() entre requests
❌ Incorrecto
scenario("Flow")
.exec(http("A").get("/a"))
.exec(http("B").get("/b"))
.exec(http("A").get("/a"))
.exec(http("B").get("/b"))
✅ Correcto
scenario("Flow")
.exec(http("A").get("/a"))
.pause(1, 3)
.exec(http("B").get("/b"))
.exec(http("A").get("/a"))
.pause(1, 3)
.exec(http("B").get("/b"))
2
Tokens dinámicos hardcodeados
❌ Incorrecto
.header("Authorization",
"Bearer eyJhbGci...")
"Bearer eyJhbGci...")
✅ Correcto
.check(jsonPath("$.token")
.saveAs("token"))
// luego:
.header("Authorization",
"Bearer #{token}")
.saveAs("token"))
// luego:
.header("Authorization",
"Bearer #{token}")
3
atOnceUsers para load tests
❌ Para load test
setUp(scn.inject(
atOnceUsers(100)
))
atOnceUsers(100)
))
✅ Correcto
setUp(scn.inject(
rampUsers(100).during(60),
constantUsersPerSec(10).during(120)
))
rampUsers(100).during(60),
constantUsersPerSec(10).during(120)
))
4
Sin assertions
// Agregar siempre al setUp:
.assertions(
global().successfulRequests().percent().gt(99.0),
global().responseTime().percentile(95).lt(1000)
)
.assertions(
global().successfulRequests().percent().gt(99.0),
global().responseTime().percentile(95).lt(1000)
)
5
Feeder .queue() en tests largos
6
Check falla sin validar status primero
7
Missing Content-Type en body