Functional Testing: Process of validating that the software conforms to its specifications and correctly performs its required functions. This entails a series of feature by feature validation of behavior using a wide range of normal and erroneous input data. Functional testing divided in 3 categories: - Build Validation tests: Build Verification Test (BVT), also known as Build Acceptance Test, is a set of tests run on each new build of a software to verify that the build is testable before the build is released into further testing. - Smoke Testing: A subset of test cases that are designed to broadly and minimally test to confirm that changes in the code of a particular build function as expected and do not break an entire build. - Regression: Process of retesitng a build after bug fixes and code changes to find any unexpected loss of functionality in the new code base.