[정처기 실기] 3. SW 개발
정보처리기사 실기 — 3. SW 개발
출제 확률: ★(낮음) ~ ★★★★(매우 높음)
0. SW 개발 과목 한눈에
| 항목 | 내용 |
|---|---|
| 예상 문제 수 | 1~3문제 |
| ★★★★ | 테스트 커버리지 |
| ★★★ | 블랙박스 테스트, 테스트 자동화, 테스트 레벨, 인터페이스 보안 |
| ★★ | 테스트 케이스, 인터페이스 통신 기술, 데이터 표현 형식, 웹 인터페이스 |
1. 테스트 커버리지 (화이트박스 테스트) ★★★★
커버리지 강도: 구문 < 결정 < 조건 < 조건/결정 < MC/DC
| 커버리지 | 영어 | 핵심 키워드 |
|---|---|---|
| 구문(문장) | Statement | 모든 명령문, 모든 문장 수행 |
| 결정(분기) | Decision (Branch) | 모든 조건, 결정문 |
| 조건 | Condition | 결정문 내 각 개별 조건식 |
| 조건/결정 | Condition/Decision | 조건 + 결정 모두 만족 |
| MC/DC | Modified Condition/Decision | 개별 조건식의 독립적 영향 |
화이트박스 vs 블랙박스
| 구분 | 화이트박스 | 블랙박스 |
|---|---|---|
| 관점 | 내부 구조·코드 기반 | 외부 입출력 기반 |
| 대표 | 테스트 커버리지 | 동등 분할, 경곗값 분석 등 |
2. 블랙박스 테스트 ★★★
| 유형 | 영어 | 핵심 키워드 |
|---|---|---|
| 동등 분할 | Equivalence Partitioning | 입력을 유효값/무효값 그룹으로 나눔 |
| 경곗값 분석 | Boundary Value Analysis | 등가 분할 후 경곗값 포함 테스트 |
| 결정 테이블 | Decision Table | 논리적 조건과 행동을 표로 정리 |
| 원인-결과 그래프 | Cause-Effect Graph | 입력(원인)이 출력(결과)에 미치는 영향 표현 |
| 상태 전이 | State Transition | 상태 변화 기반 테스트 설계 |
| 오류 예측 | Error Guessing | 테스터 경험·직관으로 오류 예측 |
| 비교 테스트 | Comparison Testing | 여러 버전·제품 비교 |
| 페어와이즈 테스트 | Pairwise Testing | 모든 조합 대신 쌍(pair) 조합만 테스트 |
| 분류 트리 테스트 | Classification Tree | 트리 구조로 요소 분석 후 케이스 도출 |
| 유스케이스 테스트 | Use Case Testing | 사용자 시나리오(유스케이스) 기반 |
3. 테스트 자동화 ★★★
| 구성요소 | 영어 | 키워드 |
|---|---|---|
| 테스트 하네스 | Test Harness | SW 도구/프레임워크, 테스트 환경 구축 |
| 테스트 드라이버 | Test Driver | 상향식 — 하위 모듈 테스트, 상위 모듈 역할 |
| 테스트 스텁 | Test Stub | 하향식 — 상위 모듈 테스트, 하위 모듈 역할 |
| 테스트 케이스 | Test Case | 테스트 최소 단위 |
| 테스트 슈트 | Test Suite | 테스트 케이스 집합 |
| 테스트 스크립트 | Test Script | 테스트 케이스 코드화, 자동화 |
| 테스트 시나리오 | Test Scenario | 동작 흐름·스토리, 여러 케이스 묶음 |
통합 테스트 방향
| 방식 | 설명 |
|---|---|
| 상향식 테스트 | 최하위 모듈 → 위쪽 방향, 통합 수행 |
| 하향식 테스트 | 최상위(주 제어) 모듈 → 아래 방향, 통합 수행 |
드라이버 = 상향식 / 스텁 = 하향식 (반대 방향의 모듈을 대신함)
4. 테스트 레벨 ★★★
| 테스트 레벨 | 키워드 |
|---|---|
| 단위 테스트 | 개별 모듈·서브루틴·컴포넌트 정상 실행 확인 |
| 통합 테스트 | 인터페이스 간 시스템 정상 실행 확인 |
| 시스템 테스트 | 통합된 전체 시스템이 요구사항 명세에 맞게 동작 |
| 인수 테스트 | 사용자 관점에서 요구사항 충족 최종 확인 |
인수 테스트 세부
| 구분 | 키워드 |
|---|---|
| 알파 테스트 | 개발자 환경, 통제된 상태로 수행 |
| 베타 테스트 | 개발자 없이 수행 |
V-모델 — 테스트 순서
우측 아래부터:
단위 테스트 → 통합 테스트 → 시스템 테스트 → 인수 테스트
5. 테스트 케이스 구성 요소 ★★
| 용어 | 설명 |
|---|---|
| 식별자 (ID) | 테스트 케이스를 고유하게 식별하는 번호 |
| 테스트 항목 | 테스트 대상 기능 또는 모듈 |
| 테스트 조건 | 실행 전 갖춰야 할 사전 조건 및 환경 |
| 테스트 데이터 | 테스트 수행 시 사용할 입력값 |
| 예상 결과 | 수행 후 기대되는 출력 또는 시스템 상태 |
예시
| ID | 테스트 항목 | 테스트 조건 | 테스트 데이터 | 예상 결과 |
|---|---|---|---|---|
| PID_001 | 결제 기능 | 결제 화면 | 결제 금액 5000원 전달 | 결제 성공 메시지 |
6. 인터페이스 보안 ★★★
6.1 터널링 (VPN)
| 프로토콜 | 동작 계층 | 키워드 |
|---|---|---|
| PPTP | 데이터 링크 계층 | PPP 기초 |
| L2F | 데이터 링크 계층 | 시스코 개발, UDP 사용 |
| L2TP | 데이터 링크 계층 | L2F + PPTP, VPN 터널링 |
| IPSec | 네트워크 계층 | IP 패킷 단위 암호화, 강력한 보안 |
6.2 웹 트래픽 암호화
| 프로토콜 | 동작 계층 | 키워드 |
|---|---|---|
| SSL/TLS | 전송 계층 | 웹 통신 암호화 표준, HTTPS의 기반 |
| S-HTTP | 응용 계층 | 클라이언트·서버 간 메시지 단위 암호화 |
| HTTPS | 응용 계층 | 통신 채널 전체 암호화 |
7. 인터페이스 통신 기술 ★★
| 통신 기술 | 키워드 |
|---|---|
| AJAX | 일부 콘텐츠만 리로드, HTML만으로 어려운 작업 구현 |
| Fetch API | Promise 기반, 비동기 코드 관리, 브라우저 내장 API |
| 웹소켓 | 양방향 실시간 통신, 서버 푸시, 연결 유지 |
| GraphQL | API 쿼리 언어, 불필요한 데이터 전송 없음 |
8. 데이터 표현 형식 ★★
| 형식 | 키워드 |
|---|---|
| JSON | 사람이 읽기 쉬움, key-value 쌍, 주석 불가능 |
| XML | 태그(<>) 사용, 마크업 언어, 뛰어난 확장성 |
| YAML | 읽고 쓰기 편함, 들여쓰기, 주석 가능 |
9. 웹 인터페이스 ★★
9.1 클래식 웹 서비스 프로토콜
| 프로토콜 | 키워드 |
|---|---|
| UDDI | 검색 엔진 |
| WSDL | XML 형식 |
| SOAP | XML 메시지 |
9.2 현대 웹 서비스 아키텍처
| 스타일 | 키워드 |
|---|---|
| REST | HTTP 활용, 주로 JSON 사용 |
10. 시험 포인트 체크리스트
- 커버리지 강도 — 구문 < 결정 < 조건 < 조건/결정 < MC/DC
- MC/DC — 개별 조건식의 독립적 영향
- 동등 분할 vs 경곗값 — 유효/무효 그룹 vs 경계값
- 원인-결과 그래프 — 입력(원인) → 출력(결과)
- 페어와이즈 — 모든 조합이 아닌 쌍(pair) 조합
- Test Driver(상향식·상위 역할) vs Test Stub(하향식·하위 역할)
- 테스트 레벨 — 단위 → 통합 → 시스템 → 인수 (V-모델)
- 알파(개발자 환경·통제) vs 베타(개발자 없이)
- 테스트 케이스 5요소 — ID, 항목, 조건, 데이터, 예상 결과
- L2TP(데이터링크·VPN) vs IPSec(네트워크·IP 패킷)
- SSL/TLS(전송·HTTPS 기반) vs S-HTTP(응용·메시지) vs HTTPS(응용·채널 전체)
- AJAX — 부분 리로드 / 웹소켓 — 양방향 실시간
- JSON(주석 X) vs YAML(주석 O) vs XML(태그·확장성)
- SOAP·WSDL·UDDI(클래식) vs REST(HTTP·JSON)