개발노트

[개발상식] TDD(Test-Driven-Development) 개념

별토끼. 2018. 4. 9. 16:33
반응형

TDD(Test-Driven-Development) 개념 




  • TDD란?

- 매우 짧은 개발 사이클에 의존하는 Software 개발 프로세스

- 요구 기능에 대해 자동화된 Test case를 작성 후 해당 테스트를 통과하는 가장 간단한 코드를 작성하는 것

- 일단 Test를 통과하는 코드 작성하고 상황에 맞게 리팩토링 하는 과정을 거치는 것

- 즉, 테스트가 코드작성을 주도



  •  테스트 추가하기
- 새로운 기능을 추가하기 전 Test를 먼저 작성 (이 때, 개발자는 요구사항과 명세 잘 이해해야 한다)
- 이는 코드 작성 전, 요구명세에 집중하도록 한다.


  • 새 기능 추가 후 검사
- 새로운 기능을 추가한 후, 기존의 기능이 잘 돌아가는지 테스트 코드를 통해 빠르게 확인 가능

  • 코드 리팩토링
- coding convention, 네이밍 규칙, 일관성 있는 메소드·변수·클래스명, 코드의 확장성, 비즈니스 로직에 대한 고려, 예외처리 부분 등 고려하다보면 디버깅 과정에서 코드가 더럽혀지기 마련
- 코드가 방대해지면 코드 리팩토링 도중 오류가 발생하기 쉽다.
- 이를 방지하기 위해 테스트 케이스 주도 개발을 통해 그 중심을 잡아준다.


  • 고려해야할 점
1) 코드 생산성 : 코드 퀄리티보다 생산성 요구하는데 TDD가 걸림돌이 될 수 있다.
2) TC 작성 난이도 : 진입장벽이 있다. 
(어떤 부분에 대해 작성할지, 어떻게 작성할지, test프레임워크 중 어떤것이 적합한지, 팀원 모두가 익숙한지 등을 고려)
3) 모든 상황에 TC를 작성하다보면 주객전도가 될 수 있으므로 효율적으로 작성할 필요가 있다.



[출처] https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Development_common_sense

반응형