What is Functional Testing (in a deeper context)?
Process of verifying a system working as expected when its functionality is examined by a user or by another system. A few of them might include -
Unit Tests: Initial step of testing is to check each block of code performs as expected with a given set of inputs.
Integration Tests: Examining or Verifying each unit module connects as per the desired requirements and passes data throughout the system through which it was built for.
Sanity Checks: A check on the code fixes or the code change applied, doesn't undergo any unexpected side effects on the system.
Regression Tests: Verification, of the latest feature or the code merge done to the system, doesn't cause any new issues.
User Acceptance Tests: Final check on the system as per the desired requirements and a gateway to the product deployment.
Testing Approaches :
It has two techniques :
Proactive - Approach where the Test Design process is initiated as early as possible to find and fix the defects before the build is created.
Reactive - Approach where the testing isn't started until the design and coding are completed.
The above approaches are used to implement below functional testing types :
📦 Black-Box Testing
In this, the Internal architecture of the application is unknown.
An array of test inputs is passed to view the specified output generated.
The Tester is only concerned with the outcome of the application.
Used to find missing functions, performance errors, initialization errors, database issues, etc.
📦 White-Box Testing
In this, the Internal architecture of the application is partially known.
Performed at the early stages of the code via unit and integration tests.
The expected outcome of the application which is under the test is predicted here.
📦 Grey-Box Testing
It's a mixture of Black-Box and White-Box testing.
Is performed when the code/product is at the final part of the integration and the start of the UAT.