Below are some of the basic testing terminology.
Software Testing:
- The process of operating a product under certain conditions, observing and recording the results, and making an evaluation of some part of the product.
- The process of executing a program or system with the intent of finding defects/bugs/problems.
- The process of establishing confidence that a product/application does what it is supposed to.
Verification:
"The process of evaluating a product/application/component to evaluate whether the output of the development phase satisfies the conditions imposed at the start of that phase. Verification is a Quality control process that is used to check whether or not a product complies with regulations, specifications, or conditions imposed at the start of a development phase. This is often an internal process."
Validation:
"The process of evaluating a system or component during or at the end of the development process to determine whether it satisfies specified user requirements. Validation is Quality assurance process of establishing evidence that provides a high degree of assurance that a product accomplishes its intended requirements."
Quality Assurance (QA):
"A set of activities designed to ensure that the development and/or maintenance process is adequate to ensure a system will meet its objectives. A planned and systematic set of activities necessary to provide adequate confidence that requirements are properly established and products or services conform to specified requirements."
Quality Control (QC):
The process by which product quality is compared with applicable standards, and the action is taken when nonconformance is detected.
White Box:
In this type of testing we use an internal perspective of the system/product to design test cases based on the internal structure. It requires programming skills to identify all flows and paths through the software. The test designer uses test case inputs to exercise flows/paths through the code and decides the appropriate outputs.
Gray Box:
Gray box testing is a software testing method that uses a combination of black box testing and white box testing. Gray box testing is completely not black box testing, because the tester will have knowledge of some of the internal workings of the software under test. In gray box testing, the tester applies a limited number of test cases to the internal workings of the software under test. In the remaining part of the gray box testing a black box approach is taken in applying inputs to the software under test and observing the outputs.
Black Box:
Black box testing takes an external perspective of the test object to design and execute the test cases. In this testing technique one need not know the test object's internal structure. These tests can be functional or non-functional, however these are usually functional. The test designer selects valid and invalid inputs and determines the correct output.
References: wikipedia.