테스트는 결함이 있음을 증명하는 활동이다. 테스터는 결함이 있음을 증명해야 한다. 결함이 있음을 증명하기 위해서는 무엇이 결함인지를 알아야하며, 어떤 현상이 결함인지 아닌지에 대하여 판단을 내릴 수 있어야 한다. 그러기 위해서는 결함이 무엇인지를 알아야한다. ISTQB 등에서는 결함이 사람의 실수 즉, 오류에 의해 발생한다고 설명되어 있다. 즉, 결함을 정확히 이해하기 위해서는 우선 오류가 무엇인지 그리고 사람의 실수가 무엇이며 사람이 왜 실수를 하는지에 대한 이해가 있어야 한다고 할 수 있다. (물론 모든 결함이 사람에 의해 발생하지는 않는다.) 자, 그럼 오류란 무엇일까? 사람의 실수란 무엇일까? 오류에는 여러가지 형태가 있다.(여기서 잠깐, 매번 글을 적으면서 느끼는건데 난 통일된 문체를 유지하지 못하는 신기한 특성이 있다. '다' '나' '까' 로 끝나다가 '습니다'와 같은 문체가 같은 글에 반복되더라도 글을 읽으시는 분들은 양해를 해주시기를 바랍니다.) 여러가지 형태의 오류를 크게 두가지로 구분하자면 실수와 착오로 구분할 수 있다. 우리가 흔히 실수라고 부르는 mistake 는 사실 착오이다. 실수는 slip 으로 불린다. 착오와 실수는 어떻게 다른 걸까? 실수는 실수를 한 사람이 그것을 인지하지 못한다. 실수는 우리가 어떤 목적을 달성하기 위해서 수행하는 무의식적이고 자동적인 행동에서 발생한다. 예를 들면 우리가 계단을 올라갈때 왼발 들어올리고 다음 계단 확인하고 왼발 디디고 오른발 들어올리고 다음 계단 확인하고 오른발 디디는 과정을 면밀하게 관찰하고 생각하면서 수행하지는 않는다. 우리가 계단을 올라가는 과정은 전적으로 자동으로 진행된다. 생각이라는 것 자체를 잘 하지 않는다. 하지만 우리가 계단을 올라가는 도중에 이쁜 여자(?)를 쳐다보거나 스마트폰 삼매경에 빠져있을 때 계단이 없음에도 올라가는 행동을 하다가 발을 헛디딘 경험을 해본 분들이 계실 ...