TDD (Test Driven Development)

태그
SW Testing
날짜
2023/10/12
2 more properties
TDD(Test Driven Development)는 테스트를 먼저 작성하고, 그것을 통과하기 위한 코드를 작성하는 방식입니다. 이를 통해 더욱 견고하고 유지보수가 쉬운 소프트웨어를 만들 수 있습니다.
간단한 예시로 Calculator 클래스를 TDD로 개발해보겠습니다.
1.
테스트 작성
우선, 테스트 코드를 작성합니다. 이 예제에서는 JUnit을 사용하였습니다.
import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; class CalculatorTest { @Test void testAdd() { Calculator calculator = new Calculator(); assertEquals(2, calculator.add(1, 1)); } @Test void testSubtract() { Calculator calculator = new Calculator(); assertEquals(0, calculator.subtract(1, 1)); } @Test void testMultiply() { Calculator calculator = new Calculator(); assertEquals(4, calculator.multiply(2, 2)); } @Test void testDivide() { Calculator calculator = new Calculator(); assertEquals(2, calculator.divide(4, 2)); } }
Java
복사
1.
실패하는 테스트 실행
위에서 작성한 테스트 코드를 실행합니다. 이 시점에서는 Calculator 클래스가 아직 구현되지 않았으므로 모든 테스트가 실패할 것입니다.
1.
구현
테스트 코드가 실패한 이유를 분석하여 Calculator 클래스를 구현합니다.
javaCopy code public class Calculator { public int add(int a, int b) { return a + b; } public int subtract(int a, int b) { return a - b; } public int multiply(int a, int b) { return a * b; } public int divide(int a, int b) { if (b == 0) { throw new IllegalArgumentException("Divisor cannot be zero."); } return a / b; } }
Plain Text
복사
1.
테스트 실행
Calculator 클래스를 구현한 후, 다시 테스트 코드를 실행합니다. 이번에는 모든 테스트가 통과해야 합니다. 만약 어떤 테스트가 실패한다면 해당 테스트가 실패한 이유를 찾아 수정합니다.
위와 같이 TDD를 사용하면 코드의 품질을 높일 수 있습니다. 또한, 테스트 코드를 작성함으로써 해당 코드가 어떤 기능을 하는지 명확하게 이해할 수 있으며, 유지보수성도 좋아집니다.
실패하는 코드
TDD에서 실패하는 테스트란, 아직 구현되지 않은 기능을 테스트하는 코드를 실행했을 때, 해당 코드가 기대한 결과를 반환하지 않는 상황을 말합니다. 실패하는 테스트는 TDD의 첫 번째 단계에서 작성됩니다.
TDD에서는 실패하는 테스트를 먼저 작성하고, 이 테스트가 성공할 수 있도록 코드를 작성합니다. 이렇게 함으로써, 코드의 기능이 명확해지고, 코드가 더욱 견고하게 작성될 수 있습니다.
예를 들어, 계산기 애플리케이션을 구현할 때, 덧셈 기능을 구현하기 이전에 덧셈에 대한 실패하는 테스트를 작성할 수 있습니다. 이때, 덧셈을 위한 두 수를 더했을 때, 기대하는 값과 실제 반환된 값을 비교하는 테스트 코드를 작성하게 됩니다. 이 테스트 코드를 실행하면 덧셈 기능이 아직 구현되지 않았으므로, 실패하게 됩니다. 이제, 실패한 이유를 파악하고, 덧셈 기능을 구현하여 이 테스트를 통과시키면 됩니다.