Learn modern load testing and performance testing with k6 from scratch to production-ready: pre-requisites & environment setup, the history of k6 from Load Impact to Grafana Labs, VU concepts & test lifecycle, writing your first k6 script, HTTP API load testing, dynamic data & cookies, script modularization, load test configuration & environment variables, data-driven testing, complex multi-endpoint scenarios, networking & TLS & WebSocket, OAuth2 & JWT authentication, security testing, performance analysis & optimization, observability with Grafana/InfluxDB/Prometheus, resilience & failure analysis, k6 in CI/CD, distributed & cloud load testing, up to production readiness with xk6 extensions — 19 episodes in total.
Setting up three foundations before learning k6: the concepts of load testing and performance testing, modern protocols such as HTTP, WebSocket, and GraphQL, plus the basics of JavaScript ES6. Then installing the k6 binary on Linux, macOS, or Windows, complete with installation verification.

Tracing k6's origins from the Load Impact project in 2017 to its position as a flagship Grafana Labs tool, then honestly comparing it with JMeter, Gatling, and Locust to understand when and why k6 is the right choice.

Unpacking how k6 works behind the scenes: the Go engine with goja, the virtual users and iteration execution model, the test lifecycle from init to teardown, plus core components like the http module, checks, thresholds, metrics, and execution options such as stages.

Writing your first complete k6 script: the basic structure with import, options, and export default function, running HTTP GET and POST requests, validating responses with checks, breaking scenarios into groups, then reading the k6 run output in the terminal.

Applying load testing to real HTTP APIs: authentication headers and bearer tokens, cookies, request parameterization with dynamic data and JSON payloads, plus combined functional and performance assertions with check() and r.json().

Extracting dynamic values from responses such as access tokens and CSRF tokens, managing the cookie jar and session state per virtual user, and using http.batch for efficient parallel requests.

Splitting load test scripts into multiple files with ECMAScript modules, building helper functions for HTTP requests and authentication, and designing reusable scenario functions so tests stay maintainable as they grow large.

Designing a well-thought-out load test configuration: ramping stages, advanced thresholds, the ext area, and environment variables via __ENV so the same script runs differently for local, staging, and production-like environments.

Supplying test data from CSV and JSON with SharedArray and papaparse, randomizing input via randomItem, correlating data between requests, and keeping data clean so load tests are always repeatable.

Composing average, spike, and soak workload mixes in one script with scenarios executors, separating traffic per endpoint via groups, and measuring application-specific things with the Trend and Rate custom metrics from k6/metrics.
