• [CS] TDD(테스트 주도 개발)와 단위(Unit) 테스트, 기능(function) 테스트

    2023. 11. 8.

    by. 지은이: 김지은

    728x90

    TDD(Test-Driven Development)란?

    TDD는 코드 작성 전에 테스트를 작성하고 테스트에 통과하도록 코드를 작성하는 것으로 Red-Green테스트라고 한다.

    1. Red: 코드 작성 전에 실패하는 테스트 케이스를 작성해서 코드가 제대로 작동하지 않는 '빨간색' 상태로 만든다.

    2. Green: 코드 작성 후 테스트를 통과할 수 있는 코드를 작성해서 '초록색' 상태로 만든다.

    3. Refector: 마지막으로, 코드를 리팩토링하여 중복을 제거하고 가독성 높이는 작업을 수행한다.

     

    TDD를 사용하는 이유

    테스트 코드는 코딩 프로세스의 일부라고 생각하면,

    원하는 대로 작동하는지 확인할 수 있고, 코드를 변경해도 자동으로 테스트를 실행해서 기존의 기능들이 올바르게 작동하는지

    확인할 수 있디 때문에 효율적이다.

    또한, TDD는 코드의 잠재적인 결함을 초기에 식별할 수 있어서 사전에 버그를 방지할 수 있으며 이러한 특성들은 코드의 품질 향상, 유지보수 비용 감소를 도와준다.

     

    테스트 유형

    1. 단위 테스트(Unit Testing)

    주로 함수, 메서드 또는 React 컴포넌트와 같은 작은 단위를 테스트하는 것을 말한다.

    단위테스트는 특정 기능 또는 단위의 동작을 검증하는데 중점을 두며, 단위를 최대한 격리 시켜서 특정 기능이 다른 부분에 의존하지 않도록 설계되기 때문에 테스트에 실패할 때 해당 단위가 어떤 문제인지 쉽고 정확하게 파악 할 수 있다.

     

    하지만, 실제 사용자 상호작용과는 거리가 있어 상호작용에 대한 문제는 발견되지 않을 수 있다.

    또한, 리팩토링으로 인해 동작이 변경되지 않아도 테스트가 실패하는 경우도 있다.

     

    2. 기능 테스트(Function Testing)

    특정 동작이나 유저 플로우 또는 기능과 관련된 모든 요소를 포함하는 테스트를 말한다.

    기능 테스트는 사용자가 소프트웨어와 상호작용하는 방식과 밀접하기 때문에 테스트에 통과하면 사용자에게 문제가 없고,

    테스트에 실패하면 사용자에게 문제가 발생할 가능성이 높다.

     

    하지만, 단위 테스트와 달리 단위 간 밀접한 연결이 없어서 어떤 부분의 코드가 테스트 실패의 원인인지 정확히 파악하기 어렵다.

     

    TDD와 단위 테스트

    여러가지 유형의 테스트가 있지만 TDD는 주로 작은 단위의 기능을 개발할 때 많이 사용하기 때문에 단위 테스트로 수행한다.

    일반적으로 먼저 단위 테스트를 작성하고, 그 다음 해당 테스트를 통과할 수 있는 코드를 구현하는 식으로 개발을 진행한다.

     

     

    댓글