What is functional testing?
Functional testing is the process of using requirements to check major product use cases. This differs from other types of testing because of the high scope of the tests which necessitates a low level of abstraction. Because you are checking that the entire product works as expected, you want to minimize the number of assumptions you make.
These cases are often performed by manual testers exercising the end product because it most closely mimics the customer’s interactions with it, and thus, can find issues that the end user will deal with.
Where do the tests come from?
The tests are driven by the product requirements and thus should be created through a conversation with product managers, developers and test engineers. Together, they can decide what the key aspects of the test path are, how to test the product, and the developers can be certain that they are ready for the tests.
Obviously, it’s best to have the tests defined before development starts and after product requirements are defined but often they are created after the product is created and simply written to mimic the current state of the product. While this may prevent future regressions, it is not driven by the software development process and thus, can cause issues with QA and development.
What makes good functional tests?
The key to proper functional tests is that they are:
- Derived from product requirements
- Clearly defined
- Visible to all stakeholders
- Give actionable info to the developers
- Audited frequently to ensure that they update with product requirements
How do they benefit the company?
The value of functional tests comes from finding issues with the product as quickly as possible. This both prevents issues from reaching the customer and catches issues earlier in the product lifecycle where they are much cheaper to fix.
In the next post I’ll dive deeper into the benefits of functional tests and how to run them as efficiently as possible.