So, let’s get this blog post rolling with a nice sterile quote from the internet to outline the what:
‘Functional Testing is defined as a type of testing which verifies that each function of the software application operates in conformance with the requirement specification. This testing mainly involves black box testing and it is not concerned about the source code of the application.’
Each functionality of the system is tested by providing appropriate input, verifying the output and comparing the actual results with the expected results.
So, all clear and all so simple, why is functional testing valuable?
- It questions the software to help provide information about its quality
- Software should match the specification
- Items that don't meet the specification are defects, which can place business operations at risk
- It simulates customer interactions with the software and how it is used, which can also result in defects
- Test results help stakeholders to make project decisions regarding scope, time and resource
- Change should be tested before it is exposed to business customers
- IT systems are built to functional requirements and design
- It saves money and improves operational efficiency by carrying out effective testing early in the Application life cycle
As you can see functional testing is essential and has wide ranging essential applications for the client. It is a wide net covering many different types and interactions, to list each in detail would balloon this short blog to the point where no one will want to read all of it, so I will summarise in a handy table:
Boiling down all these testing methods, what can we as testers do to deliver on the principals listed above?
- To find different types of defects across each layer of the software
- Report on defects found by functional area, severity and their status
- Provide known coverage by functional area that can be measured
- Demonstrate that testing of impacted areas is considered
- Produce tests that can potentially be automated and run as a regression suite for each system
- Gain domain knowledge of the systems functionality
- Give stakeholders confidence that the product meets the business need
- Report on test outcomes effectively to help stakeholders make decisions about whether more testing is required
- Provide evidence that functional testing has been carried out
Now obviously time is a strong consideration, with something that covers quite as much as functionality testing, priority must be given to the areas that cover the most relevant risks. There are real risks of performing redundant tests to ‘do everything.
As the testing is based on requirements, if those requirements are not clear or lacking specific details quite logical tests might be missed. Likewise, it does not consider other factors that are essential to a viable product, for example performance or responsiveness.
These aside, functional testing is one of the important testing processes (or collection of) as it verifies the function of a product. Arguably the most important aspect of implementing a product for a client.