ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 유닛 테스트(Unit Test), 테스트 주도 개발(Test-driven development)
    Note 2021. 4. 22. 12:40

    유닛 테스트(Unit Test)

    소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차다. 즉, 모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하는 절차를 말한다. 

     

    모든 경우를 검사할 필요는 없지만 핵심적인 경우는 유닛 테스트 코드를 작성하는 것이 일반적이다.

     

    유닛 테스트를 왜 만드는가?

    문제점 발견

    유닛 테스트의 목적은 프로그램의 각 부분을 고립시켜서 각각의 부분이 정확하게 동작하는지 확인하는 것이다. 즉, 프로그램을 작은 단위로 쪼개서 각 단위가 정확하게 동작하는지 검사하고 이를 통해 문제 발생 시 정확하게 어느 부분이 잘못되었는지를 재빨리 확인할 수 있게 해 준다.

     

    변경 용이

    언제라도 유닛 테스트를 믿고 리팩토링을 할 수 있다. 리팩토링 후에도 해당 모듈이 의도대로 작동하고 있음을 유닛 테스트를 통해서 확신할 수 있다. 어떻게 코드를 고치더라도 문제점을 금방 파악할 수 있고 수정된 코드가 정확하게 동작하는지 쉽게 알 수 있게 되므로 프로그래머들은 더욱더 의욕적으로 코드를 변경할 수 있게 된다. 좋은 유닛 테스트 디자인은 그 유닛이 사용되는 모든 경로를 커버할 수 있는 테스트 케이스를 만들어 준다.

     

     

    테스트 주도 개발(TDD)

    테스트 주도 개발(Test-driven development)은 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스 중 하나이다. 개발자는 먼저 요구사항을 검증하는 자동화된 테스트 케이스를 작성한다. 그런 후에, 그 테스트 케이스를 통과하기 위한 최소한의 코드를 생성한다. 마지막으로 작성한 코드를 표준에 맞도록 리팩토링한다.

     

    개발을 하는 데 있어서 테스트가 주가 되어 개발한다는 의미이다. 그 말은 곧 “테스트를 염두에 둔 프로그램 개발 방법”을 말한다.

     

    <기존 개발>

     

     

    <테스트 주도 개발>

     

    그림과 같이 테스트 주도 개발은 테스트 코드를 먼저 작성하며 결과를 예상해볼 수 있기에 설계의 문제로 인한 오류 개선 속도가 한층 빨라질 것이다.

     

    장점

    • 보다 더 높은 퀄리티를 보장
    • 추가적인 요구사항이 있을 때 손쉽게 요구사항을 반영해줄 수 있음
    • 튼튼한 코드 생산: 테스트 코드를 먼저 작성한다는 것은 하나하나의 기능들에 대해서 철저히 구조화시켜 코드를 작성하는 것임)
    • 재설계 시간 단축: 테스트 코드를 먼저 작성하기 때문에 무엇을 먼저 해야 하는지 분명히 정의하고 시작)
    • 디버깅 시간 단축

    단점

    추가적으로 TDD를 공부하고 테스트 코드를 코드를 작성해야 하기 때문에 퀄리티 보다는 빠른 결과물을 원하는 환경에는 도입이 어려울 수가 있다. 데드라인이 잡히는 것과 같이 개발기간의 시간이 잡혀있는 경우에도 도입하기 힘들 수 있다.

     

     

     

     

    'Note' 카테고리의 다른 글

    Input type="date"  (0) 2021.04.28
    Reflow, Repaint  (0) 2021.04.23
    Sass/SCSS  (0) 2021.04.19
    프론트엔드 개발자가 신경 써야 할 보안  (0) 2021.04.18
    CI/CD  (0) 2021.04.17

    댓글