TIL - 20260123

juni·2026년 1월 22일

TIL

목록 보기
247/316

0123 정보처리기사 필기 (10/N): 4과목 - 소프트웨어 테스트와 형상 관리


✅ 1. 소프트웨어 테스트 (Software Test)

  • 소프트웨어 테스트란 개발된 소프트웨어에 잠재된 결함(Defect, Fault, Bug)을 찾아내고, 요구사항을 만족하는지 품질을 검증하기 위한 모든 활동입니다.

➕ 1-1. 테스트의 기본 원리

  • 완벽한 테스팅은 불가능: 모든 입력과 상황을 테스트하는 것은 불가능하므로, 리스크 분석과 우선순위에 따라 테스트 케이스를 선정해야 합니다.
  • 결함 집중 (Defect Clustering): 소프트웨어 결함의 대부분은 소수의 특정 모듈에 집중되어 발견되는 경향이 있습니다.
  • 살충제 패러독스 (Pesticide Paradox): 동일한 테스트 케이스를 반복하면, 더 이상 새로운 결함을 찾아내지 못합니다. 테스트 케이스는 지속적으로 검토하고 개선해야 합니다.
  • 테스팅은 개발 초기에 시작: 요구사항 분석 단계부터 테스트를 계획하고 시작해야, 후반부에 발생하는 오류 수정 비용을 줄일 수 있습니다.

➕ 1-2. 테스트의 종류 (V-모델 관점)

  • 소프트웨어 개발 단계를 V자 형태로 표현한 V-모델에서는, 각 개발 단계에 대응하는 테스트 레벨이 존재합니다.
개발 단계테스트 레벨테스트 관점설명
코딩단위 테스트
(Unit Test)
개발자 (White Box)• 모듈, 클래스, 함수 등 가장 작은 코드 단위를 테스트.
• 주로 개발자가 직접 수행.
설계통합 테스트
(Integration Test)
개발자/테스터 (Gray Box)• 단위 테스트를 통과한 모듈들을 결합하여, 모듈 간의 인터페이스와 상호작용이 올바른지 테스트.
요구분석시스템 테스트
(System Test)
테스터 (Black Box)• 개발된 소프트웨어가 전체 시스템으로서 요구사항을 만족하는지, 기능적/비기능적 측면을 모두 테스트.
-인수 테스트
(Acceptance Test)
사용자/고객 (Black Box)• 사용자가 직접 소프트웨어를 사용해보며, 실제 운영 환경에서 요구사항대로 동작하는지 최종 검수하는 테스트.

➕ 1-3. 테스트 기법 (블랙박스 vs 화이트박스)

  • 테스트 케이스를 설계하는 방법에 따라 크게 두 가지로 나뉩니다.
구분화이트박스 테스트 (White Box Test)블랙박스 테스트 (Black Box Test)
관점내부 구조와 로직 중심기능과 명세 중심
대상소스 코드의 모든 경로(분기, 조건)요구사항 명세서
목표코드의 논리적 경로를 테스트하여 커버리지를 높임요구된 기능이 정확하게 동작하는지 검증
종류구문 커버리지: 모든 문장을 한 번 이상 실행.
결정(분기) 커버리지: 모든 조건문의 /거짓을 한 번 이상 실행.
동등 분할: 유사한 입력값들을 하나의 그룹으로 묶어 테스트.
경계값 분석: 경계값(최소, 최대, 바로 위/아래)에서 오류가 발생할 확률이 높다는 점을 이용.
비유유리 상자 내부를 들여다보며 테스트검은 상자의 내용물은 모른 채, 입력과 출력만 보고 테스트

✅ 2. 형상 관리 (SCM - Software Configuration Management)

  • 형상 관리란 소프트웨어 개발 과정에서 발생하는 모든 산출물(소스 코드, 문서, 이미지 등)의 변경 사항을 체계적으로 추적하고 관리하는 활동입니다. "누가, 언제, 무엇을, 왜 변경했는지"에 대한 이력을 관리하는 것이 핵심입니다.

➕ 2-1. 형상 관리의 주요 기능

  • 버전 관리 (Versioning): 변경 사항이 발생할 때마다 새로운 버전을 부여하여, 특정 시점의 버전으로 되돌아갈(Rollback) 수 있게 합니다.
  • 체크인 (Check-in) / 커밋 (Commit): 로컬에서 수정한 내용을 중앙 저장소에 반영합니다.
  • 체크아웃 (Check-out) / 클론 (Clone): 중앙 저장소의 내용을 로컬 작업 공간으로 가져옵니다.
  • 브랜치 (Branch): 현재 개발 중인 주 라인(Master/Main)에 영향을 주지 않고, 새로운 기능을 개발하거나 버그를 수정하기 위해 만드는 독립적인 작업 공간.
  • 병합 (Merge): 브랜치에서 완료된 작업을 다시 주 라인으로 합치는 과정.

➕ 2-2. 형상 관리 도구

  • Git: 현재 가장 널리 사용되는 분산 버전 관리 시스템(DVCS).
    • 중앙 집중식(CVCS, e.g., SVN)과 달리, 각 개발자가 자신만의 로컬 저장소를 가집니다. 이를 통해 네트워크 연결 없이도 커밋하고 이력을 관리할 수 있으며, 브랜치와 병합 작업이 매우 빠르고 효율적입니다.
  • GitHub / GitLab: Git으로 관리되는 프로젝트를 원격에서 호스팅하고, 코드 리뷰, 이슈 트래킹 등 협업 기능을 제공하는 웹 기반 서비스.

📌 요약

  • 소프트웨어 테스트는 결함을 찾고 품질을 보증하는 활동이며, 단위 → 통합 → 시스템 → 인수 테스트 순으로 진행됩니다.
  • 화이트박스 테스트는 코드의 내부 구조를, 블랙박스 테스트기능 명세를 기반으로 테스트 케이스를 설계합니다.
  • 형상 관리(SCM)는 소프트웨어 개발 산출물의 변경 이력을 체계적으로 관리하는 활동입니다.
  • Git분산 버전 관리 시스템으로, 브랜치를 통해 여러 개발자가 동시에 독립적으로 작업하고, 병합을 통해 작업을 통합하는 효율적인 협업을 지원합니다.

0개의 댓글