제135회 정보관리기술사 4교시 3번 — SQA·코드리뷰·정적분석·Quality Gate

정보관리기술사 · 135회 4교시 · 3번 · 배점 25점

제135회 정보관리기술사 4교시 3번

서술형 | 25점
[문제] 소프트웨어 품질 보증(SQA: Software Quality Assurance)의 개념과 테스팅과의 차이를 설명하고, 코드 리뷰(Code Review)의 유형 (인스펙션, 워크스루, 피어 리뷰)과 효과적인 코드 리뷰 프로세스를 서술하시오. 또한 정적 코드 분석(Static Code Analysis) 도구의 유형과 CI/CD 파이프라인에서의 품질 게이트(Quality Gate) 적용 전략을 논하시오.

1. SQA 개념과 테스팅과의 차이

SQA(Software Quality Assurance)는 소프트웨어 개발 프로세스 전반에 걸쳐 품질 표준·방법론·절차를 수립하고 준수를 보장하는 활동이다.

구분 SQA 소프트웨어 테스팅
목적 프로세스 품질 보장 (결함 예방) 제품 결함 발견 (결함 탐지)
범위 개발 프로세스 전체 수명주기 개발 완료 후 주로 실행
활동 프로세스 감사, 표준 수립, 교육, 코드 리뷰 단위·통합·시스템·인수 테스트 실행

2. 코드 리뷰 유형 비교

유형 특성 참여자 형식성
인스펙션 (Inspection) 가장 공식적인 리뷰. 역할(진행자·작성자·검토자·리코더) 분리. 결함 기록·추적 4~6명 팀 높음 (Fagan Inspection)
워크스루 (Walkthrough) 작성자가 직접 코드를 설명하며 참가자가 질문·의견 제시 작성자 주도 중간
피어 리뷰 (Peer Review) 동료 간 1:1 또는 소규모 리뷰. Pull Request 기반 코드 리뷰가 대표 형태 2~3명 낮음 (비공식적)

효과적인 코드 리뷰 원칙: ① 200~400줄 이하 단위로 리뷰 ② 60분 미만 집중 ③ 코드 스타일은 Linter 자동화 ④ 승인/변경요청 명확히 ⑤ 개인 비판 아닌 코드 비판

3. 정적 코드 분석 도구 유형

유형 분석 대상 대표 도구
SAST (정적 보안 분석) 소스 코드의 보안 취약점 (SQL Injection, XSS, 하드코딩 비밀번호) SonarQube, Checkmarx, Semgrep, Snyk Code
코드 품질 분석 복잡도, 중복 코드, 코드 스멜, 기술 부채 SonarQube, ESLint, PMD, Pylint
SCA (소프트웨어 구성 분석) 오픈소스 라이브러리 취약점·라이선스 Dependabot, Snyk, OWASP Dependency-Check
IaC 분석 Terraform·K8s YAML의 보안 구성 오류 Checkov, tfsec, KICS

4. CI/CD 품질 게이트(Quality Gate) 전략

  • SonarQube Quality Gate: 코드 커버리지 >80%, 새 취약점 0, 코드 중복 <3% 등 기준 미충족 시 파이프라인 차단
  • Shift Left 보안: PR 생성 시 SAST·SCA 자동 실행. 고위험 취약점 발견 시 머지 차단
  • 단계별 게이트: 빌드 → 단위 테스트 커버리지 → SAST → 통합 테스트 → DAST → 배포 승인 단계별 통과 조건
  • 이진 결정: 게이트는 통과/실패로만 결정. 경고(Warning)는 배포 차단하지 않되 기술 부채 대시보드에 누적 가시화
[ 결론 ]

SQA는 테스팅과 달리 개발 전 과정에서 품질을 예방적으로 보장한다. 코드 리뷰(인스펙션·워크스루·피어 리뷰)는 결함을 조기 발견하고, SAST·SCA·Quality Gate를 CI/CD에 통합하여 코드 품질·보안을 자동으로 검증함으로써 고품질 소프트웨어를 지속적으로 배포할 수 있다.

Leave a Comment