정처기 공부 기록
소프트웨어 테스트 · 알고리즘 · EAI 인터페이스
테스트는 오류를 찾아내는 과정이고, 알고리즘은 같은 문제를 어떤 순서로 더 효율적으로 풀지 정하는 방법이다. 오늘은 시험 용어를 실제 예시와 함께 연결했다.
오늘 공부한 내용
이번 범위: 테스트케이스·테스트 레벨·블랙박스/화이트박스·커버리지·테스트 원리·테스트 장치, 해싱·이진 검색·정렬, 내외부 인터페이스 기술 표준·EAI·ESB·인터페이스 구현 검증 도구.
1. 테스트케이스와 테스트 레벨
테스트케이스는 무엇을 시험할지 적어 둔 실행 단위다. 테스트 대상, 입력값, 실행 조건, 절차, 기대 결과, 실제 결과와 판정으로 구성한다. 예를 들어 틀린 비밀번호를 넣었을 때 “로그인 실패” 메시지가 나오는지를 기대 결과로 정한다.
단위 테스트는 함수·클래스·모듈 하나를, 통합 테스트는 연결한 모듈 사이의 데이터 전달을, 시스템 테스트는 완성된 시스템 전체를, 인수 테스트는 사용자·고객 관점의 사용 가능 여부를 확인한다.
블랙박스 테스트는 내부 코드를 보지 않고 입력과 출력만 확인한다. ‘까만 불투명 자판기’에 돈과 버튼 입력을 넣고 음료가 제대로 나오는지만 보는 방식이다. 동등 분할, 경계값 분석, 원인-효과 그래프, 오류 예측, 비교 검사, 결정 테이블, 상태 전이, 유스케이스 테스트가 대표적이다.
화이트박스 테스트는 소스 코드의 구조와 경로를 보면서 검사한다. ‘투명한 X-ray 자판기’처럼 버튼을 눌렀을 때 조건문과 반복문이 어느 길로 흐르는지 확인하는 방식이다. 블랙박스·화이트박스는 테스트 설계 관점이며, 시스템 테스트에서도 요구에 따라 함께 활용할 수 있다.
2. 화이트박스 테스트와 커버리지
커버리지는 테스트가 코드의 어느 정도를 실행했는지 나타내는 기준이다.
암기법: “구차한 결혼 조건 조금만 변경하면 기분 제데루다”
구=구문 커버리지 / 결=결정 커버리지 / 조=조건 커버리지 / 조=조건-결정 커버리지 / 변=변경 조건-결정 커버리지 / 기=기본 경로 커버리지 / 제=제어 흐름 테스트 / 데=데이터 흐름 테스트 / 루=루프 테스트 / 다=다중 조건 커버리지
구문 커버리지는 모든 실행문을 한 번 이상 실행했는지 본다. 결정 커버리지는 조건문의 참·거짓 분기를 모두 지났는지 본다. 조건 커버리지는 복합 조건 안의 각 조건이 참·거짓을 모두 가졌는지 본다.
조건-결정 커버리지는 조건과 결정 기준을 함께 만족한다. 변경 조건-결정 커버리지는 한 조건만 바꿨을 때 결정 결과가 바뀌는지도 확인한다. 다중 조건 커버리지는 가능한 조건 조합을 모두 시험한다.
기본 경로는 제어 흐름 그래프의 독립 경로를 골라 검사한다. 제어 흐름 테스트는 분기·반복 흐름을, 데이터 흐름 테스트는 변수의 정의와 사용 관계를, 루프 테스트는 반복문의 0회·1회·여러 회·경계 횟수를 중점적으로 검사한다.
3. 소프트웨어 테스트 원리와 테스트 장치
테스트 7원리 암기: “결혼 완전 초기 살집 정해 오빠.”
결=결함 존재 증명 / 완=완벽한 테스트 불가능 / 초=초기 테스트 / 살=살충제 패러독스 / 정=정황 의존성 / 오=오류 부재의 궤변
테스트는 결함이 있음을 보여 줄 뿐 결함이 없음을 완전히 증명하지 못한다. 같은 테스트만 반복하면 새 결함을 찾기 어렵고, 테스트는 초기에 시작할수록 수정 비용이 적다.
테스트 장치 암기: “상드러워, 하스레기 식당. 슈트와 케이스를 챙긴 드라이버가 멈춰서 스크립트 읽고, 목각 인형을 세워 시나리오 연습.”
드라이버는 하위 모듈이 아직 없을 때 상위 역할을 흉내 내는 장치이며 상향식 테스트에서 주로 쓴다. 스텁은 하위 모듈이 준비되지 않았을 때 미리 정한 값을 돌려주는 가짜 하위 모듈이며 하향식 테스트에서 주로 쓴다.
테스트 슈트는 관련 테스트케이스의 묶음이고, 테스트 케이스는 하나의 입력·기대 결과를 가진 시험 단위다. 시나리오는 사용자 흐름, 스크립트는 실행 절차를 자동화한 명령, 목 오브젝트는 실제 객체처럼 행동을 검증하도록 만든 가짜 객체다.
4. 알고리즘: 해싱과 이진 검색
해싱은 키를 해시 함수에 넣어 테이블 주소를 빠르게 찾는 방법이다.
암기법: “제제는 숫기가 없어서 풀만 무(먹어)”
제산법(키를 테이블 크기로 나눈 나머지) / 제곱법(키를 제곱해 중간 자리 사용) / 숫자 분석법(키의 숫자 분포 분석) / 폴딩법(키를 나누어 더함) / 기수 변환법(진법을 바꾼 뒤 주소화) / 무작위 방법(난수 사용)
서로 다른 키가 같은 주소를 얻는 충돌이 발생하면 체이닝이나 개방 주소법 등으로 처리한다.
이진 검색(Binary Search)은 정렬된 배열에서만 쓴다. [3, 8, 12, 17, 24, 31, 42]에서 31을 찾는다고 하자. 가운데 17과 비교해 31이 더 크므로 오른쪽 절반 [24, 31, 42]만 남긴다. 다시 가운데 31을 확인해 찾는다. 비교할 때마다 후보가 절반으로 줄어 시간 복잡도는 O(log n)이다.
5. 정렬 알고리즘: 실제 배열로 보기
암기법: “버선 신고 삽질하면 느려 터짐.” 버블·선택·삽입 정렬은 평균과 최악이 O(n²)이다. 단, 삽입 정렬은 이미 정렬된 경우 최선 O(n)이다.
버블 정렬(Bubble)[5, 2, 4, 1]에서 이웃끼리 비교한다.
5와 2 교환 → [2, 5, 4, 1]
5와 4 교환 → [2, 4, 5, 1]
5와 1 교환 → [2, 4, 1, 5]
한 바퀴마다 가장 큰 값이 오른쪽 끝으로 떠오른다.
선택 정렬(Selection)[5, 2, 4, 1] 전체에서 가장 작은 1을 골라 첫 자리 5와 바꾼다.
→ [1, 2, 4, 5]
매 회차 최소값을 선택해 앞자리부터 확정한다.
삽입 정렬(Insertion)[5 | 2, 4, 1]에서 2를 꺼내 5 앞에 끼운다.
→ [2, 5 | 4, 1]
4를 2와 5 사이에 넣는다.
→ [2, 4, 5 | 1]
카드 손패를 정리하듯 이미 정렬된 왼쪽 부분에 하나씩 삽입한다.
퀵 정렬(Quick)
암기: “퀵 배달은 빠를 때 빠르지만 배신할 때는 느림.”
기준값 Pivot을 정해 작은 값과 큰 값으로 나눈다. [4, 7, 2, 5, 1]에서 Pivot=4라면 왼쪽 [2, 1], Pivot [4], 오른쪽 [7, 5]로 나눈 뒤 각각을 다시 정렬한다. 최선·평균은 O(n log n), 한쪽으로만 계속 나뉘면 최악 O(n²)이다.
병합·힙 정렬
암기: “병장끼리 집합하면 빠름, 항상.” 둘 다 최선·평균·최악 O(n log n)이다.
병합 정렬은 [4, 1, 3, 2]를 [4,1], [3,2]로 나눈 뒤 각각 [1,4], [2,3]으로 정렬한다. 이후 앞에서 작은 값을 하나씩 골라 [1,2,3,4]로 합친다.
힙 정렬은 최대 힙을 만든 뒤 루트의 최댓값을 끝으로 보내고, 남은 부분을 다시 힙으로 만드는 과정을 반복한다.
6. 내외부 인터페이스·EAI·ESB
내외부 인터페이스 기술 표준 확인에서는 연계 대상, 방식(API·파일·DB·메시지), 프로토콜, 데이터 형식(JSON·XML 등), 식별자, 보안·인증, 오류 코드, 타임아웃, 버전과 변경 절차를 명확히 정한다.
EAI 구축 유형 암기: “포인트 허허 웃으며 메시 하이.”
포인트 투 포인트는 시스템끼리 직접 연결한다. 단순하지만 연결이 많아지면 복잡하다.
허브 앤 스포크는 중앙 허브가 연결을 관리한다.
메시지 버스는 공통 버스에 메시지를 실어 유연하게 연계한다.
하이브리드는 환경에 맞게 여러 방식을 섞는다.
ESB(Enterprise Service Bus)는 서비스 사이 메시지 전달을 중재하는 표준 기반 버스다. 프로토콜 변환, 데이터 변환, 라우팅, 보안, 모니터링을 공통으로 처리해 서비스 간 결합도를 낮춘다.
7. 인터페이스 구현 검증 도구
암기: “엑스피 엔셀웨 → 엑스피 안 살래.”
XUnit, STAF, FitNesse, NTAF, Selenium, Watir를 말한다. XUnit은 단위 테스트 프레임워크 계열, STAF는 테스트 자동화 프레임워크, FitNesse는 인수 테스트·협업 명세, NTAF는 테스트 자동화 프레임워크, Selenium과 Watir는 웹 브라우저 기반 자동화 테스트 도구다.
공부하면서 개인적으로 중요하다고 생각하는 용어
테스트케이스의 기대 결과, 단위→통합→시스템→인수 테스트 레벨, 블랙박스와 화이트박스의 관점 차이가 핵심이다. 알고리즘에서는 정렬 전제조건과 시간 복잡도를 함께 외우고, EAI·ESB는 여러 시스템을 느슨하게 연결한다는 목적을 잡아야 한다.
공부하면서 이해하지 못한 용어
결정·조건·변경 조건-결정 커버리지는 조건문 하나를 만들어 참·거짓 표를 직접 그려 봐야 구분된다. 퀵 정렬은 Pivot 선택에 따라 최악 시간이 달라지고, ESB는 단순 메시지 전송과 달리 변환·라우팅·중재 기능을 제공한다.
오늘 공부한것 소회
테스트 용어와 정렬 알고리즘은 목록으로 외우면 쉽게 섞인다. 오늘은 자판기·카드 정리·상자 분류 같은 장면을 붙이고 배열이 실제로 변하는 과정을 적어 보니 차이가 보였다. 다음에는 같은 배열을 직접 손으로 정렬하고, 커버리지는 조건문 하나를 만들어 경로별로 체크해 봐야겠다.
'AI > 정보처리기사_스터디' 카테고리의 다른 글
| Day15)정처기_필기(자료구조 · 통합구현 · DRM · 제품 품질 표준) (1) | 2026.08.01 |
|---|---|
| Day14)정보처리기사_필기-애플리케이션 설계, 인터페이스 설계 (0) | 2026.07.31 |
| Day13)정처기 1과목 요구사항 확인·화면 설계 정리 | p.1-2~p.1-55 (0) | 2026.07.29 |
| Day12)정처기 5과목 소프트웨어 개발 보안 구축 정리 | p.5-76~p.5-141 (1) | 2026.07.28 |
| Day11)IT 프로젝트 정보시스템 구축관리p.5-38~p.5-72 (0) | 2026.07.25 |