What is functional testing?

Quote from Wikipedia:

“Functional testing is a quality assurance process that bases its test cases on the specifications of the software component under test. Functions are tested by feeding them input and examining the output, and internal program structure is rarely considered (unlike white-box testing). Functional testing is conducted to evaluate the compliance of a system or component with specified functional requirements. Functional testing usually describes what the system does.”

QF-Test provides the record-replay paradigm. This allows any person to create tests for the software. No software programming skills are required, although, we know this helps.

The following steps can be found in the Functional testing

  1. Identification of functions that the software should perform
  2. Choosing input data based on the specifications of this function
  3. Determine output based on the function's specifications
  4. Setup initial state and recovery
  5. Creating a test case
  6. Executing the test case
  7. In the test case perform comparison of actual and expected outputs
  8. Generate reports for humans

In step 1 those functions are traditionally described in external to QF-Test files. One can also use a Keyword-Driven-Development (KDD) or Behavior-Driven Testing (BDD). Both are very well supported by QF-Test. A special parser library for Gherkin (a language of Cucumber) is also available on demand.

The values required for steps 2 and 3 can be described via the usage of Data-Driver. The data can be fed via database, internal tables, external CSV or Excel files and more.  This type of testing is often called Data-Driven testing, especially useful when multiple values need to be tested in similar tests and conditions.

Step 4 has a very special place within QF-Test. The QF-Test dependencies, a unique feature that takes care of setup, cleanup, error handling and recovery of the system under test (SUT).

Steps 5, 6 and 7 belong to the execution and reporting engine of QF-Test. Reporting, screenshots, re-run, and test documentation are only part of the features. Integration with all Continuous Integration tools, like Jenkins is also possible.

Normally step 8 wouldn't need an explication, since you and your colleagues want to work with the test results and your manager wants to be informed about them.

Performance for testers
Software testers
Security for developers
GUI developers
Advantages for deciders