새발블로그

테스트케이스 본문

Problem Solving/개념

테스트케이스

EUG 2025. 7. 4. 17:23

1. 단순케이스 (Normal Case)

  • 가장 기본적인 입력을 넣어 프로그램이 제대로 동작하는지 확인.

2. 히든케이스 (Hidden Case)

  • 공개되지 않은 테스트케이스로, 보통 경계값이나 엣지케이스, 특수상황을 포함.

3. 최대케이스 (Max Case)

  • 문제 조건에서 가능한 가장 큰 입력을 넣어 시간초과를 확인하는 테스트.

4. 경계값 테스트 (Boundary Value Test)

  • 입력 범위의 최소값과 최대값을 테스트하는 기법.
    • 예: 1 ≤ 배열 길이 ≤ 100 일 때, 배열 길이 1개와 100개 테스트.

5. 엣지케이스 (Edge Case)

  • 극단적이거나 예상치 못한 입력을 넣어 코드의 취약점을 확인하는 케이스.
    • 예: 빈 배열, 음수, 특수문자 등.

6. 예외케이스 (Exception Case)

  • 잘못된 입력이나 특이한 상황을 넣어 예외 처리 여부를 확인.
    • 예: 음수 나이, NULL 값, 너무 긴 문자열 등.

7. 특수케이스 (Special Case)

  • 문제 특성상 특별히 신경 써야 하는 입력.
    • 예: 정렬된 배열, 중복된 숫자만 있는 배열 등.

활용 방법

엣지케이스 활용

  • 극단적인 값이나 특이상황을 넣어 코드가 예상치 못한 상황에서 어떻게 동작하는지 확인.
  • 예시:
    • 빈 배열, 최소/최대 크기 입력
    • 특수 문자 입력 등

최대케이스 활용

  • 입력 크기가 클 때 시간초과가 발생하는지 확인.
  • 1초 내 처리 가능한 최대 값은 10^8 기준.
  • 시간복잡도 체크:
    • O(N^2)는 N=10^4 정도까지만 허용.
    • O(N log N)은 N=10^6까지 처리 가능.

시간복잡도별 실행 가능 범위 (1초 기준)

시간복잡도  최대 실행 값  설명
O(1) 제한 없음 상수 시간
O(logN) 10^18 로그 시간
O(N) 10^8 선형 시간
O(N log N) 10^6 정렬 포함
O(N^2) 10^4 이중 루프
O(2^N) 20 브루트포스
O(N!) 10 순열 탐색

최적화 방법

  • O(N^2) → O(N log N):
    • 정렬, 이진 탐색 적용
  • O(N log N) → O(N):
    • 해시맵, 누적합 기법 활용
  • O(2^N) → O(N log N) / O(N):
    • 동적 계획법(DP) 사용