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

펌웨어의 소스 코드에 정적 분석 도구를 사용할 때, 프로그램을 실행하지 않고 발견하기 쉬운 문제로 가장 적절한 것은?

  1. A사용자가 정말로 필요로 하는 기능이 요구사항 정의서에서 누락된 것
  2. B초기화되지 않은 변수를 참조하는 경로나, 배열의 범위 밖에 접근할 우려가 있는 부분
  3. C양산한 기판의 일부에서 납땜 불량으로 신호가 끊기는 것
정답과 해설 보기

정답: B. 초기화되지 않은 변수를 참조하는 경로나, 배열의 범위 밖에 접근할 우려가 있는 부분

정적 분석은 소스 코드를 실행하지 않고 구문이나 제어 흐름·데이터 흐름을 조사하여, 초기화되지 않은 변수의 참조, 배열의 범위 밖 접근, 널 포인터 참조의 우려, 코딩 규칙(임베디드 C 언어에서 쓰이는 MISRA C 등) 위반 등을 찾아냅니다. 테스트로는 지나가기 어려운 경로의 문제도 찾을 수 있는 반면 오탐도 있으므로, 결과는 사람이 확인합니다. 요구사항의 누락은 리뷰나 사용자와의 확인으로, 기판의 납땜 불량은 제조 시의 검사나 실기 시험으로 찾는 것이며, 소스 코드의 분석으로는 알 수 없습니다.

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

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

  1. 블랙박스 테스트의 설명으로 적절한 것은?
  2. 정수만 입력되는 칸에서 1 이상 100 이하의 값을 받아들이고, 그 밖의 값은 오류로 처리한다. 동치 분할로 입력을 나누었을 때 동치 클래스의 수(유효 동치 클래스와 무효 동치 클래스의 합계)는?
  3. 입장료를 나이(0 이상의 정수)로 정하는 프로그램이 있으며, 0~17세는 어린이 요금, 18~64세는 일반 요금, 65세 이상은 시니어 요금으로 한다. 요금 구분이 바뀌는 경계를 확인하기 위해 경계값 분석으로 고르는 테스트 값의 조합으로 가장 적절한 것은?
  4. 사양은 '온도가 85 ℃ 이상이면 경고를 낸다'이지만, 펌웨어에는 잘못하여 'if (t > 85)'라고 쓰여 있었다. 온도 t는 정수로 한다. 다음 테스트 값 중 이 오류를 발견할 수 있는 것은?
  5. temp와 err의 값은 서로 독립적으로 정할 수 있다고 한다. 다음 처리 'if (temp > 80) { fan = HIGH; } else { fan = LOW; } if (err) { log(); }'에서 구문 커버리지(모든 명령문을 적어도 1회 실행한다)를 만족하는 데 필요한 최소 테스트 케이스의 수는?