Is it possible to write a unit test that cover everything?

Viewed 403

Let's say I have a function

function (int x) {
  if (x < 10) return true;
  return false;
}

Ideally, you want to write 2^32 - 1 test cases to cover from INT_MIN to INT_MAX? Of course this is not practical.

To make life easier, we write test cases for

  • x < 10, test x = 9 expect true
  • x == 10, test x = 10 expect false
  • x > 10, test x = 11 expect false

These test cases are fine but it does not cover every case. Let's say one day someone modified the function to be

function (int x) {
  if (x == 12) return true;
  if (x < 10) return true;
  return false;
}

he will run the test and realize all the test passed. How do we make sure we cover every senario without going to extreme. Is there a key word for this issue I am describing?

2 Answers
Related