책 요약 – 시스템 테스팅 스케쥴링 예 by NAIK
출처: 책 SOFTWARE TESTING AND QUALITY ASSURANCE Theory and Practice, KSHIRASAGAR NAIK, PRIYADARSHI TRIPATHY, 2008년, 12장 System Test Planning and Automation, 387~391페이지
간트 차트를 사용한 시스템 테스팅 스케쥴링에 대해 11장에서 예로 나왔던 FR-ATM PVC 서비스 인터워킹 시스템(관련 포스팅 보려면 여기 클릭)을 사례로 설명한다.
12.9 스케쥴링과 테스트 마일스톤
비용과 계약 기한 준수를 위해 테스트 프로젝트의 일정과 마일스톤(이정표)을 간략하게 설명하는 것이 중요하다. 오늘날 시장의 치열한 경쟁 때문에 조직은 마케팅 및 영업 부서에서 권장하는 시간 내에 제품을 출시해야 한다. 시스템 테스트 그룹은 정해진 시간 내에 제품을 출시해야 하는 마케팅 요구사항을 수용하기 위해 테스팅 노력(공수)을 분배할 수밖에 없다. 제품 출시에 큰 지연이 없고 품질도 손상시키지 않으면서 제 시간에 시스템 테스팅 단계를 완료하는 다양한 길(방안)을 고려해야 한다. 시스템 테스팅 액티비티를 스케줄링하는 데 있어서 시스템 테스트 그룹 리더는 예상 생산성을 달성하도록 가용한 리소스를 조정하는 노력을 한다. 리더는 작업(tasks) 간의 상호의존성(interdependency)을 고려하고, 가능하면 작업이 병행되도록 일정을 잡는다. 테스트 프로젝트의 진척을 정확하게 나타내기 위해 테스트 일정에 마일스톤, 리뷰, 테스트 결과물(deliverables) 등을 명시한다.
시스템 테스팅의 스케쥴링은 소프트웨어 개발 프로젝트의 전체 스케줄링의 한 부분이다. 시스템 테스팅을 위한 일정이 생성된 후 이를 전체 소프트웨어 프로젝트 계획과 병합한다. 테스트 프로젝트를 효과적으로 스케쥴링 하려면 아래 단계를 이해하고 고민해야 한다.
- 세부 작업 목록(a detailed list of tasks)을 식별한다.
- 테스트 프로젝트 동안 달성해야 하는 주요 마일스톤을 모두 나열한다.
- 테스트 작업 간 상호종속성과 작업 흐름에 영향을 미칠 수 있는 소프트웨어 마일스톤을 식별한다. 또한 동시에 수행할 수 있는 작업을 식별한다(예, 테스트 베드 설정과 테스트케이스 생성을 병행)
- 목록에 있는 각 작업을 수행하는 데 필요한 다양한 종류의 리소스와 전문 지식을 식별한다.
- 장비 및 인적 리소스 같은 각 작업에 필요한 리소스의 양을 추정한다.
- 우리 테스팅 프로젝트가 쓸 수 있는 리소스의 유형과 수량을 식별한다. 예를 들어, 휴먼 리소스의 경우 가용한 사람 및 가용한 날짜, 개별 인적 자원의 파트타임 또는 풀타임 가용성, 개별 인적 자원의 전문 분야를 식별한다. 하드웨어/소프트웨어 리소스의 경우 테스트 환경 구축에 필요한 모든 하드웨어/소프트웨어의 가용성을 확인한다.
- 각 작업에 리소스를 할당한다. 이 할당이 작업별로 순차적으로 이루어지는 데, 테스트 프로젝트의 종료 날짜부터 시작해서 역순으로 할당을 한다.
- 각 작업의 시작 날짜와 종료 날짜를 정한다. 예를 들어, 테스트 실행 작업은 앞 섹션에서 논의된 테스트케이스 실행 공수 추정치를 기반으로 한다. 질병, 휴가, 교육, 회의 같은 예기치 않은 이벤트로 인한 지연을 허용한다.
- 이 시점에서 나머지 마일스톤을 전체 스케쥴에 끼워 넣는다. 이 때 리소스 할당 및 일정 날짜를 조정해야 할 수도 있다.
- 앞서 식별된 작업 간 상호의존성을 고려하여 각 작업의 가능한 가장 이른 시작일과 종료일 그리고 가장 늦은 시작일과 종료일을 결정한다.
- 우리의 가정(assumptions)이 합리적인지 따지기 위해 스케쥴을 검토한다. 이 단계에서 "만약에(what if)"라는 질문을 하는 것이 좋은 아이디어이다. 가정이 변경됨에 따라 반복적으로 일정을 분석하고 변경한다.
- 일정을 충족하는 데 필요한 조건을 식별한다. 또한 이러한 조건이 충족되지 않을 가능성에 대비하여 준비해야 하는 비상 계획(contingency plan)을 식별한다. 예를 들어, 특정 날짜까지 풀타임 테스트 엔지니어를 고용할 수 없는 경우 도급업자에게 가거나 또는 다른 프로젝트의 다른 테스트 엔지니어에게 눈을 돌린다.
- 우리의 가정을 문서화한다. 예를 들어 i) 테스트 엔지니어가 특정 날짜까지 반드시 고용되어야 하고, (ii) 새 장비가 특정 날짜까지 반드시 사용가능해야 하며, (iii) 테스트 환경을 설정하기 위한 공간이 사용 가능해야 한다.
- 테스트 팀과 일정을 검토하고 피드백을 받는다. 그들의 적극적인 참여 없이는 일정을 맞추기 어려울 수 있다.
테스트 공수 추정 및 일정 수립은 몇 차례의 반복 라운드를 거쳐야 신뢰할만한 완성도가 된다. 테스트 팀 리더가 관리 차원에서 직면할 수 있는 주요 문제 중 하나가 “테스트케이스 실행 시간을 어떻게 단축할 것인가”라는 고민이다. 테스팅의 범위(scope)와 깊이(depth)를 줄이면 일부 작업이 완전히 사라질 수 있다. 시간 단축이 불가능하면 관리자는 숙련도가 높은 테스트 전문가를 초빙하거나, 사람들에게 초과 근무를 요청하거나, 사람 수와 테스트 베드 수를 추가하거나 해야 한다. 이 실행 시간을 줄이는 또 다른 방법은 모든 테스트케이스를 사전에 자동화하여 실행 시간을 대폭 줄이는 것이다.
간트 차트(Gantt Chart)
간트 차트는 개별 작업의 기간, 종속성, 순서를 포함하는 프로젝트 일정을 나타내는 데 널리 사용된다. 일반적인 간트 차트는 각 작업의 시작 지점과 끝 지점(각 작업을 완료하는 데 필요한 총 기간)을 그래픽으로 표시하며, 프로젝트 진행에 따라 각 작업의 완료율도 나타낸다. 간트 차트를 통해 계획자는 프로젝트 기간을 평가하고, 필요한 리소스를 정의하고, 작업을 수행해야 하는 순서를 배치할 수 있다. 또한 작업 간의 종속성을 관리하는 데 유용하다.
간트 차트에서 각 작업은 하나의 행을 차지한다. 날짜는 프로젝트 기간에 따라 일, 주 또는 월 단위로 맨 위에 표시된다. 각 작업의 예상 시간은 가로 직사각형 또는 선으로 표시된다. 작업은 중첩되거나, 순차적 또는 병렬로 실행될 수 있다. 프로젝트에 중요한 이벤트가 종종 있으며, 이러한 이벤트를 프로젝트 타임라인에 표시하고 싶을 수 있다. 예를 들어, 프로토타입이 완료되는 날짜 또는 테스트 계획 검토 날짜를 강조 표시할 수 있다. 이를 간트 차트에 마일스톤 이벤트로 넣고 종종 다이아몬드와 같은 특수 기호로 표시한다. 간트 차트 구축 동안 작업을 관리 가능한 수(15개 또는 20개 이하)로 유지하여 차트가 한 페이지에 들어갈 수 있도록 한다. 복잡한 프로젝트의 경우 주요 작업(main tasks)의 하위 작업(subtasks)들의 타이밍을 자세히 설명하는 서브차트가 필요할 수도 있다. 팀 프로젝트의 특정 작업을 담당하는 팀 구성원을 식별하는 숫자나 이니셜을 표시할 수 있다.
FR–ATM PVC 서비스 인터워킹의 테스트 스케쥴링 예
아래 그림 12.2는 11장에서 논의한 FR-ATM PVC 서비스 인터워킹 프로젝트(관련 포스팅 클릭)의 테스트 일정을 간트 차트를 사용하여 나타낸 것이다. 이 테스트 일정을 계획할 때 다음과 같은 가정을 했다.
- 4명의 테스트 엔지니어(알렉스, 로한, 이누, 루시)가 첫날부터 이 프로젝트에 투입될 수 있으며, 알렉스는 이 프로젝트의 테스트 팀 리더이다.
- 4명의 엔지니어 모두 테스트팩토리에 테스트케이스를 생성하는 작업에 잘 훈련되어 있다.
- 4명의 엔지니어 모두 FR 및 ATM 프로토콜 분야에 대해 잘 알고 있다.
- 알렉스가 이 프로젝트의 테스트 계획을 개발하는 데 5일이 걸린다.
- 시스템 테스팅 기간 동안 휴가 계획이 있는 사람은 없다.
- 이 테스트 프로젝트에 필요한 테스트 장비를 사용할 수 있다.
테스트 환경 설정과 테스트케이스 생성이 동시에 이루어진다. 루시는 테스트 베드 설정을 담당하고 나머지 엔지니어는 테스트케이스 설계를 책임진다. 표 12.6에 주어진 공수 추정에서(관련 포스팅 클릭) 회귀 테스트케이스를 제외한 168개의 테스트케이스를 생성하는 데 약 35인일(person-days)을 예상했다. 알렉스, 이누, 로한의 3명의 테스트 엔지니어가 분담하여 이 테스트케이스를 설계하는 기간을 18일로 잡아 총 54인일의 작업 공수가 할당되었다. 이는 FR–ATM 서비스 인터네트워킹 프로토콜에 대한 교육 및 이해에 필요한 공수를 포함한 것이다. 첫 번째 테스트 주기는 ‘테스트 시작 기준 검토 회의’에서 테스트 시작 기준 충족이 확인된 후에 시작된다. 우리의 추정에 따르면 선택된 318개(회귀 테스트도 포함)의 테스트케이스를 모두 실행하는 데 60인일이 필요하다. 따라서 알렉스, 이누, 로한, 루시의 4명의 테스트 엔지니어가 모든 테스트케이스를 실행하는 데 15일을 할당했으며, 총 60인일의 리소스를 사용한다. 두 번째 테스트 주기 후에 소프트웨어가 베타 고객에게 출시될 예정이다. 최종 테스트 주기에서는 회귀 테스트를 위해 테스트케이스의 일부를 선택한다. 따라서 이 작업에는 단지 일주일이 할당된다. 소프트웨어는 최종 테스트 보고서가 작성되고 검토된 후 고객에게 릴리스된다.
그림 12.2 FR–ATM 서비스 인터워킹 테스트 프로젝트의 간트 차트