인수테스트 도구 Cucumber를 소개합니다

·2024년 1월 20일
0

큐컴버는 BDD(Behavior-Driven Development)를 도와주는 도구입니다.

목차는 아래와 같습니다.
1. BDD란
2. BDD의 3가지 프로세스
3. Cucumber란
4. 실제 사용 코드 예시

우선 BDD라는 용어를 처음 듣는 분들을 위해서…!

BDD란

소프트웨어 팀에서 일을 할 때, 개발자와 비개발자 사이의 갭(Gap)을 줄여주는 방법입니다.

  • 해결해야 할 문제에 대해서 함께 공통되게 이해를 할 수 있습니다.
  • 빠른 반복 주기를 통해서 매 피드백을 반영하는 애자일과 잘 어울립니다.
  • 시스템의 행동을 자동으로 검증하는 문서를 만들 수 있습니다.

따라서 빠르게 피드백을 얻으며, 필요한 최소한의 미팅만으로도 일할 수 있습니다.

BDD의 3가지 프로세스

BDD는 3가지 단계로 반복합니다.

  1. 유저 스토리를 계획한 뒤, 콘크리트에 대해 이야기해봅니다.
    • 탐색하고, 발견하고, 디테일들을 생각하면서
  2. 위에서 계획한 기능(or 시스템)에 대해 자동적으로 인수 테스트할 수 있는 문서를 만듭니다.
  3. 인수 테스트를 만족시키는 기능을 개발합니다.

BDD에서는 이 세 가지를 Discovery, Formulation, Automation이라고 부릅니다.

그리고 이렇게 만들어진 문서들은 빠르고 자신 있게 시스템을 바꿀 수 있는 틀이 됩니다.
또한 처음 팀에 들어온 사람들도 쉽게 도메인에 대해 이해할 수 있죠!

BDD에 대해 더 자세한 내용은 여기를 참조해주세요.

Cucumber란

위에서 살펴본 내용을 정리해보면,
애자일 방식으로 일하는 팀에서 이해의 싱크, 더 빠른 피드백 등을 도와주는 것이 BDD 방법론입니다.
그리고 그 BDD를 실현해주는 도구 중 하나가 Cucumber 입니다.

바로 예시부터 보시죠.

Scenario: 참가자가 퀴즈를 맞춘다
  Given 참가자가 문제를 골랐을 때
  When 참가자가 답을 고르면
  Then 출제자가 정답이 맞는지 알려준다

유저 스토리는 Scenario
선행 조건은 Given
검증하려는 행위는 When
검증 구문은 Then

이렇게 개발자, 비개발자 모두가 쉽게 읽을 수 있는 문서를 만들 수 있습니다.
그리고 저 문서는 자동화된 테스트 도구로써 소프트웨어가 잘 동작하는지 테스트도 할 수 있죠!

Cucumber를 구성하는 요소에는 GherkinStep Definition이 있습니다.

Gherkin이란

위와 같이 순수 문서(Plain text)로 만들 수 있게 해주는 문법을 Gherkin이라고 합니다.

  • Scenario, Given, When, Then 등의 문법을 Gherkin이라고 하고, 이 문법을 사용해서 실제 테스트와 문서를 연결합니다.
  • 팀에서 주로 사용하는 다양한 언어(한글, 영어 등)로 만들 수 있습니다.
  • Gherkin 문서는 .feature 확장자의 텍스트 파일에 저장돼있고 보통 소프트웨어의 VCS에서 같이 관리됩니다.

Step Definition이란

순수 문서인 Gherkin 문서와 실제 테스트 코드 간을 연결시켜주는 중간 단계인 Step Definition이 있습니다.

  • 여러 프로그래밍 언어로 작성할 수 있습니다.
  • 예시
@Given("참가자가 {long}번 문제를 골랐을 때")
fun pickProblem(problemId: Long) {
    context.invokeHttpPost("/problems/$problemId")
}

예시 코드(우아한테크코스 개발 근로(Prolog))

build.gradle

큐컴버용 sourceSet 지정

큐컴버 의존성 추가

gradle task 선언

resources 디렉토리

이런 식으로 Gherkin 문법을 따른 .feature 파일들이 resources 내부에 존재

이런 느낌입니다.

java 디렉토리

각 Step에서 사용하기 위한 Context 클래스가 있습니다.
API 호출 메서드, 응답값 저장, 그 외의 상태 저장 역할을 합니다.

Context 객체를 사용해서 Step Definition을 구현합니다.
Gherkin 문법을 따르는 어노테이션(@Given 등)과 코드 레벨의 행위를 구현해둡니다.

큐컴버 돌려보기

(도커를 띄워두지 않아서 실패하는 모습…)
위와 같이 각 유저 시나리오에 대해서 인수테스트를 진행합니다.

출처

큐컴버 공식 문서 - Introduction - Cucumber Documentation
우아한테크코스 prolog - prolog/backend/src/acceptanceTest at main · woowacourse/prolog

profile
渽晛

0개의 댓글