소프트웨어 개발 단계에 따른 테스트 분류

2018. 8. 21. 20:54IT·테크/SQA

반응형


이번 포스팅에서는 소프트웨어 개발 단계에 따른 테스트 분류에 대해서 알아보도록 하겠습니다.


이번 포스팅 주제에 대한 설명에 앞서 이해를 돕기 위해 보리스 바이저(Boris Beizer)의 테스팅 레벨을 나누는 기준을 먼저 소개 후 본문을 써내려가보도록 하겠습니다. 총 5단계로 구성된 이 레벨에서 자신이 속해있는 테스팅 레벨이 어느 단계인지 가늠해 보는 것도 되짚어 볼 수 있는 기회일 것 같습니다.


레벨 1: 테스트와 디버깅의 차이가 뚜렷하지 않다. 우연히 발견된 오류를 수정하는 방식으로 딱히 오류를 찾기 와해 별도의 노력을 하지 않는 단계.

레벨 2: 프로그램이 올바르게 동작하는지 입증하기 위한 테스트를 수행하는 단계.

레벨 3: 프로그램에 오류가 존재함을 보여주기 위한 테스트를 수행하는 단계.

레벨 4: 소프트웨어 개발 전 단계에서부터 발생하는 오류를 발견하는 단계.

레벨 5: 아예 오류가 발생하지 않도록 사전에 방지하는 단계.


위 바이저 테스팅 레벨을 기준으로 본다면 이번 포스팅의 내용에서는 레벨 3에 해당하는 내용일 것이라 보입니다.


소프트웨어가 개발되는 단계에 따라 상황에 맞는 테스트 방식에는 차이가 있습니다. 먼저 일반적인 소프트웨어 공학에서 말하고 있는 개발 프로세스는 아래와 같습니다.

요구 사항 분석 -> 아키텍처 설계 -> 모듈 설계 -> 개발

위 개발 프로세스에 따라 아래와 같은 테스트 방식을 각 단계별로 거치게 됩니다.

단위 테스트 -> 통합 테스트 -> 시스템 테스트 -> 인수 테스트


좀 더 쉽게 설명하기 위해 그림으로 확인해 보도록 하겠습니다. 위 내용을 아래와 그림과 같이 V자 형태로 표현할 수 있는데, 이를 V 모델이라 합니다.



위와 같이 V 모델을 적용하여, 각 개발 단계에서 적절한 테스트 프로세스를 적용함으로써 Low 단에서의 결함을 미연에 방지할 수 있는 장점이 있습니다.


실제로 이런 일이 있었습니다. 단위 테스트 통합 테스트를 배제하고 모든 모듈을 개발 완료한 후 시스템 테스트 단계부터 테스트를 진행하면서 결함이 하나 발견되었는데 이 결함이 구조적인 결함이어서, 해당 프로그램을 싹 다 갈아엎은 적이 있었습니다. 결국에는 시간을 더 들여 개발을 완료 하긴 했지만 이 시간만큼 기업 입장에선 비용이 더 늘어난다는 단점이 있겠지요.

따라서 소프트웨어 개발 단계에서부터 위와 같은 V 모델을 이용한 적절한 테스팅이 이루어져야 하며, 나중에 포스팅하게 되겠지만, 위와 같은 동적 테스팅 방식이 아닌, 정적 테스팅을 통한 소프트웨어 품질에 대해서도 다루어 볼 예정입니다. 정적테스팅이란 앞서 말씀드린 보리스 바이저(Boris Beizer) 테스팅 레벨 4~5에 해당하는 수준이라 보시면 이해하기 편한 실 것 같습니다.


각설하고 V모델에서 언급한 테스트 분류를 요약하면 아래와 같습니다.


단위 테스트: 개발된 각각의 모듈을 테스트.

통합 테스트: 단위 테스트가 완료된 모듈을 통합하며 수행하는 테스트.

시스템 테스트: 통합된 전체 시스템을 테스트.

인수 테스트: 인수 기준인 사용자의 요구 사항 만족 여부를 테스트.


이 밖에도 회귀 테스트(Regression Test), 스모크 테스트(Smoke Test) 등 여러 방식의 테스트 방식이 있으며, 이런 테스트 방식을 이행하기 위해서 사용되는 테스팅 기법에 대해서 앞으로 포스팅해 나갈 예정입니다.


이번 포스팅에서는 개발 단계에 따른 테스트 분류와 종류를 알아보았습니다. 다음 포스팅에서는 단위 테스트와, 통합 테스트에 대해 좀 더 디테일 내용으로 포스팅해보도록 하겠습니다.

반응형