swtest

SW 테스팅의 필요성


by Kitle · 2017. 06. 08.



S/W 테스팅이 왜 필요한가? 에 대해 탐구해 보자.

 

왜 필요하긴. 테스팅 이라는 것 자체가 "시험" 을 의미한다 했었다.

 

모든 소프트웨어는 인간의 필요에 의해, 사람의 일을 대신하기 위해 개발 된다.

즉 어떠한 "목적"을 가지고 제작되기 마련인데, 이런 "목적"에 제대로 부합하는지 확인하기 위한 과정이 필요하기 때문이다.

 

이번엔 상업적인 측면에서 살펴보자.

내가 누군가에게 판매를 해서 이윤을 남길 목적으로 어떤 s/w를 개발했다.

그런데 이 s/w가 제대로 동작하지 않는다면 과연 잘 팔릴까? 아니오

s/w가 부정확한 동작으로 오히려 프로그램을 안쓰니만 못한다면 잘 팔릴까? 아니오

 

그렇기 때문에 s/w가 가진 문제점을 최소화 시키기 위해 s/w 테스팅이 필요한 것이다.

왜 문제점을 전혀 없게 만들지 않고 최소화 인가? 에 대해서는 테스팅의 특징에서 언급 할 것이지만, 모든 s/w의 문제점(defect-결함)을 없게 만들 수 없다는 점을 기억하길 바란다.

 

 

 

그렇다면 s/w의 결함의 원인이 어디서 오는가?

 

당연히 코딩을 잘 못했으니 결함이 나오지 않을까. 코딩을 누가하는가? 사람이 한다.

사람이 왜 코딩을 잘 못 했을까? 잘못된 생각에 의해, 판단 미스에 의해, 정확하다고 생각했지만 모든 경우(case)를 다 확인 하지 못했기에.

또한 프로그램이 복잡하거나, 환경적 요인(촉박한 시간), 다양한 시스템 등의 사유로 발생 가능 하겠다.

 

즉 사람의 실수가 오류(error)를 범하고 > 이 s/w를 테스트 하는 도중(사용도중) 결함(defect)로 발견되며 > 이것이 문제를 일으키는 장애(Failure) 가 될 수 있고 >  정도에 따라 위험(risk) 요소가 된다고 볼 수 있겠다.

 

 

테스팅을 많이 한다고 결함이 줄어들까? 테스팅을 많이하면 품질이 높아지는가?

 

테스팅을 "잘","제대로" 했다면 그럴 것이고, 그러지 못했다면 그렇지 못할 것이다. 이런 이야기를 왜 하는가. 앞으로 풀어가야 할 많은 이야기 들이 이제 시작이다. 

 주로 상업적인 소프트웨어는 판매 목적으로 제작되기 때문에, 누구나 시간은 한정되어 있고, 합격이상의 훌륭한 소프트웨어가 개발되고 테스팅 될때까지 소비자들은 기다려 주지 않는다. 물론 다른 s/w와 경쟁관계에 있다면 누가 더 먼저 출시하는가(time to market)의 싸움이 된다. 조금 다른이야기이긴 하지만 허름한 s/w를 먼저 출시했다면 나중에 후발업체에 뒤쳐질 순 있겠지만, 모든 시장의 상품은 초기에 출시하면 "선점"효과가 있다는 것을 잘 알 것이다. 경쟁업체가 없다면 독점제품을 선택 할 수 밖에 없지 않을까? 조금 이야기가 샌 감이 있다.

 

또한 리소스와 자본도 무한적으로 주어지지 않는다.

 즉 s/w testing역시도 주어진 리소스로 최단 시간에 최대 효과를 내야할 필요가 있다. 제대로 계획된 테스트가 실제로 정확히 진행되었고, 그에 따라 발견된 결함이 수정되어 준비된 계획대로 잘 진행되었다면 당연히 품질도 우수한 제품이 될 것이다.

 제대로 테스트를 계획하는 일은 상당히 어려운 일이고, 종종 예측하기도 쉽지 않지만 기존의 경험과 프로젝트에 의해 차후 시스템의 품질을 개선 할 수 있다고 한다. 이것은 품질 보증(QA:Quality Assurance)의 관점 이다.

 품질보증, QA란 용어도 테스팅 용어와 밀접한 관계를 가지고 있으니 잘 정리해 두도록 하자.