성과를 만드는 커뮤니케이션 전략
Brunch Story
시스템 버전 관리(a.k.a 형상관리)란, 소프트웨어의 변경 사항을 추적하고 여러 사용자들의 작업을 체계적으로 통제하고 조율하기 위한 것으로 소스코드, 개발환경, 배포버전 등 작업 내역에 대한 관리 체계를 정의한 것입니다. 형상관리는 단순히 소프트웨어 운용을 위한 시스템 버전 관리만을 의미하지 않고 소프트웨어와 연관된 문서나 파일의 변경사항 등을 포괄하여 관리합니다.
개발에서는 버전관리를 아래와 같이 정의하여 사용 할 수 있습니다.
배포 관리 : 작업자별 배포 시점을 관리. EX) 태그(Tag)를 달아 브랜치 버전이나 배포 시점을 관리
복구 : 버전 관리를 통해 복구 또는 백업 가능
협업 : 작업자별 수정사항을 쉽게 파악
그럼, 소프트웨어 테스팅 관점에서 형상관리가 필요한 이유와 버전 관리를 통해 얻을 수 있는 이점은 무엇일까요. QA관점의 버전관리를 이야기해보겠습니다.
QA가 프로젝트나 제품에 대한 테스트를 수행할 때 별도의 테스트 환경(시스템, 컴포넌트, 데이터 등)에서 이를 수행합니다. 테스트 환경은 프로젝트나 제품별로 테스트 요청이 발생할 때마다 새롭게 생성하여 사용할 수 없습니다. 제한된 환경 내에서 테스트 요청은 여러 건이 발생할 수 있고 모든 테스트 항목이 서로 섞여 정확한 테스트를 불가능하게 하여 테스트 실패의 결과를 초래하지 않기 위해 시스템 버전을 관리하는 형상 관리 활동이 필요합니다.
안전한 환경에서 신뢰할 수 있는 테스트 결과를 얻기 위해 테스트 수행 시스템에 대한 테스터의 요구사항은 다음과 같습니다.
각각의 테스트 항목은 다른 테스트와 독립적(테스트 생명주기, 버그 관리, 데이터베이스 등)이어야 한다.
버전 관리되지 않은 시스템으로 인해 의도하지 않은 사이드 이펙트가 발생하지 않아야 한다.
(EX: 테스트 데이터 파일의 변경/삭제, 소프트웨어 환경의 약속된 기준 사항 위반)
소프트웨어 개발과 연관된 테스트웨어(Testware)* 항목이 식별되고 그 상태로 정확하게 유지되어야 한다. *테스트 웨어: 테스트 계획, 설계, 실행, 평가에 활용하기 위해 테스트 기간 동안 생성되는 산출물
시스템 버전을 제어할 수 있고, 변경 사항을 버전별로 추적 및 관리할 수 있어야 한다.
테스터에게 형상 관리는 다음의 효과를 기대할 수 있게 합니다. 시스템이나 소프트웨어에 고유 식별 번호를 부여함으로써 각각의 테스트 항목을 식별할 수 있고, 테스트 항목 간의 충돌을 막아 배타적으로 테스트할 수 있게 도와줍니다. 또한 테스트웨어 버전을 관리하고, 변경사항을 기록하고, 테스트 항목 버전과 연결해서 테스트 프로세스 전반에 걸쳐 추적성을 유지할 수 있게 해주고 상호 참조할 수 있게 도와줍니다.
형상 관리를 잘 유지하고 관리하려면 고유 식별 번호가 부여된 테스트 환경의 테스트 대상, 가용된 자원, 테스트 문서, 파일 시스템, 변경 사항 등에 대해 자세히 기록하여 문서화해야 합니다. 이를 통해 원하는 형태로 테스트 수행 환경을 다양하게 이용할 수 있습니다.
버전 관리 규칙
프로젝트나 제품 유지 보수 시 사용할 버전(고유 식별 번호)에 대한 표기 방법이나 정의는 별도로 없습니다. 팀 혹은 구성원과의 합의로 빌드 버전, 배포 버전, 환경 버전, 문서 버전, 버그 관리 버전을 동일하게 사용하기 위한 규칙을 정하고 약속된 규칙을 준수하는 것이 중요합니다.
몇 가지 버전 네이밍 규칙에 대한 예시를 살펴보겠습니다.
예시①
‘배포 버전_브랜치 Tag number_프로젝트명_테스트 서버 환경’ 구성으로 규칙을 정할 수 있습니다. '배포버전-1.0/태깅 번호-123456/프로젝트-A/테스트 서버-1번'을 사용한다는 가정하에 표기되는 고유 식별 번호는 “1.0_1234566_ProjectA_1”이 됩니다.
예시②
iOS/안드로이드의 빌드 버전과 Bundle Version을 사용하는 방법입니다. ‘프로젝트명/빌드 버전/bundle version’라는 규칙을 적용하면, 고유 식별 번호는 “ProjectA_1.3_201.4”가 됩니다.
예시③
[Major].[Minor].[Patch] 순으로 버전 규칙을 적용하는 방법입니다. 해당 방식은 Github의 공동창업자인 톰 프레스턴-베르너에 의해 설계된 방법을 인용하는 것입니다.
빌드 교체와 같이 기존 버전과 호환되지 않는 메이저 기능 변경 시 Major 버전 수정, 기존 버전과 호환되면서 마이너 기능 변경 시 Minor 버전 수정, 기존 버전과 호환되면서 리소스, 데이터 등 사소한 패치 발생 시 Patch 버전을 수정하는 것입니다. 예를 들어, 기존 버전 1.0.0에서 major 버전업 시 2.0.0, minor 버전업 시 1.1.0, patch 버전업 시 1.0.1이 고유 식별 번호가 됩니다.
다음 내용이 궁금하다면?
이미 회원이신가요?
2024년 4월 24일 오전 7:46
👋 성과를 만드는 커뮤니케이션 전략
... 더 보기