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

사양은 '온도가 85 ℃ 이상이면 경고를 낸다'이지만, 펌웨어에는 잘못하여 'if (t > 85)'라고 쓰여 있었다. 온도 t는 정수로 한다. 다음 테스트 값 중 이 오류를 발견할 수 있는 것은?

  1. A84 ℃
  2. B85 ℃
  3. C86 ℃
정답과 해설 보기

정답: B. 85 ℃

사양에서는 85 ℃에서 경고를 내야 하지만, t > 85는 t = 85일 때 거짓이 되므로 85 ℃를 주었을 때만 사양과 구현의 결과가 어긋납니다. 84 ℃에서는 둘 다 경고 없음, 86 ℃에서는 둘 다 경고 있음이 되어 오류가 보이지 않습니다. 이처럼 경계 그 자체의 값을 포함하여 시험하는 것이 경계값 분석의 사고방식입니다. 비교 연산자의 혼동은 펌웨어의 임계값 판정에서 자주 일어나는 오류입니다.

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

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

  1. temp와 err의 값은 서로 독립적으로 정할 수 있다고 한다. 다음 처리 'if (temp > 80) { fan = HIGH; } else { fan = LOW; } if (err) { log(); }'에서 구문 커버리지(모든 명령문을 적어도 1회 실행한다)를 만족하는 데 필요한 최소 테스트 케이스의 수는?
  2. a, b, c의 참·거짓은 서로 독립적으로 정할 수 있다고 한다. 다음 처리 'if (a) { S1; } if (b) { S2; } if (c) { S3; }'에서 분기 커버리지(모든 판정의 참과 거짓을 적어도 1회씩 실행한다)를 만족하는 데 필요한 최소 테스트 케이스의 수는?
  3. 판정 'A 그리고 B'(A와 B는 서로 독립적으로 참·거짓을 정할 수 있는 조건)에 대해 테스트 케이스 (A = 참, B = 거짓)과 (A = 거짓, B = 참)의 2개를 실행했다. 커버리지 기준에 대해 올바른 것은?
  4. 상향식 테스트에서 아직 완성되지 않은 상위 모듈 대신, 테스트 대상인 하위 모듈을 호출하여 테스트 데이터를 넘기고 결과를 받기 위해 만드는 것은?
  5. 테스트 공정에서 테스트 시간(또는 테스트 케이스의 소화 수)을 가로축에, 발견된 결함의 누적 건수를 세로축에 잡은 신뢰도 성장 곡선을 그렸다. 곡선이 아직 오른쪽 위로 올라가는 채이고, 포화하는(평평해지는) 모습이 보이지 않을 때의 판단으로 가장 적절한 것은?