소프트웨어 개발의 핵심 자원은 바로 사람입니다. 어떤 자격을 갖춘 사람들이, 어떤 식으로 적절하게 배치되는가에 따라서 프로젝트의 성패가 좌우됩니다.
그러나 국내의 소프트웨어 프로젝트들을 보면, 시작부터 실패의 운명을 재촉하는 경우가 많습니다. 그 이유는 비전문가에 의해 일정, 예산 등에 대한 부적절한 결정이 이루어지고, 또한 부적절한 인력이 배정되어 비합리적인 방식으로 프로젝트가 진행되는 경우가 빈번하기 때문입니다.
프로젝트 팀에는 프로젝트 매니저, 아키텍트, 개발자, 테스트 매니저 등 여러 핵심 역할들이 필요합니다. 그런데 그 중에서도 현실에서 가장 간과되는 역할을 꼽는다면 그것은 바로 아키텍트와 테스트 매니저일 것입니다. 아키텍트는 소프트웨어의 (전체 구조를 결정하는) 아키텍처 디자인을 담당하는데 아키텍트에 대해서는 다른 포스트를 통해 살펴보기로 하고, 이번 포스트에서는 테스트 분야를 위주로 언급해보죠.
소프트웨어 품질을 담당하는 테스트 매니저(또는 테스트 리드)는 테스터와 함께, 소프트웨어 개발의 라이프사이클 동안 테스트를 계획, 실행하면서 디버깅에 기여합니다. 소프트웨어 라이프사이클과 테스트들은 다음과 같습니다.

일반적으로 소프트웨어 라이프사이클은 요구사항, 분석, 디자인, 구현의 순으로 진행되며(필요한 경우 iteration됨), 테스트는 단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트의 순으로 진행됩니다.
 |
|
|
| |
- 단위 테스트: 작은 소프트웨어 단위(컴포넌트 또는 모듈)을 테스트하는 것이며, 일반적으로 개발자 자신에 의해 행해집니다. 하지만 현실에서는 시간 부족을 이유로 이 단계가 흔히 생략되는 경우가 많은데, 버그 없는 소프트웨어를 위해 이 단계는 아주 중요한 부분이므로 생략되면 곤란합니다.
- 통합 테스트: 통합된 컴포넌트 또는 모듈 사이의 인터페이스 및 상호작용을 테스트하는 것입니다.
- 시스템 테스트: 통합된 시스템이 기능 수행을 정상적으로 하는 지를 테스트하는 것입니다.
- 인수 테스트: 일반적으로 엔드유저, 고객, 클라이언트 등에 의해 행해지며, 만들어진 제품을 수용할 것인지 말 지를 결정하는 테스트입니다.
|
|
| |
|
 |
각각의 테스트 단계에는 적합한 방법론, 기법, 도구들이 있으며 목표 제품에 적합한 수준으로 계획되고 수행되고 조정되어야 합니다.
소프트웨어의 품질은 곧 테스트에 의해 결정됩니다. 하지만 국내 업계를 보면, 많은 경영진들이 품질을 강조하면서도 정작 테스트 전문인력과 환경에 대한 투자는 상당히 빈약함을 알 수 있습니다. 실제로 소프트웨어 제품을 판매하여 수십억 원의 매출을 올리면서도 전문적인 테스트 매니저 한 사람 없이 주먹구구로 테스트를 하고 있는 업체도 있습니다. 또한 핵심 소프트웨어를 개발한다고 하면서 개발자 100명당 테스트 관련 인력이 5명조차 안 되는 대기업도 있습니다.
이런 모든 것들은 소프트웨어 품질에 대한 무지 또는 낙관에서 비롯된 것입니다. 인간의 멘탈 작업에 의해 만들어지는 소프트웨어의 본질적 특성상, 잠재된 버그가 많을 수 밖에 없습니다. 그리고 그것을 효과적으로 제거하기 위해서 테스트 프로세스가 반드시 필요하며, 실제 그것은 코딩 이상의 리소스가 필요한 업무입니다. 하지만 업계를 보면, 테스트의 중요성을 제대로 이해하고 실천하는 경영자가 거의 없음을 알 수 있습니다. 대오각성이 필요한 부분이라고 할 수 있습니다.
이러한 국내 현실에서, 이번에 아시아 최대 규모로 전세계 각국의 소프트웨어 테스트 전문가들이 참석하는 ‘ASTA 국제 소프트웨어 테스팅 컨퍼런스’가 10월 8일에 개최된다고 합니다.
[신청 페이지] 2007 ASTA 국제 소프트웨어 테스팅 컨퍼런스
이번 행사는, 지난 7월에
P캠프를 함께 한 적이 있는 STEN에서 추진하는 것입니다. 신청 날짜가 얼마 남지 않았습니다. 테스트 업무 종사자들이 많이 참석했으면 좋겠고, 또한 회사 차원에서 관련 업무에 종사하는 직원들이 참여할 수 있도록 지원을 아끼지 않았으면 좋겠습니다. 테스트 관련 전문가가 많이 부족한 업계 현실에서, 전문가의 강의를 듣고 함께 교류할 수 있는 기회는 흔치 않으니까요. 회사의 허락을 받기 어려운 경우 이 글을 그룹웨어 게시판에 띄워서 공감대를 형성해 보아도 좋지 않을까요? ^^
마지막으로, 소프트웨어 테스트에 대한 서적도 하나 추천해 봅니다. 나온 지 몇 년 되었습니다만, 테스터뿐만 아니라 개발자, 프로젝트 매니저들도 한번쯤 봐두어야 하는 책입니다.
[서적] 소프트웨어 테스팅 법칙 293가지
소프트웨어 테스트는 개발의 중요한 요소이며, 우리는 그것을 충분한 리소스와 시간과 애정을 갖고서 행해야 합니다. 현실적인 여건상 그렇게 할 수 없다고요? 그런 핑계와 변명들이 한국 소프트웨어 산업을 현재의 위치에 이르게 했습니다. 이제는 변해야 할 때가 되지 않았나요?
지금은 한국 소프트웨어산업에 변화 이상의 파괴적인 변혁이 필요한 시점입니다.