Search code examples
unit-testingtestingfunctional-testingsystem-testing

How do you define functional testing with two popular and seemingly contradictory explanations?


I've been researching the definition of functional testing and can't come across a concrete explanation and would appreciate some additional info to help reconcile this.

The two main ideas I have come across are:

  1. Functional Testing as a Testing Type and is comprised of the following Testing Levels: Unit Testing, Integration Testing, System Testing and Acceptance Testing.

enter image description here

  1. Functional Testing as a separate level from Unit Testing and Integration Testing (sometimes a subset of System Testing other times precedes it) that tests the product end-to-end with a Black-box approach. Purpose is to verify all functional specifications defined.

enter image description here


Solution

  • Testing terminology is garbage. Everyone has their own terminology. Therefore even if you settle on one of the definitions, you should expect that others may not understand you.

    Personally, I think we need to stick with the etymology that the term alludes to. Functional test means (to me) the fact that it checks business logic (functionality). We can write these tests on any level - Unit, System level, etc. It's a job of developers to determine where such test would be most effective.

    But again - you'll hear people referring to Selenium tests when they say "Functional" %)

    Also, I don't think that your 1st definition means that Functional Testing comprises of the levels. I think it means that it can be conducted on different levels. Which is similar to what I just wrote.

    PS: Acceptance Testing is not a level either - it's the fact that you accept new code. As opposed to Regression Testing which checks that what previously worked keeps working. Though there is also a User Acceptance testing - which refers to end users playing with the system.