상세 컨텐츠

본문 제목

[개발 기법] TDD(Test-Driven Development, 테스트 주도 개발)

Information Technology/Computer Science

by Developer, Jiyong Kim 2024. 5. 6. 13:11

본문

TDD란 Test-Driven Development의 약자로, 테스트 주도 개발을 말한다. 개발을 할 때, 기능을 작은 단위로 쪼개고, 해당 단위의 테스트 케이스를 만든 후에 코드를 작성하는 방식의 개발방법론이다.

 

TDD방식은 우선 코드가 깨끗하고, 디버깅에 드는 시간과 노력을 줄일 수 있다. 또한 개발자가 요구사항을 명확하게 이해하도록 도와 더 좋은 설계와 개발을 할 수 있도록 하며, 추후 기능 변경이나 코드 구조 변경(리팩토링)이 용이해진다는 장점이 있다.

 

아래는 파이썬의 unittest 라이브러리를 사용한 TDD 방법론의 간단한 예시이다. 우선 필요한 코드를 작성한다.

class Calculator:
    def add(self, a, b):
        return a + b

이후 아래와 같이 테스트코드를 작성한다. 2와 3을 더해 5가 정상적으로 출력되면 테스트 통과이다.

import unittest
from calculator import Calculator  # calculator 모듈에서 Calculator 클래스를 임포트

class TestCalculator(unittest.TestCase):
    def test_add(self):
        calc = Calculator()
        result = calc.add(2, 3)
        self.assertEqual(result, 5)

if __name__ == '__main__':
    unittest.main()

테스트 통과

 

테스트를 통과하지 못하면 터미널에 아래와 같이 출력된다. result에 6을 입력한 결과이다.

테스트 실패

 

초기에 TDD를 적용함으로써 발생하는 시간적 투자는 개발 프로세스의 후반에 발생할 수 있는 여러 비용(버그 수정, 유지보수, 리팩토링 등)을 상쇄할 수 있다. 또한, 안정적인 소프트웨어를 더 빨리 출시할 수 있으며, 시장에 빠르게 적응하고 사용자 피드백을 받아 적용, 개선하는 것이 쉬워진다는 장점이 있다.

결론적으로, TDD는 초기 러닝 커브와 시간 투자가 필요하지만, 장기적으로는 더 나은 프로그램 품질, 낮은 버그 비율, 간소화된 유지보수 프로세스로 인해 전체 개발 과정에서의 효율성을 증가시킨다.

 

관련글 더보기