더북(TheBook)

첫째, 실행 순서가 바뀔 수 있다는 사실을 고려하지 않았을 때입니다. 이벤트 기반 시스템이나 비동기 코드에서는 실행 순서가 코드 작성 순서와 다를 수 있습니다. 순서가 보장된다는 가정 위에 작성된 로직은 순서가 어긋나는 순간 조용히 틀어집니다.

둘째, 상태가 고정되어 있다고 가정했을 때입니다. 한 번 읽은 값이 다음 줄에서도 그대로일 것이라는 가정입니다. 하지만 실제 시스템에서는 다른 요청, 다른 프로세스, 다른 스레드가 그 상태를 언제든지 변경할 수 있습니다.

셋째, 조건 조합을 충분히 고려하지 않았을 때입니다. 조건이 하나일 때는 문제가 없습니다. 둘일 때도 대부분 통과합니다. 하지만 조건이 세 개 이상 조합되는 순간, 문제가 드러나는 경우가 많습니다. 단일 테스트로는 절대 발견되지 않습니다.

넷째, 데이터의 관계를 단순화해서 이해했을 때입니다. 1:N 관계를 1:1처럼 다루거나, JOIN 결과가 중복될 수 있다는 사실을 간과하면 에러 없이 데이터가 증식하거나 누락됩니다.