What is functional testing?
- Smoke testing
- Regression testing
- Integration testing
- Acceptance testing
Functional testing is testing software on the basis of the functional description of the software in order to evaluate its quality and track down potential errors. This concerns the testing of a (pre)defined situation. You essentially compare the outcome of the development to what you wrote down about this beforehand.
Test scenario (data) ⇒ Test case ⇒ Test output ⇒ Result
There are various types of functional tests that are used throughout the entire software development process and that can optimally align the quality of the delivered product with the desired quality. In order to optimally benefit from this, it is not enough to have the developer do a bit of testing and to put the consultant on this afterwards. Functional testing is performed throughout the entire chain of development and is an art in itself, which should be carried out by specialists.
Common types of functional testing:
What are the differences between functional and non-functional testing? Whereas functional testing focuses on the predetermined functions of an application, non-functional testing focuses more on the application as a whole. How well does the application perform in given situations and is this sufficient with regards to the desired use?
Functional tests thus concern requirements and functionalities (what it does), whereas non-functional testing concerns expectations and performance under certain conditions. Functional testing can often be performed manually, while non-functional testing must often be simulated.
In the process of drafting wishes and requirements, non-functional testing is often overlooked. A lot can be said about the functionalities, but what is expected from the software as a whole in certain situations is harder to describe or indicate what is expected.
Is it always possible to outsource functional testing? This question is often raised, due to the idea that only the client of the development (the customer, owner of the product) is really aware of the functional requirements of an application. This is of course partly true, because all the knowledge that is not transferred is not available to an external party. However, this is also where the added value of outsourcing functional testing lies. When the information has to be shared with an external party, attention will be paid to recording the functional requirements as accurately as possible. This allows for better testing of the software and improves the end result. When drafting the functional requirements is done properly from the beginning and receives the necessary attention during development, functional testing can easily be outsourced and add value to the development.
Agile testing. Within an Agile development methodology, it is not necessary to describe all the functionalities beforehand. The development commences on the basis of the User Stories, and if the agile process is set up correctly, proper documentation of what exactly is being built in a functional sense will take place during the sprints. By integrating testing in this process, continuous work will be carried out on describing functionalities, creating test cases, performing the testing and evaluating the outcomes. As a result, functional testing is not a session after development is finished, but a continuous circle of describing, testing, evaluating and improving. If professional testers are deployed for this, it is perfectly possible (and often better) to outsource functional testing.
Egor Gucinsky
"Testing is a preventive activity and focuses on revealing risky from quality point of view areas before testing starts. It is done in order to put dedicated testing stress on areas that are tend to have issues. Testing of functional and business critical scenarios is a priority. Scenarios are prepared beforehand and support development from the beginning."