티스토리 뷰

 이번 lv.1 첫번째 미션은 바닐라 자바스크립트로 간단한 계산기 만들기와 자동차 경주게임 만들기였다.

프리코스 때와 비슷한 난이도의 미션들이라 크게 부담스럽지는 않았지만 새로운 도전요소가 있었다.

바로, 페어프로그래밍과 TDD였다.

 

 이전까지 독자적으로 개발을 진행해온 터라 협업에 대한 경험이 전무하던 나에게는 꽤나 큰 도전이었다. 우테코의 페어프로그래밍 방식은 두 명의 개발자는 코드를 작성하는 드라이버와 전체적인 방향을 설정하고 오류를 잡아주는 네비게이터 역할을 번갈아가며 수행하게 된다. 처음 만나는 개발자와 서로의 실력을 모른채로 개발을 시작해야한다는 사실이 조금은 부담스럽게 느껴졌지만 페어프로그래밍을 진행하면서 페어프로그래밍의 긍정적인 측면을 많이 알게 되었다.

 

 우선, 평소에 혼자서 하던 개발을 둘이서 같이 한다는 것이 어색했지만 이내 새로운 인사이트를 얻을 수 있어 좋았다. Live share와 zoom을 이용해서 내가 작성한 코드의 피드백을 즉각적으로 들을 수 있어 디버깅을 하는 시간을 줄일 수 있었다. 또, 드라이버와 네비게이터 역할을 번갈아 가면서 개발을 진행하니 혼자 개발할 때보다 더 많은 고민을 할 수 있었다. 혼자 쓰는 코드가 아니기에 더 읽기 쉬운 구조와 네이밍을 만들기 위해 자연스럽게 노력하게 된다. 그리고 제일 좋았던 점은 내가 몰랐던 문법이나 컨벤션, 아이디어 등을 페어가 알고있는 경우, 그 즉시 설명을 들으면서 이해할 수 있다는 점이었다.

 그렇다고 페어프로그래밍이 꼭 장점만을 가지고 있는 것은 아니다. 두명이서 서로 의견이 맞지 않는 경우에는 필연적으로 토론을 하는 시간이 필요해진다. 구조나 함수의 기능처럼 중요한 요소에 대한 토론이면 괜찮지만 단순히 함수의 네이밍 등에 대해 길게 토론하는 것은 조금 시간이 아깝다고 생각이 들었다. 이 때문에 전체적으로 개발 속도가 뎌더지고 개발일정이 딜레이 될 수도 있다고 생각된다. 그래서 개발을 시작하기에 앞서 페어와 많은 이야기를 나눠보고 상호간의 규칙을 정해놓는 것이 중요하다고 판단된다.

 

 이번 Lv의 두번째 도전요소는 TDD이다. TDD는 Test Driven Development의 준말로, 테스트 주도 개발을 의미한다. 테스트 주도 개발은 기능구현을 하기 전, 미리 테스트를 만들어 놓고 기능이 구현하는 것을 말한다. 이렇게 할 경우, 기능을 구현하는 즉시 매번 수동으로 값을 입력해가며 테스트를 할 필요가 없어 시간을 절약할 수 있다. BDD는 Behavior Driven Development의 준말로, 실제 사용자의 행동을 따라가며 테스트를 하는 방법론이다. TDD와의 차이점은 TDD가 단순히 함수의 기능이 정상적으로 동작하는지에 대해 체크한다면 BDD는 사용자가 원하는 결과를 얻을 수 있는지 체크한다. 예를 들어, 계산기에서 덧셈 기능을 개발 중이라고 가정해보자. TDD에서는 add라는 함수를 구현하고 add(2, 4)를 실행했을 때, 6이 나오는지 확인할 것이다. 반면에 BDD는 사용자가 계산기에서 '2', '+' , '4', '='을 순서대로 눌렀을 때, 계산기 결과창에 6이 나오는지 확인할 것이다. 이것이 TDD와 BDD의 차이점이다. 프론트엔드는 백엔드와 달리 사용자가 변화를 줄 요소가 많기 때문에 강력한 테스트 툴이 부족했다. 그러나, Cypress가 등장하면서 여러개로 나뉘어져있던 테스트 툴을 쉽고 간편하게 사용할 수 있게 되었다. 또한, 강력한 E2E (End to End) 테스트 기능을 지원하여 실제 사용자의 행동을 테스트 해볼 수 있다.

 

 이전까지는 개발을 하면서 테스트는 당연히 기능을 구현한 뒤 하는 것이 습관이었다. 그러나 TDD와 BDD 방법론을 알고 Cypress를 통해 기능 구현 전에 미리 테스트 케이스를 작성하니 개발 효율이 높아졌음을 체험했다. 기능을 구현하고 정상적으로 동작하는지 이전에는 일일히 수작업으로 버튼을 클릭해가며 확인했다면 지금은 자동화된 테스트를 통해 효율적으로 오류를 확인할 수 있었다.

 

참고: if.kakao.com/session/106#mainContent

 

if(kakao)2020

오늘도 카카오는 일상을 바꾸는 중

if.kakao.com