본문 바로가기

TIL(Today I Learned)

TIL-231011(TDD)

📝오늘 공부한 것

  • TDD
  • 커리어톤 참여하기
  • 프로그래머스 문제풀기

 

알게 된 점

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

 소프트웨어를 개발하는 여러 방법론 중 하나이다. 제품이 오류없이 정상 작동하는지 확인하기 위해 모든 코드는 프로그래머가 작성하고 나서 테스트를 거치게 된다. TDD에서는 제품의 기능 구현을 위한 코드와 별개로, 해당 기능이 정상적으로 움직이는지 검증하기 위한 테스트 코드를 작성한다. 이를 통해 테스트가 실패할 경우, 테스트를 통과하기 위한 최고한으로 코드를 개선한다. 최종적으로 테스트에 성공한 코드를 리팩토링 하는 과정을 거친다.

RED : 테스트 실패

GREEN : 테스트 성공

REFACTOR : 리팩토링

 

RED : 테스트 실패

 - 구체적인 하나의 요구사항을 검증하는 하나의 테스트를 추가한다.

 - 추가된 테스트가 실패하는지 확인한다.

실패하는 것이 확인되어야, 테스트가 검증력을 가진다고 신뢰할 수 있다. 실패의 이유는 운영코드가 아직 변경되지 않았기 때문이어야한다. 테스트 코드의 문제이면 안된다.

 

GREEN : 테스트 성공

 - 추가된 테스트를 포함하여, 모든 테스트가 성공하게끔 운영코드를 변경한다.

 - 테스트의 성공은 모든 요구사항을 만족했음을 의미한다.

 - 테스트 성공을 위한 최소한의 코드 변경만 진행한다.

테스트 성공을 위한 최소한의 코드 그 이상을 변경하서나 추가하면 안된다. 테스트 되지 않은 코드가 중간에 추가되면, 이후 리팩토링 등의 다른 프로세스에서 어떤 부작용을 가져올지 알 수 없기 때문이다.

 

REFACTOR : 리팩토링

 - 코드베이스를 정리한다.

 - 인터페이스 뒤에 숨어 있는 구현 설계를 개선한다.

 - 가독성, 적용성, 성능을 고려한다.

 

장점 :

 - 보다 튼튼한 객체 지향적인 코드 생산

 - 재설계 시간의 단축

 - 디버깅 시간의 단축

 - 테스트 문서의 대체 가능

 - 추가 구현의 용이함

 

단점 :

생산성의 저하

 

 

http://clipsoft.co.kr/wp/blog/tddtest-driven-development-%EB%B0%A9%EB%B2%95%EB%A1%A0/

 

TDD(Test-Driven-Development) 방법론 - CLIPSOFT

작성자 : 강성웅 부장   TDD(Test-Driven-Development) 방법론에 대하여…     - TDD가 무엇 일까? TDD란 Test Driven Development의 약자로 ‘테스트 주도 개발’이라고 한다. 테스트 주도 개발(TDD)은 설계 이후

clipsoft.co.kr

https://media.fastcampus.co.kr/knowledge/dev/tdd/

 

TDD란? 테스트주도개발에 대한 편견과 실상, 방법론

TDD, 즉 테스트 주도 개발(Test Driven Development)에 대한 프로그래머들의 의견은 늘 엇갈린다. TDD의 실효성을 업무로 경험한 사람들은 TDD를 더 효과적으로 실무에 적용하기 위해 고민한다. 반면, 회사

media.fastcampus.co.kr

 

 

[ 테스트코드 ]

소프트웨어의 기능과 동작을 테스트하는 데 사용되는 코드이다. 소프트웨어 테스트는 소프트웨어의 결함을 찾아내고 수정하는 과정에서 매우 중요하다. 테스트 코드는 개발자가 작성한 코드를 실행하고 예상된 결과가 나오는지 확인하는데 사용된다.

 

 - 단위테스트(Unit Testing), 통합테스트(Integration Testing), 시스템 테스트(System Testing), 사용자인수 테스트(User Acceptance Testing) 등 다양한 종류가 있다.

 

반적으로 개발자는 단위테스트, 통합 테스트와 관련된 테스트코드를 주로 다룬다.

 

단위 테스트(Unit Test)

- 하나의 모듈이나 클래스에 대해 세밀한 부분까지 테스트가 가능하다.

- 하지만 모듈 간에 상호 작용 검증은 할 수 없다.

 

통합 테스트(Integration Test)

- 두 개 이상의 모듈이 연결된 상태를 테스트할 수 있다.

- 모듈 간의 연결에서 발생하는 에러 검증이 가능하다.

 

장점 :

 - 코드 품질 향상

 - 회귀 테스트

 - 문서화

 - 리팩토링 지원

 

단점 :

개발 시간 증가

 - 불완전한 테스트

 - 오버 엔지니어링

 - 유지 보수 비용

 - 학습 곡선

 

https://yozm.wishket.com/magazine/detail/1964/

 

테스트 코드는 왜 만들까? | 요즘IT

지금 돌이켜 생각하면 부끄러운 일이지만, 처음 테스트 코드를 마주했을 때 든 생각은 '왜 귀찮은 테스트 코드를 만들어야 하는 걸까?'였습니다. 물론 지금은 테스트 코드의 중요성을 깨달아 열

yozm.wishket.com

느낀 점🤔

이번 프로젝트에서 테스트코드를 작성해보고 싶었는데 기능을 구현하고, 프론트와의 에러를 잡느라 생각보다 시간이 나지 않았다. 이제는 프로젝트도 끝나고 어느정로 리팩토링도 진행했으니, 테스트 코드를 작성해봐야겠다!!