개발이나 테스트 과정에서 모든 것이 완벽히 돌아간다고 생각하는 낙관주의는 매우 위험합니다.
대표적으로 오버플로우나 소수점 연산 등을 예시로 들 수 있을 것 같습니다.
위와 같이 개발이나 유닛 테스트 과정에서 오류가 발생하는 경우를 엣지 케이스(Edge case) 와 코너 케이스(Corner case)라고 부르는데 그 차이를 아래에 구분해보았습니다.
📌 엣지 케이스 / 경계조건 (Edge case)
엣지 케이스란 문제나 극한의 상황(Value가 최소 또는 최대일 때), 예를 들어 스피커 볼륨을 최대로 올리니 소리가 왜곡되는 현상을 의미합니다.
이 현상은 엔지니어에게 예상되거나 예상되지 않을 수 있으며, 유연하게 처리할 필요가 있습니다.
소프트웨어 개발자 측면에서 엣지 케이스란
입력하는 value를 알고리즘에 따라 특별하게 처리하는데, 정상 동작하는지 유닛 테스트를 돌릴 때 최소/최대 값 즉 경계값을 넣어 엣지 케이스 테스트를 모두 성공하면 다른 값도 정상 동작한다는 동작 범위와 신뢰할 수 있는 코드라는 의미를 주게 됩니다.
📌 코너 케이스 / 복합 경계 조건 (Corner case)
코너 케이스란 엣지 케이스를 만족하며 외부 변수나 특정한 조건에서 문제가 발생하는 경우를 의미합니다.
앞서말한 스피커는 최소/최대 볼륨 범위를 제한하여 정상 동작하나, 온도나 습도 등이 일정 범위를 벗어나면 문제가 발생합니다.
컴퓨터나 스마트폰 또한 특정 제조사나 모델에서 오류가 발생하는 경우도 마찬가지 입니다.
이러한 문제는 발견하기 쉽지 않다는 문제가 있습니다.
ⓒ 굿햄 2022. daryeou@gmail.com all rights reserved.
댓글