소프트웨어 개발과 프로젝트 관리

정수만 입력되는 칸에서 1 이상 100 이하의 값을 받아들이고, 그 밖의 값은 오류로 처리한다. 동치 분할로 입력을 나누었을 때 동치 클래스의 수(유효 동치 클래스와 무효 동치 클래스의 합계)는?

  1. A1개
  2. B2개
  3. C3개
정답과 해설 보기

정답: C. 3개

동치 분할에서는 프로그램이 같은 방식으로 다룰 입력의 모임(동치 클래스)으로 나누고, 각 클래스에서 대표 값을 하나씩 골라 테스트합니다. 이 칸에서는 받아들이는 1~100의 유효 동치 클래스가 1개, 0 이하와 101 이상의 무효 동치 클래스가 2개로, 합계 3개입니다. 대표 값으로 예를 들어 50, −5, 150을 고르면 3회의 테스트로 각 클래스를 확인할 수 있습니다. 무효 동치 클래스를 작은 쪽과 큰 쪽으로 나누는 것은 프로그램이 각각을 다른 판정(하한 확인과 상한 확인)으로 처리하기 때문입니다.

이 분야 연습하기 분야로 돌아가기

소프트웨어 개발과 프로젝트 관리의 다른 문제

  1. 입장료를 나이(0 이상의 정수)로 정하는 프로그램이 있으며, 0~17세는 어린이 요금, 18~64세는 일반 요금, 65세 이상은 시니어 요금으로 한다. 요금 구분이 바뀌는 경계를 확인하기 위해 경계값 분석으로 고르는 테스트 값의 조합으로 가장 적절한 것은?
  2. 사양은 '온도가 85 ℃ 이상이면 경고를 낸다'이지만, 펌웨어에는 잘못하여 'if (t > 85)'라고 쓰여 있었다. 온도 t는 정수로 한다. 다음 테스트 값 중 이 오류를 발견할 수 있는 것은?
  3. temp와 err의 값은 서로 독립적으로 정할 수 있다고 한다. 다음 처리 'if (temp > 80) { fan = HIGH; } else { fan = LOW; } if (err) { log(); }'에서 구문 커버리지(모든 명령문을 적어도 1회 실행한다)를 만족하는 데 필요한 최소 테스트 케이스의 수는?
  4. a, b, c의 참·거짓은 서로 독립적으로 정할 수 있다고 한다. 다음 처리 'if (a) { S1; } if (b) { S2; } if (c) { S3; }'에서 분기 커버리지(모든 판정의 참과 거짓을 적어도 1회씩 실행한다)를 만족하는 데 필요한 최소 테스트 케이스의 수는?
  5. 판정 'A 그리고 B'(A와 B는 서로 독립적으로 참·거짓을 정할 수 있는 조건)에 대해 테스트 케이스 (A = 참, B = 거짓)과 (A = 거짓, B = 참)의 2개를 실행했다. 커버리지 기준에 대해 올바른 것은?