perf-skills 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +8 -0
- package/README.md +227 -0
- package/package.json +42 -0
- package/perf-skills/.claude-plugin/plugin.json +5 -0
- package/perf-skills/SKILL.md +169 -0
- package/perf-skills/references/tools/gatling.md +286 -0
- package/perf-skills/references/tools/jmeter.md +251 -0
- package/perf-skills/references/tools/k6.md +269 -0
- package/perf-skills/references/tools/loadrunner.md +116 -0
- package/perf-skills/references/tools/locust.md +133 -0
- package/perf-skills/references/tools/neoload.md +61 -0
- package/perf-skills/references/tools/octoperf.md +50 -0
- package/perf-skills/references/topics/database-testing.md +214 -0
- package/perf-skills/references/topics/modern-architectures.md +314 -0
- package/perf-skills/references/topics/observability.md +201 -0
- package/perf-skills/references/topics/production-testing.md +214 -0
- package/perf-skills/references/topics/protocol-testing.md +274 -0
- package/perf-skills/references/topics/results-analysis.md +244 -0
- package/perf-skills/references/topics/script-generation.md +221 -0
- package/perf-skills/references/topics/test-data.md +196 -0
- package/perf-skills/references/topics/test-execution.md +281 -0
- package/perf-skills/references/topics/workload-design.md +207 -0
package/LICENSE.md
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
Copyright 2026 NaveenKumar Namachivayam
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
4
|
+
|
|
5
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
6
|
+
|
|
7
|
+
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
8
|
+
|
package/README.md
ADDED
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
# perf-skills
|
|
2
|
+
|
|
3
|
+
> *"The more you sweat in training, the less you bleed in battle."* — Richard Marcinko
|
|
4
|
+
>
|
|
5
|
+
> The more relevant skills your AI loads during development, the fewer fires you fight in production.
|
|
6
|
+
|
|
7
|
+
## What Is This?
|
|
8
|
+
|
|
9
|
+
`perf-skills` is a structured knowledge base that gives AI coding assistants deep, opinionated expertise in performance testing. It works with any AI tool that supports custom instructions, rules, or skill files — helping you plan, script, execute, and analyze load tests using any major tool.
|
|
10
|
+
|
|
11
|
+
### Supported Tools
|
|
12
|
+
|
|
13
|
+
| Open Source | Commercial |
|
|
14
|
+
|---|---|
|
|
15
|
+
| Apache JMeter | NeoLoad (Tricentis) |
|
|
16
|
+
| k6 (Grafana Labs) | LoadRunner (OpenText) |
|
|
17
|
+
| Gatling | OctoPerf (SaaS) |
|
|
18
|
+
| Locust | |
|
|
19
|
+
|
|
20
|
+
### Topics Covered
|
|
21
|
+
|
|
22
|
+
- **Workload design** — concurrency models, Little's Law, transaction mix, SLA targets
|
|
23
|
+
- **Test data** — parameterization, CSV feeds, synthetic data, data isolation
|
|
24
|
+
- **Script generation** — correlation, assertions, error handling, session management
|
|
25
|
+
- **Test execution** — local, distributed, CI/CD pipelines, cloud execution
|
|
26
|
+
- **Results analysis** — percentiles, bottleneck identification, trend comparison, reporting
|
|
27
|
+
- **Observability** — APM integration, Prometheus/Grafana, distributed tracing, log correlation
|
|
28
|
+
- **Production testing** — canary, shadow traffic, chaos engineering, safety controls
|
|
29
|
+
- **Protocol testing** — gRPC, GraphQL, WebSocket/SSE, Kafka/message queues
|
|
30
|
+
- **Database testing** — JDBC load testing, connection pools, query concurrency, replication lag
|
|
31
|
+
- **Modern architectures** — microservices, Kubernetes (HPA, service mesh), serverless (cold starts), frontend (Core Web Vitals)
|
|
32
|
+
|
|
33
|
+
## Compatible AI Coding Assistants
|
|
34
|
+
|
|
35
|
+
| Tool | Integration Method | Setup |
|
|
36
|
+
|---|---|---|
|
|
37
|
+
| **Windsurf (Cascade)** | Skills | Copy to skills directory — auto-triggers on perf questions |
|
|
38
|
+
| **Cursor** | Rules / Docs | Add as project rules or index via `@Docs` |
|
|
39
|
+
| **Claude Code** | CLAUDE.md / Custom instructions | Reference files in `CLAUDE.md` or feed as context |
|
|
40
|
+
| **Cline** | Custom instructions / `.clinerules` | Add to `.clinerules` or workspace instructions |
|
|
41
|
+
| **Roo Code** | Custom instructions / Rules | Add as workspace rules or custom instructions |
|
|
42
|
+
| **Aider** | Conventions / Chat context | Add to `.aider.conf.yml` conventions or `/read` files |
|
|
43
|
+
| **OpenCode** | Custom instructions | Add to project-level instructions |
|
|
44
|
+
| **Antigravity** | Context files | Add as context / knowledge files |
|
|
45
|
+
| **Pochi** | Custom instructions | Reference files in project instructions |
|
|
46
|
+
| **GitHub Copilot** | Custom instructions / `.github/copilot-instructions.md` | Reference in repo-level instructions |
|
|
47
|
+
|
|
48
|
+
## Installation
|
|
49
|
+
|
|
50
|
+
### Claude Code Plugin (Recommended)
|
|
51
|
+
|
|
52
|
+
**Add the marketplace and install:**
|
|
53
|
+
```bash
|
|
54
|
+
/plugin marketplace add QAInsights/perf-skills
|
|
55
|
+
/plugin install perf-skills@perf-skills
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
After install, the `/perf-skills` skill is available and auto-activates on performance testing questions.
|
|
59
|
+
|
|
60
|
+
**Update to latest version:**
|
|
61
|
+
```bash
|
|
62
|
+
/plugin marketplace update
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Install as Skills (npx)
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
npx skills add QAInsights/perf-skills
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Install as Skills (Manual)
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# Clone and copy to Claude skills directory
|
|
75
|
+
git clone https://github.com/QAInsights/perf-skills.git
|
|
76
|
+
cd perf-skills
|
|
77
|
+
cp -r perf-skills/ ~/.claude/skills/
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Windsurf (Skills)
|
|
81
|
+
|
|
82
|
+
1. Copy the `perf-skills/` directory into your Windsurf skills location.
|
|
83
|
+
2. The skill auto-triggers when you ask about performance testing, load testing, or any supported tool.
|
|
84
|
+
|
|
85
|
+
### Cursor (Rules / Docs)
|
|
86
|
+
|
|
87
|
+
**Option A — Project Rules:**
|
|
88
|
+
1. Create `.cursor/rules/perf-skills.mdc` in your project root.
|
|
89
|
+
2. Add the content of `SKILL.md` as the rule, with file references pointing to the `references/` directory.
|
|
90
|
+
|
|
91
|
+
**Option B — @Docs indexing:**
|
|
92
|
+
1. Open Cursor Settings → Features → Docs.
|
|
93
|
+
2. Add the `perf-skills/` directory as a doc source.
|
|
94
|
+
3. Reference with `@Docs perf-skills` in chat.
|
|
95
|
+
|
|
96
|
+
### Claude Code (CLAUDE.md)
|
|
97
|
+
|
|
98
|
+
1. Copy the `perf-skills/` directory into your project.
|
|
99
|
+
2. In your `CLAUDE.md`, add:
|
|
100
|
+
```markdown
|
|
101
|
+
For performance testing questions, read `perf-skills/SKILL.md` for routing,
|
|
102
|
+
then load the relevant reference file(s) from `perf-skills/references/`.
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Cline / Roo Code
|
|
106
|
+
|
|
107
|
+
1. Copy the `perf-skills/` directory into your project.
|
|
108
|
+
2. Add to your custom instructions or `.clinerules`:
|
|
109
|
+
```
|
|
110
|
+
For performance testing guidance, consult the perf-skills knowledge base.
|
|
111
|
+
Start with perf-skills/SKILL.md for routing to the correct reference file.
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Aider
|
|
115
|
+
|
|
116
|
+
1. Copy the `perf-skills/` directory into your project.
|
|
117
|
+
2. Use `/read perf-skills/SKILL.md` to load the routing file.
|
|
118
|
+
3. Then `/read` the specific reference file(s) relevant to your question.
|
|
119
|
+
|
|
120
|
+
### GitHub Copilot
|
|
121
|
+
|
|
122
|
+
1. Copy the `perf-skills/` directory into your project.
|
|
123
|
+
2. In `.github/copilot-instructions.md`, add:
|
|
124
|
+
```markdown
|
|
125
|
+
For performance testing questions, reference the perf-skills knowledge base.
|
|
126
|
+
Start with perf-skills/SKILL.md, then load relevant files from perf-skills/references/.
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### OpenCode / Antigravity / Pochi
|
|
130
|
+
|
|
131
|
+
1. Copy the `perf-skills/` directory into your project.
|
|
132
|
+
2. Add to your project-level custom instructions or context files:
|
|
133
|
+
```
|
|
134
|
+
For performance testing guidance, consult the perf-skills knowledge base.
|
|
135
|
+
Start with perf-skills/SKILL.md for routing to the correct reference file.
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Any Other AI Tool
|
|
139
|
+
|
|
140
|
+
The skill is plain markdown files. Any AI tool that can read files or accept custom instructions can use it:
|
|
141
|
+
1. Point the tool to `SKILL.md` as the entry point.
|
|
142
|
+
2. Let the Reference Map in `SKILL.md` guide which file(s) to load.
|
|
143
|
+
|
|
144
|
+
### As a Standalone Knowledge Base
|
|
145
|
+
|
|
146
|
+
Browse the markdown files directly — they're self-contained references useful even without an AI assistant.
|
|
147
|
+
|
|
148
|
+
## File Structure
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
perf-skills/ # Repository root
|
|
152
|
+
├── .claude-plugin/
|
|
153
|
+
│ └── marketplace.json # Claude Code marketplace catalog
|
|
154
|
+
├── README.md
|
|
155
|
+
├── LICENSE.md
|
|
156
|
+
└── perf-skills/ # Plugin / Skill directory
|
|
157
|
+
├── .claude-plugin/
|
|
158
|
+
│ └── plugin.json # Claude Code plugin manifest
|
|
159
|
+
├── SKILL.md # Entry point — tool selection, lifecycle, key principles
|
|
160
|
+
└── references/
|
|
161
|
+
├── tools/ # Tool-specific syntax and configuration
|
|
162
|
+
│ ├── jmeter.md # JMeter 5.6+ — samplers, extractors, plugins, Groovy
|
|
163
|
+
│ ├── k6.md # k6 v0.50+ — executors, checks, thresholds, modules
|
|
164
|
+
│ ├── gatling.md # Gatling 3.10+ — Scala/Java DSL, feeders, injection
|
|
165
|
+
│ ├── locust.md # Locust 2.20+ — Python scripts, events, FastHttpUser
|
|
166
|
+
│ ├── neoload.md # NeoLoad — GUI workflow, CLI, API execution
|
|
167
|
+
│ ├── loadrunner.md # LoadRunner — VuGen, protocols, Controller scenarios
|
|
168
|
+
│ └── octoperf.md # OctoPerf — JMeter-based SaaS, HAR import, cloud
|
|
169
|
+
└── topics/ # Cross-cutting concepts (tool-agnostic)
|
|
170
|
+
├── workload-design.md # Concurrency models, load profiles, Little's Law
|
|
171
|
+
├── test-data.md # CSV, DB seeding, Faker, data isolation patterns
|
|
172
|
+
├── script-generation.md # Correlation, assertions, error handling, naming
|
|
173
|
+
├── test-execution.md # Distributed, CI/CD (GitHub Actions, GitLab, Jenkins)
|
|
174
|
+
├── results-analysis.md # Percentiles, bottleneck framework, reporting
|
|
175
|
+
├── observability.md # APM, Prometheus, Grafana, tracing, JVM metrics
|
|
176
|
+
├── production-testing.md # Canary, shadow traffic, chaos, safety controls
|
|
177
|
+
├── protocol-testing.md # gRPC, GraphQL, WebSocket, Kafka/message queues
|
|
178
|
+
├── database-testing.md # JDBC, connection pools, slow queries, deadlocks
|
|
179
|
+
└── modern-architectures.md # Microservices, K8s, serverless, browser/Web Vitals
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## How the Skill Works
|
|
183
|
+
|
|
184
|
+
### Routing Logic
|
|
185
|
+
|
|
186
|
+
`SKILL.md` acts as the entry point and router. It contains:
|
|
187
|
+
|
|
188
|
+
1. **Loading Priority Rules** — tells the AI which file(s) to load based on the user's question (never all at once).
|
|
189
|
+
2. **Reference Map** — maps user intent to the right file.
|
|
190
|
+
3. **Protocol Routing Table** — maps protocols (gRPC, GraphQL, etc.) to recommended tools and reference files.
|
|
191
|
+
4. **Tool Selection Matrix** — helps recommend a tool when the user hasn't chosen one.
|
|
192
|
+
5. **Key Principles** — the single source of truth for cross-cutting best practices (assertions, think time, parameterization, correlation).
|
|
193
|
+
|
|
194
|
+
### Design Principles
|
|
195
|
+
|
|
196
|
+
- **Token-efficient**: Tool files contain only tool-specific syntax. Cross-cutting concepts live in topic files. No duplication.
|
|
197
|
+
- **Selective loading**: The AI loads 1–2 files per question, not the entire knowledge base.
|
|
198
|
+
- **Single source of truth**: Each concept is defined in exactly one place. Tool files cross-reference topic files for shared concepts.
|
|
199
|
+
- **Opinionated**: The skill prescribes best practices, not just documentation. It tells you what to do, not just what's possible.
|
|
200
|
+
|
|
201
|
+
## Example Questions This Skill Handles
|
|
202
|
+
|
|
203
|
+
| Question | Files Loaded |
|
|
204
|
+
|---|---|
|
|
205
|
+
| "Help me write a k6 load test for our REST API" | `k6.md` |
|
|
206
|
+
| "How should I design the workload for our e-commerce app?" | `workload-design.md` |
|
|
207
|
+
| "Set up JMeter in our GitHub Actions pipeline" | `test-execution.md` + `jmeter.md` |
|
|
208
|
+
| "Our p95 latency is spiking at 500 VUs — how do I debug?" | `results-analysis.md` + `observability.md` |
|
|
209
|
+
| "How do I load test a gRPC service?" | `protocol-testing.md` + `k6.md` |
|
|
210
|
+
| "What tool should I use? We're a Python team." | `SKILL.md` (Tool Selection Matrix) |
|
|
211
|
+
| "Test our Kafka consumer throughput" | `protocol-testing.md` |
|
|
212
|
+
| "Validate our K8s HPA scales correctly under load" | `modern-architectures.md` |
|
|
213
|
+
| "Load test our PostgreSQL connection pool" | `database-testing.md` + `jmeter.md` |
|
|
214
|
+
|
|
215
|
+
## Contributing
|
|
216
|
+
|
|
217
|
+
To add or update content:
|
|
218
|
+
|
|
219
|
+
1. **Tool-specific content** goes in `references/tools/<tool>.md` — syntax, config, tool-unique tips only.
|
|
220
|
+
2. **Cross-cutting concepts** go in `references/topics/<topic>.md` — patterns that apply across tools.
|
|
221
|
+
3. **Never duplicate** — if a concept exists in a topic file, tool files should cross-reference it, not restate it.
|
|
222
|
+
4. **Update SKILL.md** if you add a new file — add it to the Reference Map and Protocol Routing Table if applicable.
|
|
223
|
+
5. **Add a version indicator** (`> Targets: ...`) to new tool files.
|
|
224
|
+
|
|
225
|
+
## License
|
|
226
|
+
|
|
227
|
+
See repository license.
|
package/package.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "perf-skills",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Expert AI skill for performance testing — covers JMeter, k6, Gatling, Locust, NeoLoad, LoadRunner, OctoPerf across the full lifecycle",
|
|
5
|
+
"main": "perf-skills/SKILL.md",
|
|
6
|
+
"files": [
|
|
7
|
+
"perf-skills/"
|
|
8
|
+
],
|
|
9
|
+
"keywords": [
|
|
10
|
+
"performance-testing",
|
|
11
|
+
"load-testing",
|
|
12
|
+
"jmeter",
|
|
13
|
+
"k6",
|
|
14
|
+
"gatling",
|
|
15
|
+
"locust",
|
|
16
|
+
"neoload",
|
|
17
|
+
"loadrunner",
|
|
18
|
+
"octoperf",
|
|
19
|
+
"stress-testing",
|
|
20
|
+
"soak-testing",
|
|
21
|
+
"grpc",
|
|
22
|
+
"graphql",
|
|
23
|
+
"websocket",
|
|
24
|
+
"observability",
|
|
25
|
+
"ci-cd",
|
|
26
|
+
"claude-skills",
|
|
27
|
+
"ai-assistant"
|
|
28
|
+
],
|
|
29
|
+
"repository": {
|
|
30
|
+
"type": "git",
|
|
31
|
+
"url": "https://github.com/QAInsights/perf-skills.git"
|
|
32
|
+
},
|
|
33
|
+
"author": {
|
|
34
|
+
"name": "NaveenKumar Namachivayam",
|
|
35
|
+
"email": "info@qainsights.com"
|
|
36
|
+
},
|
|
37
|
+
"license": "MIT",
|
|
38
|
+
"homepage": "https://github.com/QAInsights/perf-skills#readme",
|
|
39
|
+
"engines": {
|
|
40
|
+
"node": ">=14"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: perf-skills
|
|
3
|
+
description: >
|
|
4
|
+
Expert guidance for performance testing: planning, scripting, executing, and analyzing
|
|
5
|
+
load/stress/soak/spike tests using JMeter, k6, Gatling, Locust, NeoLoad, LoadRunner,
|
|
6
|
+
OctoPerf. Covers workload design, test data, correlation, CI/CD integration,
|
|
7
|
+
distributed testing, observability, production testing, and protocol-specific guidance
|
|
8
|
+
for HTTP, gRPC, GraphQL, WebSocket, JDBC, and message queues.
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Performance Testing Skill (perf-skills)
|
|
12
|
+
|
|
13
|
+
This skill provides expert, opinionated guidance across the full performance testing lifecycle — from workload design through production observation. It covers both commercial tools (LoadRunner, NeoLoad, OctoPerf) and open-source tools (JMeter, k6, Gatling, Locust).
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## How to Use This Skill
|
|
18
|
+
|
|
19
|
+
Read the relevant reference files based on what the user needs. Multiple files may apply.
|
|
20
|
+
|
|
21
|
+
### Loading Priority Rules
|
|
22
|
+
|
|
23
|
+
1. **Tool-specific syntax/config** → load the tool file only.
|
|
24
|
+
2. **Strategy/concepts** (workload design, test data, analysis) → load the topic file only.
|
|
25
|
+
3. **Both apply** (e.g., "JMeter CI/CD") → load the topic file first for patterns, then the tool file for syntax.
|
|
26
|
+
4. **Never load all files at once** — select the 1–2 most relevant.
|
|
27
|
+
5. **Cross-cutting principles** (assertions, think time, parameterization) → this file's Key Principles section is the single source of truth.
|
|
28
|
+
|
|
29
|
+
### Reference Map
|
|
30
|
+
|
|
31
|
+
| User needs help with... | Read this file |
|
|
32
|
+
|---|---|
|
|
33
|
+
| Choosing the right tool | This file — see Tool Selection Matrix below |
|
|
34
|
+
| JMeter scripts, plugins, config | `references/tools/jmeter.md` |
|
|
35
|
+
| k6 scripting, extensions, cloud | `references/tools/k6.md` |
|
|
36
|
+
| Gatling simulations, Scala/Java DSL | `references/tools/gatling.md` |
|
|
37
|
+
| Locust Python tests, distributed | `references/tools/locust.md` |
|
|
38
|
+
| NeoLoad projects, GUI, APIs | `references/tools/neoload.md` |
|
|
39
|
+
| LoadRunner scripts, protocols, VuGen | `references/tools/loadrunner.md` |
|
|
40
|
+
| OctoPerf cloud test management | `references/tools/octoperf.md` |
|
|
41
|
+
| Designing workloads, concurrency, pacing | `references/topics/workload-design.md` |
|
|
42
|
+
| Test data, parameterization, CSV feeds | `references/topics/test-data.md` |
|
|
43
|
+
| Script patterns, correlation, best practices | `references/topics/script-generation.md` |
|
|
44
|
+
| CI/CD, distributed execution, cloud runners | `references/topics/test-execution.md` |
|
|
45
|
+
| Analyzing results, percentiles, SLAs | `references/topics/results-analysis.md` |
|
|
46
|
+
| APM, metrics, tracing, dashboards | `references/topics/observability.md` |
|
|
47
|
+
| Staging vs production testing strategies | `references/topics/production-testing.md` |
|
|
48
|
+
| gRPC, GraphQL, WebSocket, messaging protocols | `references/topics/protocol-testing.md` |
|
|
49
|
+
| Database load testing (JDBC, connection pools) | `references/topics/database-testing.md` |
|
|
50
|
+
| Microservices, K8s, serverless performance | `references/topics/modern-architectures.md` |
|
|
51
|
+
|
|
52
|
+
### Protocol Routing Table
|
|
53
|
+
|
|
54
|
+
When the user's question is protocol-specific, use this to select the right tool and reference:
|
|
55
|
+
|
|
56
|
+
| Protocol | Recommended Tools | Reference |
|
|
57
|
+
|---|---|---|
|
|
58
|
+
| HTTP / REST | k6, Gatling, JMeter | Tool file |
|
|
59
|
+
| gRPC | k6, Gatling, JMeter (plugin) | `references/topics/protocol-testing.md` + tool file |
|
|
60
|
+
| GraphQL | k6, Gatling | `references/topics/protocol-testing.md` + tool file |
|
|
61
|
+
| WebSocket / SSE | Gatling, k6 | `references/topics/protocol-testing.md` + tool file |
|
|
62
|
+
| JDBC / Database | JMeter | `references/topics/database-testing.md` + `jmeter.md` |
|
|
63
|
+
| Kafka / Message Queues | k6 (xk6-kafka), JMeter | `references/topics/protocol-testing.md` |
|
|
64
|
+
| SOAP / WSDL | LoadRunner, JMeter | Tool file |
|
|
65
|
+
| SAP / Citrix | LoadRunner, NeoLoad | Tool file |
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Tool Selection Matrix
|
|
70
|
+
|
|
71
|
+
Use this to recommend the right tool when the user hasn't decided yet.
|
|
72
|
+
|
|
73
|
+
| Criteria | JMeter | k6 | Gatling | Locust | NeoLoad | LoadRunner | OctoPerf |
|
|
74
|
+
|---|---|---|---|---|---|---|---|
|
|
75
|
+
| **Language** | GUI/XML + Groovy | JavaScript/TypeScript | Scala/Java | Python | GUI + NeoLoad DSL | VuGen C-like | Web UI (JMeter-based) |
|
|
76
|
+
| **Open source** | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ (SaaS) |
|
|
77
|
+
| **Protocol support** | HTTP, JDBC, JMS, MQTT, FTP, gRPC | HTTP, gRPC, WS | HTTP, JMS, gRPC | HTTP, gRPC | HTTP, gRPC, WS, SAP | HTTP, Citrix, SAP, Flex | HTTP (JMeter-backed) |
|
|
78
|
+
| **Developer-friendly** | Medium | High | High | High | Low | Low | Medium |
|
|
79
|
+
| **Enterprise support** | Community + BlazeMeter | Grafana Cloud | Gatling Enterprise | Limited | ✅ | ✅ | ✅ |
|
|
80
|
+
| **CI/CD integration** | Good (Maven/Gradle) | Excellent | Excellent | Good | Good | Moderate | Good |
|
|
81
|
+
| **Cloud execution** | BlazeMeter, OctoPerf | Grafana Cloud | Gatling Enterprise | Self-managed | NeoLoad Cloud | AWS/on-prem | OctoPerf Cloud |
|
|
82
|
+
| **Best for** | Legacy systems, JDBC, protocols | Modern APIs, TypeScript devs | High-throughput HTTP | Python teams, flexible | SAP/Citrix enterprise | Mainframe, legacy enterprise | JMeter teams needing cloud UI |
|
|
83
|
+
|
|
84
|
+
### Quick decision rules
|
|
85
|
+
- **Team writes code** → k6 or Gatling
|
|
86
|
+
- **Team uses GUI** → JMeter or NeoLoad
|
|
87
|
+
- **Python shop** → Locust
|
|
88
|
+
- **SAP / mainframe / Citrix** → LoadRunner or NeoLoad
|
|
89
|
+
- **Need cloud SaaS with minimal setup** → OctoPerf (JMeter) or Grafana Cloud (k6)
|
|
90
|
+
- **Free + protocol variety** → JMeter
|
|
91
|
+
- **Correlation needed for session-heavy flows** → JMeter (with Correlation Recorder) or LoadRunner
|
|
92
|
+
- **gRPC or GraphQL APIs** → k6 or Gatling
|
|
93
|
+
- **Message queues (Kafka, RabbitMQ)** → k6 (xk6-kafka) or JMeter
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Performance Testing Lifecycle Overview
|
|
98
|
+
|
|
99
|
+
Always think through these phases when helping a user — they often ask about one phase but need context from others.
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
1. PLAN
|
|
103
|
+
└─ Workload design → concurrency model → SLA targets → test type selection
|
|
104
|
+
→ references/topics/workload-design.md
|
|
105
|
+
|
|
106
|
+
2. DATA
|
|
107
|
+
└─ Identify variables → parameterization strategy → test data generation
|
|
108
|
+
→ references/topics/test-data.md
|
|
109
|
+
|
|
110
|
+
3. SCRIPT
|
|
111
|
+
└─ Record or code → correlation → parameterization → assertions → script review
|
|
112
|
+
→ references/topics/script-generation.md + tool-specific file
|
|
113
|
+
|
|
114
|
+
4. EXECUTE
|
|
115
|
+
└─ Local → distributed → CI/CD → cloud burst → monitoring hooks
|
|
116
|
+
→ references/topics/test-execution.md
|
|
117
|
+
|
|
118
|
+
5. OBSERVE
|
|
119
|
+
└─ APM → metrics → logs → traces → dashboards
|
|
120
|
+
→ references/topics/observability.md
|
|
121
|
+
|
|
122
|
+
6. ANALYZE
|
|
123
|
+
└─ Throughput, latency percentiles, errors → bottleneck ID → report
|
|
124
|
+
→ references/topics/results-analysis.md
|
|
125
|
+
|
|
126
|
+
7. PRODUCTION
|
|
127
|
+
└─ Canary testing → shadow load → chaos → synthetic monitoring
|
|
128
|
+
→ references/topics/production-testing.md
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Common Performance Test Types
|
|
134
|
+
|
|
135
|
+
| Test Type | Goal | Key Metric |
|
|
136
|
+
|---|---|---|
|
|
137
|
+
| **Load** | Validate system at expected load | Response time, throughput, error rate |
|
|
138
|
+
| **Stress** | Find the breaking point | Max VUs before degradation, error onset |
|
|
139
|
+
| **Soak/Endurance** | Detect memory leaks, slow degradation | Resource trend over time (hours) |
|
|
140
|
+
| **Spike** | Behavior under sudden traffic burst | Recovery time, error spike |
|
|
141
|
+
| **Capacity** | Find max sustainable load | Throughput ceiling at SLA thresholds |
|
|
142
|
+
| **Smoke** | Quick sanity check | Single VU — no errors |
|
|
143
|
+
| **Breakpoint** | Incremental ramp until failure | Failure threshold VU count |
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## Key Principles to Always Apply
|
|
148
|
+
|
|
149
|
+
1. **Never test against production blindly** — always have a rollback plan and alerting in place.
|
|
150
|
+
2. **Baseline first** — always establish a baseline before stress or soak runs.
|
|
151
|
+
3. **Think time and pacing matter** — unrealistic zero-think-time tests produce misleading results.
|
|
152
|
+
4. **Parameterize everything** — hardcoded credentials, tokens, and IDs will fail at scale.
|
|
153
|
+
5. **Assertions are not optional** — tests without assertions are just generating traffic, not validating behavior.
|
|
154
|
+
6. **Isolate the system under test** — shared environments invalidate results.
|
|
155
|
+
7. **Correlate dynamic values** — session tokens, CSRF, ViewState, etc. must be extracted and reused.
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Asking the Right Questions
|
|
160
|
+
|
|
161
|
+
When a user brings a performance problem, ask (or infer) these before prescribing a solution:
|
|
162
|
+
|
|
163
|
+
- What is the **target concurrency** (VUs or RPS)?
|
|
164
|
+
- What is the **SLA** (e.g., p95 < 500ms, error rate < 1%)?
|
|
165
|
+
- What is the **protocol** (HTTP/REST, gRPC, JDBC, WebSocket)?
|
|
166
|
+
- Is the app **stateful** (session-based) or **stateless** (token-based)?
|
|
167
|
+
- Where will tests **run from** (local, CI, cloud)?
|
|
168
|
+
- What **environment** is being tested (dev, staging, prod)?
|
|
169
|
+
- Is there an **APM tool** in place (Datadog, Dynatrace, Grafana, New Relic)?
|