Our journey through the expansive landscape of API Operations (APIOps) has led us through various territories. We've delved into Continuous Integration and Deployment, ensuring seamless transitions from coding to production-ready APIs with minimal friction. Our reusable GitHub Actions workflow, equipped with Vacuum CLI for linting and Portman CLI for testing, has served us well so far. Today, we're set to introduce a new companion to our existing pipeline - k6, an open-source load testing tool that will help ensure our APIs can handle the stress of real-world use.
Load Testing with k6
Load testing is an essential part of APIOps that helps verify the performance of our APIs under stress or heavy loads, akin to what they'd experience in production environments. k6 stands as a powerful, developer-centric tool enabling us to create complex load testing scenarios with ease.
Step 1: Extend the Pipeline with a Load Testing Job
The first step to incorporate k6 into our pipeline is to create a new job within our GitHub Actions workflow. This job will run after our deployment job to ensure we're testing our newly deployed API.
1load-test: 2 needs: deploy 3 runs-on: ubuntu-latest 4 steps: 5 - uses: actions/checkout@v2 6 - name: Setup k6 7 run: | 8 curl -s https://install.k6.io | sh 9 - name: Convert Postman Collection to k6 script 10 run: | 11 npx @apideck/postman-to-k6 "path-to-postman-collection.json" -o "k6-script.js" 12 - name: Run k6 Load Test 13 run: | 14 k6 run ./k6-script.js
Step 2: Converting Postman Collection to a k6 Script
To use our existing Postman collection for k6 load testing, we need to convert it to a k6 script. We can achieve this using the
Step 3: Running the Load Test
After creating our k6 script, we can proceed to the load testing phase. Running the script will simulate traffic to our API and return valuable insights about its performance under stress.
Step 4: Making the Load Testing Job Reusable
Like our CI/CD pipeline, this new load testing job can be made reusable across other repositories. This can be done by defining it in a
.github/workflows directory of a public repository, enabling it to be referenced elsewhere.
APIOps continues to revolutionise how we build, test, deploy, and manage APIs. Incorporating load testing into our automated workflow brings us closer to simulating real-world conditions, giving us the confidence that our APIs can handle whatever comes their way. This integration of k6 into our pipeline proves that, whether you're a newcomer or an APIOps expert, there's always room to optimize and improve. Let's continue to push the boundaries of what's possible. Happy load testing!
Your job at Codecentric?
More articles in this subject area
Discover exciting further topics and let the codecentric world inspire you.