Facts About Functional Testing

Subu Iyer
What is Functional Testing?

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

1  View profile

To comment, please sign in to your Yahoo! account, or sign up for a new account.