Functional Testing is testing a software application for the correctness of its features. Here we test the application as a whole, all components are in place and the entire application is tested as it would need to work and perform in the real world. Functional Testing tests the application by applying the business rules in the test cases. This is the phase of testing where there should be collaboration between the Software Quality Assurance team and the Business Analysts. Functional Testing is the most important phase of testing and should not be skipped before a product release.
Some synonyms for Functional Testing are Black Box Testing and System Testing. In some cases, Integration Testing is also considered Functional Testing, which is not exactly true.
Why do Functional Testing?
The main purpose of Functional Testing is to determine if the application is working as described in the specification. Functional Testing helps detect inconsistencies due to the different code blocks and different systems working together. It also helps to detect defects (or unexpected behavior) when subjected to realistic data inputs, load and stress. This is also the time to check application behavior for inconsistencies, exceptions to business rules and gaps in the specifications. As functional tests document the test procedure, behavior and results, the process creates excellent documents for use later during maintenance.
How do we do Functional Testing?
Testing, in general, has to be a systematic effort, Function Testing also requires a lot of planning, documentation and resources. Functional Testing is the same for the Test First methodology or the Build and Test approach. You have to plan your testing strategy - pick the platform, set up the testing environment, pick tools to document and maintain test cases and ways to execute the test cases. These test cases simulate actual user scenarios and are often long, repetitive and require constant interaction with the system. Most functional testing is still done manually. There are many automated tools available in the market and many more open source tools. However, picking the right automation tool for the application can be very difficult, especially since you have to pick the tool before building the product. Also with the complexity of applications and user interfaces growing day by day, functional testing, whether manual or automated, is a challenge. In my opinion, any one tool can't do everything and tools won't just work out of the box even if the sales guy promised you so.
A good start is to have both manual and automated test cases. The distribution could be a decision based on available man power (head count, number of coders in the QA team), project time constraints, budget, etc. Ideally, all your test cases will be automated, but that hardly ever happens. I have worked in places with 100% manual functional tests. I think such a test strategy has failure written all over it because human beings were never designed to perform the same task over and over again. On the other hand, test automation tools were designed for that exact purpose. Building or even picking a good test automation framework is a serious effort and can't be considered trivial. Functional Testing is also a group effort and should be integrated into the software development life cycle. A detail Test Plan, realistic test scenarios and a good test framework are key for successful Functional Testing.
Published by Subu Iyer
- Scalability Testing and Avoiding Problems at the Eleventh HourVery large scale software systems are a breed apart: scalability is vital to their success. If you leave performance testing to the end, you risk finding your systems will fail to scale and you're left with staggerin...
- What is a Functional Capacity Evaluation?A functional capacity evaluation is an assessment tool utilized for those who have suffered an injury that may affect employment. It is a standardized way to collect information regarding physical abilities.
- Introduction to Software Quality AssuranceThis essay talks about the role of Software Quality Assurance in the development of a software product.
Symptoms and Treatment of Functional DysphoniaFunctional dysphonia is characterized by the presence of an abnormal voice in the absence of any structural or neurogenic pathology. Functional dysphonia, although not complete...- Maintainable SoftwareThis essay talks about building software that is easy to maintain.
- Facts About Automated Testing
- Facts About Unit Testing
- Software Quality Assurance Agile Testing Types and Processes
- Testing Database Applications
- How Do Functional Foods Promote Digestive Health?
- Successful Software Testing Automation
- Power Tips for Software Testers
