본문 바로가기
Conference

[2021.03.16.(화)] 우아한테크세미나 - 우아한 ATDD

by myspace 2021. 3. 16.

원래 7시 시작인데 유튜브 라이브 이슈가 생겨서 약 14분 동안 진행이 되지 않았다. 결국 줌으로 옮겨서 7시 18분 쯤부터 강연을 시작했다. 약 50분 동안 강연하고 10분 정도를 쉰 뒤, 재강연을 해서 총 2부로 나뉜 시간이었다. 1,2부 모두 연사 류성현(브라운) 님이 발표해주셨다. 약 30분 간의 Q&A 시간은 자바지기 박재성 님도 함께 해주셨다.

 

<1부> 

- ATDD(Acceptance Test Driven Design) : 인수 테스트 주도 개발. BDD와 비교되는 경우가 많음.
- TDD(Test-driven Development) : 테스트 주도 개발.
- BDD(Behavior-driven Development) : 행위(동작) 중심 개발. TDD를 조금 더 발전시킨 형태.

- 페어 프로그래밍 : 애자일 소프트웨어 개발 중 하나로 하나의 컴퓨터에서 두 사람의 프로그래머가 작업하는 방법. 코드를 작성하는 사람이 진행자(dirver)가 되고 다른 한 사람이 관찰자(observer, navigator)가 되어 코드 검토(code review)를 하며 프로그래밍을 작성.
- 테스트 작성 권장 : 혼자 개발하게 되면 미리 작성 돼있는 테스트 코드를 참조해서 피드백을 받음으로써 심리적 안정감을 제공받음.
- 인수 테스트 : 시나리오(사용자 스토리) 기반의 기능 테스트.

 

<2부> 

 

- 한글로 메서드를 네이밍하면 가독성이 좋다.
- 인수 테스트 클래스를 만들 때 같은 테스트 픽스처를 공유하는 인수 테스트를 클래스 단위로 묶는다.

<Q&A>


Q1. ATDD라는건 TDD의 레드그린 사이클을 따라가되 테스트케이스를  Given/When/Then 형식으로 하는 건가?

A1. 레드그린 사이클을 따라간다는 개념보다는 인수테스트를 먼저 작성한 뒤 개발해나가는 방식. 그 다음 기능 구현을 할 때 레드그린 사이클을 이어나가면 좋을 듯. ATDD와 TDD의 사이클은 같다고 생각하면 될 것 같음.

 

Q2. 인수테스트가 대략 몇개정도 작성이 되어있나?

A2. 다른 서비스는 500개 이상인데 우리는 100개 정도로 적다. 개발만 하지 않다보니 갯수가 적지만 필요한 기능은 다 작성했으므로 100개는 넘는다.

 

Q3. RestAssured를 사용하신다고 하셨는데 TestRestTemplate를 사용해서 백엔드만의 테스트를 가능하다고 생각하는데 RestAssured를 따로 사용하신 이유는?

A3. TestRestTemplate라는 객체를 사용하지 않은 이유는 일부 기능에 있어서 불편한 부분이 몇 가지 있었기 때문.

 

Q4. 어떤 기능 하나를 개발하고자 할 때 인수 테스트부터 작성하려고 하면 유닛 테스트에 비해 해결해야 하는 문제가 커서 TDD가 주는 빠른 피드백과 설계에 도움을 주는 장점이 많이 희석될 것 같다는 생각이 든다.

A4. 정확히 이해했다. 하지만 레드그린 사이클을 따른다고 해서 TDD를 안 하는 게 아니다. 레드 상태에서 그린 상태로 바꾸려면 1~n개의 단위테스트가 나올 수밖에 없고, 이 내부에 TDD 사이클이 포함된다. 개인의 성향에 따라 다르겠지만 이걸 다 만드는 게 부담스러울 수 있다. 하지만 해보는 게 좋다.

 

Q5. 한글/영어로 각 테스트 메소드 작성하실때 어떤 컨벤션을 지키시는 중인가?

A5. 테스트 메소드는 한글로 작성하지만, 특정 도메인과 given/when과 같은 요청은 컨벤션을 따라간다.

 

Q6. 미래지향적인 삶은 어떤 삶인가?

A6. 끊임없이 개발자로서의 자신을 발전시키자. 도전하자. 그럼 10년, 20년 뒤 연봉 1억이다. 인공지능과 상관 없다. 인공지능이 있어도 개발자는 쉽게 없어지지 않는 직업이라고 본다.

=> 요즘 인공지능이 개발되면 웹/앱 개발은 자동코딩으로 대체되고, 개발자 직업군이 사라질 거라는 현직자들의 인사이트 몇 개를 들어서 '원래 하고 싶었던 인공지능을 정말 해봐야 하나', '웹과 앱도 이제 시작 단계라서 더 쌓아봐도 될 것 같은데.', '하지만 인공지능과 웹 개발은 아예 다른 분야에 가까우므로 틀려면 빨리 틀어야 하지 않을까.' 등등을 생각하고 있는데 이러한 견해도 있구나. 일단은 끊임없이 나를 발전시키도록 하겠다. 개발자란 참 재미있는 직업이다. 지금까지도 공부하면서 살아온 편이라 평생 공부해야 하는 게 처음에는 걸렸지만, 지금까지도 경험하고 도전해온 편이라 평생 그럴 수 있다는 건 참 장점인 것 같다.