Testing is a group of activities which aim to make an application better by finding drawbacks. This explanation is not enough for successful testing result because every activities like checking, control, inspection, supervision or something apparently seen as testing activity do not fully accomplish what testing can do. In this post, I want to give some informations about the differences between testing and something such as checking which non-testing-knowledge people may see them as same.
First of all, let's look at the definition of testing by IEEE standard documentation IEEE - 829.1983, this documentation sets the basics of testing and thereafter ISEB and ISTQB have used this standard for improving their software testing base. Definition of the software testing by IEEE is as follows, as you can see it in this reference :
"Software testing is the process of analyzing a software item to detect the differences between existing and required conditions (that is, bugs) and to evaluate the features of the software item"
When we define the technical explanation of the software testing then meaning of the checking can be easily understood. Checking is about to control if pre-defined items are the same as the described or not. Therefore by the checking, we can sure that the items in the list are controlled and evaluated by a human or machines control. This procedure is suitable for machine checking because the asserting variables are already known and we know what values they can be taken in to account.
The differences between testing and checking are explained by James Bach and Michael Bolton, depends on the Jame's blog after a long discussion they deduced as the following summary:
I understand from this explanation that testing is about "process, evaluation, learning, questioning, study, modeling, observation and inference" and checking is about "process, rules and observation". Therefore we can summarize as checking is a process and it depends on the rules and the result of checking can be given by observation of the rules; however the testing is a process and it depends on the experimentation and knowledge and result can be produced by learning the system under test. As a result it can be say that testing can cover the checking but reverse is not possible. Checking can be an item in testing process and it can be the base of test automation. We may find new thing by the testing but checking is only about the items we have. Checking can be finished by completing all the checklist items but testing can not finish if we want an exhaustive testing, remember 7 testing principles.
"Testing is the process of evaluating a product by learning about it through experimentation, which includes to some degree: questioning, study, modeling, observation and inference. (A test is an instance of testing.)
Checking is the process of making evaluations by applying algorithmic decision rules to specific observations of a product. (A check is an instance of checking.)"