Skip to content
Kendrick's Website Kendrick's GitHub Kendrick's Youtube Kendrick's Travel blog

엣지 케이스(Edge Case)와 코너 케이스(Corner Case)

7 min read
Cover

일할 때 코너 케이스나 엣지 케이스 같은 용어를 가끔 사용하게 됩니다. 실제로 비슷한 개념이지만 약간의 차이가 있습니다.

이 포스트에서는 두 용어에 대해 자세히 설명합니다.

Corner and edge

코너 케이스(Corner Case)

코너 케이스는 주로 알고리즘 또는 문제의 '극단적인' 조건, 즉 입력 값의 범위나 조건의 한계점에서 발생하는 특이한 상황을 가리킵니다. 예를 들어, 숫자 배열을 정렬하는 알고리즘에서 배열의 크기가 0이거나 1인 경우가 코너 케이스에 해당할 수 있습니다. 이러한 상황은 평범한 시나리오에서는 잘 발생하지 않지만, 알고리즘의 정확성과 견고성을 보장하기 위해 반드시 고려해야 합니다.

코너 케이스는 알고리즘 또는 시스템의 극단적인 조건에서 발생하는 문제를 이야기합니다.

  1. 정렬 알고리즘의 코너 케이스: 배열을 정렬하는 알고리즘에서 입력 배열이 빈 배열이거나 하나의 요소만을 포함하는 경우가 코너 케이스에 해당합니다. 이러한 경우는 일반적인 배열 정렬 시나리오에서는 자주 발생하지 않지만, 알고리즘이 이러한 상황을 제대로 처리할 수 있어야 합니다.
  2. 수치 계산의 코너 케이스: 수치를 계산하는 알고리즘에서 0이나 음수, 극단적으로 큰 값 등이 입력되는 경우가 코너 케이스에 해당할 수 있습니다. 예를 들어, 제곱근을 계산하는 함수에서 음수가 입력되는 경우는 특별히 처리해야 할 코너 케이스입니다.
  3. 스피커의 오디오 왜곡: 스피커가 최대 볼륨, 최대 베이스, 고습도 환경에서만 오디오를 왜곡시키는 경우
  4. 컴퓨터 서버의 신뢰성 문제: 컴퓨터 서버가 최대 프로세서(64개), 메모리(512GB), 그리고 동시에 로그인한 사용자(10,000명)가 있을 때만 신뢰할 수 없는 경우

엣지 케이스(Edge Case)

엣지 케이스는 시스템의 경계 조건에서 발생하는 상황을 가리킵니다. 이는 시스템의 설계나 명세의 경계에 해당하는 조건에서 발생하는 문제들을 의미합니다. 예를 들어, 웹 애플리케이션에서 사용자 입력이 특정 길이를 초과할 때 발생하는 문제나, 2월 29일과 같은 날짜 처리 문제가 엣지 케이스에 해당합니다. 엣지 케이스는 일반적인 사용 시나리오의 경계를 테스트함으로써 시스템의 안정성을 강화하는 데 중요한 역할을 합니다.

엣지 케이스는 시스템의 경계 조건에서 발생하는 상황을 가리킵니다. 이들은 시스템의 명세나 사용 예상 범위의 경계에서 발생하는 경우가 많습니다.

  1. 웹 양식의 입력 값 엣지 케이스: 웹 양식에서 사용자가 입력할 수 있는 최대 문자 수를 제한하는 경우, 정확히 그 한계값 또는 그보다 하나 더 많은 문자를 입력하는 상황이 엣지 케이스에 해당합니다. 예를 들어, 이메일 주소 입력란에 255자를 정확히 입력하는 경우가 그 예입니다.
  2. 날짜 처리의 엣지 케이스: 특정 날짜를 처리하는 시스템에서 윤년(예: 2월 29일) 또는 시간대 변경(일광 절약 시간)과 같은 특별한 날짜는 엣지 케이스로 간주됩니다. 이러한 날짜는 일반적인 날짜 처리와 다른 방식으로 처리해야 할 수 있습니다.
  3. 화폐 변환의 반올림 문제: 금융 앱에서 통화 변환 시 발생하는 반올림 오류로 인해 특정 금액에 대한 계산이 잘못되는 경우
  4. 이모지 처리 문제: 메시징 앱이 드물게 사용되거나 복잡한 이모지나 기호가 포함된 메시지를 보낼 때 충돌하는 경우
  5. 시간대 불일치: 스케줄링 소프트웨어가 국제 날짜 변경선을 넘는 사용자에게 이벤트를 잘못된 시간대로 표시하여 혼란과 약속 누락을 일으키는 경우

결론

위에 설명하는 예제를 통해 엣지 케이스와 코너 케이스가 서로 다른 상황을 다루고 있음을 알 수 있습니다. 엣지 케이스는 일반적으로 단일 변수가 극단에 도달할 때 발생하는 반면, 코너 케이스는 여러 변수가 동시에 극단적인 조건에 도달했을 때 발생합니다.

Illustrated Images