SDLC는개발 팀이  소프트웨어를 설계하고 구축하는 데 효율적인 프로세스를 의미한다.

일반적으로는 요구사항 분석, 설계, 개발, 테스트, 운영 단계로 구성되어 있다.

 

소프트웨어 개발 생명주기는, QA에게도 중요한 소프트웨어 공학 지식 중 하나이다.

프로세스 이해를 통해서 효과적인 테스트 계획을 수립할 수 있을 뿐 아니라 결함 예방이 가능하다.

 

예를 들어, 요구 사항 분석 단계에서 요구사항을 이해하고 이를 기반으로 테스트 계획을 수립하고,

이를 통해 결함을 예방함으로써 이후 단계에서 발생할 수 있는 문제를 줄일 수 있다.

 

동시에 체계적인 관리 프레임워크를 제공함으로써, 팀 간 협업을 강화하고 제품 품질을 향상시킬 수 있다.

 

소프트웨어 개발 생명주기에는 폭포수, V모델, 나선형 모델, 애자일 모델 등 다양한 모델이 있는데,

프로젝트의 특성과 요구사항에 따라 적절하게 선택되어야 긍정적인 영향을 받을 수 있다.

 

예를 들어, 폭포수 모델은 명확한 요구사항과 단계적 접근이 필요한 경우에 적합하고,

반대로 애자일 모델은 유연하고 빠른 피드백 반영이 중요한 프로젝트에 적합하다고 볼 수 있다.

 

그렇다면, QA로서, SDLC의 각 단계에서 수행해야 하는 주요 활동은 무엇을까?


  1. 요구사항 수집 및 분석 단계
    • 요구사항 검토 : 요구사항 문서를 검토하여 요구사항이 명확하고 테스트 가능한지 등을 확인한다.
    • 테스트 가능성 분석 : 각 요구사항을 어떻게 테스트할 지 평가한다.
    • 테스트 계획 수립 : 요구사항을 기반으로 초기 테스트 계획을 만들고, 테스트 범위와 목표를 설정한다.
    • 리스크 분석 : 요구사항에 기반하여 잠재적 리스트를 식별하고, 관리 계획을 만든다.
  2. 계획 단계
    1. 테스트 전략 개발 : 전체 테스트 접근 방식과 전략을 개발한다.
    2. 자원 준비 : 인력, 도구, 환경과 같은 테스트 자원을 준비한다.
    3. 일정 수립 : 테스트 활동의 일정을 계획한다.
    4. 테스트 비용 추정 : 테스트 활동에 필요한 비용을 추정한다.
  3. 설계 단계
    1. 설계 검토 : 설계 문서를 검토하여 요구사항을 충족하는 지 확인한다.
    2. 테스트 케이스 설계 : 설계 문서를 기반으로 구체적인 테스트 케이스를 설계한다.
    3. 테스트 시나리오 개발 : 전체 시스템 테스트를 위한 시나리오를 개발한다.
    4. 테스트 데이터 준비 : 테스트에 필요한 데이터를 준비한다.
  4. 개발 단계
    1. 단위 테스트 검토 : 개발자가 작성한 단위 테스트 케이스와 결과를 검토한다.
    2. 테스트 스크립트 개발 : 자동화 테스트 스크립트를 작성한다.
    3. 정적 코드 분석 : 코드를 정적 분석 도구를 사용하여, 잠재적 결함을 식별한다.
    4. 연속 통합 지원 : 연속 통합 환경에서 테스트 자동화를 설정하고 관리한다.
  5. 테스트 단계
    1. 테스트 실행 : 설계된 테스트 케이스를 실행하고 결과를 기록한다.
    2. 결함 보고 : 발견된 결함을 BTS 에 보고하고 개발팀과 협력하여 수정, 확인 테스트를 진행한다.
    3. 리그레션 테스트 : 수정된 결함이 새 결함을 초래하지 않았는지 확인한다.
    4. 성능 테스트 : 시스템의 성능 테스트를 수행한다.
  6. 배포 단계
    1. 배포 전 검증 : 최종 빌드가 요구사항을 충족하고, 결함이 없는지 확인한다.
    2. 배포 계획 검토 : 배포 계획을 확인하고 준비가 되었는지 확인한다.
    3. 배포 후 모니터링 : 배포 후 일정 기간동안 모니터링하고 문제를 식별한다.
  7. 운영 및 유지보수 단계
    1. 결함 관리 : 운영 중 발견한 결함을 추적하고 수정한다.
    2. 리그레션 테스트 : 유지보수 릴리즈에서 변경사항에 대한 리그레션 테스트를 수정한다.
    3. 성능 모니터링 : 시스템 성능을 지속적으로 모니터링하고 최적화한다.
    4. 지속적 개선 : cs와 모니터링한 데이터를 기반으로 시스템을 지속적으로 개선한다.

즉 QA는 SDLC의 각 단계에서 다양한 활동을 통해 소프트웨어의 품질을 보장할 수 있다.

테스트 단계 뿐 아니라 shift-left를 통해 같이 테스팅 활동을 개발 주기의 초기 단계부터 기여해야 한다.

 

여담으로 최근에 QA와 관련된 책을 읽고 있는데 그곳에서 인상깊게 읽은 문장이 있다.

담당하는 활동과 임무에 따라 명칭을 분류하여 본인의 역할을 현재 하는 활동에 제한하지 않아야 한다는 것입니다. 스스로 직무상의 한계를 정하고 업무 범위를 넘어가지 않으려는 태도를 취하지 말아야 합니다. 품질을 검증하고 관리하는 직무를 담당하는 전문가로서 모든 활동과 임무를 아우를 수 있는 수준에 이를 때까지 도전과 성장을 도모해야 합니다. 결국 자기 개발하는 것을 멈추지 않는 것이 중요하다는 것을 말하고 싶습니다.

 

QA는 결국 모든 개발 단계에 기여할 수 있고, 그로 인해 성장할 수 있는 범위가 매우 크고 방대하다.

소프트웨어 공학에 대한 이해와 테스팅에 대한 기술적인 지식을 갖추는 등의 노력을 통해

경쟁력 있는 역량을 쌓고 자신의 핵심 가치를 키워나가는 것이 중요하다고 생각한다.