개발 방법론중에 하나로 질문을 받았었는데 대답을 하지 못했었다
'테스트코드를 작성하면서 개발하는것' 정도만 알고있었는데 어떻게 테스트 코드를 작성하죠? 라는 한단계 나아간질문에
머리가 멍해졌다
'테스트코드란 말 그대로 테스트하면서 코드를 짜는게 테스트가 아니였었나??'
테스트 코드가 도대체 뭔지 너무나 당연히 알고있다고 생각한 개념이 조금만 깊이 들어가자 내가 이 개념에 대해 제대로 알고있는게 아니였구나 하고 깨달았다.
테스트코드란 내가 작성한 메서드가 실제로 제대로 동작하는지 테스트 하는 코드이다.
기존에 작업을 할 때에는 서비스 화면을 로컬에 켜놓고 한번씩 돌려보면서 돌아가는지 제대로 응답값을 받아오는지 콘솔에 찍어보고 화면에 출력해보면서 작업을 했는데 기존에 하던 방식이 테스트코드의 방식인지는 지금 시점에서는 잘 모르겠다.
만약 기존에 하던 방식이 테스트코드 방식이라 할지라도 내가 개념을 제대로 모르고 대답을 못했다는 것이 더 중요하긴 하니까...
( 1번 영상 1:47 )
내가 만든 기능이 동작하는지 확인하는것이 testing 이라고한다.
TDD란 개발하기 전에 테스트코드를 먼저 작성하면서 개발하는 방식이다.
( 1번 영상 7:32 )
기본적으로 특정한 기능을 지정해서 테스트코드를 작성한다.
그 후 실패하면 코드가 기능할정도의 기능만을 가져와서 다시 테스트를 하고 성공할때 까지 반복한다.
이런식으로 테스트코드를 조금 작성하고 기능을 조금 구현하고...를 반복하며 개발하는것을 TDD 라고 한다.
(실패하는 테스트를 먼저 작성하고 그에 해당하는 기능을 구현해나가는 방식)
모든 기능에 대해 점검할 수 있다 (각각의 기능을 전부 세분화해서 테스트하기 때문 인것같다)
사용자 입장에서 코드를 작성할 수 있다 (모든 코드를 실제로 사용하는 입장을 겪기 때문인듯?)
시스템 전반적인 설계를 향상할 수 있다.
개발 집중력 향상 (소단위의 목표가 순차적으로 있으면 확실히 일할때 집중이 잘 될듯)
협업에서의 코드 접근성이 증가한다. (각각의 작은 기능들만을 떼어낸것이라 다른 사람이 접근하기 용이하다)