17강이 테스트 케이스 설계와 레벨별 테스트(단위→통합→시스템→인수)였다면, 18강은 그중 통합 단계의 본격 정량·예제 다. 단위 테스트를 통과한 모듈을 어느 순서로 합치는가(통합 4방식·스텁/드라이버), 코드 내부를 얼마나 검증했는지 어떻게 수치화하는가(커버리지·순환 복잡도 V(G)), 입력을 어떻게 설계해 검증하는가(블랙박스 6기법), 시스템 성능을 어떻게 측정·개선하는가(성능 테스트)까지 한 번에 잡는다. 매 회차 한 문제 이상 보장되는 정조준 단원이며, 13강 단위 테스트(JUnit)·14강 Git·16강 Jenkins·17강 회귀가 여기서 CI 파이프라인으로 수렴한다.
핵심 암기: 통합 4방식 하상빅샌 · 가짜 모듈 매칭 하스상드(하향=스텁 / 상향=드라이버) · 순환 복잡도 V(G) = E − N + 2(보조 P+1) · 분기 커버리지 50% = 분기 1개 / 전체 2개 · 블랙박스 6기법 동경결상유원 · 성능 테스트 4종 성부스내 · 측정 4지표 응처자경 · 커버리지 강도 문장 < 분기 < 조건 < 경로
통합 테스트 — 모듈을 어느 순서로 합치는가
하향식 통합 + 스텁(Stub) ·통합 테스트·1순위·
[정의] 통합 테스트(Integration Testing) = 단위 테스트를 통과한 여러 모듈을 결합해 모듈 간 인터페이스·데이터 전달·상호작용에 결함이 없는지 검증하는 단계. 핵심 질문은 하나 — "단위 테스트를 통과한 모듈 수십 개를 어느 순서로 합칠 것인가?" 그 답이 4방식이다.
[표] 통합 4방식 — 하상빅샌.
#
방식
진행 방향
가짜 모듈
①
하향식(Top-Down)
위층 → 아래층
스텁(Stub)
②
상향식(Bottom-Up)
아래층 → 위층
드라이버(Driver)
③
빅뱅(Big Bang)
한꺼번에
없음
④
샌드위치(Sandwich)
위·아래 동시
스텁 + 드라이버
[정의] 하향식 통합 = 최상위 모듈부터 시작해 점진적으로 하위 모듈을 결합. 미완성 하위 모듈 자리에 스텁(Stub) 을 넣어 호출이 정상 동작하는지 검증. 진행 우선순위는 깊이 우선·너비 우선 두 가지.
텍스트
[하향식 — 위에서 아래로]
상위 모듈(메인 컨트롤러) ← 진짜로 먼저 검증
| 호출 ↓
Stub Stub Stub ← 하위 자리는 임시 골조(고정 응답)
→ 상위 검증 끝나면 Stub 자리에 진짜 하위 모듈 점진 투입 → 최하위까지 반복
[정의] 스텁(Stub) = 아직 구현되지 않은 하위 모듈을 대신하는 가짜 모듈. 호출되면 미리 약속된 고정 응답만 반환. 하향식 통합의 표준 도구.
스텁 4본질
내용
위치
하위 자리(Callee)
역할
호출당하는 쪽
동작
고정 응답만 반환(예: return "OK")
사용
하향식 미완성 하위 대체
💡 하향식은 빌딩을 옥상부터 짓는 공사다. 옥상은 진짜로 완성하고 아래층은 임시 골조(스텁) 로 받쳐 "옥상이 보낸 무게를 골조가 잘 받나"를 확인한다.
장점
단점
상위 컨트롤·UI 흐름을 일찍 검증
하위 모듈 결함이 늦게 발견
주요 시나리오 조기 시연
스텁 작성 비용(하위 수만큼)
🔑 암기 하향식 = 위→아래 + 스텁 / 스텁 = 하위·호출당함·고정 응답.
⚠️ 함정 스텁 vs 목(Mock) 구분 — 스텁은 고정 응답 반환(통합·하위 대체), 목은 호출 행위 검증(단위·외부 의존 격리). '호출 행위를 검증한다'가 보이면 스텁이 아니라 목.
🎯 빈출 '최상위부터 + 하위 자리 고정 응답' 설명→용어 매칭이 거의 매회. 스텁·드라이버 자리 뒤바꿈이 단골.
📝 기출 설명→용어형 · 소거형.
상향식 통합 + 드라이버(Driver) ·통합 테스트·1순위·
[정의] 상향식 통합(Bottom-Up) = 최하위 모듈부터 시작해 점진적으로 상위 모듈을 결합. 미완성 상위 모듈 자리에 드라이버(Driver) 를 넣어 하위 모듈에 가짜 호출을 보내며 검증. 하위 모듈 여러 개를 묶은 클러스터(Cluster) 단위로 검증한다.
텍스트
[상향식 — 아래에서 위로]
Driver ← 상위 자리에서 가짜 호출 발사
| 호출 ↓
Mod Mod Mod ← 하위 모듈들은 진짜(실 동작)
→ 하위 클러스터부터 검증 → 점진적 상위 투입 → Driver 제거 → 최상위까지 반복
[정의] 드라이버(Driver) = 아직 구현되지 않은 상위 모듈을 대신하는 가짜 모듈. 하위 모듈에 시나리오 입력값을 자동으로 보내고 결과를 수집. 상향식 통합의 표준 도구.
드라이버 4본질
내용
위치
상위 자리(Caller)
역할
호출하는 쪽
동작
시나리오 입력 자동 발사 + 결과 수집
사용
상향식 미완성 상위 대체
💡 상향식은 빌딩을 1층부터 짓는 공사다. 1·2층은 진짜로 완성하고 위층은 임시 운전실(드라이버) 에서 "5톤 받쳐봐" 같은 가짜 명령을 자동으로 내려보낸다. 스텁이 수동(고정 응답)이라면 드라이버는 능동(자동 발사)이라는 게 결정적 차이.
장점
단점
하위 핵심 로직(거래·정산) 일찍 검증
UI·상위 흐름 검증이 늦음
입출력 결함 조기 노출
드라이버 작성 비용(클러스터 수만큼)
🔑 암기 상향식 = 아래→위 + 드라이버 / 드라이버 = 상위·호출함·시나리오 자동 실행.
⚠️ 함정 '시나리오 자동 실행'은 드라이버의 결정적 정의어. '고정 응답'이 나오면 스텁, '시나리오 자동'이 나오면 드라이버.
🎯 빈출 '최하위부터 + 상위 자리 + 시나리오 자동' 설명→용어 매칭 단골.
📝 기출 설명→용어형.
★하스상드★ — 스텁 vs 드라이버 즉답 매트릭스 ·통합 테스트·시그니처·1순위·
[정의] 하스상드 = 하향식 = 스텁 / 상향식 = 드라이버. 위치·방향·동작 세 축이 모두 정반대라 자리 뒤바꿈 함정이 가장 흔하다. 이 한 장이면 스텁/드라이버 어떤 함정 보기든 1초에 갈린다.
[표] 세 축 정반대 매트릭스.
비교 축
스텁 (Stub)
드라이버 (Driver)
통합 방식
하향식(Top-Down)
상향식(Bottom-Up)
자리(위치)
하위(Callee)
상위(Caller)
방향(역할)
호출당하는 쪽
호출하는 쪽
동작
고정 응답 반환(수동)
시나리오 자동 실행(능동)
텍스트
[하향식 = 스텁]
진짜 상위 모듈
| 호출 ↓
Stub(가짜 하위) → 고정 응답 반환
[상향식 = 드라이버]
Driver(가짜 상위)
| 자동 호출 ↓
진짜 하위 모듈
🔑 암기 하스상드 — 하향식이면 스텁(하위·받음), 상향식이면 드라이버(상위·보냄).
⚠️ 함정 '하향식 - 드라이버'·'상향식 - 스텁'은 자리 뒤바꿈 함정. 위치·방향·동작이 전부 반대라 한 글자만 바꿔도 오답.
🎯 빈출 스텁/드라이버 매칭은 통합 출제의 70%가 집중되는 1순위. '하향식이면 무조건 스텁' 한 줄로 차단.
📝 기출 설명→용어 매칭형 매회 변형 출제.
빅뱅 & 샌드위치 + 4방식 종합 비교표 ·통합 테스트·
[정의] 빅뱅(Big Bang) = 모든 모듈을 각각 완성한 뒤 한꺼번에 결합해 통합. 스텁·드라이버가 필요 없고(한 방에 합치니까) 점진적 통합이 아니다. 다수 모듈 동시 오류 시 격리가 곤란해 결함 추적이 가장 어렵다. 모듈 5~10개 미만 소규모에만 권장.
[정의] 샌드위치(Sandwich / 하이브리드) = 하향식 + 상향식을 동시에 진행해 가운데 목표 계층에서 만나는 방식. 상위는 스텁, 하위는 드라이버 — 스텁·드라이버를 둘 다 사용. 하향·상향의 장점을 결합.
💡 빅뱅은 부품을 다 만들어두고 한꺼번에 폭탄식으로 결합 — 안 굴러가면 수십 개를 다시 분해해 원인을 찾아야 한다. 샌드위치는 터널 공사 — 양쪽 입구에서 동시에 파 가운데서 만나니 일정이 단축되지만, 만나는 좌표(중간 계층)가 정확해야 한다.
[표] 하상빅샌 종합 — 시험장에서 이 한 장만 떠올리면 4방식 어떤 문제든 즉답.
비교 축
하향식
상향식
빅뱅
샌드위치
진행 방향
위 → 아래
아래 → 위
한꺼번에
양쪽 동시
가짜 모듈
스텁(하위)
드라이버(상위)
없음
스텁+드라이버
점진적 통합
✅
✅
❌
✅
결함 추적
보통
보통
⚠️ 가장 어려움
보통
조기 검증 강점
상위 흐름
하위 핵심 로직
❌
양쪽
임시 모듈 비용
스텁 多
드라이버 多
없음
둘 다 多
🔑 암기 4방식 중 빅뱅만 한꺼번에(점진 ❌·가짜 모듈 ❌) / 샌드위치 = 하향+상향 동시 + 둘 다 사용.
⚠️ 함정 '빅뱅 = 점진적·단계적·순차적'은 100% 함정(빅뱅은 한꺼번에). '샌드위치 = 스텁만'도 함정(둘 다 사용). '빅뱅 = 대형·금융 권장'도 함정(소규모 적합).
🎯 빈출 '점진적 통합이 아닌 것?' 소거형에서 빅뱅이 정답.
📝 기출 소거형(부정) 단골.
화이트박스 정량 — 코드 내부를 얼마나 검증했나
화이트박스 커버리지 4종 — 문장 < 분기 < 조건 < 경로 ·테스트 기법·1순위·
[정의] 커버리지(Coverage) = 코드 내부를 보며 얼마나 검증했는지를 수치(%)로 나타내는 화이트박스 정량 지표. 강도 순서가 곧 정답이다.
💡 if (a>0 and b>0) 한 줄이면 — 분기는 if 자체 참/거짓 2케이스, 조건은 a·b 각각 참/거짓 최대 4케이스. 분기 = if 자체, 조건 = if 안 개별 논리식.
🔑 암기 문장 < 분기 < 조건 < 경로 — 강도 순서가 곧 정답.
⚠️ 함정 '경로 < 문장'(정반대)·'조건 = 분기'(별개) 둘이 단골. 분기는 if 한 덩어리, 조건은 그 안 논리식 하나하나.
🎯 빈출 강도 순서 매칭 거의 매회.
📝 기출 순서 배열형 · 정의 매칭형.
분기 커버리지 50% 정량 ·테스트 기법·1순위·
[공식] 분기 커버리지(%) = (실행된 분기 수 / 전체 분기 수) × 100. if-else는 분기 2개(참·거짓). 한쪽만 타면 50%, 양쪽 다 타면 100%.
💡 분기 50% = 분기 1개 / 전체 2개. if가 N개면 분기 칸은 2N개, 한 칸 탈 때마다 1/(2N)씩 채워진다. 100% 달성엔 최소 2케이스 필요. 대형 서비스 단위 테스트는 보통 분기 커버리지 80% 안팎(일반론)을 머지 차단 기준선으로 둔다 — PR 단계에서 자동 측정해 미달이면 머지가 막힌다.
🔑 암기 분기 커버리지 = 탄 분기 / 전체 분기 × 100%.
⚠️ 함정 '분기 커버리지 100% = 모든 결함 검출'은 함정(커버리지 100%여도 결함 부재는 증명 못 함 — 17강 1원리).
🎯 빈출 매년 한 문제씩 나오는 계산 단골. 절대 안 흔들리는 만점 영역.
📝 기출 계산형.
★순환 복잡도 V(G) = E − N + 2★ ·테스트 기법·시그니처·1순위·
[정의] 순환 복잡도(Cyclomatic Complexity) V(G) = 프로그램의 독립 실행 경로 수를 정량화한 화이트박스 메트릭. 코드를 노드·간선 그래프로 모델링해 계산하며, 곧 최소 테스트 케이스 수의 정량 근거(맥케이브, 1976).
텍스트
[순환 복잡도 V(G) 공식]
V(G) = E − N + 2
E = 간선(Edge·화살표 수)
N = 노드(Node·실행 블록 수)
+2 = 고정 상수
보조 공식: V(G) = P + 1 (P = 분기점·Predicate 수)
분기점 P = if 1개 + elif 1개 = 2 → V(G) = P + 1 = 3 (독립 경로 A·B·F 3개). 같은 코드를 그래프로 그려도 N=8·E=9 → 9−8+2 = 3으로 일치.
분기점(P) 카운트 규칙
P
if X / if X … else
1 (else는 0)
if … elif … else
2 (elif 추가)
while X / for x in Y
각 1
switch + case 3개
2 (case 수 − 1)
[해석] V(G) 값으로 함수 복잡도를 등급화 — V(G)가 곧 최소 테스트 케이스 수.
V(G) 범위
해석
조치
1 ~ 10
단순
안정 — 그대로
11 ~ 20
보통
함수 분리 권장
21 ~ 50
위험
리팩토링 필수
51+
매우 위험
즉시 재설계
💡 V(G)가 높은 함수에 결함이 몰린다(결함 집중·파레토 80/20). 정적 분석 도구가 V(G) ≥ 11이면 '함수 분리 권장'을 자동 경고해 결함을 미리 방어한다.
🔑 암기 V(G) = E − N + 2 (간선 − 노드 + 2) / 보조 P + 1.
⚠️ 함정 부호·자리 뒤바꿈이 함정의 90% — E+N+2·E−N−2·N−E+2 전부 오답. +2 고정, 보조는 P+1(P−1 아님). 노드 카운트가 시작·종료 표기로 ±1 달라질 수 있으니, 문제가 준 E·N을 그대로 공식에 대입하는 게 가장 안전.
🎯 빈출 매년 한 문제 이상 정량 계산 보장되는 1순위. 공식 한 줄이면 만점.
📝 기출 계산형(E·N 대입) · 화이트박스 분류형(기초 경로).
블랙박스 6기법 — 입력을 어떻게 설계하나
★동경결상유원★ — 블랙박스 6기법 + 화이트/블랙 분류 ·테스트 기법·시그니처·1순위·
[정의] 블랙박스 테스트 = 코드 내부를 보지 않고 명세(입력·출력)만으로 검증하는 기법. 입력을 어떻게 설계할지의 6가지 방법이 동경결상유원.
#
기법
한 줄 정의
①
동등 분할
입력 도메인을 동등 그룹으로 나눠 대표값만 검사
②
경계값 분석
그룹 경계의 ±1 값을 집중 검사
③
결정 테이블
입력 조건 조합을 매트릭스로 정리
④
상태 전이
현재 상태 + 이벤트 → 다음 상태 도식화
⑤
유스케이스
액터-시나리오 기반 사용자 흐름
⑥
원인-결과 그래프
원인·결과를 논리 게이트로 도식화
[분류] 화이트 vs 블랙 — 이 두 줄이면 분류 함정 100% 차단.
분류
기법
화이트 — 커버리지 4종
문장 · 분기 · 조건 · 경로
화이트 — 기타
기초 경로(맥케이브 V(G)) · 데이터 흐름 · 루프
블랙 — 6기법
동경결상유원
블랙 — 기타
오류 추정 · 분류 트리
🔑 암기 블랙박스 6기법 = 동경결상유원 / 화이트 = 커버리지 + 기초 경로(V(G)).
⚠️ 함정 '동등 분할 = 화이트박스'는 매년 연속 단골(블랙박스가 정답). '순환 복잡도(V(G)) = 블랙박스'도 함정(화이트박스 기초 경로).
🎯 빈출 6기법은 매년 1~2문제. '블랙박스 아닌 것?' 소거형에 V(G)를 끼우는 함정.
📝 기출 소거형(부정) · 분류 매칭형.
동등 분할(Equivalence Partitioning) ·테스트 기법·1순위·
[정의] 입력 도메인을 동등한 처리를 받는 그룹으로 나누고, 각 그룹에서 대표값 1개씩만 검사하는 블랙박스 기법. 같은 그룹이면 같은 코드 경로를 타므로 입력 가짓수를 폭발적으로 줄인다.
Python
def grade(score):
if score >= 90: return "A" # 그룹 1
elif score >= 80: return "B" # 그룹 2
elif score >= 70: return "C" # 그룹 3
else: return "F" # 그룹 4 (0~69)
그룹
범위
대표값
A
90~100
95
B
80~89
85
C
70~79
75
F
0~69
50
유효 외
-1 · 101
-1 / 101
💡 입력 101개(0~100)를 동등 분할로 5개까지 압축 — 케이스 폭발 방지의 정량 수단. 1,000명을 다 보지 않고 학년 구간별 대표 한 명만 검사하는 것과 같다.
🔑 암기 동등 분할 = 그룹 나누기 + 대표값 1개.
⚠️ 함정 '동등 분할 = 화이트박스'는 절대 함정 — 블랙박스 6기법의 첫 번째.
🎯 빈출 거의 매회. 경계값과 한 쌍으로 출제.
📝 기출 정의 매칭형 · 분류형.
경계값 분석(Boundary Value Analysis) ·테스트 기법·1순위·
[정의] 결함이 그룹 경계 부근(±1) 에 집중된다는 가정 아래, 경계 직전 · 경계 · 경계 직후 3개 값을 집중 검사하는 블랙박스 기법. 동등 분할의 보완.
💡 코드가 if height > 120(>=가 아닌 >)이었다면 120 케이스가 실패하며 결함이 즉시 드러난다. 동등 분할이 그룹 일반을 잡고, 경계값이 경계 함정(>, >=, ==)을 잡는 보완 관계. 평범한 100·150이 아니라 119·120·121 세 값을 일부러 데려와 출입증이 정확히 갈리는지 본다.
🔑 암기 경계값 = 경계 ±1 집중 검사(직전·경계·직후 3값).
⚠️ 함정 '경계값 = 그룹 중앙값 검사'는 함정(경계값은 가장자리). 동등 분할과 역할이 다름(중앙 일반 vs 가장자리).
🎯 빈출 거의 매회. 동등 분할과 한 쌍.
📝 기출 정의 매칭형.
결정 테이블(Decision Table) ·테스트 기법·1순위·
[정의] 입력 조건의 모든 조합과 그에 따른 결과 동작을 매트릭스로 정리한 블랙박스 기법. 조건 N개면 2^N 조합. 조건이 많은 비즈니스 로직(결제·할인·권한) 검증에 최적.
조건 3개(VIP 여부 / 10만원+ 여부 / 쿠폰 여부) → 2³ = 8가지.
케이스
VIP
10만+
쿠폰
할인율
1
Y
Y
Y
30%(최대)
4
Y
N
N
15%
6
N
Y
N
10%
8
N
N
N
0%
💡 전체 8행 = 테스트 케이스 8개 자동 생성(한 행 = 한 케이스). 어떤 입력 조합이 와도 한 행에 매칭돼 결과가 즉시 나온다 — 조건별 출제 여부로 유형을 만들어두는 출제표와 같다.
🔑 암기 결정 테이블 = 조건 조합 매트릭스 + 2^N.
⚠️ 함정 '조건 N개 → N 케이스'는 함정(2^N 조합). 조건 조합이 빠지면 결정 테이블이 아님.
🎯 빈출 결제·할인·인증 권한 도메인 표준이라 출제 빈도 1순위.
📝 기출 정의 매칭형 · 조합 수 계산형.
상태 전이(State Transition) ·테스트 기법·
[정의] 시스템이 여러 상태 사이를 옮겨다니는 흐름을 검증하는 블랙박스 기법. 현재 상태 + 이벤트 → 다음 상태 + 액션 매핑을 검증. 같은 입력도 현재 상태에 따라 결과가 다른 시스템에 적용.
💡 신호등처럼 같은 '시간 경과' 이벤트라도 빨강이면 초록, 초록이면 노랑으로 결과가 다르다. 로그인도 '시도'라는 같은 이벤트가 정상이면 인증, 차단이면 거부 — 같은 입력, 다른 결과가 핵심. 이커머스 주문 상태(대기→결제완료→배송중→완료→반품)도 상태 전이로 모델링되는 도메인 일반론(배송 완료 후 결제 취소 불가 등).
🔑 암기 상태 전이 = 상태 + 이벤트 + 다음 상태 세 요소.
⚠️ 함정 '입력이 같으면 결과도 같다'는 상태 전이의 반대 — 현재 상태에 따라 결과가 갈리는 게 핵심.
🎯 빈출 간헐 출제지만 정의 매칭으로 등장.
📝 기출 정의 매칭형.
유스케이스 + 원인-결과 그래프 ·테스트 기법·🌟·
[정의] 유스케이스(Use Case) = 액터(사용자·외부 시스템)와 시스템의 상호작용 시나리오를 식별해 각 시나리오를 테스트 케이스로 변환하는 블랙박스 기법(UML 유스케이스 다이어그램 기반). 한 시나리오 = 한 케이스 + 예외 흐름.
[정의] 원인-결과 그래프(Cause-Effect Graph) = 원인(입력)과 결과(출력) 의 관계를 AND·OR·NOT 논리 게이트로 도식화한 블랙박스 기법. 결정 테이블의 그래프 버전.
게이트
의미
AND
모든 원인이 참일 때만 결과 발생
OR
원인 중 하나라도 참이면 결과 발생
NOT
원인이 거짓일 때만 결과 발생
💡 유스케이스는 액터별 사건 흐름(영화 시나리오), 원인-결과는 AND·OR·NOT 게이트(회로 다이어그램). 둘 다 출제 빈도는 낮지만 매년 한 보기는 나온다 — 키워드 매칭만 잡으면 충분(🌟 여기까지만).
[정의] 성능 테스트 = 정해진 부하·시간·환경 조건에서 응답 속도·처리량·자원 사용량 같은 비기능 요구사항을 만족하는지 검증하는 테스트. 4종으로 나뉜다 — 성부스내.
#
종류
부하 강도
시간
검증 의도
①
성능(Performance)
정상
짧음
일반 운영 기준선
②
부하(Load)
정상~한계
보통
한도 측정
③
스트레스(Stress)
한계 초과
보통
한계 초과 거동·복구
④
내구성(Endurance)
정상
장시간
메모리 누수 검출
💡 마라톤 페이스 4단계 — ① 평속 측정(성능) ② 점차 올려 한계 측정(부하) ③ 한계 초과 전력질주로 부상 검증(스트레스) ④ 풀코스 완주로 체력 고갈 검출(내구성). 같은 달리기지만 강도·시간·의도가 다 다르다.
🔑 암기 성부스내 — 결정적 차이는 부하 강도(정상/한계/한계 초과)와 시간(단기/장시간).
⚠️ 함정 '스트레스 = 정상 부하'(→성능)·'내구성 = 단시간 한계'(→부하)·'성능 = 한계 초과'(→스트레스). 한계 초과면 스트레스, 장시간이면 내구성.
🎯 빈출 성능 4종 분류 매회 1순위. 부하 vs 스트레스 vs 내구성 자리 뒤바꿈 단골.
📝 기출 설명→용어 매칭형.
★응처자경★ — 성능 측정 4지표 ·성능 테스트·1순위·
[정의] 4종이 '어떤 테스트를 하는가'라면, 측정 4지표는 그 안에서 '무엇을 재는가' — 응처자경.
#
지표
정의
단위
①
응답시간(Response Time)
요청 후 첫 응답까지 시간
ms
②
처리량(Throughput)
단위 시간당 처리 요청 수
TPS / RPS
③
자원사용률(Utilization)
CPU·메모리·디스크·네트워크 사용 비율
%
④
경과시간(Elapsed Time)
요청 후 완료까지 전체 시간
ms / sec
💡 응답시간 vs 경과시간 = 첫 응답 vs 완료(주문→첫 음식 도착 vs 주문→식사 완료). 같은 요청도 응답시간은 짧고 경과시간은 길 수 있다(스트리밍·다단 응답). 처리량 TPS·RPS·QPS는 문맥상 거의 동의어.
🔑 암기 응처자경 — 응답(첫 응답)·처리량(TPS)·자원(%)·경과(완료까지).
⚠️ 함정 '응답시간 = 완료까지'(→경과시간)·'처리량 = CPU 사용률'(→자원사용률). 응답 vs 경과 = 첫 응답 vs 완료만 정확하면 만점.
🎯 빈출 측정 지표 매칭 단골. 응답시간과 경과시간 구분이 핵심.
📝 기출 정의 매칭형.
성능 개선 4축 + 도구 + CI 파이프라인 ·성능 테스트·
[정의] 측정한 성능을 개선하는 4축과 측정 도구. 적용 순서(일반론)는 병목 식별 → 코드(싸고 빠름) → DB → 아키텍처 → 인프라(비용↑, 마지막).
#
개선 축
한 줄 핵심
①
코드 최적화
알고리즘·자료구조 효율화(O(n²)→O(n log n)·캐시)
②
아키텍처
구조 개선(캐시 계층·CDN·비동기)
③
DB 인덱스·튜닝
쿼리·인덱스 최적화·N+1 차단
④
인프라 스케일링
Scale Up · Scale Out · Auto Scaling
도구
특징
JMeter
Apache OSS · Java 기반 · 가장 널리 쓰임
LoadRunner
상용 · 금융·공공 장기 표준
nGrinder
국산 OSS · 분산 부하
K6
JS · CLI 친화 · CI 통합 쉬움
[흐름] 오늘 배운 통합·커버리지·V(G)·성능이 어디서 자동 검증되는가 — CI(지속적 통합) 파이프라인. CI는 특정 도구가 아니라 '자동 빌드 + 자동 테스트'라는 활동(Jenkins 등은 그 도구).
텍스트
[CI 파이프라인 — 오늘 배운 것들이 자동 검증되는 자리]
코드 push → 자동 빌드(Jenkins 등)
↓① 단위(JUnit) ② 통합(하상빅샌) ③ 분기 커버리지 80% ④ V(G) 검사 ⑤ 성능 회귀
↓
모두 통과 → 머지 → 배포 / 미달·실패 → 머지 차단
💡 13강 단위 테스트(JUnit)·14강 Git·16강 Jenkins·17강 회귀가 18강 분기 커버리지(80%)와 함께 한 파이프라인에 수렴 — CI = JUnit + Git + Jenkins + 회귀 + 분기 80%. 'PR 단계에서 자동 검증되는 항목은?' 종합형 보기의 정답 키워드.
🔑 암기 개선 4축 = 코드·아키텍처·DB·인프라(코드부터 싸고, 인프라가 마지막) / CI = 자동 빌드 + 자동 테스트 활동.
⚠️ 함정 'CI = Jenkins(도구)'는 부분 함정 — CI는 활동, Jenkins는 그 도구. '인프라 증설이 1순위 개선책'도 함정(가장 비싸 마지막).
🎯 빈출 직접 정량 출제는 낮지만 성능 4종·측정 4지표와 묶이는 종합형은 매 회차 가능.
📝 기출 종합 매칭형.
기출 다지기
[기출 1 출제] 다음 설명에 해당하는 통합 방식과 임시 모듈로 가장 적절한 것은? (설명→용어 찾기)
최상위 모듈부터 점진적으로 하위 모듈을 결합한다. 미완성 하위 모듈 자리에는 미리 약속된 고정 응답만 반환하는 가짜 모듈을 넣는다.
① 하향식 - 드라이버
② 상향식 - 스텁
③ 하향식 - 스텁
④ 빅뱅 - 드라이버
정답 및 해설 보기
정답 ③
'최상위부터 + 하위 자리 고정 응답' 두 키워드가 곧 하향식 + 스텁. 위치(하위)·방향(호출당함)·통합 방향(위→아래) 세 축이 모두 하향식+스텁이다.
선지
판정
근거
①
오답
하향식엔 스텁(하스상드 위반)
②
오답
방향 뒤바꿈 — 고정 응답은 스텁이나 방식이 상향식 ❌
③
정답
하향식 + 스텁 3축 일치
④
오답
빅뱅은 점진 통합 아님·가짜 모듈 없음
🔑 하스상드 — '하향식이면 무조건 스텁'.
[기출 2 출제] 다음 설명에 해당하는 통합 방식과 임시 모듈은? (설명→용어 찾기)
최하위 모듈부터 점진적으로 상위 모듈을 결합한다. 미완성 상위 모듈 자리에서 하위 모듈에 시나리오 입력값을 자동으로 보내고 결과를 수집하는 가짜 모듈을 사용한다.
① 하향식 - 스텁
② 상향식 - 드라이버
③ 상향식 - 스텁
④ 샌드위치 - 드라이버
정답 및 해설 보기
정답 ②
'최하위부터 + 상위 자리 + 시나리오 자동 실행' = 상향식 + 드라이버. '시나리오 자동 실행'이 드라이버의 결정적 정의어다.
선지
판정
근거
①
오답
방식 뒤바꿈(최하위부터는 상향식)
②
정답
상향식 + 드라이버
③
오답
상향식엔 드라이버(하스상드 위반)
④
오답
샌드위치도 드라이버를 쓰나 '최하위부터'와 불일치
🔑 '고정 응답'이면 스텁, '시나리오 자동'이면 드라이버.
[기출 3 출제] 다음 중 점진적·단계적 통합이 아닌 것은? (아닌 것 고르기)
① 하향식
② 상향식
③ 빅뱅
④ 샌드위치
정답 및 해설 보기
정답 ③
4방식 중 빅뱅만 모든 모듈을 한꺼번에 결합한다. 스텁·드라이버도 안 쓰고 결함 추적이 가장 어렵다.
선지
진행
점진적?
① 하향식
위→아래 점진
✅
② 상향식
아래→위 점진
✅
③ 빅뱅
한꺼번에
❌ 정답
④ 샌드위치
양쪽 동시 점진
✅
🔑 '하상빅샌 중 빅뱅만 한꺼번에'. '빅뱅 = 점진적·단계적'·'대형 금융 권장'은 함정(소규모 적합).
[기출 4 출제] 어떤 제어 흐름 그래프의 간선 E = 6, 노드 N = 5일 때 순환 복잡도 V(G)는? (계산)
① 1
② 2
③ 3
④ 4
정답 및 해설 보기
정답 ③
단계
계산
공식
V(G) = E − N + 2
대입
6 − 5 + 2 = 3
의미
독립 경로 3개 = 최소 테스트 케이스 3개
🔑 V(G) = '간 − 노 + 2'. 함정 공식(E+N+2·E−N−2·N−E+2)만 거르면 만점. 노드 카운트가 애매하면 문제가 준 E·N을 그대로 대입.
[기출 5 출제] 아래 코드를 grade(80) 한 케이스만 실행했을 때 분기 커버리지는? (계산)
🎯 합격 한 끗: 18강 출제의 80% 이상이 두문자 셋(하상빅샌·하스상드·동경결상유원) + 공식 둘(V(G)=E−N+2 · 분기 50%) + 성능 4종(성부스내)·측정 4지표(응처자경) 안에서 나온다. 시험 직전엔 이 다섯과 함정 5쌍만 다시 훑는다.
🌟 함정 5쌍 종합(시험장 직전 5분 카드): ① '동등 분할 = 화이트박스' → 블랙박스 · ② 'V(G) = 블랙박스' → 화이트박스 기초 경로 · ③ '빅뱅 = 점진적·단계적' → 한꺼번에 결합 · ④ '하향식 = 드라이버' → 하향식 = 스텁(하스상드) · ⑤ 'V(G) = E − N − 2' → E − N + 2(+2 고정).