SW공학 묶음에서 가장 자주 나온 장이다. 기법의 이름, 커버리지의 강약, 흐름도에서 경로 적기 — 셋이 전부다
왜 이걸 하나 — SW공학 37문항 중 12문항이 이 장이고 11회 중 10회에 나왔다. 2024년 2회만 빠졌다.
11회분 220문항 중 이 장의 기출은 12문항이다. 2023년 2회와 2025년 3회에는 2문항씩이었고, 2026년 2회 1번(동치 분할)이 그 회차의 첫 문제였다. 같은 것이 되풀이된다 — 조건 커버리지 2번, 스텁 · 드라이버 2번, 분기 커버리지 경로 2번, 동치 분할 2번.
| 꼴 | 몇 문항 | 무엇을 적나 | 보기 |
|---|---|---|---|
| 기법 · 커버리지 이름 | 6 | 조건 커버리지 · MC/DC · 동치 분할 · 커버리지 3칸 | 2023-2회 6번 · 2024-1회 14번 · 2024-3회 9번 · 2025-3회 4번 · 2026-2회 1번 |
| 흐름도 → 경로 | 3 | 분기 커버리지 경로 2개, 구문 커버리지 실행 순서 | 2023-1회 19번 · 2025-1회 15번 · 2025-2회 11번 |
| 통합 테스트 용어 | 2 | 스텁 · 드라이버 | 2023-2회 7번 · 2026-1회 15번 |
| 테스트 케이스 구성 | 1 | 조건 · 데이터 · 예상 결과 | 2025-3회 19번 |
→ 2023년 1회 19번과 2025년 2회 11번은 같은 흐름도(노드 1~7, POINTER · X · RESULT)에 같은 답이다. 이 흐름도 하나를 손으로 풀어 두면 두 회차 분이 끝나고, 경로를 적는 규칙은 다른 흐름도에도 그대로 간다.
E01 진단의 SW공학 4문항 중 1번(동치 분할)이 이 장이었다. 「테스트」는 낱말이 많아 보여도 03절의 세 질문(무엇을 보나 · 얼마나 덮나 · 누가 대신하나)에 전부 들어간다.
문항 수는 이 노트의 문제 데이터에서 ch=E18 인 것을 센 값이다(2026-09-14). 흐름도는 grandlife.co.kr 복원 그림을 노드 표로 옮겼고, 2025-1회 15번의 C 함수도 거기서 옮겼다.
왜 이걸 하나 — 시험 전날 이름 17개와 순서 셋을 백지에 적어 본다.
왜 이걸 하나 — 이름 17개는 세 질문에서 나온다. 무엇을 보나, 얼마나 덮나, 누가 대신하나.
블랙박스는 코드를 안 보고 명세(입력과 기대 출력)만 본다. 그래서 기법 이름이 전부 「입력을 어떻게 고르나」다. 입력을 같은 결과가 나오는 무리로 나눠 대표 하나씩 고르면 동등 분할, 무리의 경계와 바로 앞뒤를 고르면 경계값 분석, 입력 조건과 결과의 관계를 그래프로 그려 고르면 원인-효과 그래프, 경험으로 고르면 오류 예측, 다른 버전과 견주면 비교 검사.
2026년 2회 1번이 이 갈림을 물었다. 평가표(90~100 은 A …)가 명세고, 테스트 내역의 입력이 −10 · 30 · 75 · 85 · 95 · 110 — 구간마다 가운데 값 하나씩이라 동등 분할이다. 0 · 69 · 70 · 79 · 80 · 89 · 90 · 100 처럼 경계에 몰려 있었다면 경계값 분석이다.
화이트박스는 코드 안을 보고 얼마나 지나갔나를 잰다. 그래서 이름이 전부 「커버리지」다. 화이트박스 · 블랙박스라는 낱말 자체를 묻기도 한다 — 「구조 기반」「제어 흐름」이면 화이트, 「명세 기반」「입력 · 출력」이면 블랙.
커버리지 여섯은 요구가 세지는 순서다. 구문은 모든 문장을 한 번씩만 실행하면 되고, 분기는 결정(if · while)마다 참 한 번 거짓 한 번, 조건은 결정 안의 개별 조건식(A > 0, B < 5 같은 것)마다 참 · 거짓 한 번씩, 조건/결정은 둘 다, MC/DC 는 개별 조건 하나만 바꿔도 결정이 바뀌는 케이스를 조건마다, 다중 조건은 조건들의 모든 조합이다.
| 커버리지 | 무엇을 한 번씩 | 표지 낱말 | 기출 |
|---|---|---|---|
| 구문(문장) | 모든 문장 | 최소 1회 실행 | 2024-3회 9번 · 2025-1회 15번 |
| 분기(결정) | 결정의 참 · 거짓 | 모든 분기 · 참/거짓 | 2023-1회 19번 · 2025-2회 11번 |
| 조건 | 개별 조건식의 참 · 거짓 | 결정 포인트 내 개별 조건식 | 2023-2회 6번 · 2025-3회 4번 |
| 조건/결정 | 위 둘 다 | 조건과 결정 모두 | — |
| MC/DC | 조건 하나가 결정을 독립적으로 바꾸는 케이스 | 독립적으로 영향 | 2024-1회 14번 |
| 다중 조건 | 조건의 모든 조합 | 모든 조합 | — |
→ 분기와 조건이 가장 많이 섞인다. 분기는 결정 전체의 참 · 거짓이고, 조건은 결정을 이루는 개별 조건식의 참 · 거짓이다. 「결정 포인트 내의 개별 조건식」이라는 문장이 보이면 조건 커버리지다.
흐름도 문제는 결정 노드(마름모)를 먼저 센다. 2023년 1회 19번 · 2025년 2회 11번의 흐름도는 결정이 2(X > K)와 6(RESULT > 1) 둘이고, 분기 커버리지는 각 결정의 YES 와 NO 를 한 번씩 지나면 되니 경로 두 개로 네 분기를 덮는다. 첫 경로는 2 에서 YES(→3) 6 에서 YES(→1) 로 1234561, 둘째는 2 에서 NO(→4) 6 에서 NO(→7) 로 124567.
6 에서 방향을 서로 바꾼 1234567 · 124561 도 네 분기를 다 덮으므로 정답이다. 답안에는 노드 번호를 이어 적고, 6 에서 1 로 돌아간 경로는 끝이 1 이다. 경로가 1 로 돌아가는 것을 「반복」이라 빼먹으면 6 의 YES 분기가 안 덮인다.
구문 커버리지 경로(2025년 1회 15번)는 실행되는 문장 번호를 순서대로 적는다. values = {−3}, count = 1 이면 문장 1 초기화 → 2 의 0 < 1 참 → 3 의 −3 < 0 참 → 4 → 5 에서 index 1 → 다시 2 의 1 < 1 거짓 → 6. 반복 조건을 거짓으로 한 번 더 지나는 것이 답의 두 번째 2 이고, 이것을 빼면 틀린다.
통합 테스트는 모듈을 붙여 가며 하는데, 아직 안 만든 모듈 자리를 누군가 대신해야 한다. 위에서부터 붙이면(하향식) 아래가 비어 있으니 아래를 흉내 내는 스텁이 필요하고, 아래에서부터 붙이면(상향식) 위가 비어 있으니 위에서 불러 주는 드라이버가 필요하다. 2023년 2회 7번과 2026년 1회 15번이 같은 두 칸이다.
수준은 작은 것부터 단위 → 통합 → 시스템 → 인수이고, 인수의 두 가지가 알파(개발자 쪽에서) · 베타(사용자 쪽에서)다. 고친 뒤 다른 곳이 안 망가졌는지 다시 하는 것이 회귀 테스트. 테스트 케이스는 조건 · 데이터 · 예상 결과 셋이 있어야 한 건이다(2025년 3회 19번).
형상 관리는 소스 · 문서의 변경을 통제하는 일이고 절차 넷이 순서대로다. 무엇을 관리할지 정하고(식별), 변경 요청을 심사해 승인하고(통제), 승인대로 바뀌었는지 검증하고(감사), 이력을 남긴다(기록). 「변경 요청 · 승인」이 보이면 통제다. 기준선은 승인된 시점의 형상, 도구는 Git · SVN 이다.
인터페이스 구현 문제는 두 갈래다. 검증 도구 이름(xUnit · Selenium · STAF · FitNesse · NTAF · watir)과 EAI 통합 방식(Point-to-Point · Hub & Spoke · Message Bus · Hybrid). 「1:1」「허브」「버스」가 방식의 표지고, AJAX(2023년 1회 4번 · 2025년 2회 8번)는 E16 에 두었다.
왜 이걸 하나 — 이름 문제는 표지 낱말 → 이름, 흐름도 문제는 결정 노드 세기 → 경로 연습이다.
흐름도 문제는 답 칸에 결정 노드 번호를 먼저 적고, 각 노드의 YES · NO 를 어느 경로가 덮는지 표로 그린 뒤 경로를 적는다. 정답에 「또는」이 있으면 두 조합 중 하나만 맞아도 된다.
다음 제어 흐름에서 분기 커버리지를 만족하도록 두 개의 실행 경로를 쓰시오.
제어 흐름도(그림을 표로 옮김)
| 노드 | 내용 | 다음 |
|---|---|---|
| 1 | POINTER = FALSE | 2 |
| 2 | X > K ? | YES → 3, NO → 4 |
| 3 | POINTER = TRUE | 4 |
| 4 | X = X + 2 | 5 |
| 5 | CALL SUB(X, POINTER, RESULT) | 6 |
| 6 | RESULT > 1 ? | YES → 1, NO → 7 |
| 7 | PRINT RESULT | 끝 |
답 — 1234561 과 124567 (또는 1234567 과 124561). 분기가 두 곳(2번 · 6번)이라 각각 참 · 거짓을 한 번씩 밟는 경로 두 개면 된다.
원리 — 분기(결정) 커버리지는 "모든 분기의 참 · 거짓이 각각 한 번 이상 실행됐는가"다. 이 흐름도의 분기는 2번(X > K ?)과 6번(RESULT > 1 ?) 둘이다. 2번 YES 면 3 을 거쳐 4 로, NO 면 바로 4 로 간다. 6번 YES 면 1 로 되돌아가고, NO 면 7 로 가 끝난다. 경로 하나가 각 분기에서 한쪽을 밟으므로, 두 경로로 네 가지(2Y · 2N · 6Y · 6N)를 모두 덮으려면 첫 경로가 2Y 와 6 의 한쪽, 둘째 경로가 2N 과 6 의 반대쪽을 밟으면 된다. 그래서 짝짓기 방법이 두 가지 나온다.
따라가기
헷갈리는 자리 — 1234567 과 1234561 을 쓰는 것. 둘 다 2 에서 YES 만 밟아 2N 이 빠진다 — 분기 커버리지 미달이다. 6번에서 YES 로 1 에 돌아가는 경로의 끝을 "1" 로 적는 것이 어색해 보여도, 흐름도가 1 로 되돌아가니 그대로 적는다. 같은 문제가 2025-2-11 에 다시 나왔다.
제어 흐름 표의 분기(2 · 6번 노드)를 참 · 거짓으로 나눠 경로를 손으로 세었다. 복원 출처 grandlife.co.kr(2026-09-14) — 그림은 표로 옮겼다.
결정 포인트 내의 모든 개별 조건식이 참 한 번, 거짓 한 번을 갖도록 테스트케이스를 설계하는 화이트박스 커버리지는?
답 — 조건 커버리지(Condition Coverage). 결정문 전체가 아니라 그 안의 "개별 조건식" 하나하나가 참 · 거짓을 한 번씩 갖게 하는 기준이다.
원리 — if (A && B) 에서 결정(decision)은 A && B 전체의 결과이고, 조건(condition)은 A 와 B 각각이다. 분기(결정) 커버리지는 A && B 가 참 한 번, 거짓 한 번이면 만족한다 — (T,T) 와 (F,T) 두 케이스면 되고 이때 B 는 늘 참이다. 조건 커버리지는 A 도 T/F, B 도 T/F 를 각각 한 번씩 가져야 한다 — (T,F) 와 (F,T) 두 케이스로 만족하는데, 이러면 A && B 는 둘 다 거짓이라 결정 커버리지는 오히려 미달이다. 그래서 둘은 서로를 포함하지 않고, 둘을 합친 것이 조건/결정 커버리지다.
따라가기
헷갈리는 자리 — 분기(결정) 커버리지로 적는 것. 문장에 "개별 조건식"이 있으면 조건 커버리지, "분기 · 결정 결과"가 있으면 결정 커버리지다. 강도 순서는 구문 < 결정 < 조건 < 조건/결정 < MC/DC < 다중 조건인데, 조건이 결정보다 "강하다"기보다 "다른 것을 본다"는 점을 기억한다.
표준 · 교재 정의(ISTQB 용어 · 커버리지 6단계 · 테스트 수준)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
통합 테스트에서 ① 하향식 테스트 시 아직 개발되지 않은 하위 모듈을 대신하는 임시 모듈 ② 상향식 테스트 시 상위 모듈을 대신해 테스트를 구동하는 임시 모듈은?
답 — ① 스텁(Stub) ② 드라이버(Driver). 하향식에는 아래를 대신하는 스텁, 상향식에는 위를 대신하는 드라이버가 필요하다.
원리 — 통합 테스트는 모듈을 붙여 가며 검사하는데, 아직 없는 모듈의 자리를 가짜로 채워야 한다. 하향식(top-down)은 위(메인)부터 만들고 아래로 내려간다 — 위 모듈이 부르는 아래 모듈이 아직 없으니, 호출되면 정해진 값을 돌려주는 가짜 하위 모듈이 필요하다. 그것이 스텁이다(그루터기 — 잘려 나간 자리). 상향식(bottom-up)은 아래(말단)부터 만들고 위로 올라간다 — 아래 모듈을 불러 줄 위 모듈이 없으니, 대신 호출해 주는 가짜 상위 모듈이 필요하다. 그것이 드라이버다(운전자 — 부르는 쪽).
따라가기
헷갈리는 자리 — 둘을 바꾸는 것. "드라이버는 운전(호출)하는 쪽 = 위", "스텁은 잘린 그루터기 = 아래"로 붙잡는다. 하향식은 스텁이 많이 들고, 상향식은 드라이버가 든다. 같은 문제가 2026-1-15 에 다시 나왔다.
표준 · 교재 정의(ISTQB 용어 · 커버리지 6단계 · 테스트 수준)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
입력 데이터를 유효한 값과 무효한 값의 그룹으로 나누고 각 그룹의 대표값으로 테스트케이스를 도출하는 블랙박스 기법은?
답 — 동등 분할(동치 분할, Equivalence Partitioning). 입력을 "같은 취급을 받는 묶음"으로 나누고 묶음마다 대표 하나만 검사하는 블랙박스 기법이다.
원리 — 나이 입력이 0~120 이 유효하다면 30 을 넣어 통과한 프로그램은 31 · 50 도 거의 확실히 통과시킨다 — 같은 코드 경로를 타기 때문이다. 그래서 모든 값을 다 넣는 대신 "유효 묶음(0~120)" 하나, "무효 묶음(음수, 121 이상)" 둘로 나누고 각 묶음에서 대표값(예: 50, −5, 200) 하나씩만 고른다. 케이스 수는 확 줄고 묶음은 빠짐없이 덮인다. 코드를 안 보고 명세(유효 범위)만으로 만드니 블랙박스다. 경계값 분석은 여기서 한발 더 나가 묶음의 "경계(−1 · 0 · 120 · 121)"를 고른다.
따라가기
헷갈리는 자리 — 경계값 분석으로 적는 것. 경계값은 "경계 근처 값"을 고르고, 동등 분할은 "묶음의 대표값"을 고른다. 문제에 "대표값 · 그룹 · 클래스"가 있으면 동등 분할, "경계 · 끝값 · −1, 0, 100, 101" 이 있으면 경계값이다.
표준 · 교재 정의(ISTQB 용어 · 커버리지 6단계 · 테스트 수준)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
개별 조건식이 다른 조건식에 영향을 받지 않고 전체 결정 결과에 독립적으로 영향을 주도록 설계하는 커버리지는?
답 — 변경 조건/결정 커버리지(MC/DC, Modified Condition/Decision Coverage). 각 조건이 "혼자서" 결정 결과를 뒤집는 케이스를 요구한다.
원리 — if (A && B) 에서 조건/결정 커버리지는 A · B · 전체가 각각 T/F 를 한 번씩 갖기만 하면 된다. 그런데 (T,T)=T 와 (F,F)=F 두 케이스도 이를 만족하는데, 이때 A 가 결과를 바꾼 건지 B 가 바꾼 건지 알 수 없다. MC/DC 는 "다른 조건은 고정한 채 이 조건만 바꿨을 때 결정이 바뀐다"는 짝을 조건마다 요구한다 — A 는 (T,T)=T 와 (F,T)=F, B 는 (T,T)=T 와 (T,F)=F. 그러면 세 케이스로 각 조건이 독립적으로 결과에 영향을 준다는 것이 증명된다. 다중 조건 커버리지(모든 조합 2ⁿ)보다 훨씬 적은 n+1 개로 되어 항공(DO-178) 같은 안전 필수 분야가 요구한다.
따라가기
헷갈리는 자리 — 조건/결정 커버리지로 적는 것. 조건/결정은 "각각 T/F 한 번씩"이고, MC/DC 는 거기에 "독립적으로 영향"이라는 조건이 붙는다. 문제에 "독립적 · 영향"이 있으면 MC/DC 다. 다중 조건은 "모든 조합"이라 또 다르다.
표준 · 교재 정의(ISTQB 용어 · 커버리지 6단계 · 테스트 수준)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
커버리지 매칭: ① 모든 문장을 최소 1회 실행 ② 모든 분기의 참/거짓을 각 1회 ③ 개별 조건식의 참/거짓을 각 1회
답 — ① 문장(구문) 커버리지 ② 분기(결정) 커버리지 ③ 조건 커버리지. "문장 실행 · 분기 참/거짓 · 개별 조건 참/거짓"이 각각의 정의다.
원리 — 화이트박스 커버리지는 "코드의 무엇을 얼마나 밟았나"를 재는 자다. 문장 커버리지는 모든 문장(줄)이 한 번은 실행됐나 — 가장 약하다. if 문의 참 쪽 문장만 실행해도 만족하니 거짓 쪽은 안 봐도 된다. 분기 커버리지는 모든 분기의 참 · 거짓을 각각 밟았나 — if 의 두 갈래를 다 가야 한다. 조건 커버리지는 분기 안의 개별 조건식(A · B)이 각각 참 · 거짓을 가졌나 — 갈래가 아니라 조건 하나하나를 본다. 세 개는 강도 순서의 앞부분이고, 뒤에 조건/결정 → MC/DC → 다중 조건이 이어진다.
따라가기
헷갈리는 자리 — ②와 ③을 바꾸는 것. "분기 · 결정"은 if 전체의 결과이고 "조건"은 && 로 묶인 낱개다. 문장에 "개별 조건식"이 보이면 조건, "분기"가 보이면 분기다. 결정 커버리지 = 분기 커버리지, 구문 커버리지 = 문장 커버리지로 이름이 둘씩이다.
표준 · 교재 정의(ISTQB 용어 · 커버리지 6단계 · 테스트 수준)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
다음 C 함수가 values = {-3}, count = 1로 호출될 때 실행되는 문장 번호를 순서대로 쓰시오.
답 — ① → ② → ③ → ④ → ⑤ → ② → ⑥ (1234526). 음수 하나를 뒤집고 반복 조건을 다시 검사한 뒤 빠져나온다.
원리 — while 문은 "조건 검사 → 본문 → 다시 조건 검사"를 반복한다. 그래서 반복이 끝날 때도 조건 줄(②)을 한 번 더 지난다 — 이것을 빠뜨리는 것이 이 문제의 함정이다. values = {−3}, count = 1 이니 반복은 한 번만 돈다. 본문에서 values[0] = −3 < 0 이 참이라 ④ 가 실행되어 3 이 되고, ⑤ 에서 index 가 1 이 된다. 다시 ② 로 가서 1 < 1 이 거짓이라 반복을 나가 ⑥ return 1 로 끝난다. 실행된 문장을 "순서대로, 중복 포함" 적는 것이 문제의 요구다.
따라가기
헷갈리는 자리 — 마지막 ② 를 빼고 ①②③④⑤⑥ 으로 적는 것. while 은 조건이 거짓이 되는 순간에도 조건 줄을 실행한다. 반대로 values 가 양수였다면 ③ 이 거짓이라 ④ 가 빠져 ①②③⑤②⑥ 이 된다 — 문장 커버리지 문제의 전형이다.
주어진 값으로 코드를 한 줄씩 손으로 따라가 실행 순서를 확인했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 코드가 실제와 다를 수 있다.
다음 제어 흐름 그래프가 분기 커버리지를 만족하도록 테스트 경로 두 개를 쓰시오.
제어 흐름도(그림을 표로 옮김)
| 노드 | 내용 | 다음 |
|---|---|---|
| 1 | POINTER = FALSE | 2 |
| 2 | X > K ? | YES → 3, NO → 4 |
| 3 | POINTER = TRUE | 4 |
| 4 | X = X + 2 | 5 |
| 5 | CALL SUB(X, POINTER, RESULT) | 6 |
| 6 | RESULT > 1 ? | YES → 1, NO → 7 |
| 7 | PRINT RESULT | 끝 |
답 — 1234561 과 124567 (또는 1234567 과 124561). 2023-1-19 와 같은 흐름도다.
원리 — 분기 커버리지는 각 결정의 참 · 거짓 갈래를 모두 한 번 이상 밟아야 한다. 결정은 2번(X > K)과 6번(RESULT > 1) 둘이니 갈래는 2Y · 2N · 6Y · 6N 넷이다. 경로 하나는 2 에서 한쪽, 6 에서 한쪽만 밟으니 최소 두 경로가 필요하고, 두 경로가 2 에서 서로 다른 쪽, 6 에서 서로 다른 쪽을 밟으면 넷이 다 덮인다. 2Y 는 3 을 거치므로 1-2-3-4-5-6, 2N 은 3 을 건너뛰어 1-2-4-5-6 이다. 6Y 는 1 로 돌아가고 6N 은 7 로 끝난다.
따라가기
헷갈리는 자리 — 문장 커버리지와 헷갈려 "모든 노드를 한 번씩" 밟는 1234567 하나로 끝내는 것. 노드는 다 밟았지만 2N · 6Y 갈래를 안 밟아 분기 커버리지는 미달이다. 갈래를 세는 것이지 노드를 세는 것이 아니다.
제어 흐름 표의 분기(2 · 6번 노드)를 참 · 거짓으로 나눠 경로를 손으로 세었다. 복원 출처 grandlife.co.kr(2026-09-14) — 그림은 표로 옮겼다.
결정 포인트 내 개별 조건식이 참/거짓을 한 번씩 갖도록 하는 화이트박스 커버리지는?
답 — 조건 커버리지. 2023-2-06 과 같은 정의다 — 결정 안의 개별 조건식이 참 · 거짓을 한 번씩.
원리 — 결정문 if (A || B) 에서 "결정"은 A || B 의 값, "조건"은 A 와 B 각각이다. 조건 커버리지는 A 가 T 와 F 를, B 가 T 와 F 를 각각 한 번은 갖도록 케이스를 짠다. 예를 들어 (A=T, B=F) 와 (A=F, B=T) 두 케이스면 A 도 B 도 T/F 를 다 가졌으니 만족한다 — 그런데 이때 결정 A || B 는 둘 다 T 라 결정 커버리지는 미달이다. 조건 커버리지는 "낱개 조건"을 보는 자이지 "갈래"를 보는 자가 아니라는 것이 핵심이다.
따라가기
헷갈리는 자리 — 결정(분기) 커버리지로 적는 것. 두 번 출제된 만큼 "개별 조건식 = 조건 커버리지"를 반사적으로 잇는다. 그리고 "조건/결정 커버리지"는 둘을 동시에 만족하는 것이라 문제에 "결정 결과도"라는 말이 붙을 때만 답이다.
표준 · 교재 정의(ISTQB 용어 · 커버리지 6단계 · 테스트 수준)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
테스트 케이스의 3대 구성 요소: ① 테스트 실행 전 만족해야 할 조건 ② 입력하는 값 ③ 기대하는 출력
답 — ① 테스트 조건 ② 테스트 데이터 ③ 예상 결과. 테스트 케이스는 "어떤 상황에서 · 무엇을 넣으면 · 무엇이 나와야 하나" 세 가지로 이루어진다.
원리 — 테스트 케이스는 검사를 재현 가능하게 적어 둔 명세다. 테스트 조건(사전 조건)은 실행 전에 갖춰야 할 상태다 — "로그인된 상태, 잔액 10,000원". 테스트 데이터는 실제로 넣는 입력값이다 — "출금 3,000원". 예상 결과는 명세대로라면 나와야 할 출력이다 — "잔액 7,000원 표시". 실행한 뒤 실제 결과를 예상 결과와 비교해 같으면 통과, 다르면 결함이다. 예상 결과를 미리 적어 두지 않으면 "맞는지" 판정할 기준이 없어 테스트가 아니라 그냥 실행이 된다.
따라가기
헷갈리는 자리 — ①을 "테스트 환경"이나 "사전 조건"으로 적는 것. 사전 조건은 뜻이 같아 정답 처리될 가능성이 크지만 교재 표준 용어는 테스트 조건이다. 테스트 케이스에는 이 셋 외에 식별자 · 실제 결과 · 성공 여부 칸이 더 있지만 "3대 구성 요소"는 이 셋이다.
표준 · 교재 정의(ISTQB 용어 · 커버리지 6단계 · 테스트 수준)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
통합 테스트: ① 하향식에서 미완성 하위 모듈을 대신하는 것 ② 상향식에서 상위 모듈을 대신해 호출하는 것
답 — ① 스텁(Stub) ② 드라이버(Driver). 2023-2-07 과 같은 문제다.
원리 — 통합 테스트에서 아직 없는 모듈의 자리를 채우는 가짜를 테스트 하네스라 한다. 하향식은 위에서 아래로 내려가니 "아직 안 만든 아래"가 비어 있다 — 위 모듈이 호출하면 미리 정한 값을 돌려주는 가짜 하위가 스텁이다. 상향식은 아래에서 위로 올라가니 "아직 안 만든 위"가 비어 있다 — 아래 모듈을 호출해 검사를 시작해 주는 가짜 상위가 드라이버다. 스텁은 "불려서 답하는 것", 드라이버는 "부르는 것"이다. 실무의 목(mock) 객체가 스텁의 확장이고, JUnit 테스트 메서드가 드라이버 역할이다.
따라가기
헷갈리는 자리 — 방향과 짝을 바꾸는 것. "하향식 → 하위가 없다 → 스텁", "상향식 → 상위가 없다 → 드라이버". 하 · 하, 상 · 상으로 첫 글자가 맞아떨어진다.
표준 · 교재 정의(ISTQB 용어 · 커버리지 6단계 · 테스트 수준)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
다음 [평가표]의 등급 기준을 바탕으로, 테스트 케이스의 입력값이 [테스트 내역]의 예상 결과값처럼 출력되는지 비교하는 명세 기반 테스트 기법을 쓰시오.
[평가표]
| 점수 | 성적 |
|---|---|
| 90~100 | A |
| 80~89 | B |
| 70~79 | C |
| 0~69 | D |
[테스트 내역]
| 입력값 | -10 | 30 | 75 | 85 | 95 | 110 |
|---|---|---|---|---|---|---|
| 예상 결과 | 에러 | D | C | B | A | 에러 |
| 실제 결과 | 에러 | D | C | B | A | 에러 |
답 — 동치 분할 테스트(동등 분할, Equivalence Partitioning). 평가표의 등급 하나하나가 동치 클래스이고, 테스트 내역은 클래스마다 대표값 하나씩이다.
원리 — 평가표는 입력 0~100 을 A(90~100) · B(80~89) · C(70~79) · D(0~69) 네 묶음으로 나누고, 범위 밖(음수, 101 이상)은 에러다. 같은 묶음 안의 값은 프로그램이 같은 길로 처리하므로 하나만 검사하면 나머지도 같이 검증된 셈이다. 테스트 내역의 −10(무효 아래) · 30(D) · 75(C) · 85(B) · 95(A) · 110(무효 위)은 여섯 묶음에서 가운데쯤 값을 하나씩 고른 것이다 — 이것이 동치 분할이다. 명세(평가표)만 보고 만들었으니 명세 기반(블랙박스) 기법이고, 예상 결과와 실제 결과를 비교해 통과를 판정한다.
따라가기
헷갈리는 자리 — 경계값 분석으로 적는 것. 경계값이었다면 입력이 −1 · 0 · 69 · 70 · 79 · 80 · 89 · 90 · 100 · 101 처럼 경계 양옆이어야 한다. 이 문제의 30 · 75 · 85 · 95 는 묶음 한가운데다. "대표값"이면 동치 분할, "경계값"이면 경계값 분석 — 입력 표를 보고 판정한다.
표준 · 교재 정의(ISTQB 용어 · 커버리지 6단계 · 테스트 수준)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
입력 유효 범위가 0~100인 프로그램을 테스트하기 위해 -1, 0, 100, 101을 테스트 데이터로 선정했다. 오류가 경계 부근에 집중된다는 점을 이용한 이 블랙박스 테스트 기법은?
답 — 경계값 분석(Boundary Value Analysis). 유효 범위 0~100 의 양 끝과 바로 바깥(−1 · 0 · 100 · 101)을 고른 것이 표지다.
원리 — 프로그래머의 실수는 경계에서 몰린다 — if (x < 100) 을 <= 로 써야 했다거나, 배열 크기를 하나 작게 잡았다거나. 그래서 동치 분할로 묶음을 나눈 뒤, 묶음의 가운데가 아니라 "경계와 그 바로 옆"을 검사하면 오류를 훨씬 잘 잡는다. 유효 범위가 0~100 이면 경계는 0 과 100 이고, 안쪽 값 0 · 100 과 바깥쪽 값 −1 · 101 을 고른다(2값 방식). 3값 방식이면 1 · 99 까지 더한다. 동치 분할이 "어디를 나눌까"라면 경계값 분석은 "나눈 선 위에서 검사하자"다.
따라가기
헷갈리는 자리 — 동치 분할로 적는 것. 동치 분할은 50 같은 대표값을 고르고, 경계값은 0 · 100 · −1 · 101 을 고른다. 입력 데이터가 "경계 양옆"이면 경계값 분석이다. 두 기법은 보통 같이 쓴다 — 동치 분할로 묶음을 나누고, 각 묶음의 경계에서 경계값을 뽑는다. 그래서 문제가 둘 중 무엇을 묻는지는 "제시된 입력값이 대표값인가 경계값인가"로만 갈린다.
이전 자료의 예상 문제다. 표준 정의(ISTQB · V 모델)와 대조했다.
V모델의 테스트 수준 4단계를 실행 순서대로 나열하시오: (시스템 테스트 / 단위 테스트 / 인수 테스트 / 통합 테스트)
답 — 단위 테스트 → 통합 테스트 → 시스템 테스트 → 인수 테스트. 작은 것에서 큰 것으로, 개발자에서 사용자로 간다.
원리 — V 모델은 왼쪽 팔에 개발 단계(요구 분석 → 설계 → 상세 설계 → 구현)를, 오른쪽 팔에 그 단계와 짝인 테스트를 둔다. 구현 ↔ 단위 테스트(모듈 하나가 맞나), 상세 설계 ↔ 통합 테스트(모듈을 붙였을 때 인터페이스가 맞나), 설계 ↔ 시스템 테스트(전체가 요구 명세대로 도나, 성능 · 보안 포함), 요구 분석 ↔ 인수 테스트(사용자가 받아들일 만한가, 알파 · 베타). 테스트는 오른쪽 팔을 아래에서 위로 올라가니 단위 → 통합 → 시스템 → 인수 순서다.
따라가기
헷갈리는 자리 — 시스템과 인수를 바꾸는 것. 시스템 테스트는 개발 조직이 "명세대로인가"를 보고, 인수 테스트는 사용자 · 고객이 "받을 만한가"를 본다. 인수가 마지막이다.
이전 자료의 예상 문제다. 표준 정의(ISTQB · V 모델)와 대조했다.
왜 이걸 하나 — 이 장은 비슷한 이름과 경로 표기에서 깎인다.
| 자리 | 새는 꼴 | 적는 법 | 기출 |
|---|---|---|---|
| 분기 · 조건 | 「개별 조건식」인데 분기라 적는다 | 개별 조건식이면 조건, 결정 전체면 분기(결정) | 2023-2회 6번 · 2025-3회 4번 |
| 동등 · 경계 | 대표값을 고른 문제에 경계값이라 적는다 | 구간 가운데면 동등 분할, 구간 끝과 앞뒤면 경계값 | 2026-2회 1번 · 예상 1회 19번 |
| 경로 표기 | 노드 사이에 화살표 · 쉼표를 섞거나 끝 노드를 뺀다 | 문제의 표기를 따른다. 1234561 처럼 붙여 쓰거나 1-2-3 처럼. 돌아가는 경로는 1 로 끝난다 | 2023-1회 19번 · 2025-2회 11번 |
| 반복 조건 | 구문 경로에서 거짓으로 빠져나가는 마지막 검사를 뺀다 | while 은 마지막에 한 번 더 검사한다 | 2025-1회 15번 |
| 스텁 · 드라이버 | 둘을 바꾼다 | 하향식 = 스텁(아래 대신), 상향식 = 드라이버(위 대신) | 2023-2회 7번 · 2026-1회 15번 |
| MC/DC 표기 | 「변경 조건 결정」만 적거나 「MCDC」 | 변경 조건/결정 커버리지(MC/DC) — 슬래시까지 | 2024-1회 14번 |
| 테스트 케이스 3요소 | 「입력 · 출력」만 적고 조건을 뺀다 | 테스트 조건 · 테스트 데이터 · 예상 결과 | 2025-3회 19번 |
세 칸 매칭(커버리지 3칸 · 케이스 3요소)은 사다리 순서대로 답이 배치돼 있는 경우가 많다. 구문 → 분기 → 조건 순서를 알면 칸이 뒤섞여도 자리를 찾는다.
왜 이걸 하나 — 기출에 아직 안 나온 이름이다. 블랙박스 나머지 셋, 커버리지 순서, 형상 관리 절차, 검증 도구 · EAI, 알파 · 베타 · 회귀.
5문항 전부 정의로 대조한 용어다. 흐름도 경로는 기출 3문항으로 충분해 훈련에서는 이름 쪽을 채웠다.
블랙박스 테스트 기법 중 다음 설명에 해당하는 것을 각각 쓰시오.
① 입력 조건과 결과의 관계를 그래프로 그려 효용성 높은 케이스를 고른다
② 과거 경험이나 직관으로 오류가 날 만한 입력을 골라 검사한다
③ 같은 명세로 만든 여러 버전에 같은 입력을 넣어 결과를 비교한다
답 — ① 원인-효과 그래프 검사 ② 오류 예측 검사 ③ 비교 검사.
원리 — 블랙박스 기법은 코드를 안 보고 명세로 케이스를 만든다. 동치 분할 · 경계값 분석 외에 세 가지가 더 나온다. 원인-효과 그래프는 입력 조건(원인)과 출력(효과)의 논리 관계를 그래프로 그리고 결정 테이블로 바꿔, 효과에 실제로 영향을 주는 조합만 골라낸다 — 조합 폭발을 줄인다. 오류 예측은 "여기서 자주 틀리더라"는 경험 · 직관으로 케이스를 고른다 — 빈 입력, 0, 최대값 초과 같은 것들이며 다른 기법이 놓치는 것을 보충한다. 비교 검사는 같은 명세로 만든 여러 버전(구판 · 신판, 두 팀의 구현)에 같은 입력을 넣고 출력이 같은지 본다.
따라가기
이 노트에서 만든 변형 문제다. 표준 정의(ISTQB 용어 · 형상 관리 절차 · EAI 방식)와 대조했다.
화이트박스 커버리지를 약한 것부터 강한 것 순서로 나열하시오.
분기(결정) 커버리지, 다중 조건 커버리지, 구문(문장) 커버리지, MC/DC, 조건 커버리지, 조건/결정 커버리지
답 — 구문 → 분기(결정) → 조건 → 조건/결정 → MC/DC → 다중 조건.
원리 — 커버리지는 "무엇을 세나"가 촘촘할수록 강하다. 구문은 줄만 센다. 분기는 if 의 갈래(참 · 거짓)를 센다. 조건은 갈래 안의 낱개 조건식을 센다. 조건/결정은 갈래와 낱개를 둘 다 센다. MC/DC 는 거기에 "낱개 조건이 혼자 결과를 뒤집는 짝"까지 요구한다. 다중 조건은 낱개 조건의 모든 조합(2ⁿ)을 요구하니 가장 강하고 가장 비싸다. 강한 기준을 만족하면 약한 기준은 자동으로 만족한다 — 단 조건과 분기는 서로 포함 관계가 아니라 순서를 "관례상" 조건을 뒤에 둔다.
따라가기
이 노트에서 만든 변형 문제다. 표준 정의(ISTQB 용어 · 형상 관리 절차 · EAI 방식)와 대조했다.
소프트웨어 형상 관리의 절차 4단계를 순서대로 쓰고, 다음 설명에 해당하는 단계를 고르시오.
변경 요청을 검토 · 승인하고 변경을 통제하는 단계
답 — 형상 식별 → 형상 통제 → 형상 감사 → 형상 기록(상태 보고). 설명은 형상 통제다.
원리 — 형상 관리는 소스 · 문서 · 라이브러리 같은 산출물(형상 항목)의 변경을 통제하는 활동이다. 식별은 "무엇을 관리할지" 항목을 정하고 이름 · 버전을 붙이는 것이다. 통제는 변경 요청이 오면 형상 통제 위원회(CCB)가 검토 · 승인하고, 승인된 것만 반영하는 것이다 — 아무나 고치지 못하게 막는 단계. 감사는 변경이 승인대로, 기준대로 됐는지 검증한다. 기록(상태 보고)은 형상 항목의 현재 상태와 변경 이력을 보고서로 남긴다. git 으로 치면 식별 = 저장소 · 태그, 통제 = PR 리뷰 · 승인, 감사 = 릴리스 검증, 기록 = 로그 · 변경 이력이다.
따라가기
이 노트에서 만든 변형 문제다. 표준 정의(ISTQB 용어 · 형상 관리 절차 · EAI 방식)와 대조했다.
다음 설명에 해당하는 인터페이스 구현 검증 도구 · 통합 방식을 각각 쓰시오.
① 자바 · C 등 언어별 단위 테스트 프레임워크의 총칭(JUnit · CUnit)
② 웹 브라우저를 자동으로 조작해 UI 를 테스트하는 도구
③ 각 시스템을 1:1 로 직접 연결하는 EAI 통합 방식
④ 중앙의 허브가 모든 연결을 중개하는 EAI 통합 방식
답 — ① xUnit ② Selenium ③ Point-to-Point ④ Hub & Spoke.
원리 — 인터페이스 구현 검증 도구는 단위 · UI 자동화 도구들이다. xUnit 은 JUnit(자바) · CUnit(C) · NUnit(.NET) 처럼 언어마다 있는 단위 테스트 프레임워크를 통틀어 부르는 이름이다. Selenium 은 브라우저를 코드로 조작(클릭 · 입력)해 웹 UI 를 자동 검사한다. STAF · FitNesse · NTAF · watir 도 같은 묶음이다. EAI(기업 응용 통합)는 시스템 사이 연결 방식이다 — Point-to-Point 는 시스템끼리 1:1 로 직접 잇는다(단순하지만 n 개면 선이 n(n−1)/2 개). Hub & Spoke 는 가운데 허브가 모든 연결을 중개한다(관리 쉽지만 허브가 죽으면 전체 정지). 그 밖에 Message Bus(ESB) · Hybrid 가 있다.
따라가기
이 노트에서 만든 변형 문제다. 표준 정의(ISTQB 용어 · 형상 관리 절차 · EAI 방식)와 대조했다.
다음 설명에 해당하는 테스트 이름을 각각 쓰시오.
① 개발자 환경에서 사용자가 참여해 수행하는 인수 테스트
② 실제 사용자 환경에서 사용자가 수행하는 인수 테스트
③ 수정한 뒤 다른 곳이 망가지지 않았는지 다시 확인하는 테스트
답 — ① 알파 테스트 ② 베타 테스트 ③ 회귀 테스트.
원리 — 인수 테스트는 사용자가 "받을 만한가"를 보는 마지막 테스트다. 알파는 개발자 환경(개발사 사무실)에서 사용자가 개발자가 지켜보는 가운데 쓰는 것이고, 베타는 실제 사용자 환경에서 여러 사용자가 자유롭게 써 보고 문제를 보고하는 것이다 — 게임의 오픈 베타가 이것이다. 알파가 먼저, 베타가 나중이다. 회귀 테스트는 종류가 다르다 — 코드를 고친 뒤 "고친 곳 말고 다른 데가 망가지지 않았나"를 이미 통과한 테스트를 다시 돌려 확인한다. 자동화된 단위 테스트를 매 커밋마다 돌리는 것이 곧 회귀 테스트다.
따라가기
이 노트에서 만든 변형 문제다. 표준 정의(ISTQB 용어 · 형상 관리 절차 · EAI 방식)와 대조했다.
왜 이걸 하나 — 아래를 안 보고 적을 수 있어야 이 장이 끝난다.