Software testing is the process of detect differences between given input and expected output. It is processed to verify the Software correctness, completeness, and quality.
Software Testing is, execute a system in order to identify any requirement gaps, errors, bug or missing requirements against the actual requirements.
Basically, there are two types of Software Testing.
Static Testing : Static testing is the testing of the software work products manually, or with a set of tools, but they are not executed. It starts early in the Lifecycle and so it is done during the verification process. This is useful and cost effective way of testing. For example reviewing, walkthrough, inspection, etc.
Dynamic Testing : Dynamic testing is the testing in which we execute the software to demonstrate the result of running tests. It’s done during the validation process. For example unit testing, integration testing, system testing, etc.
Software Testing can also be stated as the process of validating and verifying that a software Application meets it’s technical and business requirements.
Software Validation : Validation is the process of evaluating the final product to check whether the software meets the business needs & requirements. In other words, the test execution which we do in our day to day life is actually the validation activity which includes smoke testing, functional testing, regression testing, systems testing other testings.
Software Verification : Verification is a process of evaluating the intermediary work products of a software development lifecycle to check whether we are on the right track of creating the final product or not.
In other words, we can also state that verification is a process to evaluate the mediator products of software to check whether the products satisfy the conditions imposed at the beginning of the phase.