In our Under the Hood series, we’ll get into the weeds of how our application is built. It’s going to get a bit technical — fair warning 🙂

Our first Under the Hood post is on testing. Here at BeyondHQ, testing plays a crucial role in our development process. Recently, we’ve revamped our testing efforts and want to share our experience.

Our Testing Philosophy

We generally employ 5 types of testing:

  • Unit tests — Isolated tests written for individual functions
  • Static tests — For typos and type errors
  • Integration tests — These tests make sure individual functions/units are working together properly
  • End-to-end tests — A helper robot that acts like a user and automates how the user would interact with our application, finding bugs in the process
  • Load tests — This tests the performance of our application when subject to heavy usage/traffic

New Frameworks

These are the testing frameworks we are excited to have recently incorporated:

  • Cypress — This tool falls into the category of end-to-end testing. We chose Cypress for its developer-friendly experience — its easy to setup, reliable, and runs tests quickly. It also works really well with our React.js front-end application. Here is what it looks like when it’s running and mimicking a user:

    blurred drop end to end

    End-to-end testing of BeyondHQ’s Market Insights Application using Cypress

  • Locust — This tool falls into the category of load testing. Locust is named as such because it simulates “a swarm of locusts attacking your website.” In our case, this means many users using our application simultaneously. Locust helps us to identify bottlenecks in our system and works well with our Python/Django back-end application. Here is Locust in action:

    blurred drop load testing

    Load testing of BeyondHQ’s Market Insights Application using Locust

And that’s it for now, folks! Our experience with both of these open-sourced frameworks have been great so far and we continue to improve our testing here at BeyondHQ.