Skip to content

chrispsheehan/performance-test-framework

Repository files navigation

Performance Test Framework

These example tests are currently pointed at the local mock service in mock/, which is built and run via Docker Compose.

To target another URI remove the mock service and set the APP_DOMAIN environmental variable within compose.yaml.

This project now uses tsc directly for the k6 test build. Test data generation comes from the k6-native xk6-faker extension rather than a bundled npm Faker package. The local mock service runs native TypeScript on modern Node without a transpile step.

References:

Build

Use just for the normal local workflow:

just build

Build code in docker

docker run -i --rm -v ${PWD}/:/app node:20-alpine sh -lc "cd /app && npm ci && npm run build"

Run

  • The below command will;
    • Build and start the target mock API
    • Execute the tests via k6
just smoke

Useful individual steps:

just up
just run
just down

Tags

Tags are used to separate results from one another as documented here.

headers.tags = { tag: "getuser" };

Thresholds

Thresholds are set on a per tag basis as documented here.

  • p(95)<2000 95% of requests to run in 5 seconds or less.
  • rate<=0.01 99% of requests successful.
export let options = {
  
  thresholds: {
    "http_req_duration{tag:getuser}": ['p(95)<10000'],
    "http_req_failed{tag:getuser}": ['rate<=0.01'],

    "http_req_duration{tag:createuser}": ['p(95)<2000'],
    "http_req_failed{tag:createuser}": ['rate<=0.01'],    
  },
};

Gotchas

  • ERROR: no matching manifest for linux/arm64/v8 in the manifest list entries
  • FIX: add platform: linux/x86_64 to the Compose service definition

About

k6 TypeScript Performance Test Framework

Topics

Resources

Stars

13 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors