Functional testing examines the right handling of the external functions of software product, with the help of monitoring the program external behavior at the time of implementation.
Software is treated as a black-box, with the external behavior monitored through its input and output. That is why it is generally referred to as black-box testing. So these 2 terms can be used interchangeably.
The easiest way of black-box testing is to begin running the software and monitor in the hope that it is easy to differentiate expected and unexpected behavior. Such way of software testing is considered as “ad hoc” testing as well.
Such unexpected behavior, as a crash, is easy to identify. As soon as we define that it is caused by software through repeated implementation to eliminate the probabilities of hardware troubles, we can pass the information to responsible parties to have the defect corrected. Actually, this is the general way through which defects found by clients are reported and corrected.
It is also another general way of black-box testing. It is the use of specification checklists, which list the external functions that are supposed to be present, as well as some information about the expected behavior or input-output pairing.
The term input means any action or resource in the process of running a program.
The term output means any action or result produced by the running program.
Concrete samples of input to a calculator might comprise the specific numbers entered and the action requested, such as division operation of 2 numbers. The output could be the actual division result, or some error message, such as when trying to divide by zero. When defects are observed, specific follow-up actions are conducted to correct them.