반응형
1. TDD 는?
- Test-Driven-Development의 약어로서 소프트웨어를 개발하는 여러 방법론 중 하나
- TDD의 핵심은 기존에는 테스트 코드를 먼저 작성하고, 그 후에 실제 코드를 작성하는 것
- 일반적인 개발 흐름은 코드작성 → 테스트코드 작성의 흐름을 따르지만, TDD는 실제 코드를 작성하기도 전에 테스트 코드부터 작성을 시작한다.
2. TDD의 Red-Green-Blue 3가지 단계
- Red : 실제 구현을 하기 전에, 먼저 실패하는 테스트 코드를 작성한다. 그 후 테스트를 실행한다. 실제 코드가 작성되지 않았기에 테스트 코드는 당연히 실패한다.
- Green : 테스트를 통과하기 위해 가장 간단한 형태로 코드를 작성한다. 그 후 테스트를 실행한다. 테스트는 실제 구현이 되었기에 통과한다.
- Blue : Green 단계의 코드를 더 좋은 형태로 리팩터링한다. 이 과정에서 지속적으로 테스트를 실행해서 테스트가 통과하는지 확인한다.
이러한 방식으로 개발을 하게 되면 얻을 수 있는 이점
- 코드 작성 과정에서 확신 및 자신감을 얻을 수 있게 된다.
- 코드의 동작에 대한 테스트가 작성되어 있으며 이를 충족하는 것을 실시간으로 피드백 받으며 진행하기에 코드가 제대로 동작할것이란 확신을 얻을 수 있다.
- 구현이 잘못 된 경우 바로 확인할 수 있다.
- 실제 개발을 하다보면 한참 코드를 작성했는데 실제 브라우저에서 테스트했을 때 원하는 대로 동작하지 않아 어느 지점부터 잘못됬는지 파악하기 위해서 전체 개발과정을 돌아봐야 하는 경우는 꽤나 자주 발생하는 상황이다. 하지만 테스트 코드가 준비된 상황에서 개발을 하게 되면 특정 지점에서 잘못된 동작이 발생하면 바로 알 수 있기에 바로 구현을 수정할 수 있다. 즉 디버깅 과정이 용이해진다는 장점이 있다.
- 코드의 동작이 명확해진다.
- 테스트 코드를 작성하기 위해서는 이 코드가 어떤식으로 동작해야하는지를 먼저 생각해야한다. 기존의 방식대로 일단 코드부터 작성하게 되면 나중에 이 코드에서 하고자하는 역할과 구현해야 되는 동작들이 뒤죽박죽 섞이게 되는 상황이 발생할 수 있지만, 테스트 코드를 미리 작성한다면 이 과정에서 자연스럽게 이 코드가 해야하는 동작과 어떤 인터페이스가 갖춰줘야하는지를 생각하고 구현하게되므로 자연스럽게 코드의 동작과 관심사의 분리가 비교적 잘 이루어진다는 장점이 있다.
반응형
'Computer Sceience > etc.' 카테고리의 다른 글
소프트웨어 테스트와 종류 (0) | 2022.10.31 |
---|---|
Design Pattern (MVC & Flux) (0) | 2022.10.28 |
의존성 / DIP / 의존성 주입 (0) | 2022.10.27 |
횡단 관심사 (Cross-cutting-concerns) (0) | 2022.10.26 |