Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.
Application functional testing is the most widely accepted testing practice in software development organizations today, and hundreds of millions of dollars have been spent on automated tools to support the practice. Yet, organizations still struggle to achieve software quality and suffer inconsistent, inefficient, and often inaccurate application of the practice. Over 70 percent of software testing today is still done manually despite the investment in automation. Understanding what has or hasn’t been tested is still most organizations’ major challenge, and the time commitment required for QA functional testing is increasingly one of organizations’ greatest concerns for meeting application delivery and time-to-market demands.
Software development organizations with an effective functional testing practice have a fast and objective way to determine whether each functional requirement is actually implemented in the code. With functional testing, the team translates functional requirements into executable test cases that confirm how well the code satisfies the requirements at any given time. It provides unprecedented objective insight into requirement status and prevents the missing or incorrect functionality implementations that can lead to countless rewrites (and then budget overruns and missed deadlines), user dissatisfaction, and project failure.
An effective functional testing practice should be a natural extension of a requirements management policy. Ideally, a requirements management policy describes how to build effective use cases for the features expected in the current release, and how to map those use cases to verifiable test cases. A test plan is then developed and implemented to build a suite of executable tests that frame and verify the functionality requirements, providing a fast and objective way to assess the status of expected functionality. These tests can then be executed regularly to ensure that code modifications do not unintentionally change previously verified functionality
An effective functional testing practice involves the definition of guidelines for using functional testing technologies effectively, and then the implementation and integration of those guidelines (along with supporting technologies and configurations) into your software development life cycle to ensure that your teams apply the policy consistently and regularly. It also requires a means to monitor and measure the policy’s application, as well as report the data it is tracking.
To achieve effective black box unit testing, you must not only have a defined practice for its use, but that practice must be implemented and integrated into your software development life cycle so that it is used consistently and regularly across your software development team. It is also important to have the means to monitor and measure its use.