Testing experience has shown that especially the boundaries of input ranges to a software component are liable to defects. A programmer implement e.g. the range 1 to 12 at an input, which e.g. stands for the month January to December in a date, has in his code a line checking for this range. This may look like:
if (month > 0 && month < 13)
But a common programming error may check a wrong range e.g. starting the range at 0 by writing:
if (month >= 0 && month < 13)
For more complex range checks in a program this may be a problem which is not so easily spotted as in the above simple example.