API and performance testing

Most failures users feel start in the services behind the screen. We test your APIs for correctness and contracts, and your system for speed and stability under real load.

What you get

  • Functional and contract tests for REST and other APIs
  • Automated API suites in your pipeline
  • Load, stress and endurance test scenarios
  • Bottleneck findings with clear evidence
  • Performance baselines and thresholds
  • A repeatable approach your team can rerun

How we do it

  1. MapWe map your critical APIs and user journeys.
  2. TestWe build API tests and the data they need.
  3. ModelWe design realistic load profiles from your traffic.
  4. AnalyseWe run, analyse and recommend fixes with evidence.

A sample load test

A k6 script for a checkout API. It ramps up to a sale-day peak, holds it, and fails the run automatically if response times or errors cross the limits agreed with you up front.

Sample: checkout-peak.js
import http from 'k6/http';
import { check, sleep } from 'k6';

export const options = {
  stages: [
    { duration: '5m', target: 200 },   // ramp up to normal traffic
    { duration: '10m', target: 200 },  // hold
    { duration: '5m', target: 800 },   // ramp up to sale-day peak
    { duration: '15m', target: 800 },  // hold the peak
    { duration: '5m', target: 0 },     // ramp down
  ],
  thresholds: {
    http_req_duration: ['p(95)<500', 'p(99)<1200'],  // milliseconds
    http_req_failed: ['rate<0.01'],                   // under 1% errors
  },
};

export default function () {
  const cart = http.get(`${__ENV.BASE_URL}/api/cart`);
  check(cart, { 'cart loaded': (r) => r.status === 200 });

  const order = http.post(
    `${__ENV.BASE_URL}/api/orders`,
    JSON.stringify({ cartId: cart.json('id'), payment: 'test-card' }),
    { headers: { 'Content-Type': 'application/json' } },
  );
  check(order, { 'order created': (r) => r.status === 201 });

  sleep(Math.random() * 3 + 1);  // 1 to 4 seconds of "thinking" between orders
}

Tools and approach

We choose what fits your stack and team.

PostmanJMeterk6Grafana

A good fit if…

  • A launch or sales event will bring a spike in traffic
  • Your system slows down and nobody knows why
  • Many services depend on each other
  • You want API checks to run on every build

Where this fits

This tends to matter most for teams in fintech, e-commerce and logistics. It pairs well with test automation, and with mobile and cross-browser testing. The services overview shows how everything we do fits together.

Common questions

Can you test before the interface is ready?

Yes. API tests can start as soon as endpoints exist, which finds defects earlier and more cheaply.

What load should we test for?

We work it out together from your real traffic, expected growth and peak events, then test above that level.

Talk to us about API and performance testing

Tell us what you’re working on and we’ll suggest a clear first step.