프로젝트 초기의 테스팅은 결과적으로 봤을 때 시간과 비용을 크게 절감시켜 준다. 흔히 대규모 IT프로젝트의 막바지 과정에서 테스팅을 해야 하는 것으로 알고 있는데 이는 크게 잘못됐다. 시스템 개발 초기부터 중간과정, 마무리 단계에 이르기까지 테스팅을 거치지 않으면 시스템 개통을 앞두고 작은 벌레 한 마리 잡기 위해 초가삼간을 모두 불태우는 어리석은 행동을 범할 수밖에 없다. 게다가 초가삼간을 모두 태우고도 벌레가 어디에서 서식하고 있었는지 파악하지 못하는 경우가 허다하다.
흔히 차세대시스템과 같은 대규모 시스템 개통을 2∼3개월 앞두고 테스팅을 시작하는데 이때 전수 테스팅을 할 만큼의 시간도 부족하며, 전수 테스팅을 실시해도 시간에 쫓겨 제대로 된 검사가 이뤄지기 어렵다. 또 개별 시스템뿐 아니라 단위 시스템들 간의 연동 테스트도 필요한데 만약 개별 시스템의 테스팅에 소홀했다면 연동 테스팅에서 문제가 어디에서 발생했는지 파악하기 어렵다.
#고성과 달성에 기여
액센츄어가 수년간 고성과기업(high performance enterprise)에 대한 연구 결과에서도 테스팅의 중요성은 부각됐다. 글로벌 기업을 대상으로 한 이 조사에서 한국 기업은 시스템 구축 시의 테스트 부족으로 인해 실제 운영 시에 에러 수정을 위한 시간이 많이 소요되는 반면에 중국은 새로운 시스템 구축에, 미국은 M&A에 많은 투자를 하고 있는 것으로 나타났다.
<그림>을 보면, 한국, 미국, 중국 기업들 가운데 한국 기업들이 시스템 개발에서 테스팅에 투자하는 시간이 상대적으로 적다는 것을 알 수 있다. 미국 기업들과 중국 기업들은 전체 시스템 구축 프로젝트에서 테스팅에 할애하는 시간이 각각 10%, 9%인 반면에 한국 기업들은 이보다 적은 8%였으며 그 결과 시스템을 수정하는 데 할애하는 시간이 상대적으로 길게 나타났다. 미국과 중국 기업들은 시스템 수정에 12%씩을 투자하는 반면에 한국 기업들은 15%를 투자하고 있다.
#36%의 개발비용 줄이기
미국표준기술연구소(National Institute of Standards Technology)의 발표에 따르면, 미국 한 개의 기업이 시스템 오류를 찾아내기 위해 투자하는 예산은 대략 연간 158억달러에 이른다. 비용이 이처럼 높은 주된 원인은 컴포넌트 간의 데이터 교류가 올바르지 않기 때문이다. 소프트웨어 버그 비용은 미국 자국 내 생산액(GDP)의 약 0.6%에 이를 정도다. 각 코딩에서 단위 또는 통합 테스팅을 하면, 개발이 끝나고 나서 실행하는 테스팅보다 비용을 36% 줄일 수 있다. 적절한 테스팅은 소프트웨어가 기업에 구축돼 안정화되기 전에 많은 버그를 찾아낼 수 있게 해준다.
테스팅의 장점들은 시간 단축과 비용 절감으로 끝나지 않는다. 최근 국내 은행들이 금융상품 서비스 출시 경쟁에서 얼마나 빨리 적기에 신규 서비스를 내놓는지가 중요한 이슈로 부상했다. 가령 베이징 올림픽 이슈가 발생하기 훨씬 전에 중국시장 투자상품을 누가 더 빨리 상품화해 고객들에게 소개하는지에 따라 달라지는데 이 속도의 경쟁에서 승리하기 위해서는 유연한 시스템이 뒷받침돼야 하며, 시스템이 잘 운용되기 위해서는 철저한 테스팅으로 오류발생 가능성을 제로화해야 한다.
#테스팅에 대한 오해
테스팅에 대한 근본적인 문제는 시스템 개발이 끝난 후 개통을 앞두고 시뮬레이션을 하는 것쯤으로 여긴다는 데서 출발한다. 이러한 정의에서 출발한 테스팅은 자칫 본래의 목적을 잃기 쉬우며 다소 위험하기까지 하다.
실제로 개발자들이 테스팅을 하면서 얼마나 많은 사례에 대해 애플리케이션을 시험해야 하는지 잘 모른다. 1만건이면 충분할지, 얼마나 많은 시간을 할애해야 할지, 가상의 데이터를 모으는 데는 얼마나 시간이 소요될지, 테스팅 자체에 걸리는 시간을 어느 정도로 정할지 등에 정답은 없기 때문이다.
개발자 한 명이 분당 하나의 테스팅을 수행할 수 있다고 가정할 때, 5만건의 테스팅을 수행하려면 5.2명의 개발자가 한 달간 투입돼야 한다. 그러나 이만큼 투자한다고 해서 테스팅 결과가 만족스럽게 나타난다고 간주하기는 어렵다. 사람을 많이 투입하고 시간을 충분히 할애하는 것에는 분명 한계가 있으며, 그보다 더 중요한 것은 언제부터 테스팅을 시작하는지다. 앞서 언급했듯이 테스팅은 시스템 개발 초기부터 필요하며 단위 시스템, 시스템 간의 연동 테스트를 충분히 거치면 시간, 비용, 투입 인력 모두 줄이면서 결과에 대한 만족도는 더 높아질 것이다.
#테스팅 자동화
시스템이 매뉴얼대로 운영되면서 몇 분 안에 실시하는 것이 테스팅 자동화다. 매뉴얼 테스팅은 최고 80%로 시간과 노력을 줄여주며 특정 툴을 이용하면 된다. 과거 그래픽사용자 인터페이스 기반 애플리케이션(GAP)들은 기존 애플리케이션의 리뉴얼 프로세스의 첫 단계로 기능적으로 향상된 새로운 애플리케이션으로 대체됐다. 테스팅 대상으로 여기는 애플리케이션은 참고 사례가 될 만한 과거 애플리케이션들과의 교류를 통해 발생한 데이터를 사용한다. 기업은 프로젝트 시간의 25%를 참고할 GAP에서 발생한 데이터를 확장 검사하는 데 투자한다.
이제 기업들은 작은 단위 시스템을 도입할 때에도 테스팅을 염두에 두고 있어야 한다. 비록 도입하려는 시스템 규모가 작다 하더라도 여러 시스템과 연동이 필요하다면, 테스팅의 규모는 커질 수 있다. 기업이 테스팅에 대한 투자를 소홀히 하지 않은 것은 향후 일어날 수 있는 문제를 조기에 발견해 대처하고자 함이며 이러한 차별화 노력이 기업을 고성과 기업으로 한 단계 진화할 수 있게 해줄 것이다.
백인기 액센츄어 코리아 ATS 과장 in-kee.paek@accenture.com
관련 통계자료 다운로드 한 미 중 시스템 개발 소요 시간 비교