본문 바로가기
Back-End

TDD

by hoya7788 2024. 9. 2.

TDD(Test-driven development) 테스트 주도 개발

  • 단위(Unit) 테스트
  • 통합(Integration) 테스트
  • 인수(UI) 테스트

TDD 개발의 장점

  1. 디버깅 시간을 단축할 수 있다.
    모든 모듈의 유닛 테스트 코드가 있기 때문에 손쉽게 오류를 찾을 수 있다.
  2. 작성한 코드가 가지는 불안정성을 개선하여 생산성을 높일 수 있다.
    코드가 내 손을 떠나 사용자에게 도달하기 전에 문제가 없는지 먼저 진단 받을 수 있다.
    그렇기 때문에 코드가 지닌 불안정성과 불확실성을 지속적으로 해소해준다.
  3. 재설계 시간을 단축할 수 있다.
    테스트 시나리오를 작성하려면 먼저 기능에 대한 포괄적인 이해가 필요하기 때문에
    개발자가 지금 무엇을 해야하는지 분명히 이해하고 개발을 시작하게 된다.
  4. 추가 구현이 용이하다.
    TDD의 경우 자동화된 유닛 테스팅을 전제하므로 테스트 기간을 획기적으로 단축시킬 수 있다.
  5. 각 테스트가 요구사항을 직접 식별하므로 코드와 요구사항이 긴밀하게 연결된다.
    복잡한 기능 정의서와 같은 문서를 볼 필요 없이 테스트 코드와 함께 있는
    Test Case를 통해서 Method에 대한 기능 정의를 이해할 수 있다.

TDD 단점

  • 시간이 많이 소요된다.
    실패되는 테스트 코드를 1차원적으로 수정하면서 시작하기 때문에 시간이 많이 소요된다.
    그렇기 때문에 무조건 TDD를 적용하는 것은 옳지 않다.

TDD를 하는 이유

  1. 올바르게 작동
    목표를 달성하는지를 확인하는 것이고, 이는 올바르게 작동하는지를 확인하는 것이다.
  2. 깔끔한 코드
    사용함에 있어 좀 더 사용하기 좋은 코드(인터페이스 중심 관점)를 만드는 것이다.

올바르게 작동하는 깔끔한 코드
다시 말해 목표한 대로 작동하는 사용하기 좋은 코드를 만드는 것이 TDD의 목표이다.

리팩토링

TDD는 어떻게 하는 것인가?

  1. 올바르게 작동하는 코드를 만든 후
  2. 깔끔하게 작동하는 코드로 리팩토링 한다.

리팩토링이란? 작동하는 결과는 그대로 두고 내부 구현을 수정하는 것.

암호 검사기 규칙

  • 0부터 9사이의 숫자를 포함
  • 길이 8글자 이상
  • 대문자 포함
  • 규칙 1개 이하 약함
  • 규칙 2개 충족 보통
  • 규칙 3개 충족 강함

경우의 수 생각하기
규칙이 3가지니까 한가지 규칙당 2가지의 경우가 나오므로 각각을 곱하면 총 8가지의 규칙이 나옴
2진수의 경우의 수와 유사하다고 보면 된다. 이러한 경우의 수가 테스트 케이스의 수라고 생각하면 된다.


JUnit?

JAVA언어로 테스트 개발을 할 수 있는 프레임워크이다.

'Back-End' 카테고리의 다른 글

Getter와 Setter  (0) 2024.08.21
접근제한자 종류  (0) 2024.08.20
자바에서 전역변수와 멤버변수의 차이점  (0) 2024.07.29
자바 환경변수를 설정하는 이유  (0) 2024.07.15