일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 데이터베이스
- 단통법
- 애플
- NC다이노스
- 손민한
- ubuntu
- 문파문파
- 해외직구
- arm
- 태그를 입력해 주세요.
- mysql
- 국정원
- Tizen
- 뉴스타파
- Linux
- 리뷰
- 야구
- 문파문파 공략
- 조세피난처
- 안드로이드
- 인공지능
- 우분투
- ubuntu 12.04
- python
- Git
- NC 다이노스
- 프로야구
- 김경문
- 타이젠
- 블로그
Archives
- Today
- Total
꿈꾸는 사람.
2017년 전산직 7급 소프트웨어 공학 문제. 본문
반응형
1. 문제
문 18. 다음 제어 흐름 그래프에 나타난 프로그램을 테스트할 때, 옳지 않은 것은?
① 분기 커버리지를 만족하는 최소의 테스트 케이스는 2개이다. ② 기본 경로의 개수는 3개이다. ③ 문장 커버리지를 만족하는 최소의 테스트 케이스는 1개이다. ④ {(x:1, y:2, z:0), (x:5, y:0, z:0)}은 분기 커버리지를 만족하지 못한다. |
2. 풀이
이 문제는 커버리지와 기본 경로에 대해 묻고 있다.
- 문장 커버리지
- 모든 문장이 적어도 한 번씩은 수행되어야 한다.
- 분기 커버리지 (DC)
- 각 분기에서 참과 거짓 조건을 모두 테스트할 수 있어야 하며 테스트 케이스는 두 개이다.
- 경로 검증 기준(path coverage)
- 프로그램이 수행 가능한 모든 경로이다.
- 기본 경로 테스트(basic path testing)
- 경로 검증 기준(path coverage)가 아니고 구조 시험, 복잡도 시험이다.
따라서, 순환적 복잡도(Cyclomatic Complexity)를 구하면 된다.
① 분기 커버리지 (DC)
분기 커버리지가 각 조건에서 참, 거짓을 모두 테스트할 수 있는 것이므로 테스트 케이스는 2개이다.
그러면 두 개의 조건문이므로 모든 테스트 케이스가 2 X 2로 4개가 될 것 같으나 이것은 함정이다.
두 조건문에 x 변수의 조건이 다르고 y와 z는 하나씩 있으므로
x,y,z의 값을 잘 선택하면 2개의 테스트 케이스만 있으면 된다.
예는 ④의 풀이를 참고하라.
그러면 각 조건 별로 T, F를 테스트 할 수 있다.
② 기본 경로 (PC)
순환 복잡도 = 분기 수 + 1 = 2 + 1 = 3.
③ 문장 커버리지 (SC)
플로차트와 프로그램간의 차이를 이해하면 쉬게 풀 수 있다.
위 플로차트에서 if문에서 false인 경우를 실행할 문장이 없으므로
SC의 경우는 false 조건을 테스트할 필요는 없다.
따라서 두 조건이 true인 경우만 테스트할 수 있는 테스트 케이스 하나로 충분하다.
함정이 숨어 있다.
아래 코드에서 if 조건이 참이면 z 값이 바뀐다.
if (x>0) && (y>0)
z=x-y
(x:1, y:2, z:0)는 (x:1, y:2, z:-1) 이다.
따라서 테스트 케이스에서 주어진 z는 의미가 없다.
개별 조건 | 전체 결과 | |
첫 if문 | T && T | T |
두번째 if문 | F || F | F |
(x:5, y:0, z:0)는 if (x>0) && (y>0) 를 만족하지 않아 (x:5, y:0, z:0) 이다.
개별 조건 | 전체 결과 | |
첫 if문 | T && F | F |
두번째 if문 | T || T | T |
즉, 두 if문의 결과는 모두 T, F로 DC 만족함.
답은 4번이다.
공무원 시험도 함정이 곳곳에 숨어 있다.
반응형
'정보시스템감리사 > SW engineering' 카테고리의 다른 글
디자인 패턴(Design Pattern) (0) | 2018.02.08 |
---|---|
[정보시스템감리사][2016 기출문제][소프트웨어 공학] 45번 풀이. (0) | 2016.11.14 |
Comments