Performance Testing
Performance testing measures how quickly, reliably, and efficiently a system works under defined conditions. It applies controlled work, observes user-facing results and resource use, and compares the evidence with explicit targets.
itObservability and performance | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Intro
Performance Testing
Performance testing evaluates how a component or system behaves under defined conditions. It measures time behavior, resource utilization, capacity, and related failure behavior. Unlike a functional test, which asks whether an operation returns the correct result, a performance test also asks how long the operation takes, how much work the system completes, and what resources that work consumes.
A useful test is an experiment, not a traffic demonstration. It starts with a decision such as whether a release meets a latency objective, whether a service can support forecast demand, or whether a batch job finishes inside its processing window. The test then controls the workload and environment, measures the response, and compares the result with explicit acceptance criteria.
The experimental system
Four parts form the basic arrangement:
- Workload model: the operations, data, arrival pattern, concurrency, pauses, and duration that represent intended demand.
- Load generators: one or more processes that execute the workload and record request-level results.
- System under test: the application plus the infrastructure, databases, caches, queues, and dependencies included in the test boundary.
- Measurement and analysis: clocks, counters, logs, traces, profiles, and reports that connect observed outcomes to system behavior.
The control path begins with an objective and acceptance criteria. Those inputs shape the workload model and test environment. During execution, generators submit work while both the generator and the system under test collect measurements. Analysis checks whether the planned workload arrived, whether responses were correct, whether thresholds held, and which resources or dependencies explain any degradation.
Continue the course
This section is part of the paid course.
See pricing to subscribe, or log in if you already have access.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://www.istqb.org/wp-content/uploads/2024/11/ISTQB-CT-PT_Syllabus_v1.0_2018.pdf
Supports
- Performance efficiency as time behavior, resource utilization, and capacity
- Load, stress, spike, endurance, scalability, capacity, and concurrency test vocabulary
- Operational profiles, load profiles, throughput, concurrency, and think time
- Open and closed system concepts and the closed-model throughput relationship
- Test planning, environment control, load generation, monitoring, analysis, and reporting
- Performance Testing syllabus general availability on 9 December 2018
- https://sre.google/sre-book/monitoring-distributed-systems/
Supports
- Latency, traffic, errors, and saturation as user-facing and system signals
- Separate latency treatment for successful and failed requests
- Implicit failures such as incorrect content despite a successful status
- https://sre.google/sre-book/addressing-cascading-failures/
Supports
- Queue growth, overload, retries, rejection, and load shedding
- Recovery and overload behavior as reliability concerns
- https://grafana.com/docs/k6/latest/testing-guides/api-load-testing/
Supports
- Test objectives before scenario configuration
- Smoke, average-load, stress, and spike test purposes
- Realistic scenario modeling
- https://grafana.com/docs/k6/latest/using-k6/scenarios/concepts/open-vs-closed/
Supports
- Open and closed workload scheduling
- Response-time coupling in a closed model
- Coordinated omission risk
- https://grafana.com/docs/k6/latest/using-k6/metrics/
Supports
- Counts, rates, trends, and latency percentiles
- Request duration, failure rate, and iteration metrics
- https://grafana.com/docs/k6/latest/testing-guides/running-large-tests/
Supports
- Generator CPU and memory limits
- Generator sizing and distributed execution
- Need to confirm that intended load was delivered
- https://jmeter.apache.org/usermanual/best-practices.html
Supports
- Generator sizing and non-GUI execution
- Parameterized data and distributed testing controls
- Coordinated omission warning
- https://jmeter.apache.org/
Supports
- Apache JMeter protocol-level load and performance testing
- Open-source licensing and supported protocol breadth
- Difference between protocol testing and browser rendering
- https://docs.gatling.io/
Supports
- Code-driven performance test scenarios
- Supported Java, JavaScript, TypeScript, Scala, and Kotlin SDKs
- Community and enterprise editions
- https://docs.locust.io/en/stable/
Supports
- Python-authored user behavior
- Command-line, web, and distributed execution
- Open-source load testing
- https://www.artillery.io/docs/get-started/load-testing
Supports
- JavaScript and TypeScript service and browser load testing
- Arrival ramps, open and closed models, and distributed execution
- https://www.w3.org/TR/navigation-timing-2/
Supports
- Browser navigation timing measurements
- High-resolution performance timeline entries
- https://github.com/sindresorhus/awesome
Supports
- Starting index used for required awesome-list discovery
- https://github.com/TheJambo/awesome-testing
Supports
- Discovery path to Awesome Performance Engineering and related testing resources
- https://github.com/be-next/awesome-performance-engineering
Supports
- Curated discovery of wrk2, Vegeta, Fortio, Hyperfoil, sitespeed.io, and WebPageTest
- Performance testing and observability ecosystem categorization
- https://github.com/giltene/wrk2
Supports
- Constant-throughput HTTP workload generation
- Latency recording designed to correct coordinated omission
- https://github.com/tsenart/vegeta
Supports
- Constant-rate HTTP load generation
- Reports and plotting for latency results
- https://fortio.org/
Supports
- Fixed-rate HTTP and gRPC load testing
- Latency histograms and command-line, server, and Kubernetes operation
- https://hyperfoil.io/
Supports
- Distributed benchmark phases and controlled request rates
- Latency collection for high-scale service tests
- https://www.sitespeed.io/documentation/
Supports
- Repeatable browser performance runs
- Performance budgets and time-series output
- https://docs.webpagetest.org/
Supports
- Browser tests from selected locations
- Waterfalls, filmstrips, and trace-based analysis
- https://docs.tricentis.com/neoload-latest/en-us/content/get_started/neoload_overview.htm
Supports
- Recorded interactions, virtual users, distributed execution, monitoring, and analysis
- Protocol and browser performance testing
- https://www.opentext.com/uk/products/professional-performance-engineering
Supports
- LoadRunner Professional for scalable enterprise performance testing
- Broad application and protocol coverage
- https://learn.microsoft.com/en-us/azure/app-testing/load-testing/overview-what-is-azure-load-testing
Supports
- Managed high-scale load generation
- Apache JMeter and Locust script execution
- Azure Monitor integration and automated fail criteria
- https://www.spec.org/30th/timeline.html
Supports
- SPEC incorporation on 14 November 1988
- Introduction of SPECmark and standardized comparative performance results
- https://www.tpc.org/information/about/history5.asp
Supports
- TPC formation on 10 August 1988
- TPC-A publication in November 1989 and benchmark review rules
- https://jmeter.apache.org/changes_history.html
Supports
- Apache JMeter 1.0 initial release on 15 December 1998
- https://jmeter.apache.org/usermanual/history_future.html
Supports
- JMeter becoming an Apache top-level project in November 2011
- https://www.w3.org/standards/history/navigation-timing/
Supports
- Navigation Timing becoming a W3C Recommendation on 17 December 2012
- https://grafana.com/blog/guest-blog-post-how-the-k6-load-testing-tool-is-leveraging-grafana/
Supports
- Open-source k6 introduction in February 2017
- Tests as JavaScript code and automation-oriented command-line operation
- https://grafana.com/blog/grafana-k6-one-year-later-lessons-learned-after-an-acquisition/
Supports
- Grafana Labs acquisition of k6 in June 2021
