맨위로가기

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로 작성된 자유-오픈 소스 콘텐츠 관리 시스템으로, 테마와 플러그인을 통해 디자인 변경 및 기능 확장이 용이하며, 다양한 웹사이트 구축 및 관리를 지원하는 설치형/가입형 플랫폼이다.
Behat - [IT 관련 정보]에 관한 문서
기본 정보
이름Behat
종류행위 주도 개발
개발자Konstantin Kudryashov
최초 출시일2010년 9월 8일
안정화 버전3.15.0
안정화 버전 출시일2024년 10월 30일
프로그래밍 언어PHP
운영 체제크로스 플랫폼
라이선스MIT 허가서
웹사이트공식 웹사이트

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