Within the paradigm of application testing, there are two broad categories of tests which are often used to complement each other. While there are dedicated tools for each, there is considerable overlap and many of these tools can be used for either purpose. In particular, tools such as JMeter, while traditionally being more associated with performance tests, can be proposed to execute functional tests. In this article, we will describe what each test seeks to prove in terms of their objectives, and when it is appropriate to use one over the other.
Functional Tests
A test which seeks to validate the functional aspects of a target system can be called a functional test. These tests focus on verifying that the software or system being tested behaves according to its specifications. The endpoint for a functional test is expressed in terms of passing or failing, either in terms of specific actions tested, or in terms of the test as a whole.
Functional tests are often used as an acceptance stage in continuous integration processes. Before changes are committed to a production environment, a prescribed functional test is often performed to ensure that the changes introduced do not break existing functionality of the system.
Another use case for functional testing is as a precursor to performance testing. Before planning to scale load to a target test application, we would want to verify that the target application responds appropriately to the types of requests anticipated.
Performance Tests
This type of test, also colloquially referred to as a load test, focuses on the ability of the target test application to perform expected actions repeatedly under stress conditions. In this regard, the endpoint for performance tests can be a bit more varied. Some performance tests may seek to increase load continuously to the breaking point in order to determine the absolute maximum throughput an application can support. Another strategy might be to sustain a high volume of traffic at a certain threshold to see how a site handles sustained high volume over time. A spike test may see how a target application handles a sudden increase or surge in traffic.
Regardless of the endpoint testing goal, the key differentiator of a performance test is that it determines not necessarily whether the application performs its intended function as designed, but how well the application responds under stress or otherwise high-throughput conditions.
Which Test to Use
Functional tests and performance tests answer different questions, however they are related. As mentioned above, a common strategy is to first define a functional test to ensure a target test application behaves in an expected manner. This would be a critical prerequisite to a performance test of the same features of a target test application, validating the metrics of such a test. It can be thought of such that a functional test answers the question “if” a target test application works in absolute terms, whereas a performance test answers the question “how” the target test application performs when subject to stress.
Did you know that RedLine13 offers a full-featured, time-limited free trial? Sign up now, and move your functional and performance testing into the cloud today!