In software development, functional testing is a form of software system testing that verifies whether a system meets its functional requirements.
Generally, functional testing is black-box, meaning the internal program structure is ignored (unlike for white-box testing).
Sometimes, functional testing is a quality assurance (QA) process.
Functional testing differs from acceptance testing. Functional testing verifies a program by checking it against design documentation or specification, while acceptance testing validates a program by checking it against the published user or system requirements.
As a form of system testing, functional testing tests slices of functionality of the whole system. Despite similar naming, functional testing is not testing the code of a single function.
The concept of incorporating testing earlier in the delivery cycle is not restricted to functional testing.
In fixture testing, while ICT fixtures test each individual component on a PCB, functional test fixtures assess the entire board's functionality by applying power and verifying that the system operates correctly.
Types
Functional testing includes but is not limited to:8
Six steps
Functional testing typically involves six steps
- The identification of functions that the software is expected to perform
- The creation of input data based on the function's specifications
- The determination of output based on the function's specifications
- The execution of the test case
- The comparison of actual and expected outputs
- To check whether the application works as per the customer need
See also
- Non-functional testing – Testing software for non-functional behavior
- Acceptance testing – Test to determine if the requirements of a specification or contract are met
- Regression testing – Checking whether changes to software have broken functionality that used to work
- System testing – Testing conducted on a complete software system
- Software testing – Checking software against a standard
- Integration testing – Type of software testing
- Unit testing – Validating the behavior of isolated source code
- Database testing – The testing of database software systems
- Security testing – The process of finding flaws in the security of information systems
- Load testing – Process of putting demand on a system and measuring its response
- Test automation – Use of special software to control test execution and analysis
References
ISO/IEC/IEEE 24765:2017, "Systems and software engineering — Vocabulary", International Organization for Standardization, Geneva, Switzerland, 2017. ↩
ISO/IEC/IEEE International Standard - Systems and software engineering. ISO/IEC/IEEE 24765:2010(E). 2010. pp. vol., no., pp.1–418, 15 Dec. 2010. ↩
Kaner, Falk, Nguyen. Testing Computer Software. Wiley Computer Publishing, 1999, p. 42. ISBN 0-471-35846-0. /wiki/ISBN_(identifier) ↩
Prasad, Dr. K.V.K.K. (2008) ISTQB Certification Study Guide, Wiley, ISBN 978-81-7722-711-6, p. vi /wiki/ISBN_(identifier) ↩
Kaner, Falk, Nguyen. Testing Computer Software. Wiley Computer Publishing, 1999, p. 42. ISBN 0-471-35846-0. /wiki/ISBN_(identifier) ↩
"Full Stack Testing". www.thoughtworks.com. Retrieved 2022-09-08. https://www.thoughtworks.com/en-us/insights/books/full-stack-testing ↩
"Functional Test Fixtures". Forwessun. Retrieved 2024-11-14. https://forwessun.net/functional-test-fixtures/ ↩
Kaner, Falk, Nguyen. Testing Computer Software. Wiley Computer Publishing, 1999, p. 42. ISBN 0-471-35846-0. /wiki/ISBN_(identifier) ↩