김영민 와이즈스톤 팀장

[컴퓨터월드]

▲ 김영민 와이즈스톤 팀장

1회 품질이슈에 대처하는 자세 (2016년 11월호)
2회 품질 이슈를 해결하기 위한 테스트, 시작은 테스트 계획부터(2016년 12월호)
3회 효율적인 테스트 수행을 위한 테스트 설계와 환경 구축 (2017년 1월호)
4회 테스트 활동은 프로젝트 초기부터, 리뷰와 코드 인스펙션 (이번호)

지금까지 제품의 품질을 향상시키기 위한 방법 중 하나인 테스트에 대해서 알아보았다. 테스트를 수행하기 위해서, 테스트 계획, 요구사항 분석을 통한 테스트케이스 설계 및 테스트 환경 구축에 대해 이야기를 했다. 그렇다면, 프로젝트 진행 시 테스트는 과연 언제 시작하는 게 효과적일까?

일반적으로 테스트는 제품을 개발 중이거나 제품 개발이 완료 되었을 때 수행되어야 한다고 생각을 하곤 한다. 또한 실제로 많은 테스트 활동들이 개발 단계에서 많이 수행된다. 테스트는 이처럼 제품이 개발되어야 수행할 수 있는 것일까? 답은 “아니다” 이다. 테스트는 프로젝트 시작과 동시에 수행되어야 하는 활동이다. 프로젝트 시작과 동시에 테스트를 진행해야 하는 가장 큰 이유는“비용”과 “시간”을 절약할 수 있기 때문이다.

혹시 “The Snowball Effect “라는 말을 들어 보았는가? “The Snowball Effect “는 미국 사업가 워런 버핏(Warren Buffett)이 사용한 용어로 작은 규모로 시작한 것이 가속도가 붙어 큰 효과를 불러온다는 의미를 가지고 있다.

테스트 관점에서 이 용어를 풀어보면, 프로젝트 초기에 결함을 발견하지 못하면 이후 프로젝트 종료 시점에서 발견된 결함에 대한 수정 및 유지 보수 비용이 크게 증가한다는 의미이다. 우리가 프로젝트 초기에 결함을 발견할 수 있다면, 큰 비용을 들이지 않고 결함을 수정할 수 있을 뿐 아니라, 재작업 및 유지 보수 비용과 프로젝트 기간을 절약할 수 있다.

▲ Snowball Effect

하지만 일반적으로 제품이 개발되거나 개발이 완료된 상태에서 결함을 발견하게 되면, 요구사항 확인, 설계, 수정 등의 다양한 활동들이 추가되기 때문에 그만큼 비용이 더 추가될 수밖에 없다.

그림에서 알 수 있듯이 요구사항 분석 단계에서 결함이 발생되어 수정되는 비용이 1$라고 가정을 했을 경우 이 결함이 테스트 단계에서 발견되면 최소 50$ 이상의 수정 비용이 발생된다는 것을 보여주고 있다. 즉, 프로젝트 초기에 결함을 발견할 수만 있다면, 우리는 엄청난 비용과 시간을 절약할 수 있는 것이다.

▲ Phase Error Found & Fixed (Ref. Software Verification & Validation, Steven Rakitin)

우리는 프로젝트 초기 단계에서 결함을 발견해 프로젝트의 비용을 감소시키기 위한 일반적인 방법으로 리뷰(Review)와 코드 인스펙션(Code Inspection)을 수행한다. 일반적으로, 리뷰와 코드 인스펙션은 테스트 엔지니어들이 수행을 하지 않는 경우가 많기 때문에, 기획자, 개발자, 품질보증 담당자 등이 수행해야 하는 것으로 생각하는 경우가 많다. 그러나 테스트 엔지니어가 리뷰와 코드 인스펙션 수행 시 결함을 발견하는 것뿐만 아니라 테스트를 수행하는데 필요한 다양한 정보와 리스크를 얻을 수 있기 때문에 리뷰와 코드 인스펙션 활동을 수행하는 것은 매우 중요하다.


프로젝트 초기의 결함 발견, 리뷰

리뷰는 프로젝트를 진행하면서 개발된 개발 산출물(프로그램 코드, 요구사항 명세서, 설계서 등)과 테스트 관련 산출물(테스트 계획서, 테스트 설계서, 테스트 시나리오 등) 등을 검토해 결함을 발견하는 방법이다. 이러한 리뷰 활동을 통해서 프로젝트 초기에 결함을 발견함으로써 개발 시간 단축, 테스트 수행 시간 및 비용 감소, 추가적인 유지 보수 비용 감소 등의 효과를 얻을 수 있다.

리뷰를 통해서 요구사항 결함, 설계 결함, 표준 위반 등의 결함을 발견할 수 있으며, 또한 테스트를 수행해야 하는 제품에 대한 이해를 통해 테스트 수행 시 발생될 수 있는 문제점을 사전에 파악하여 문제를 해결하거나 대응할 수 있다. 리뷰는 보통 Informal Review, Technical Review, Walkthrough 및 Inspection으로 구분한다.

▲ 리뷰의 종류

▲ 리뷰의 주요 특징

리뷰의 종류 중에서 Formality가 가장 높은 것은 인스펙션(Inspection)이며 그 중에서 가장 대표적인 기법은 페이건 인스펙션이다. 페이건 인스펙션은 1970년대 초 IBM의 페이건에 의해 적립된 방법으로 프로젝트 초반에 전문 인력을 투입해 초기에 많은 결함을 발견하고 이를 통해 제품의 품질을 향상 시키는 방법이며, 실제로 많은 성공 사례를 가지고 있는 방법 중 하나이다.

▲ 페이건 인스펙션

실제 페이건 인스펙션을 도입한 한 업체의 경우 불량률 15배 감소, 납기 준수 39% 향상, 고객 만족도 41% 향상의 효과를 가져 왔으며, 다른 업체의 경우에는 인스펙션을 통해 통합 테스트 이전에 요구사항, 설계, 구현단계에서 70~80%의 결함을 발견하고, 납기 준수도 92%나 향상되었다고 한다.

물론, 우리나라의 IT 상황이나 현실의 장벽으로 인해 인스펙션이 실제 위에서 언급한 것보다 적을 수 있겠지만, 가장 중요한 것은 이러한 활동이 실제로 프로젝트의 기간과 비용에 많은 영향을 준다는 것이다.


코드 결함 발견을 위한 코드 인스펙션

코드 인스펙션은 제품의 품질을 향상시키기 위해 제품을 실행하지 않고 제품의 소스코드를 확인해 결함을 발견하는 방법이다. 리뷰와 마찬가지로 코드 인스펙션을 통해 테스트 수행 이전에 결함을 발견할 수 있으며, 동적 테스트로 발견하기 어려운 결함 및 코드의 유지 보수성 등을 향상 시킬 수 있어 필수적으로 수행해야 하는 방법이다.

일반적으로 코드 인스펙션 수행 시에는 코드 인스펙션 도구에서 정의된 규칙이나 코딩 준수 여부에 대한 테스트를 수행하게 되며, 이러한 규칙을 통해 사전에 발생될 수 있는 결함을 예방하는 효과를 가질 수 있다.

코드 인스펙션의 중요성은 공공 사업에 적용되는 개발 프레임 워크인 “전자정부 표준 프레임워크”에서도 확인 할 수 있는데, 이 개발 프레임 워크에는 기본적으로 코드 인스펙션을 진행할 수 있도록 오픈소스인 PMD도구가 기본적으로 설정되어 있다.

▲ 전자정부 표준 프레임워크 코드 인스펙션 주요 기능

또한, 매우 오래된 자료이기는 하지만 미국 국방성(DoD)에서 제출한 논문에 따르면, 다양한 품질향상 활동 중에서 코드 인스펙션이 다른 활동에 비해 ROI(Return on investment) 측면에서 가장 효과적인 것으로 나타나기도 했다.

▲ Examples for ROI (Ref. How to Estimate ROI for Inspections, PSPsm, TSPsm, SW-CMM, ISO 9000, and CMMIsm, david F. Rico)

이처럼 코드 인스펙션은 다양한 품질 향상 활동 중에서 적은 비용으로 큰 효과를 볼 수 있는 방법이다. 물론 외국의 사례이기 때문에 국내 현실에 적합하지 않거나 결과가 다르게 나올 수 있겠지만, 우리가 생각해야 할 것은 적은 비용과 조직의 변화 없이 제품의 품질을 향상시킬 수 있는 방법이 있다는 것이다.

지금까지는 적은 비용으로 프로젝트의 비용과 기간을 줄이고 제품의 품질을 향상 시킬 수 있는 리뷰와 코드 인스펙션에 대해 알아보았다. 다음 시간에는 테스트 수행에 도움이 되는 다양한 테스트 관리 도구에 대해 알아보도록 하겠다.

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