맨위로가기

Behat

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

Behat는 소프트웨어 개발 프로세스에서 개발자, 고객 및 기타 관계자 간의 소통을 돕기 위해 설계된 테스트 도구이다. 소프트웨어의 예상 동작을 테스트 가능한 예제로 문서화할 수 있게 해준다. Behat 테스트는 Gherkin 언어를 사용하여 작성되며, Given, When, Then 단계를 사용하여 비즈니스 사례를 설명한다. Behat는 PHP 코드 테스트에 사용되며, Selenium과 함께 브라우저 원격 제어에도 활용된다. 테스트 결과를 JUnit XML 및 HTML 형식으로 출력할 수 있다.

광고

더 읽어볼만한 페이지

  • PHP - 젠드 엔진
    젠드 엔진은 PHP 스크립트를 opcode로 컴파일하여 실행하고 HTML을 생성하는 PHP의 컴파일러이자 런타임 엔진이며, PHP 4에서 파서가 재작성되면서 명명되었고, 젠드 테크놀로지스를 통해 PHP 기반 웹 애플리케이션 개발을 지원한다.
  • 자유 소프트웨어 테스트 도구 - Valgrind
    Valgrind는 동적 분석 도구들의 프레임워크로, 가상 머신 기반으로 작동하며 메모리 오류 감지, 멀티스레드 코드 분석 등 다양한 기능을 제공하지만, 정적 또는 스택 할당 데이터의 경계 오류는 모두 감지하지 못한다.
  • 자유 소프트웨어 테스트 도구 - Cppcheck
    Cppcheck는 C/C++ 코드의 정적 분석 도구로서, 버그, 코드 스타일 문제, 성능 저하 요인 등을 검출하여 코드 품질을 향상시키고, 다양한 운영체제와 IDE에서 사용 가능한 오픈 소스 프로젝트이다.
  • PHP로 작성된 자유 소프트웨어 - 드루팔
    드루팔은 드리스 바이테르트가 개발하여 2001년 공개된 PHP 기반의 오픈 소스 콘텐츠 관리 시스템으로, 모듈과 테마를 통해 기능 확장이 가능하며 다양한 기관에서 활용되고 활발한 커뮤니티를 가지고 있다.
  • PHP로 작성된 자유 소프트웨어 - 워드프레스
    워드프레스는 PHP로 작성된 자유-오픈 소스 콘텐츠 관리 시스템으로, 테마와 플러그인을 통해 디자인 변경 및 기능 확장이 용이하며, 다양한 웹사이트 구축 및 관리를 지원하는 설치형/가입형 플랫폼이다.

2. 목적

Behat은 소프트웨어 개발 과정에서 개발자, 고객, 그리고 다른 이해 관계자들 사이의 의사소통을 돕고, 소프트웨어의 의도한 동작에 대한 테스트 가능한 예제를 명확하게 문서화하기 위해 설계되었다.[10][2] Behat 테스트 시나리오는 Gherkin이라는, 정의된 패턴을 따르는 비즈니스에서 읽을 수 있는 도메인 특화 언어를 사용하여 작성된다.[10][2]

3. 이점

새로운 코드가 코드베이스에 도입될 때마다 테스트를 실행하여, 기존 테스트 범위 내에서 회귀(Regression)가 발생하지 않았는지 확인할 수 있다. Behat는 PHP 코드를 직접 테스트하는 데 사용될 수 있으며, 시나리오의 일부로 브라우저를 원격 제어하기 위해 셀레늄과 함께 자주 사용된다. 원격으로 제어되는 브라우저는 테스트 실패 시 비디오[3] 또는 스크린샷을 촬영하여 문제 해결을 도울 수 있다. 셀레늄이나 셀레노이드[4]와 같은 도구를 사용하면 여러 브라우저에서 동시에 테스트를 실행하는 병렬 테스트가 가능하여 테스트 시간을 단축할 수 있다. PHP 전용 시나리오를 실행하기 위한 모듈도 존재한다.[5]

다른 BDD(행동 주도 개발) 프레임워크와 마찬가지로, Behat 시나리오는 비즈니스 사례를 설명하는 Given, When, Then 단계의 연속으로 구성된다. 이러한 단계의 구체적인 내용은 BehatContext를 확장하는 클래스 내의 주석 메서드를 통해 정의된다.[6]

Behat는 테스트 결과를 JUnit XML 및 HTML을 포함한 다양한 형식으로 출력할 수 있어 결과 확인 및 공유가 용이하다.[7]

4. 예제

Behat 테스트 시나리오는 Gherkin[2]이라는 특별한 언어를 사용하여 작성된다. Gherkin은 정의된 패턴을 따르는, 사람이 비즈니스 용어로 쉽게 읽고 이해할 수 있도록 설계된 도메인 특정 언어이다. 이는 소프트웨어 개발 과정에서 개발자, 고객, 그리고 다른 이해관계자들이 서로 원활하게 소통하고 소프트웨어가 어떻게 동작해야 하는지에 대한 예제를 명확하게 문서화하는 데 도움을 준다.

Gherkin 시나리오는 일반적으로 다음과 같은 주요 키워드를 사용하여 구성된다.


  • Feature: 테스트하려는 기능의 전체적인 설명
  • Scenario: 특정 상황에서의 기능 동작 예시
  • Given: 시나리오 실행을 위한 초기 상태 또는 전제 조건
  • When: 사용자의 행동이나 특정 이벤트 발생
  • Then: 행동 후에 예상되는 결과


특히 `Given` 키워드 뒤에 오는 전제 조건 설명은 실제 테스트 코드를 실행할 때 특정 PHP 메서드(함수) 이름과 연결되어 해당 코드가 실행되도록 한다. 이를 통해 자연어에 가까운 시나리오 설명과 실제 실행 코드를 연동할 수 있다. 더 자세한 Gherkin 문법과 구체적인 작성 예시는 하위 섹션에서 확인할 수 있다.

4. 1. Gherkin 문법 예시

Gherkin 문법은 주로 행동 주도 개발(BDD)에서 사용되며, 사람이 읽을 수 있는 형식으로 소프트웨어의 동작을 설명하는 데 중점을 둔다. Behat은 이 Gherkin 문법을 사용하여 테스트 시나리오를 작성한다.

Gherkin 문법의 기본 구조는 다음과 같다.



기능: 테스트하려는 기능에 대한 설명

자유 형식의 텍스트로 부가 설명 작성 가능

시나리오: 시나리오 1

조건 preconditions

행동 actions

결과 results

시나리오: 시나리오 2

...



여기서 `조건`(Given) 다음에 오는 전제 조건은 실행할 PHP 메서드 이름과 일치하게 된다.

아래는 좀 더 구체적인 Gherkin 문법 예시이다.



기능: 이 기능에 대한 간단한 설명

이 기능이 제공하는 혜택, 관련된 역할, 기능 자체 또는 사용자 스토리에 대한 설명.

필요하다면 여러 줄에 걸쳐 작성할 수 있다.

배경:

조건 모든 시나리오 시작 전에 공통적으로 실행되어야 하는 단계들

시나리오: 특정 시나리오나 예시에 대한 설명

조건 다음과 같은 전제 조건으로 시작한다:

| 데이터 열 1 | 데이터 열 2 |

| 앨리스 | 밥 |

행동 "파란색" 버튼을 누른다

결과 결과는 다음과 같아야 한다:

"""

여러 줄에 걸친

데이터 문자열 예시

"""

# 필요하다면 이렇게 주석을 추가할 수 있다.

시나리오 개요: 여러 입력 값에 대해 동일한 시나리오를 반복 실행할 때 사용

조건 "" 값으로 설정을 구성한다

행동 "

참조

[1] 웹사이트 Behat/CHANGELOG.md at master · Behat/Behat https://github.com/B[...] 2021-03-27
[2] 웹사이트 Cucumber Common Components https://github.com/c[...] 2021-11-14
[3] 웹사이트 Aerokube Selenoid {{!}} A cross browser Selenium solution for Docker https://aerokube.com[...] Alexander Andryashin, Ivan Krutov, Kirill Merkushev and the Aerokube community 2024-02-19
[4] 간행물 aerokube/selenoid https://github.com/a[...] Aerokube 2024-02-19
[5] 간행물 Daniel-Marynicz/BehatParallelExtension https://github.com/D[...] Daniel Marynicz 2024-02-19
[6] 뉴스 BDD With Behat - Tuts+ Code Tutorial http://code.tutsplus[...] Code.tutsplus.com 2013-12-23
[7] 간행물 dutchiexl/BehatHtmlFormatterPlugin https://github.com/d[...] Neal Vanmeert 2024-02-19
[8] 뉴스 everzet's blog • BDD in PHP or "Just Be Hat" http://everzet.com/p[...] Everzet.com 2010-09-10
[9] 웹사이트 Latest Behat releases https://github.com/B[...]
[10] 웹사이트 https://github.com/c[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com