SW 테스트 이해
1. SW 테스트 이해
SW 테스트는 프로젝트 단계에서 개발된 제품을 검증 및 확인하여, 사용자에게 높은 품질의 신뢰성 있는 SW를 제공하는데 그 목적이 있다. 테스트 활동은 개발된 제품의 정확성, 완성도, 그리고 품질을 식별하는데 필요한 지표를 제공하기 위한 작업으로, 제품이 최종 사용자에게 제공되기 전에 제품의 결함을 찾는 목적으로 실시하는 모든 활동의 집합을 말한다.
테스트 활동을 SW를 실행하면서 수행하는 것으로만 인식하는 경우가 많다. 하지만 그것은 테스트 활동의 일부이며, 테스트 활동은 테스트를 수행하기 전과 후에도 존재한다. 테스트 활동은 테스트 계획, 테스트 설계 같은 활동이나 우선순위의 선정 및 데이터의 생성, 테스트 케이스의 명세화, 테스트 수행 결과 점검 등 일련의 모든 작업을 포함한다.
▣ 테스트의 정의
시스템이나 시스템의 구성 요소 또는 SW 프로그램을 실행하고 평가하는 과정으로, IEEE(Institute of Electrical and Electronics Engineers) 정의에 따르면 수작업 또는 자동화된 방법으로 규정된 요구사항을 만족시키고 있는지 검증하고, 기대되는 결과와 실제 결과의 차이를 식별하는 작업을 말한다. G.J Myers의 정의에 따르면 일반적으로 결함이 없음을 증명하는 것이 아니라 결함이 있음을 발견하기 위하여 체계적으로 수행하는 일련의 작업을 통칭한다. (출처 : TTA,한국정보통신기술협회)
▣ 테스트 기술의 발전 단계
SW 테스트의 역사는 학자마다 약간씩 상의하게 구분을 하지만, 크게 5단계 정도로 구분한다. 대표적으로 Gelperin과 Hetzel에 의해 정의된 진화적 테스트 모델의 개념을 소개한다.
【그림 I-1. Gelperin과 Hetzel의 SW 기술 발전 5단계】
▣ SW 테스트 프로세스
ISO/IEC 29119에서는 SW 개발 및 테스트 생명주기 내에서 사용될 수 있는 일반적인 테스트 프로세스 모델을 정의한다. 아래 다이어그램은 테스트 프로세스의 다양한 레이어를 보여준다.
【그림 I-2. ISO/IEC 29119 Test Process Model]
Organizational Test Process 에서는 테스트 정책과 테스트 전략 수립 및 관리 활동을 수행하고, Test Management Process 에서는 테스트 계획과 모니터링 및 제어, 테스트 완료 보고 관련 활동을 수행한다. Dynamic Test Process 에서는 테스트 설계 및 구현, 환경 설정, 유지보수, 테스트 실행, 결함보고 활동을 수행한다.
SW 테스트 중요성
비즈니스 애플리케이션에서 소비자 제품까지 생활의 많은 부분에서 다양한 제품들이 사용되고 있으며, 그 비중은 계속해서 증가하고 있다. 대다수의 사람들은 이러한 시스템을 사용하면서, 제품이 기대한 대로 동작하지 않는 경우를 많이 접해 보았을 것이다. 제품이 올바르게 동작하지 않는 경우, 다양한 문제가 발생한다. 이로 인한 피해는 금전적인 손실, 시간 낭비, 비즈니스의 이미지 손상 그리고 부상이나 사망에 이르기까지 다양하고 심각하다. 테스트는 이러한 제품 시스템의 문제를 최소화하기 위해 반드시 필요하다.
SW 테스트의 중요성은 점점 증가되고 있으나, 일반적으로 개발자들은 빠른 시일 내에 제품을 개발해야 하기 때문에, SW 테스트에는 시간과 관심을 크게 두지 못하는 것이, 국내의 SW 개발의 현실이다. 프로젝트 관리자가 SW 테스트에 대한 관심이 없고 전문가도 부족한 상황에서, SW 제품의 신뢰성 향상을 위해서는 개발 전반에 걸친 SW 테스트에 대한 증대와 전문가의 양성이 필요하다.
▣ 테스트의 목적
다양한 목적의 테스트가 있을 수 있으나, 기본적인 것은 아래와 같다.
● 품질 수준에 대한 자신감의 획득과 정보의 제공
● 비즈니스 리스크를 감소시키는 정보에 근거한 결과 제공
● 개발 프로세스 점검 및 이슈 제기
● 논리적 설계의 구현의 검증
● 시스템과 SW가 명세를 충족하는지 확인
▣ SW 테스트의 중요성: 사례
● T-money 무료 개방
2004년 7월 1일 서울특별시의 새로운 대중교통 시스템이 도입되었다. 시스템이 도입되기 전 시스템의 통합을 담당한 L사에서는, 제대로 테스트를 거치지 못한 상황에서 서비스를 개시하는 것은 무리이므로 도입 일정을 연기하는 것을 제안하였으나, 서울시는 일정을 연기하지 않았다. 이로 인해 새 대중교통 시스템 도입 첫날 시스템 오류로 인해 전체 대중교통 수단이 무료로 개방되었다.
● 아마존 클라우드 서비스 중단
2011년 4월 세계 최대 퍼블릭 클라우드 서비스인 아마존 EC2가 미러링 과정에서 나타난 용량부족으로 장애를 일으켰다. 이로 인해 전 세계에서 아마존 서비스를 이용하는 훗스위트, 포스퀘어, 퀘라, 넷플릭스, 레딧 등 유명 사이트마저 서비스가 동반 중단되었다.
● 교육행정정보시스템(나이스) 오류
2011년 7월 국내에서는 S사가 정부기관에 납품한 전산시스템에서 오류가 발생, 고등학생 2만 9007명의 내신 석차와 등급이 잘못 산정되어 사회적으로 큰 파장을 일으켰다. 컴퓨터는 소수점 32번째 자리까지만 인식을 하고 마지막 자리는 임의의 숫자를 적용하므로, 통상 프로그램 개발자는 소수점 16번째 자리까지만 값을 인식하도록 인위적으로 계산 방식을 보정해왔다. 이 문제는 소수점의 보정과정이 이루어지지 않아 발생하였다.
SW 프로세스
SW 제품을 개발하기 위해 필요한 과정 또는 구조이다. 비슷한 말로 SW 생명 주기가 있다.
▣ SW 프로세스의 발전단계
Barry Boehm의 ‘A View of 20th and 21st Century Software Engineering’을 재구성하여 SW 프로세스의 발전단계를 소개한다.
1950년대에는 SW 개발 프로젝트를 위해 HW 프로세스와 유사한 SW 프로세스 개념이 도입되기 시작하였다. 이후 1960년대에 SW에 대한 수요가 급증하면서 본격적으로 SW 프로세스가 도입되었다.
1970년대에는 SW에 대한 수요가 급증하면서 인력부족사태가 발생하였고, 이에 비전공자들이 투입되면서 선코딩-후수정하는 접근방식을 택하게 되었다. 이에 대한 부작용으로 많은 결함들이 발견되면서 구조적 또는 정형적 기법들이 발생하였으며, 분석, 설계, 구현 등을 순차적으로 진행하는 폭포수 모델을 개발하여 사용하기 시작하였다.
1980년대에는 폭포수 모델이 많은 비용이 소요되고 진척도가 떨어진다는 점을 인식하였고, 이에 재사용성을 높여 효율적으로 SW를 개발하기 위해 생산성을 높이기 위한 방법들이 연구되었다.
1990년대에는 시장에서 경쟁 우위를 점하기 위해 제품의 시장출시 시간을 단축하기 위한 생산성에 대한 연구가 활성화 되었으며, 폭포수 모델에서 요구사항, 설계 및 구현 등을 동시에 진행할 수 있는 동시프로세스에 집중한 모델을 활용하였다.
2000년대에는 SW에 대한 기술이나 시장 환경이 급속하게 변화하기 시작하면서 변화에 효과적으로 대응하기 위해 애자일 방법론이 본격적으로 도입되었다.