{{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.<ref name="ISO24765">ISO/IEC/IEEE 24765:2017, "Systems and software engineering — Vocabulary", International Organization for Standardization, Geneva, Switzerland, 2017.</ref><ref>{{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}}</ref>
Generally, functional testing is black-box, meaning the internal program structure is ignored (unlike for white-box testing).<ref name="KanerFalkNguyen1999">Kaner, Falk, Nguyen. ''Testing Computer Software''. Wiley Computer Publishing, 1999, p. 42. {{ISBN|0-471-35846-0}}.</ref>
Sometimes, functional testing is a quality assurance (QA) process.<ref name="Prasad">Prasad, Dr. K.V.K.K. (2008) ''ISTQB Certification Study Guide'', Wiley, {{ISBN|978-81-7722-711-6}}, p. vi</ref>
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.<ref>{{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}}</ref>
== Types == Functional testing includes but is not limited to:<ref name=KanerFalkNguyen1999 /> ===Sanity testing=== {{Excerpt|Sanity testing|only=paragraphs|paragraphs=1}}
===Smoke testing=== {{Excerpt|Smoke testing (software)|only=paragraphs|paragraphs=1}}
===Regression testing=== {{Excerpt|Regression testing|only=paragraphs|paragraphs=1}}
===Usability testing=== {{Excerpt|Usability testing|only=paragraphs|paragraphs=1}}
==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}}
== References == {{reflist}}
{{Authority control}} {{Software testing}} Category:Software testing