안녕하세요. 성공적인 소프트웨어 개발 프로젝트의 핵심은 무엇일까요?

 

바로 '명확한 소통'입니다.

 

기획자는 요구사항을 정확히 전달하고, 개발자는 그 의도를 완벽히 이해하며, 테스터는 기준에 맞춰 꼼꼼히 검증해야 합니다.

 

하지만 각자의 언어와 관점이 달라 소통에 어려움을 겪는 경우가 많습니다. 이때, 모두가 이해할 수 있는 '공통의 언어'로 소통의 다리를 놓아주는 강력한 도구가 있습니다.

 

바로 Cucumber(오이) 프레임워크입니다.

 

 

Cucumber 프레임워크란 무엇일까요?

Cucumber는 단순히 먹는 오이가 아니라, 소프트웨어의 동작 방식을 사람이 이해하기 쉬운 자연어로 서술하고, 그 서술을 바탕으로 테스트를 자동화하는 프레임워크입니다.

 

 

어려운 코딩 언어 대신, 마치 잘 정리된 설명서를 쓰듯 프로그램이 어떻게 작동해야 하는지 정의하는 것입니다.

 

이는 BDD(Behavior-Driven Development, 행동 주도 개발)라는 개발 방법론을 지원하기 위해 탄생했습니다.

 

 

'요리 레시피'로 쉽게 이해하기

Cucumber의 작동 방식을 '스마트 오븐으로 쿠키를 굽는 레시피'에 비유해 보겠습니다.

 

우리는 스마트 오븐에게 "맛있는 쿠키를 만들어줘"라는 추상적인 명령 대신, 명확하고 순차적인 레시피를 제공해야 합니다. Cucumber는 바로 이 '레시피'를 작성하고 실행하는 역할을 합니다.

 

1. 모두가 이해하는 '레시피' 작성 (Feature 파일)

Cucumber는 **Gherkin(거킨)**이라는 특정 문법을 사용해 레시피를 작성합니다.

 

가장 핵심적인 구조는 Given / When / Then 입니다.

  • Given (어떤 상황이 주어졌을 때): 쿠키 반죽과 초콜릿 칩이 준비되어 있다.
  • When (사용자가 어떤 행동을 하면): 오븐에 반죽을 넣고 180도에서 10분간 굽는다.
  • Then (이런 결과가 나와야 한다): 바삭하고 달콤한 초코칩 쿠키가 완성된다.

이 레시피는 개발자가 아니더라도 기획자, PM, QA 등 누구나 읽고 이해할 수 있습니다.

 

프로젝트에 관련된 모두가 동일한 문서를 보고 "아, 우리가 만들 기능은 이런 조건에서 이렇게 동작하고, 이런 결과를 내야 하는구나"라고 합의할 수 있게 됩니다.

 

 

2. '레시피'를 실제 코드로 연결 (Step Definition)

우리가 Gherkin(거킨) 문법으로 작성한 레시피(자연어)는 그 자체로 프로그램을 동작시키지 못합니다.

 

이때 Cucumber가 중간에서 '번역가' 역할을 합니다.

 

개발자는 각 레시피의 문장(Given, When, Then)이 실제로 어떤 테스트 코드를 실행해야 하는지를 정의합니다. 이 연결 고리를 'Step Definition(단계 정의)'이라고 부릅니다.

 

  • Given "쿠키 반죽과 초콜릿 칩이 준비되어 있다." → (내부 코드) 재료_준비_함수() 호출
  • When "오븐에 반죽을 넣고 180도에서 10분간 굽는다." → (내부 코드) 오븐_동작_함수(온도:180, 시간:10) 호출
  • Then "바삭하고 달콤한 초코칩 쿠키가 완성된다." → (내부 코드) 결과물_확인_함수(기대값:"초코칩쿠키") 호출

 

이렇게 한번 연결해두면, 우리는 자연어로 된 레시피를 실행하는 것만으로도 복잡한 테스트 코드가 자동으로 실행되는 마법을 경험할 수 있습니다.

 

 

 

Cucumber 프레임워크 도입의 장점

  1. 소통의 중심 역할: 자연어로 된 명세서는 개발자와 비개발자 간의 오해를 줄이고 명확한 소통을 돕는 훌륭한 도구가 됩니다.
  2. 살아있는 문서(Living Documentation): 명세서가 곧 테스트 케이스가 되므로, 코드가 변경될 때마다 문서도 함께 업데이트됩니다. 더 이상 실제 코드와 다른 낡은 문서를 보며 혼란스러워할 필요가 없습니다.
  3. 품질 향상 및 테스트 자동화: 요구사항이 명확해지고, 이를 기반으로 한 테스트가 개발 초기부터 자동화되므로 소프트웨어의 전체적인 품질이 향상됩니다.
  4. 비개발 직군의 참여: 기획자나 현업 담당자가 Gherkin 문법으로 직접 시나리오를 작성하며 개발 과정에 더욱 적극적으로 참여할 수 있습니다.

결론적으로 Cucumber는 단순한 테스트 자동화 도구를 넘어, 팀 전체의 협업과 소통 문화를 혁신하는 강력한 프레임워크라고 할 수 있습니다.

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
Posted by 프리스케이터