Passion for software development

The Bike Test


What do you do actually do when you are verifying the quality of a software application? Your answer will probably be that you will test it. But it's possible to divide "testing" in two categories and that is testing and checking. What is the difference between testing and checking? There are many ways you could try to explain the difference between testing and checking. Here I will explain one way that I have used to explain the difference.

I will explain the difference between testing and checking with help of a how you can check the quality of a bike.


Checking is when you validate a specific value for instance, or a state or an attribute. Often you do these tests with small parts of the code or application and then it could also be done with the entire application put together. In the bike test case, we start by checking the individual parts of the bike.

So, we check things like, do we have 12 spokes on the wheel and do we have 1 saddle.

Then we can move on to put some of the parts together and check that if we turn the peddle 45 degrees the back wheel should have turned 90 degrees.

If we have put the entire bike together we can check that the number of wheels is equal to 2, we have one frame, one saddle and two peddles.

Ok, now we have checked everything, then we know that we have a perfect bike that we can sell to our customers. Well, checking is something that computers are very good at and humans are not so good at and it's very boring for humans to do the same checking day after day. It's very easy for a human to miss that one spoke is missing when you are counting the number of spokes every day. But, I'm sure that checking will not be enough to validate that we have a good bike that the customers love, we also need to do some testing.


Testing is when you verify things like, how does the application feel and is it logical to use. For the bike test, you put the whole bike together and let a human test and explorer if the bike feels logical to use. For instance, is logical and easy to use the bike if the saddle is in the front?

Then you can make the human tester take a ride to see if it's comfortable to ride the bike? In this case the bike has all the parts and they are in the correct place, still it's a very bumpy ride and it's not comfortable to ride the bike.

As you might have figured out by now, testing is something that humans are good at and computers have big problems to do.


In conclusion computers are good and fast at doing checking, but humans are not. Humans are good at testing and computers are bad at it. The same rules apply for both the bike test and for software applications.