What is Performance Testing?
Performance testing measures how a system behaves under load, identifying bottlenecks, scalability limits, and degradation points before they affect production users.
- 1.Types of Performance Testing
- 2.Performance Testing Tools
- 3.Key Metrics
- 4.Performance Testing and Autonomous Code Governance
- 5.Frequently Asked Questions
Performance testing is a type of non-functional testing that evaluates how a system performs under specific conditions — load, stress, volume, and endurance. Unlike functional testing that verifies correctness, performance testing verifies speed, scalability, stability, and resource utilization. It identifies bottlenecks before they affect real users.
Types of Performance Testing
Load Testing
Simulates expected production load to verify the system meets performance requirements under normal conditions. Load tests answer: does the system handle our expected peak traffic while meeting response time SLAs?
Stress Testing
Pushes the system beyond its expected capacity to find breaking points and observe failure behavior. Stress tests answer: what happens when traffic exceeds capacity, and does the system fail gracefully?
Spike Testing
Applies sudden, sharp increases in load to test the system's response to rapid traffic changes. Important for applications that experience sudden viral traffic.
Endurance Testing
Runs the system at sustained load over an extended period to detect memory leaks, connection pool exhaustion, and degradation that only manifests over time.
Scalability Testing
Tests whether performance scales linearly as resources are added, and identifies the point of diminishing returns or non-linear degradation.
| Type | Load Pattern | Primary Question |
|---|---|---|
| Load | Expected peak | Does it meet SLAs under normal load? |
| Stress | Beyond capacity | Where does it break and how? |
| Spike | Sudden surge | How does it handle rapid traffic spikes? |
| Endurance | Sustained over time | Does it degrade over hours or days? |
| Scalability | Incremental increase | Does performance scale with resources? |
Performance Testing Tools
- k6 — modern, developer-friendly load testing with JavaScript scripting
- Locust — Python-based load testing with a web UI
- JMeter — Apache-backed; feature-rich with a GUI and XML test plans
- Gatling — Scala-based with excellent reporting; code-first test definitions
- Artillery — Node.js-based with YAML configuration; integrates with CI
Key Metrics
- Response time — time for the system to respond to a request
- Throughput — requests processed per second
- Error rate — percentage of requests resulting in errors
- P95/P99 latency — tail latencies that affect the slowest users
- CPU and memory utilization during load
- Connection pool and database query latency
Performance Testing and Autonomous Code Governance
Hydra tracks performance test baselines and can flag pull requests that introduce significant regression in throughput or latency. When a dependency update or refactoring degrades p99 latency beyond a configured threshold, Hydra surfaces the finding in the PR review, preventing performance regressions from silently accumulating into production.
Frequently Asked Questions
When should performance testing happen in the development lifecycle?
Performance testing should be part of the CI/CD pipeline for critical paths. Lightweight load tests can run on every PR; full stress tests can run nightly or before major releases. Treating performance as a non-functional regression test prevents gradual degradation.
What is the difference between latency and throughput?
Latency is the time to process a single request. Throughput is the number of requests processed per unit of time. They are related but distinct: a system can have high throughput with high latency, or low latency with low throughput.
What is a percentile latency (p95, p99)?
P99 latency is the response time that 99% of requests fall below. It captures the experience of the slowest 1% of users, which average latency masks. Tail latency is critical for user experience because slow responses are disproportionately impactful.
What causes gradual performance degradation?
Common causes include memory leaks, unclosed connections accumulating in connection pools, growing database query times as data volumes increase, and cache eviction increasing as traffic grows. Endurance tests are designed to catch these.
Frequently Asked Questions
What is the difference between load testing and stress testing?
Load testing validates behavior under expected peak load. Stress testing pushes beyond capacity to find breaking points.
What is p99 latency?
The response time that 99% of requests fall below, capturing tail latency that average metrics hide.
When should performance testing run?
Lightweight load tests in CI on critical paths; full stress tests nightly or before major releases.
What causes gradual performance degradation?
Memory leaks, connection pool exhaustion, growing database query times, and cache saturation that accumulate over time.
Stop flagging. Start fixing.
Hyrax reviews your pull requests, remediates issues autonomously, and closes the ticket.
Join the waitlist