이 문서는 본 프로젝트에서 수행하는 테스트의 목적과 범위를 정의하고,
각 테스트가 어떤 방식으로 소프트웨어의 품질과 신뢰성을 보장하는지 설명합니다.
단위 테스트(Unit Test)부터 통합 테스트(Integration Test), 보안 및 성능 테스트,
그리고 CI/CD 파이프라인 자체의 검증에 이르기까지 전 범위의 테스트 전략을 포함합니다.
모든 테스트는 자동화된 DevSecOps 환경을 기준으로 설계되며,
코드 작성 → 빌드 → 배포 → 운영까지의 전체 라이프사이클에서 신뢰성 있는 품질 관리를 목표로 합니다.
| [PM] HanJH @letsgojh0810 |
[PL] nahong_c @HongChan1412 |
Kim YeJin @yeejkim |
Park ji hye @parkjhhh |
Seok Hye Jin @HyeJinSeok |
- 코드 단위의 기능 정확성과 변경에 따른 회귀(regression) 오류 방지
- 서비스 간 연동 및 데이터 흐름의 정상 작동 여부 확인
- 이미지 및 의존성 수준에서의 보안 위협 사전 탐지
- 대량 트래픽, 장시간 부하 등 실 운영 환경 시뮬레이션을 통한 시스템 검증
- 배포 파이프라인(CI/CD)의 자동화 신뢰성 및 운영 가능성 검증
본 테스트 전략을 통해 다음과 같은 결과를 기대합니다:
- 배포 전 문제를 조기에 발견하여 수정 비용 최소화
- 고가용성 및 확장성을 고려한 안정적인 아키텍처 보장
- 보안 사고 예방 및 신속한 대응 체계 수립
- 사용자 관점에서의 품질 높은 서비스 제공 실현
| 테스트 항목 | 설명 | 도구 |
|---|---|---|
| 단위 테스트 | 서비스, 도메인, 유틸 등 함수 로직 검증 | JUnit, Mockito |
| 통합 테스트 | Controller ↔ Service ↔ DB 흐름 검증 | @SpringBootTest |
| 정적 코드 분석 | 코드 스타일, 버그, 보안 취약점 탐지 | SonarQube |
| 테스트 커버리지 측정 | 테스트가 얼마나 코드를 커버하는지 수치화 | JaCoCo |
| 테스트 항목 | 설명 | 도구 |
|---|---|---|
| 이미지 취약점 검사 | Docker 이미지의 취약점 탐지 | Trivy |
| 의존성 보안 검사 | 의존성 라이브러리의 보안 취약점 탐지 | OWASP Dependency-Check, Snyk |
| 시크릿 유출 검사 | Git 커밋 내 민감정보 노출 여부 탐지 | GitGuardian, Gitleaks |
| 테스트 항목 | 설명 | 도구 |
|---|---|---|
| 부하 테스트 (Load Testing) | 일정 시간 동안 지속적인 요청 부하 | K6, JMeter, Locust |
| 스트레스 테스트 (Stress Testing) | 시스템 한계까지 부하를 가해 처리 능력 측정 | K6, Locust, Gatling |
| 스파이크 테스트 (Spike Testing) | 짧은 시간 내 급격한 요청 증가에 대한 반응 평가 | K6, Artillery |
| 지속 테스트 (Soak Testing) | 장시간 부하 유지 시 안정성 및 리소스 누수 확인 | K6, Locust |
| 단순 HTTP API 부하 | 단일 엔드포인트 집중 부하 | Hey, Vegeta |
| 테스트 항목 | 설명 | 도구 |
|---|---|---|
| 파이프라인 자동 실행 검증 | Git push 시 파이프라인 자동 실행 여부 검증 | GitLab CI, Jenkins, GitHub Actions |
| Smoke 테스트 | 배포 후 /health 등 API 응답 여부 확인 |
curl, HTTPie, RestAssured |
| 테스트 항목 | 설명 | 도구 |
|---|---|---|
| 지연/응답 시간 테스트 | API나 기능 호출 시 응답 속도를 측정하여 성능 병목 발견 | k6, Apache Bench (ab), JMeter |
| 장애 내성 테스트 | 외부 서비스/API/DB 장애 발생 시 시스템이 복원되거나 graceful하게 동작하는지 검증 | Resilience4j, Spring Retry |
| 경계값 테스트 | 입력값의 최소/최대, 경계 근처 값에 대해 시스템이 정확히 동작하는지 검증 | JUnit, Postman, Newman |