Differences Between Testing and Checking

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"
ISTQB and ISEB explain the testing by help of driving analogy which says that if a car drives through the route and during the travel it makes maneuvering and if it reaches to the final with or without minor accident then driving is said to be successful but making and major accident makes it fail. This explanation is used in the software testing which means that if the software doesn't have any major/priority one defect it can be assumed that the software is pass the testing. However, risk levels of the minor defects are still needed to be discussed, this depends on the your risk level and a minor defect may fail your exist criteria. Therefore ISTQB uses; process, SDLC, static-dynamic testing, planing, preparation, evaluation terms for explanation of the software testing. Also, Glenford Mayer explains the software testing in his book The Art of Software Testing as "Testing is the process of executing a program with the intent of finding errors".

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:

"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.)"
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.


Popular posts from this blog

Testing WEB Sevices and Automating SOAP Services

Performance Testing on CI: Locust is running on Jenkins

Change Default Timeout and Wait Time of Capybara

Performance Testing on CI: Integration of Locust and Jenkins

Create an Alias for Interactive Console Work: Selenium and Capybara