단위 테스트, 통합 테스트 란?

2018. 8. 22. 23:40IT·테크/SQA

반응형


오늘은 단위 테스트와 통합 테스트에 대해 알아보도록 하겠습니다.


단위 테스트 (Unit Test)


개발 단계에서 각 모듈이 개발 완료되는 시점에서 단위 테스트를 시행합니다.

모듈이라 하면, 어렵게 생각하실 거 없습니다. 일종의 프로그램 내의 하나의 기능으로 생각하시면 쉬울 것 같습니다. MS Word라는 프로그램이 있다는 가정하에 Word 내에 있는 기능 중, 폰트 사이즈 선택 기능이 일종에 모듈이라 볼 수 있겠습니다. 다시 말해 모듈을 테스트한다는 의미는 하나의 기능만이 잘 동작하는지를 확인하는 과정입니다. 다른 말로는 모듈 테스트(Module Test)라고도 합니다. 모듈이 개발 완료되는 시점에서 개발자가 명세서 기반으로 정확히 개발을 하였는지를 테스트하게 됩니다. 단위 테스트에서는 화이트박스 테스트, 블랙박스 테스트 기법을 모두 이용하여 진행할 수 있지만, 내부 구조를 들여다볼 수 있는 화이트박스 테스트 기법을 주로 이용하여 테스트를 진행하게 됩니다.


본론으로 들어와서 테스트하려는 모듈을 실행하려면 해당 모듈을 실행할 수 있는 환경 구성이 필요합니다. 다시 말해 테스트할 모듈을 호출하여 실행하는 모듈이 있을 수 있으며, 반대로 테스트하려는 모듈이 다른 모듈을 호출하여 실행하는 경우도 있을 수 있습니다. 즉 테스트하려는 모듈을 실행하려면 앞서 말한 2가지 경우의 수의 모듈이 모두 존재해야 정확한 테스트가 가능합니다. 하지만 상위 모듈이나 하위 모듈이 100% 존재한다는 보장이 없기 때문에 아래와 같은 가상의 모듈을 만들어 사용해야 합니다.


테스트 드라이버 (Test Driver): 테스트 대상이 되는 모듈을 호출하여 대상 모듈의 실행 결과는 받는 가상 모듈

테스트 스텁 (Test Stub): 호출하는 상황의 대상 모듈을 테스트하기 위한 가상 모듈


다시 정리하면 테스트 드라이버는 테스트 대상이 되는 모듈의, 상위 가상 모듈로 생각하시면 쉽게 이해가 가실 거 같고, 반대로 테스트 스텁은 테스트 대상이 되는 모듈의, 하위 가상 모듈로 생각하시면 되겠습니다.



통합 테스트 (Integration Test)


모듈을 통합하는 과정에서 모듈 간 호환성의 문제를 찾아내기 위해 수행되는 테스트입니다.

다시 말에 모듈 간의 인터페이스가 올바르게 작동하는지를 테스트하게 됩니다. 예를 들어 다시 MS Word라는 프로그램 내에 ‘폰트 사이즈’ 모듈과 ‘폰트 스타일’ 모듈을 통합한다는 가정을 해봅니다. 이때 만약 ‘폰트 스타일’ 모듈 구현 당시 폰트 사이즈가 변화할 수 있다는 것을 인지하지 않고 개발을 하게 된다면 폰트 사이즈 모듈과 통합되는 과정에서 에러가 발생할 수 있습니다. 이를테면 기본 폰트 사이즈 9pt에서만 폰트 스타일이 먹히는 문제? 일수 있겠습니다.

다시 정리하면 각각의 통합한 모듈이 올바르게 연계되어서 동작하는지를 테스트하게 됩니다.


모듈 테스트 시 통합 기법으로는 크게 빅뱅 통합과 점진적 통합 기법이 있습니다.


빅뱅 통합: 전체 모듈을 모두 통합한 이후 통합 테스트를 수행하는 방식 이때 오류가 발생했을 시 오류가 발생한 모듈을 찾기가 쉽지 않다는 단점이 있습니다.

점진적 통합: 한 번에 모듈을 통합하지 않고 점진적으로 통합하는 방식으로 하향식 통합, 상향식 통합 기법이 대표적입니다. 점진적 통합 기법을 이용하게 되면 설계상의 오류를 빨리 발견할 수 있다는 장점이 있습니다.

반응형