김영민 와이즈스톤 팀장

[컴퓨터월드]

▲ 김영민 와이즈스톤 팀장

지난 호에는 품질 이슈로 발생될 수 있는 다양한 문제점에 대해 알아봤다. 품질 이슈를 해결하기 위한 방법으로 테스트와 품질보증 활동이 필요하다는 점을 강조했다. 이번 호에서는 품질 이슈 해결을 위한 테스트 활동 중에서 테스트 계획의 중요성에 대해 알아보고자 한다.

이제 곧 겨울방학이 시작된다. 필자가 초등학생 때 겨울방학이 되면 항상 먼저 하는 게 있었다. 겨울방학 동안에 해야 할 일들에 대한 계획을 세우는 일이었다. 물론 학교를 다니는 12년 동안 매년 계획을 세웠지만, 계획을 실천에 옮긴 일은 거의 없었다.

우리는 이렇게 일상 생활을 하면서 항상 계획을 세운다. 계획이 중요한 이유는 내가 정해진 기간 동안에 해야 할 일을 정리하고 현재의 상태가 어떤지 판단을 할 수 있는 근거가 되기 때문이다.

만약 계획이 세워져 있지 않은 상태에서 프로젝트를 진행할 경우 “현재 프로젝트 진행 상태가 어떻습니까?”, “현재 프로젝트는 얼마만큼 진행이 되었습니까?” 라는 질문은 받는다면, 어떤 답이 나올까? 많은 사람들이 “거의 다 됐습니다”, “절반 정도 진행됐습니다”와 같은 답변을 할 것이다.

이러한 답을 듣는 사람은 일의 진행상황에 대한 정확한 판단을 하기가 어렵다. 왜냐하면 “거의 다 됐다, 절반 정도 됐다”는 말은 듣는 사람마다 받아들이는 정도가 다르기 때문이다.

 

프로젝트의 시작은 테스트 계획부터

소프트웨어나 제품의 품질을 향상시키기 위해 테스트를 수행하고자 할 때 가장 먼저 고려해야 할사항은 Scope, Time, Cost에 대한 고민이다. 우리는 이것은 ‘프로젝트 관리 삼각형(Project Management Triangle)’이라 부른다. 테스트 계획을 세우기 위해서는 프로젝트 관리 삼각형의 3가지 요소를 고려해야 한다.

▲ 프로젝트 관리 삼각형

프로젝트 관리 삼각형이 중요한 이유는 테스트 계획 수립 시 3가지 요소 즉 Scope, Cost, Time이 프로젝트에 큰 영향을 미치기 때문이다. 3가지 요소가 품질 계획에 많은 영향을 주며, 이러한 영향으로 인해 테스트를 수행하는데 많은 이슈(Issues)와 문제(Problems)가 발생할 수 있다는 것이다.

예를 들어 고객의 말만 믿고 고객이 주어진 시간과 원하는 인력을 구성해 테스트를 수행했더니, 생각했던 것보다 테스트의 범위가 넓어 주어진 시간과 인력으로 테스트를 수행하지 못하는 문제가 발생될 수 있다. 이런 이유로 테스트 계획을 수립할 때는 테스트의 범위(Scope), 테스트 비용(Cost), 테스트 기간(Time)을 잘 고려해야 한다.

물론 고객은 테스트 범위는 확대하면서 현재의 비용과 시간으로 테스트 수행을 요구할 수도 있다. 이런 경우에는 당연히 테스트 계획서에 이로 인해 발생될 수 있는 이슈와 문제점 등을 명시해 고객에게 전달하고 이와 관련해 협의해야 한다.

이렇게 테스트를 수행하는 도중 이슈나 문제가 발생됐을 때 문제 해결의 기준이 되는 것이 테스트 계획서이다.

 

테스트 계획서의 구성 요소

테스트 계획서를 작성하기 위해서는 앞에서 얘기했던 것처럼 프로젝트 관리 삼각형을 활용해야 한다. 일반적으로 테스트 계획서를 작성할 때는 국제 표준에서 권고하고 있는 테스트 계획서 구성 요소들을 활용하는 것이 좋다.

테스트 문서 관련 표준으로는 IEEE 829가 있지만 현재는 ISO/IEC/IEEE 29119-3 테스트 문서 표준으로 흡수되었기 때문에 테스트 계획서의 구성요소를 확인하기 위해서는 ISO/IEC/IEEE 29119-3 Part 3: Test Documentation에서 테스트 계획서(Test Plan) 영역을 참조하면 된다. 
 

▲ 와이즈스톤OWL-PnF 테스트계획서 템플릿 예시

 
프로젝트의 시작인 테스트 계획서가 없다면

소프트웨어나 제품의 품질을 향상 시키기 위해 테스트를 수행하면서 계획서를 작성하지 않고 진행하는 경우를 종종 볼 수 있다. 그렇다면, 테스트 계획서를 작성하지 않고 업무를 수행하는 경우 어떤 문제들이 발생되는가?

테스트 계획서를 작성하지 않아서 발생하는 가장 큰 문제는 방향성의 문제이다. 즉 명확한 목표가 없기 때문에 테스트를 수행하면서도 정확한 테스트 범위를 확인할 수 없고, 테스트 종료도 고객이 종료를 해야만 끝나는 계획과 절차가 없는 테스트를 진행하게 되는 것이다. 또한 계획이 없다는 것은 현재의 진행 상태와 이로 인해 발생되는 이슈들에 대한 파악도 어렵게 만들기 때문에 테스트는 점점 더 미궁 속으로 빠져들게 된다. 

이런 이유로 테스트를 진행할 때 계획서를 작성해 테스트의 목표, 범위, 방법, 일정, 리소스, 종료 조건 등에 대해 명확한 기준을 세우고 이를 바탕으로 우리가 원하는 방향으로 테스트를 진행할 수 있도록 해야 한다. 테스트 계획서는 또한 고객과 의사소통을 할 수 있는 가장 중요한 도구이기도 하다. 테스트 계획서가 있어야만 고객과 의사소통을 하는데 문제가 발생되지 않는다.

테스트 계획서를 바탕으로 고객이 요구한 테스트 범위, 일정, 시간 등에 대해 이야기 할 수 있으며, 이 계획을 바탕으로 현재의 테스트 진행 상태와 발생될 수 있는 문제점 등에 대해 논의할 수 있고, 필요할 경우 수정 및 내용을 추가해 지속적으로 고객과 의사소통을 할 수 있다.

또한 우리가 테스트를 수행하면서 가장 어려워하는 것 중 하나는 고객의 요구사항 변경이다. 위에서 언급한 프로젝트 관리 삼각형을 예로 들어 범위, 비용, 시간 중 하나라도 변경이 된다면 우리는 변경된 요구사항을 바탕으로 테스트 계획서를 수정하고 관리해야 한다.

하지만 테스트 계획서가 없다면, 고객이 추가적으로 요구사항을 요청하더라도 우리 입장에서는 추가적인 요구사항이 되지만, 고객 입장에서는 기준이 되는 문서가 없기 때문에 추가적인 요구사항이 아니라 당연히 해야 하는 요구사항으로 생각할 수 밖에 없다. 이러한 문제가 발생되지 않도록 계획을 꼭 수립하고 계획서를 작성해야 한다.

 

테스트 계획은 결국 감시와 통제

테스트를 수행하면서 요구사항 변경, 프로젝트 환경 변경, 인력 변경 등이 발생되는 경우 테스트 계획서는 지속적으로 변경 및 관리되어야 한다. 그리고 테스트를 수행하면서 테스트 계획서대로 잘 수행되고 있는지 지속적인 감시(Monitoring)와 통제(Control)가 필요하다.

테스트 계획에 대한 감시와 통제가 이루어지지 않는다며 우리가 수립한 목표가 올바른 방향으로 잘 가고 있는지 확인하기가 매우 어렵다. 즉 계획을 수립한 이후에는 계획의 진행 상태에 대한 감시와 통제를 통해서 원래 목표대로 잘 진행되고 있는지 지속적으로 확인을 해야 한다.

또한 감시와 통제로 인해 발견된 다양한 문제점이나 변경 사항에 대한 관리를 지속적으로 수행해야 하며, 이러한 문제점과 변경 사항 등에 대한 기록을 유지하고 관리하는 형상 관리(Configuration Management) 활동도 수반되어야 한다.

이렇게 테스트 계획을 수립하는 것은 단순히 테스트 수행만을 위한 것이 아니다. 테스트 수행에 필요한 다양한 활동들과 형상 관리 활동 등을 유기적으로 연결함으로써 우리가 원하는 결과를 얻을 수 있다.

 

테스트와 품질 보증은 상호 의존

우리는 지금까지 테스트 계획서를 단순히 테스트를 수행하기 위한 하나의 문서 정도로만 취급했다. 하지만 위에서 언급했듯이, 테스트 계획서를 작성하는 일은 테스트를 시작하기 위한 출발점이자 더 나아가 전체 테스트의 현황과 상태를 파악하고 감시 및 통제와 형상 관리 활동을 수행하기 위한 매우 중요한 활동 중 하나이다. 그리고 이러한 활동들은 실제 품질보증 활동에 연관되어 하나의 프로세스로 동작하고 있다.

 

▲ ISO/IEC 12207 소프트웨어 생명주기 프로세스

ISO/IEC 12207 소프트웨어 생명주기 프로세스 영역 중에서 6. 지원 생명주기 프로세스(Supporting Life Cycle Process)의 내용을 확인해 보면 형상 관리, 품질보증, 검증(Verification) 및 확인(Validation)이 같은 영역에 포함되어 있다는 것을 알 수 있다.

우리는 품질을 향상시키기 위해 테스트와 품질보증을 서로 다른 관점에서 사용해왔다. 하지만 앞서 언급 했듯이, 테스트와 품질보증은 서로 떼어낼 수 없는 관계이며 서로가 맞물려 체계적으로 운영돼야만 우리가 원하는 수준의 품질 향상을 기대할 수 있다.

  

지금까지 테스트 계획의 중요성에 대해 이야기했다. 테스트 계획은 프로젝트의 시작점이며 고객과의 의사소통 도구인 동시에 테스트의 핵심 성공요소(Critical Success Factor)이다. 테스트 계획서를 단순한 문서로 생각하지 말고 품질을 향상시키기 위한 핵심 문서로 생각해야 하는 이유이다.

다음 호에서는 테스트 수행을 위한 테스트 설계와 분석 활동에 대해서 알아보도록 하겠다.

저작권자 © 컴퓨터월드 무단전재 및 재배포 금지