Functional Testing is probably the most known and practiced form of testing in the software quality world. Ever since software testing has been in use, one of the first things the tester validates is to confirm functionality to defined specifications. Of course lately, such verifications have also extended to ensure end user expectations. Anything that does not belong to the functional category goes into the non-functional bucket and off late, this has also been growing in prominence – whether it be UI, performance, security, usability, accessibility and so on. Globalization is one test area that spans both the functional and non-functional test spaces.
Coming to the point of functional testing, given how prominent it is in a test effort (it wouldn’t be surprising to see 50% of the time, effort and spend of a test effort being expended on functional verification), it is quite understandable that anytime we talk about testing, functional testing is what first comes to mind. While all of these are testing attributes, manual and automated testing are types that can be applied to any of these attributes. These are the two major types of testing that testing groups work on in arriving at the right balance between them across the varied testing attributes, in finalizing their strategy towards meeting the quality goals. However, what happens in the process often times is that functional testing is viewed synonymously and used interchangeably with terms manual and automated testing. As we mature into a very formal discipline bringing in quality into the product under test, this is something teams need to be conscious about. More so, because we are increasingly seeing non testers also partake in a quality effort. It is important for them to understand this difference between an attribute and a type. This confusion was more prevalent in the early years when manual testing was more in practice compared to automation. It mellowed down in the interim years where a hybrid approach was adopted with a good balance of manual and automated test efforts. It has re-surfaced again in the recent times where teams are increasingly focusing on test automation. A test effort at the end of the day is a good mix of manual and automated test types – not viewing functional testing as synonymous with either of the two, helps maintain a healthy balance between the two as well – and this will be important in the coming times, where we will see more automation coming in, in the world of continuous testing. And to keep in mind here, I am talking only about product test coverage automation and not about process or productivity automation.