functional testing
{{Short description|Testing software functionality}}
{{distinguish|Functional testing (manufacturing)}}
{{More citations needed|date=December 2010}}
{{Software development process}}
In software development, functional testing is a form of software testing that verifies whether a system meets its functional requirements.ISO/IEC/IEEE 24765:2017, "Systems and software engineering — Vocabulary", International Organization for Standardization, Geneva, Switzerland, 2017.{{Cite book|title=ISO/IEC/IEEE International Standard - Systems and software engineering|publisher=ISO/IEC/IEEE 24765:2010(E)|year=2010|pages=vol., no., pp.1–418, 15 Dec. 2010}}
Generally, functional testing is black-box, meaning the internal program structure is ignored (unlike for white-box testing).Kaner, Falk, Nguyen. Testing Computer Software. Wiley Computer Publishing, 1999, p. 42. {{ISBN|0-471-35846-0}}.
Sometimes, functional testing is a quality assurance (QA) process.Prasad, Dr. K.V.K.K. (2008) ISTQB Certification Study Guide, Wiley, {{ISBN|978-81-7722-711-6}}, p. vi
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.{{Cite web |title=Full Stack Testing |url=https://www.thoughtworks.com/en-us/insights/books/full-stack-testing |access-date=2022-09-08 |website=www.thoughtworks.com |language=en-US}}
Types
Six steps
Functional testing typically involves six steps{{Citation needed|date=December 2010}}
- 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
{{div col|colwidth=40em}}
- {{Annotated link|Non-functional testing}}
- {{Annotated link|Acceptance testing}}
- {{Annotated link|Regression testing}}
- {{Annotated link|System testing}}
- {{Annotated link|Software testing}}
- {{Annotated link|Integration testing}}
- {{Annotated link|Unit testing}}
- {{Annotated link|Database testing}}
- {{Annotated link|Security testing}}
- {{Annotated link|Load testing}}
- {{Annotated link|Test automation}}
{{div col end}}