소프트웨어 개발 수명주기 모델은 소프트웨어 개발 프로젝트의 각 단계에서 이루어지는 활동 유형과 이런 활동이 서로 어떻게 논리적 또 순차적으로 연결되는지 보여준다.
여러가지 소프트웨어 개발 수명주기 모델이 있으며, 각각 다른 테스팅 접근법을 요구한다.
학습 목표 : 소프트웨어 개발 수명주기에서의 소프트웨어 개발 활동과 테스트 활동의 관계를 설명할 수 있다.
테스터에게는 일반적으로 많이 사용되는 소프트웨어 개발 수명주기 모델을 잘 이해하는 것은 테스트 활동을 위해 필수적이다.
모든 소프트웨어 개발 수명주기 모델에 적용하기 좋은 테스팅의 특성은 다음과 같다.
어떤 소프트웨어 개발 수명주기 모델을 선택하더라도 테스팅을 초기에 시작하면 시간과 비용을 절약할 수 있다는 테스트 원리에 따라, 테스트 활동은 수명주기 초반에 시작해야 한다.
실러버스에서는 대표적으로 소프트웨어 개발 수명주기 모델을 2개로 분류한다.
순차적 개발 모델은 소프트웨어 개발 프로세스를 1차원적 선형(linear)의 순차적 활동으로 설명한다. 순차적 개발 모델의 예시는 다음이 있다.
폭포수 모델 : 개발 활동(ex:요구사항 분석, 설계, 코딩, 테스팅)이 순차적으로 이루어진다. 이 모델에서의 테스트 활동은 모든 개발활동을 완료한 후에 이루어진다.
v-모델: 테스팅을 초기에 시작하면 좋다는 원리를 토대로 테스트 프로세스를 전반적인 개발 프로세스에 통합한다. 또한, V-모델은 대응하는 각 개발 단계에 테스트 레벨을 부여함으로써 조기 테스팅을 좀 더 적극적으로 구현하고 있다.
순차적 개발 모델은 완성된 기능 세트를 포함한 소프트웨어를 배포할 수 있지만, 일반적으로 이해관계자와 사용자에게 배포하기까지 몇 개월 또는 몇 년이 걸린다.
점진적 개발은 요구사항 정의, 시스템 설계, 구축, 테스팅을 조각으로 나눠서 진행한다. 따라서 소프트웨어 기능은 점진적으로 늘어나게 된다. 이런 기능 증분의 크기는 다양하게 설정할 수 있다.
반복적 개발은 기능 집합을 종종 고정된 기간의 일련의 주기 안에서 같이 명시, 설계, 구축, 테스트할 때 발생한다. 반복주기에는 전체 프로젝트 범위에 대한 변경이나 기존 반복주기 동안 개발한 기능에 대한 수정이 포함될 수 있다.
각 반복주기에서는 전체 기능 세트 중 일부의 기능을 하는 소프트웨어를 만들어내고 소프트웨어 기능은 반복주기 횟수가 늘어남에 따라 점차 늘어나게 되고 완성된 소프트웨어가 배포되거나 개발이 중단될 때까지 진행된다.
대표적인 예로는
이런 모델을 활용해 컴포넌트, 시스템을 개발 시 전반적인 개발 과정에서 테스트 레벨을 중첩 혹은 반복적용하는 경우가 많아진다.
이상적으로는 각 기능의 배포 시점이 가까워짐에 따라 여러 테스트 레벨에서 테스트되는 것이다. 지속적인 전달 혹은 배포를 활용하는 팀도 있는데, 두 가지 모두 릴리스 파이프라인에 속한 여러 테스트 레벨에 대해 상당한 자동화 구현을 요구한다.
이러한 방법을 활용하는 개발 방법론 다수는 자기조직적인 팀 개념도 수용하고 있는데, 이 개념으로 인해 테스팅 작업을 편성하는 방법과 테스터와 개발자 간의 관계에도 변화가 일어날 수 있다.
소프트웨어 증분은 시스템이 커짐에 따라 리그레션 테스팅의 중요성도 증가하게 된다.
순차적 모델과 다르게 반복적 점진적 모델은 사용 가능한 소프트웨어를 몇 주, 또는 며칠 만에 전달할 수 있다. 다만, 전체 요구사항을 충족하는 제품은 몇 개월 또는 몇년에 걸쳐 전달하게 된다.