What is Software Performance Testing?
Performance testing is the general name for tests that check how the system behaves and performs. Software software performance testing examine responsiveness, stability, scalability, reliability, speed, and resource usage of your software and infrastructure.
Different types of performance tests provide you with different data, as we will further detail. Before software performance testing, it’s important to determine your system’s business goals, so you can tell if your system behaves satisfactorily or not according to your customers’ needs. After running performance tests, you can analyze different KPIs, such as the number of virtual users, hits per second, errors per second, response time, latency, and bytes per second (throughput), as well as the correlations between them. Through the reports you can identify bottlenecks, bugs, and errors, then decide what needs to be done.

When to Use Software Performance Testing
Run performance tests when you want to check your website and app performance, which may extend to testing servers, databases, networks, etc. If you follow the waterfall methodology, then test at least each time you release a version. If you’re shifting left and going agile, you should test continuously. The following figure shows an example of a performance test report on BlazeMeter. This is a good test, given the growing number of users does not affect the response time, the error rate remains low, and the hits per second rise with the number of users, but remain stable.

What is Load Testing?
A load test is a type of performance test that checks how systems function under a heavy number of concurrent virtual users performing transactions over a certain period of time. In other words, the test measures how systems handle heavy load volumes. There are a few types of open-source load testing tools, JMeter being the most popular.

When to Use Load Testing
Load test when you want to determine how many users your system can actually handle. You can configure tests to simulate various user scenarios which can focus on different parts of your system (such as a checkout page, for example). You can determine how the load behaves when coming from different geo-locations or how the load might build up, then level out to a sustained level. Load tests should be performed all the time in order to ensure your system is always on point, which is why it should be integrated into your continuous integration cycles (utilizing tools such as Jenkins andTaurus.)
The following figure shows what a load test can look like in JMeter. This test analyzes adding 100 users every 30 seconds until reaching 1,000 users. The entire stepping process takes 300 seconds. After reaching 1,000 threads, all of them will continue running and hitting the server together for 5 minutes.