Introduce to Cucumber framework

Dahun Yoo·2020년 5월 31일
0

이 시리즈에서는 BDD (Behavior Driven Development, 행위(행동)주도개발) 과, BDD를 지원하는 framework 인 Cucumber 에 대하여 소개해드리고자 합니다. (java의 cucumber jvm)

이론적인 부분에서 제가 이해하고 있는 지식이 틀린 지식일 수도 있으니, 지적해주시면 대단히 감사하겠습니다...


🥒 What is the Cucumber framework?

앞서 말씀드렸듯, Cucumber는 행위주도개발을 지원하는 프레임워크입니다.
여기서 행위주도 란, 어떠한 기능의 시나리오 를 뜻합니다.
예를 들어 기능(feature)이 제대로 동작하는지, Irregular case에 대해 spec대로 제대로 핸들링되는지를 확인을 하는데요, 이러한 시나리오(행동, Scenario)를 기반으로 기능이 잘 구현되어있는지, 테스트는 잘 통과되는지를 개발, 확인을 하는 것입니다.

약간... DDD(Domain Driven Development, 도메인 주도 개발)와 헷갈릴 수도 있는데요, 그것보다는 약간 하위레벨의 개념이라고 생각합니다.

https://dzone.com/articles/putting-bdd-in-practice-using-scala

BDD에 대해서는 다음 포스트에서 좀 더 상세히 설명하기로 하고...

🥒 So... ?

cucumber의 공식홈페이지 document를 인용하여 설명드립니다.

Cucumber는 일반적인 텍스트로 작성된, 실행 가능한 Spec을 확인하고, 해당 소프트웨어를 해당 Spec대로 개발 및 확인을 진행합니다.

Spec은 Scenario 로 구성됩니다.

Scenario: Breaker guesses a word
  Given the Maker has chosen a word
  When the Breaker makes a guess
  Then the Maker is asked to score

Cucumber의 Spec text는 Gherkin 이라는 텍스트문법으로 작성합니다. 크게 어려운 문법은 아닙니다.

각각의 Scenario는 Cucumber가 동작하는 하나의 단위입니다. 또한 Scenario 내부의 각각의 line들은, 동작가능한 하나의 단위(Step, method의 일종)와 mapping이 되어야합니다.


What is the Gherkin?

Gherkin은 Cucumber가 해석할 수 있는, 정해진 문법입니다. 보통은 이 Gherkin을 사용하여 Customer 혹은 Planner, Business Analyist가 작성합니다.

Gherkin은 아래와 같은 목적을 제공합니다.

  • Unambiguous executable specification
  • Automated testing using Cucumber
  • Document how the system actually behaves
  • 명확한 실행가능한 Spec
  • 자동화 테스트
  • 실제로 시스템 (제품)이 어떻게 동작하는지를 서술한 Document

즉, Gherkin으로 작성된 Scenario file(feature file) 은 하나의 Specification Document가 된다는 것 입니다. 그리고 이 Document에 따라 개발 및 테스트를 용이하게 하도록 하는 것이 바로 Cucumber 라는 것입니다.

여담으로 Gherkin은 약 70여개가 넘는 언어를 지원합니다. 그리고 Cucumber는 그러한 Gherkin의 다국어들을 다 해석할 수 있습니다.
물론 한국어도 해당됩니다.


Step Definition

Cucumber는 Step 이라는 것이 필요합니다.
Scenario의 각각의 한 줄 한 줄을 Step 이라고 정의할 수 있는데, 이 Step을 실제로 구현한 코드를 Step Definition 이라고 하는 것입니다.

여러개의 Scenario를 정의한 것을 feature 라고 하는데요, 어떤 한 기능에 대하여, 여러가지의 Scenario가 존재한다는 것입니다.
하나의 feature 파일에, 하나의 StepDefinition 파일이 존재하는 것이 기본이며, 그렇지 않은 경우도 존재하긴 합니다만 대부분의 경우가 1:1 매칭된다고 보시면 되겠습니다.


다음 포스트부터 좀 더 본격적으로 소개해드리고자 합니다.

Reference : https://cucumber.io/docs/guides/overview/#what-is-cucumber

profile
QA Engineer

0개의 댓글