brunch

You can make anything
by writing

C.S.Lewis

by 향로 Sep 23. 2018

Gyuwon Yi 님 TDD 참관 후기

이규원님이 진행하시는 TDD 행사에 다녀왔습니다!

지금은 신청이 끝났습니다.


9월 20일 목요일 저녁 7시부터 진행되었습니다.

회사가 잠실이라 시간이 애매해서 1시간 휴가를 사용해서 다녀왔습니다.


우아한 형제들에서는 시간 단위 휴가가 가능합니다 여러분! 채용공고


90분간 진행이 예정되었는데, 같이 오신 분들 (저 포함 4분)이 모두 궁금한것이 많아 9시까지 진행되었습니다.

다들 어찌나 궁금한게 많으셨는지 규원님의 코딩하시는 시간이 10 ~ 20분밖에 되지 않았던것 같습니다.


그래도 개발하실때의 전체 프로세스나, 로컬에서 전체 통합 테스트 등등을 볼 수 있었는데요.

기억에 남는 질문들은 아래와 같습니다. 


1. 테스트 메소드의 이름을 한글로 해도 되는지? 

2. 단위 테스트의 범위는 프레임워크의 Context를 사용하지 않은 경우에만 해당 되는지 

3. 테스트를 위해 메모리용 DB (ex: H2)를 사용하시는지 

4. 메세징 큐를 사용하는 기능의 Funtioncal Test는 어떻게 진행하시는지 (비동기로 처리가 되는 경우)

5. 프로시져는 어떻게 테스트 하시는지 

6. 하나의 API를 만들때 코드는 바깥쪽 -> 안쪽으로 작성을 시작하시는지, 안쪽 -> 바깥쪽으로 작성을 시작하시는지 

(예: Controller -> Domain으로 코드가 작성되는지, Domain -> Controller 순으로 코드가 작성되는지) 

7. Arrange/Act/Assert (AAA) 와 given/when/then을 구별해서 사용하시는지 

8. Test First만 TDD인가요?


(음 또 뭐있었더라.. 기억이 가물가물...)


시연에서는 사용할만한 Task가 없어 아주 작은 기능의 코드를 리팩토링 하시는 과정을 TDD로 보여주셨습니다.

TDD 시연은 많은 분들이 알고 계시는 Red Green Refactor 로 진행을 하시는데 아주 작은 단위로 나눠서 진행을 하셔서 테스트 코드를 작성하기가 훨씬 더 수월하다라는 느낌을 받았습니다.


TDD 시연과 별개로 개발 Flow를 보여주셨는데 이 부분에서 굉장히 부러운 장면이 목격 되었습니다. 

모든 개발 환경이 일관된 환경을 유지하는 것인데요. 


예를 들어 Java 진영에서의 보편적인 개발 환경은 다음과 같습니다. (저 + 주변 기준) 


구글 드라이브(문서/파일관리) + Jenkins or Team City (빌드/배포) + Upsource or 코드 저장소 (코드리뷰) + Jira or Readmine (이슈 관리) + Confluence (위키) 


개발팀을 운영한다는 것은 이 툴들을 모두 다뤄야한다는 것을 의미합니다. 

이렇게 굉장히 많은 도구들의 조합이 MS 진영에서는 VSTS 로 통합되어 있었습니다. 

추가로

IntelliJ = VS  

AWS = Azure 

로 대치 됩니다. 


VS, VSTS, Azure 로 구성된 개발환경이 굉장히 부러웠던 것 중 하나였습니다. 


물론 Upsource의 코드 리뷰 기능이, IntelliJ IDEA의 개발 생산성이 다른 툴에 비해 약하다고는 전혀 생각하지 않습니다. 

여기서 얘기하는 부럽다는 것은 "개발에 관련된 모든 환경이 일관된 UX, UI, 단축키를 갖고 있다는 것"입니다. 


저는 개인적으로 생산성을 높이기 위해서는 사용하고 있는 모든 툴들의 UX/UI, 단축키가 똑같거나 비슷해야 한다고 생각합니다. 


이 상황에서 이 아이콘을, 이 단축키를 실행하면 이 기능이 실행될거야 라고 예상한대로 작동 한다는 것  


이게 생산성에 큰 영향을 준다고 생각합니다. 

뭐 하나만 하려면 문서를 찾아보고, 검색을 해야하거나, 아예 그런 기능이 있는지 조차 모르고 쓰는 기능만 쓰게 되면 생산성을 굉장히 감소시키는 일이라고 생각합니다. 

(서브 툴로 사용하는 VS Code를 IntelliJ 와 같은 단축키로 세팅해서 사용하는 이유이기도 하구요) 


오죽하면 이런 툴들을 소개하고 조합하는 책들이 나올까요. 


개인적으로 기대하는 것은 JetBrains Team 도구들을 모두 사용하면 비슷한 효과를 주지 않을까 싶긴합니다. 

(Hub라는 중앙 서비스와 함께 Upsource, TeamCity, YouTrack를 같이 사용한다면 VSTS와 거의 비슷한것 같습니다.) 


끝나고 나서는 일식포차 집에 가서 이것저것 이야기를 나눴습니다. 

9시부터 나눈 이야기가 끝나고 보니 새벽 1시 40분이였습니다.

이렇게 개발 이야기로 늦게까지 있어본건 정말 오랫만이였습니다.


회시이야기나, 취업, 이직에 관한 이야기 등 민감한 이야기들도 오고가고  TDD  시연 시간에 나오지 못했던 질문들도 좀 더 쉽게 이야기하면서 시간 가는줄 몰랐던 시간 이였습니다.


시즌 2를 할지 말지 고민중이라고 하셨는데, 혹시나 시작하신다면 이 글을 보신 분들은 꼭 신청해보시길 추천합니다.

다만 질문을 많이 준비해가실수록 많은 내용을 얻어가실수 있습니다.

좋은 기회 주셔서 감사합니다 규원님  


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari