테스트
테스트 커버리지
구문 커버리지 : 구문에 대해 한번 이상 수행
조건 커버리지 : 개별 조건식 / x > 0
결정 커버리지 === 분기 : 결정 포인트 내의 모든 분기문에 대해 수행 / if(x > 0 && y < 15)
조건/결정 커버리지 : 개별 조건식과 결정 포인트 모두 T/F가 나와야 함
변경 조건/결정 커버리지 : 개별 조건식이 결정 전체 결과에 영향을 주는지 확인
다중 조건 커버리지 : 모든 가능한 조합 100 만족
블랙박스 테스트 기법
화이트박스 테스트 : 소스코드 (개발자 위주 테스트)
블랙박스 테스트 : 기능 (사용자 위주 테스트)
- 동등 분할 기법(Equivalance Partitioning Testing) : 입력 데이터를 여러 구간으로 나누고, 각 구간의 대표값으로 테스트 케이스 구성하여 검사
- 경계값 분석 기법(Boundary Value Analysis) : 경계값 중심으로 테스트 진행
- 원인-효과 그래프 검사(Cause-Effect Graphing Test) : 입력 데이터가 출력값에 미치는 영향을 분석해서 가장 효율적인 케이스 선정
- 오류 예측 검사(Error Guessing) : 테스터의 직관으로 오류를 찾아내는 기법
- 비교 검사(Comparison Testing) : 여러 프로그램으로 돌려서 동일한 결과가 나오는지 테스트
- 상태 전이 검사(State Transition Testing) : 다른 상태로 전이되는 경우의 수를 모두 테스트
테스트 레벨
소프트웨어 개발 과정에서 테스트가 수행되는 단계

통합 테스트
상향식 : 드라이버
하향식 : 스텁
인수 테스트
알파 : 개발자
베타 : 사용자
테스트 케이스 구성요소
- 식별자 ID
- 테스트 항목
- 테스트 조건
- 테스트 데이터
- 예상 결과
인터페이스
인터페이스 보안
EAI
기업내 다양한 애플리케이션을 통합
- Point-to-Point
미들웨어 없이 직접 애플리케이션끼리 연결
- Hub & Spoke
중앙 허브를 통해 중앙 집중적으로 연결 (데이터 전송 보장 / 확장 용이)
- Message Bus
미들웨어를 사용해 애플리케이션 간 메세지 전달하는 방식 (확장성 / 대용량 처리 가능)
- Hybrid
내부 - Hub & Spoke / 외부 - Message Bus
인터페이스 통신 기술 4가지
클라이언트와 서버가 데이터를 주고받기 위해 사용하는 다양한 통신 기술
AJAX
- XMLHttpRequest 객체를 사용하여 서버에 요청보내고 응답 받음
- 페이지 새로고침 없이 백그라운드에서 서버와 데이터를 비동기적으로 교환하여 동적으로 화면 갱신
Fetch API
- XMLHttpRequest 객체를 대체하는 현대 브라우저 내장 API
- Promise 기반으로 설계되어 코드 가독성이 높음
- 현재 웹 표준으로 자리잡아 AJAX보다 더 많이 사용
WebSockets
- 클라이언트와 서버 간에 양방향 실시간 통신을 지원하는 프로토콜
- 한번 연결 수립되면 계속 유지되어 데이터 교환이 자유로움
- 지연 시간이 매우 낮아서, 채팅, 온라인 게임, 주식 시세 알림 등 사용됨
GraphQL
- API를 위한 쿼리 언어이자, REST 아키텍처의 대안
- 클라이언트가 필요한 데이터의 구조를 직접 요청하여 불필요한 데이터 전송이 없음
- 한번에 여러 종류의 데이터 요청 가능, 강력한 타입 기반 시스템
데이터 표현 형식
시스템 간 데이터를 교환할 때 약속된 형식이 필요함. 대표 3개 데이터 형식
JSON
- 자바스크립트 객체 기반, 사람이 읽기 쉬운 텍스트 기반 데이터 교환 방식
- key-value 구조, 웹 환경, 특히 REST API에서 주로 사용
XML
- <>를 사용하여 데이터 구조를 계층적으로 표현하는 마크업 언어
- 트리구조로 확장성에 용이하고 복잡한 데이터 표현에 용이
- 과거 웹 서비스 SOAP에서 사용
YAML
- 사람이 읽고 쓰기 편한 것에 중점을 둔 데이터 직렬화 형식
- 주석( #)을 사용하여 설명 추가 가능
웹 서비스 인터페이스 방식
웹 서비스는 서로 다른 시스템이 인터넷을 통해 상호작용하는 방식
SOAP
- HTTP, SMTP 등 위에서 XML 기반의 메시지를 교환하여 원격 프로시저를 호출하는, 매우 엄격한 규칙을 가진 프로토콜
REST
- URI를 통해 자원을 식별하고, HTTP 메서드를 통해 해당 자원에 대한 행위를 표현하는 원칙을 기반으로 하는 소프트웨어 아키텍처 스타일