Skip to content
Putting technology to work.
Insights to guide decisions and action.

Search articles

Load testing and performance assurance for client development — Delivering "unbreakable systems" with k6

Table of contents · 11 items

An article titled From zero load testing experience to running tests with k6: A 4th-year engineer's journey (Zenn) recently drew significant attention. Recounting the experience of "taking charge of tool selection, test design, execution, and evaluation with k6 as a near-beginner preparing for a production release," it demonstrates that load testing is no longer reserved for a handful of specialists; with modern tools, everyday engineers can run it successfully.

On the other hand, incidents where "a system goes live without verifying whether it can withstand expected traffic, only to crash on the first day of a promotional campaign," remain endless in custom development. When supporting system development for clients, we view this not as a question of "whether to test," but rather as a contractual imperative to define "which target metrics, under which scenarios, and to what extent we guarantee before delivery." Connecting with our past discussions on automated functional quality verification in Playwright AI QA Automation for Clients (GH Media), production performance pitfalls in Performance Audits Inspired by Pinterest CPU Zombies (GH Media), and tail latency countermeasures in SRE Tuning for P99 Latency Improvement (GH Media), this article outlines how to structure "Load Testing & Performance Assurance" within client engagements.

Why load testing with k6 "now"?

DimensionUnverified performance (conventional)Performance guaranteed with k6 (2026)
Test specificationDependent on dedicated tools / GUIWritten in JavaScript
CI integrationManual executionIntegrated into pipelines
Target metricsAmbiguousDocumented via SLOs
ReproducibilityDependent on individual intuitionReproducible via code
Release decisionGut feelingAutomated pass/fail based on thresholds
HandoverNo test assetsScenarios + runbooks

In other words, the widespread adoption of code-based load testing tools like k6 has made it possible for custom development to standardize a workflow of "measuring performance, setting targets, and evaluating pass/fail." This allows us to guarantee that the system "will not crash" as part of the core deliverables.

Three structural changes beneficial to custom development projects

Dynamic 1: From "releasing on intuition" to "pass/fail evaluated by SLOs"

Releasing based on "it'll probably be fine" invites disaster. In client projects, we define target response times, error rates, and concurrent connections as SLOs, and generate automated pass/fail results via k6 thresholds, thereby making release decisions objective.

Dynamic 2: From "one-off tests" to "continuous CI integration"

Testing only at release time overlooks performance degradation introduced by ongoing code updates. In custom development, we integrate load testing into CI/CD to provide a mechanism that detects performance regressions early.

Dynamic 3: From "neglected bottlenecks" to "root-cause identification and remediation"

Simply identifying poor metrics does not fix problems. In client engagements, leveraging insights from Performance Audits Inspired by Pinterest CPU Zombies (GH Media), we pinpoint bottlenecks by combining k6 with APM and profilers, and provide end-to-end support through remediation.

5 phases of "load testing and performance assurance" for client projects

Phase 1: Target & assumption design (1 week)

  • Clarify expected peaks (campaigns / beginning of month / concurrent users)
  • Define SLOs (p95 response time / error rate / throughput)
  • Select test scenarios (login / purchase / search)
  • Establish test environment strategy (production-equivalent vs. scaled-down)

Phase 2: Scenario implementation (1–2 weeks)

  • Implement user scenarios in JavaScript using k6
  • Prepare test data (test users / products)
  • Design workload models (ramp-up / spike / sustained)
  • Define pass/fail criteria using thresholds

Phase 3: Test execution & analysis (1–2 weeks)

  • Execute stepped load tests (baseline -> peak -> stress limit)
  • Identify bottlenecks using APM and system metrics
  • Check DB, connection pools, N+1 queries, and garbage collection
  • Identify saturation limits and scaling characteristics

Phase 4: Remediation & re-testing (2–3 weeks)

  • Remediate bottlenecks (queries / caching / configurations)
  • Confirm SLO attainment through re-testing
  • Produce release assessment report

Phase 5: Ongoing operations (continuous)

  • Integrate load testing into CI
  • Monitor for performance regressions
  • Conduct periodic pre-peak testing

Standard technology stack set for custom development

LayerRecommended technologyAlternative
Load generationk6Gatling / Locust / JMeter
Test specificationJavaScript scenariosTypeScript
CI integrationGitHub ActionsGitLab CI
VisualizationGrafana + k6 outputDatadog
APMOpenTelemetryNew Relic / Datadog
EnvironmentProduction-equivalent stagingReproduced via containers

Which projects need this and which do not

Projects requiring thisLow-priority projects
Instant surges from campaigns, reservations, or applicationsInternal use by a very small group
Significant opportunity loss (e-commerce, bookings, ticketing)Extremely minimal traffic
Initial release with no historical track recordSufficient historical performance data already exists
SLA / performance guaranteed contractuallyAgreed on a best-effort basis
High release frequency with fears of regressionStatic sites that are rarely updated

Six clauses to include in client contracts

ClauseDetailsWhat the client should verify
Performance targetsSLOs (response / error rate / concurrency)Agreement on projected peaks
Test scopeTarget scenarios / environmentsFeasibility of production testing
Pass/fail criteriaThresholds and evaluation methodsHandling of unmet benchmarks
Remediation scopeTuning scopeBoundary for additional development
HandoverScenarios / reports / runbooksIn-house sustainability
Continuous testingCI integration / periodic testingOperating costs

Client-side ROI estimate (e-commerce site / assuming campaign launch day)

ItemExisting (unverified release)Load testing & performance assuranceDifference
Day-one crash probabilityHighDramatically reducedAvoided opportunity loss
Projected opportunity lossMillions of yen scaleAvoided through preventionRisk reduced
Incident response effortStrained by emergency responseResolved proactivelyOvertime and brand damage avoided
Scaling decisionsExcessive or inadequateBased on actual measurementsInfrastructure cost optimization
Annual benefitMajor outage avoided + curb on infrastructure over-provisioning

In almost all cases, the cost of testing and remediation is amply justified when weighed against the revenue and trust lost in a single day-one outage.

Five common pitfalls

Pitfall 1: Testing in an environment different from production

Results from scaled-down environments are unreliable. Measure using a production-equivalent architecture.

Pitfall 2: Looking only at averages

Tail latencies at p95 and p99 dictate the actual user experience. Evaluate using percentiles.

Pitfall 3: The load generator becoming the bottleneck

Insufficient test machine capacity can cap load prematurely. Ensure distributed execution and adequate load generation capacity.

Pitfall 4: Stopping after generating numbers

You cannot fix issues without root-cause identification. Isolate bottlenecks by pairing tests with APM.

Pitfall 5: Treating testing as a one-time event

Performance degrades with ongoing modifications. Integrate into CI for continuous regression detection.

90-day action plan

WeekAction
Week 1Define SLOs + select test scenarios
Week 2〜3Implement k6 scenarios + prepare test data
Week 4〜5Execute stepped load tests + pinpoint bottlenecks
Week 6〜9Remediate + re-test to achieve SLOs
Week 10〜13Integrate into CI + begin periodic testing operations

Summary — From "releasing on intuition" to "delivering with guaranteed performance"

With the spread of code-based load testing tools like k6, performance verification has become something everyday engineers can manage. When supporting client system development, defining goals via SLOs, reproducing them through scenarios, evaluating pass/fail via thresholds, and maintaining continuous detection in CI represents a pragmatic way to deliver release confidence as a tangible deliverable.

The effort required for load test design and performance assurance varies considerably depending on system scale, projected traffic spikes, and test environment parameters. Because we provide tailored estimates after reviewing your specific setup, please feel free to reach out via our contact form even if you are simply at the stage of thinking: "We cannot afford to crash on campaign launch day," "We want contractually guaranteed performance," or "We are worried about degradation after every release."

Sources

Share this articleXFacebook
Kakeru Suzuki

Fascinated by the possibilities of technology, has had a deep interest in programming and digital art since student days

Turn this article's theme into your company's next step

Concrete steps forward for your organization.

We organize your desired architecture, legacy systems, and operational requirements to formulate your next steps toward execution.

  • Desired architecture
  • Integration with existing environments
  • Operational requirements
Consult on development & operations initiatives

You can consult with us from the initial conceptual stage. Details from this article will be carried over to the inquiry form.

Receive the latest articles by email