지금까지 간단한 도서관 관리 웹서비스를 제작해보면서 내가 만든 코드가 잘 동작하는지 확인하기 위해서 직접 웹브라우저에 입력을 통해 출력된 결과를 확인해봤습니다.
하지만 이러한 접근방식에는 여러 한계가 있습니다.
소프트웨어가 잘 동작하나 직접 웹에서 테스트하는 과정은 시간이 매우 오래걸리는 작업입니다. 시스템이 여러 소프트웨어 요구사항을 잘 구현했는지 하나하나 눌러가며 테스트해야하기 때문입니다. 더해서, 시스템이 수정될 때마다 코드가 깨지지는 않았는지, 요구사항이 만족되는지 매번 동일한 작업을 수행해야 합니다.
이러한 문제를 해결하기 위해 소프트웨어를 테스트하기 위한 소프트웨어가 존재합니다. 이러한 소프트웨어 테스팅 프레임워크들은 다음과 같은 기능을 제공합니다.
테스트 케이스를 관리하고 실행할 수 있는 기능을 제공
테스트 자동화 기능을 사용하여 효율적으로 반복적인 테스트를 수행할 수 있도록 함
테스트 실행 결과를 보고서 형태로 제공
Java 진영에서는 JUnit이라는 테스팅 프레임워크가 존재합니다. 이 프레임워크를 사용해 크게 2가지 관점을 통해 소프트웨어를 테스팅 하는 방식을 알아볼 것입니다.
이 중 단위테스트를 할 때에는 각각의 모듈을 고립(isolate)시키는 과정이 필요합니다. 이를 위해 Test Double 을 사용합니다. Test Double을 만드는 방법을 실습에서 알아볼 것입니다.
또한 소프트웨어 개발 프로세스 모델 중 하나인 **Test Driven Development (TDD)**의 개념에 대해서도 알아보겠습니다.