최근 개발을 할 때 테스트 코드로 로직을 확인하는 과정이 중요해지고 있다. 테스트 코드란 말 그대로 코드나 비즈니스 로직 자체를 테스트하기 위해 작성한 코드를 말한다. 심지어 애자일 방법론 중 하나인 '테스트 주도 개발(TDD : Test_Driven Development)'도 등장했다.
테스트 코드 작성 이유?
여러 이유가 있겠지만 테스트 코드의 장점에 대해서 몇 가지 말하면,
무엇보다 가장 큰 이유는, 문제를 미리 발견할 수 있다는 것일 것이다.
단위 테스트와 통합 테스트
테스트 방법은 여러가지가 있지만, 크게 나누면, '단위 테스트(Unit Teset)'와 '통합 테스트(Integration Teset)'로 구분할 수 있다.
단위 테스트 특징
단위 테스트는 테스트 대상의 범위를 기준으로 가장 작은 단위의 테스트 방식이다. 일반적으로 '메서드 단위'로 테스트를 한다. 테스트 비용도 적게 들기 때문에 테스트 피드백을 빠르게 받을 수 있는 장점을 가지고 있다.
통합 테스트 특징
통합 테스트는 모듈을 통합하는 과정에서 호환성 등을 포함해 애플리케이션이 정상적으로 동작하는지 확인하기 위해 하는 테스트 방식이다. 통합 테스트는 여러 모듈을 함께 테스트해서 정상적인 로직 수행이 가능한지 확인한다. 또한, 통합 테스트는 외부 요인들을 포함해 테스트를 진행해 애플리케이션이 온전히 동작하는지 테스트를 하게 된다. 다만 모든 컴포넌트가 동작해야 하기 때문에 테스트 비용이 커지는 단점도 있다.
테스트 코드
테스트 코드를 작성하는 방법은 다양하다. 하지만 그 중에서 가장 많이 사용하는 'Given-When-Then' 패턴과 'F.I.R.S.T' 전략을 알아보자!
Given-When-Then 패턴
Given-When-Then 패턴은 테스트 코드를 표현하는 방식 중 하나이다.
Given-When-Then 패턴은 테스트 주도 개발에서 파생된 BDD(Behavior-Driven-DDevelopment : 행위 주도 개발)를 통해 탄생한 테스트 접근 방식이다. 단위 테스트보다는 많은 호나경을 포함하는 테스트하는 '인수 테스트'에서 사용하는 것을 추천한다고 많이들 말하지만 단위 테스트에도 활용할 수는 있다.
사실, 간단한 테스트로 보는 단위 테스트에서는 잘 사용하지는 않는다. 이유는 불필요하게 코드가 길어진다는 점 때문이다. 하지만 테스트 코드의 장점 중 하나인 '명세 문서'의 역할을 중요하게 생각한다면 고려해볼 만 하다.
F.I.R.S.T
F.I.R.S.T는 좋은 테스트를 작성하는 속성? 규칙? 정도를 의미한다. 단위 테스트에 많이들 적용하곤 한다.