TDD 도대체 왜 쓰는거지?

호기성세균·2024년 3월 3일
0

cs

목록 보기
13/29
post-thumbnail

한마디로 정의하자면..

테스트 주도 개발

(소프트웨어 개발 방법론/애자일 개발 방식 중 하나)
❗️선 개발 후 테스트 방식이 아닌 선 테스트 후 개발이라고 생각하면 된다.

1. 테스트 케이스 작성(기능 구현하지 않았으니 무조건 실패) /red
2. 테스트 케이스를 통과하는 코드 작성 /green
3. 코드 리팩토링 /redactor

-> 123 무한 반복하는게 핵심 (에자일 개발 방식)


그래도 장점은 있다!

장점 :

  • 재설계 시간 단축
    (테스트 코드 먼저 작성하기 때문에 개발자가 무엇을 해야하는 명확하게 정의하고 개발/ 테스트 시나리오 작성하면서 다양한 예외 사항 고려)
  • 유지 보수 용이
    (기본적으로 단위 테스트 기반의 테스트 코드 작성 → 문제 발생 시 각각 모듈별로 테스트 진행하면 문제점 쉽게 찾을 수 있다. )
  • 기능 추가나 변경하는 과정에서 발생할 수 있는 side effect 줄이기 가능
    (테스트 코드의 장점)

⭐️단점⭐️ :

  • 개귀찮음. 개발 시간보다 테스트 코드 작성하는데 더 시간 많이 걸림
  • 기획 조금 변경해서 코드 한 줄 바꾸면 테스트 코드 한 10개쯤 실패함
    (이 역할로 사이드 이팩트 발생 가능성을 낮추긴하지만 고쳐야 하는 입장에서는 눈물남)

그 외 잡지식

TDD 대표적인 Tool : JUnit

JUnit이란?

→ java 진영의 대표적인 test framework

단위 테스트(unit test를 위한 도구 제공)

  • 모든 함수와 메소드에 대한 각각의 테스트 케이스를 작성하는 것을 단위 테스트라 한다

🤷🏻‍♀️ 그럼 통합 테스트는 뭔데? 비즈니스 로직 자체를 테스트

→ 어노테이션 기반으로 테스트 지원

→ 모듈로는 junit vintage, jupiter, platform 있음

애자일? 1~4주 사이의 짧은 주기로 반복적이고 점진적인 개발을 통해 변화에 민첩하게 대응

모듈화? 구성 단위. 예를 들 부품 하나를 내가 원할 때 끼웠다 뺄 수 있는거. 반대말은 일체화


TDD에 대한 개인적 생각...

프로젝트에 TDD를 도입하자고 패기넘치게 시작했지만 그건 뭣도 모르는 사람들의 패기였다... 아직도 테스트코드한테 뚜드려맞고있다...
심지어 내 실력이 부족해서 TDD의 장점도 잘 못느끼고 있다.
한 20년 전부터 TDD개념이 나왔다던데 왜 이제야 유행했는지 알 것 같다. 누가 프로젝트에 TDD를 도입한다 하면 부모의 원수라도 한 번쯤 말릴 것

  • tdd가 유행하면서 spring에 테스트 모듈이 추가되었다고 한다! 유행에 민감한듯
profile
공부...열심히...

0개의 댓글