소프트웨어 테스트 개요

소프트웨어 테스트 프로세스 Software Test Process

PW(Profound World) 2020. 1. 13. 21:25

▶개념

말 그대로 소프트웨어 테스트에 대한 절차를 말한다. 반드시 지켜야 하는 절대적인 소프트웨어 테스트 절차는 없다. 하지만 소프트웨어 개발 절차와 같이 테스트 절차도 일정한 단계와 단계별로 수행하는 업무들이 대략 정해져 있다.  계획>분석>설계>구현>수행>검토>종료, 그리고 전 과정에 걸쳐 모니터링하고 제어하는 일이다. 각 단계의 작업들(activities와 tasks)은 단계별 설명에서 좀 더 자세히 다룬다. 

 

 

 

▶그림

소프트웨어 테스트 프로세스 Software Test Process

 

▶설명

SI와 같이 대형 프로젝트이거나 여러 조직 또는 관계자들이 참여하여 개발할 경우 프로세스 단계가 명확하고 해야할 일(activities and tasks)과 산출물이 많고 그 정의가 명확한다. 하지만 일반적으로 작은 규모의 개발 작업이나 유지보수 작업에서는 그 절차가 간단하고 작업량도 적다. 대부분 책에서 프로세스를 거창하게 설명하는 것은 대형 프로젝트를 진행할 때 참고하는 가이드라고 할 수 있겠다.

- 계획: 테스트 범위와 목표, 일정, 절차, 조직 등을 정의한다. 

- 분석: 무엇을 테스트해야 하는지(What to test) 정의한다. 주어진 환경, 필요한 환경이나 도구, 테스트 대상, 테스트 목표(기능 목록, 성능 목표, 호환 범위 등등) 등을 정의한다.

- 설계: 어떻게 테스트해야지(How to test) 정의한다. 분석 결과로 추출된 테스트 대상이나 목표 환경에 따라 테스트 케이스, 테스트 데이터, 테스트 환경, 테스트 도구, 필요한 하드웨어와 네트워크 등을 설계한다.  

- 구현: 설계에 따라 테스트 케이스를 개발하고 테스트 데이터와 환경 도구 등을 설치한다. 즉 동적으로 또는 정적으로 테스트가 가능한 테스트 환경을 구축하는 것이다.

- 수행: 테스트를 설계를 통해 테스트 준비가 갖춰지면 테스트를 수행한다.  테스트 도구나 프로그램을 이용하여 자동을 테스트(자동 테스트)를 수행할 수도 있고, 수동으로 테스트(수동 테스트)를 할 수도 있다. 또한 프로그램을 실행시키면서 진행하는 동적 테스트(Dynamic Test) 또는 소스 코드나 바이너리 코드를 분석하면서 결함을 찾아내는 정적 테스트(Static Test)를 할 수 있다.

- 종료 기준 평가 및 레포팅(Evaluation of Exit Criteria and Reporting): 말이 어렵지만 쉽게 설명하자면, 테스트를 그만할 때가 되었는지 검토하고, 그 결과를 기록하고 보고하는 것을 말한다. 테스트 종류와 범위, 기준 등은 계획 단계에 정해졌을 것이다. 그리고 그 이후에 작업하면서 변경 사항들이 계획에 반영되면서 일부 수정되었을 것이다. 이러한 계획 단계에 정의된 테스트 목표를 만족하는지 평가하고 레포팅한다. 

- 종료: 종료하기 위해 정리하고, 다음 테스트를 위해 경험과 지식(Lesson learned)을 축적하는 것을 말한다.   

 

▶활용/효과

테스트 절차를 정의해 놓으면 테스트 작업에 가이드라인을 제공할 수 있다. 테스트 절차는 개발 내용이나 범위, 또는 기술의 난위도와 조직의 크기 등에 따라 달라진다. 어쨓든 정의를 해 놓으면 누가 하더라고 지켜야하는 업무의 절차가 된다.  

 

▶기타

필자의 경우 개발의 크기에 따라 여러가지 형태로 나뉜다. 개발자 한 명이 컴파일 에러를 수정하거나 한 두 줄의 소스코드 수정/추가로 버그를 수정하는 간단한 작업에서 부터 개발본부 대부분이 1~3년에 걸쳐 진행하는 대형 프로젝트까지 다양하다. 간단한 수정은 테스트나 리뷰 절차도 간단하지만, 대형 프로젝트는 엄격한 프로세스와 테스트 결과(기능 커버리지, 성능 목표 등)를 통과해야지만 프로젝트가 종료 된다. 상황에 따라 협의하여 정의한다.