swtest

SW Testing이란 무엇인가


by Kitle · 2017. 06. 08.



일반적으로 아는 테스트란 용어는 무언가를 시험하는 것으로 정의 할 수 있겠다.
우리가 알아볼 Software Test 란 대상이 되는 s/w를 시험하는 것으로 정의 할 수 있겠다.
간단하게 s/w test를 제작(개발)한 s/w가 의도대로 잘 동작하는지 확인하는 것으로 우선 이해하고 넘어가 보자.
이번엔 testing 용어에 기록된 testing의 의미에 대해 알아보자.
 
testing :
The process consisting of all life cycle activities, both static and dynamic, concerned with planning, preparation and evaluation of software products and related work products to determine that they satisfy specified requirements, to demonstrate that they are fit for purpose and to detect defects.
 
소프트웨어 제품 및 작업과 연관된 명세 조건(specified requirements) 만족하는지 결정하고, 목적에 부합하는지 입증하고 결함을 찾아내기 위해 계획, 준비, 평가하는 정적 및 동적 모두를 포함하는 모든 수명주기 활동으로 구성된 프로세스.
 
말이 무지하게 어렵다.
 
명세 조건을 만족한다는 것은 즉 요구조건을 만족하는지 확인 하는 것이다.
s/w가 개발되는 이유는 딱 하나다. 인간의 필요에 의한 것이다. 그 필요와 관련된 요구조건들을 만족하고 있는지 확인이 필요하기 때문이다.
테스팅을 기준으로 말하면 개발된 s/w가 의도대로 제대로 동작하는지 테스팅 과정을 통해 확인 할 수 있다는 것이 된다.
 
간단한 s/w라면 테스트가 금방 끝날 것이라 생각하지만, 시중에 나와있거나 판매되는 s/w의 특성상 상당히 간단해 보이는 프로그램이라도 수많은 노력(코딩)의 결과물이 아닐 수 없다. 또한 수익을 목적으로 하는 s/w는 많은 수익을 내기위해 > 따라서 좋은 제품을 내놓기 위해 > 결함(버그)없는 완성도 높고 사용이 편리한 제품을 내놓기 위해 > 테스팅 활동을 수행 하게 된다.
s/w하나를 테스트 하기 위해 그동안 작성된 설계문서 및 수많은 관련문서를 검토하고, 어떻게 테스트 할지 계획하고 준비하는 과정, 진행(수행)과정, 테스트가 어떻게 진행되었고 그에따른 산출물들을 모두 정리하는 활동. 그 모든 것들을 포함하는 활동으로 테스팅을 정의 할 수 있겠다.
 정적/동적 모두를 포함한다고 한 부분은 코드를 실행하여 테스팅하는 방법(동적테스팅)과 코드실행없이 테스팅하는 방법(정적테스팅) 모두를 포함한다는 뜻이다. 코드를 실행하지 않고 어떻게 테스트 하느냐고 의아해 할 수 있지만, 테스팅의 의미는 상당히 포괄 적이다. 코드 뿐만이 아니라 잘못된 명세, 기능설계서 리뷰등으로 문제를 확인하는 것도 테스팅의 주요 활동 중 하나이다.
 처음듣는 사람이라면 지금 이 말이 무슨말인지 쉽게 와닿지 않을 것이다.
차차 자세한 설명을 통해 이해할 수 있으니, 테스팅에 대한 관심만 가지고 넘어가 보자.
 그렇다면 테스팅 활동이 왜 필요하고 왜 중요한가?
다음시간에....