Behat
"오늘의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]
새로운 코드가 코드베이스에 도입될 때마다 테스트를 실행하여, 기존 테스트 범위 내에서 회귀(Regression)가 발생하지 않았는지 확인할 수 있다. Behat는 PHP 코드를 직접 테스트하는 데 사용될 수 있으며, 시나리오의 일부로 브라우저를 원격 제어하기 위해 셀레늄과 함께 자주 사용된다. 원격으로 제어되는 브라우저는 테스트 실패 시 비디오[3] 또는 스크린샷을 촬영하여 문제 해결을 도울 수 있다. 셀레늄이나 셀레노이드[4]와 같은 도구를 사용하면 여러 브라우저에서 동시에 테스트를 실행하는 병렬 테스트가 가능하여 테스트 시간을 단축할 수 있다. PHP 전용 시나리오를 실행하기 위한 모듈도 존재한다.[5]
Behat 테스트 시나리오는 Gherkin[2]이라는 특별한 언어를 사용하여 작성된다. Gherkin은 정의된 패턴을 따르는, 사람이 비즈니스 용어로 쉽게 읽고 이해할 수 있도록 설계된 도메인 특정 언어이다. 이는 소프트웨어 개발 과정에서 개발자, 고객, 그리고 다른 이해관계자들이 서로 원활하게 소통하고 소프트웨어가 어떻게 동작해야 하는지에 대한 예제를 명확하게 문서화하는 데 도움을 준다.
3. 이점
다른 BDD(행동 주도 개발) 프레임워크와 마찬가지로, Behat 시나리오는 비즈니스 사례를 설명하는 Given, When, Then 단계의 연속으로 구성된다. 이러한 단계의 구체적인 내용은 BehatContext를 확장하는 클래스 내의 주석 메서드를 통해 정의된다.[6]
Behat는 테스트 결과를 JUnit XML 및 HTML을 포함한 다양한 형식으로 출력할 수 있어 결과 확인 및 공유가 용이하다.[7]
4. 예제
Gherkin 시나리오는 일반적으로 다음과 같은 주요 키워드를 사용하여 구성된다.
특히 `Given` 키워드 뒤에 오는 전제 조건 설명은 실제 테스트 코드를 실행할 때 특정 PHP 메서드(함수) 이름과 연결되어 해당 코드가 실행되도록 한다. 이를 통해 자연어에 가까운 시나리오 설명과 실제 실행 코드를 연동할 수 있다. 더 자세한 Gherkin 문법과 구체적인 작성 예시는 하위 섹션에서 확인할 수 있다.
4. 1. Gherkin 문법 예시
Gherkin 문법은 주로 행동 주도 개발(BDD)에서 사용되며, 사람이 읽을 수 있는 형식으로 소프트웨어의 동작을 설명하는 데 중점을 둔다. Behat은 이 Gherkin 문법을 사용하여 테스트 시나리오를 작성한다.
Gherkin 문법의 기본 구조는 다음과 같다.
기능: 테스트하려는 기능에 대한 설명
자유 형식의 텍스트로 부가 설명 작성 가능
시나리오: 시나리오 1
조건 preconditions
행동 actions
결과 results
시나리오: 시나리오 2
...
여기서 `조건`(Given) 다음에 오는 전제 조건은 실행할 PHP 메서드 이름과 일치하게 된다.
아래는 좀 더 구체적인 Gherkin 문법 예시이다.
기능: 이 기능에 대한 간단한 설명
이 기능이 제공하는 혜택, 관련된 역할, 기능 자체 또는 사용자 스토리에 대한 설명.
필요하다면 여러 줄에 걸쳐 작성할 수 있다.
배경:
조건 모든 시나리오 시작 전에 공통적으로 실행되어야 하는 단계들
시나리오: 특정 시나리오나 예시에 대한 설명
조건 다음과 같은 전제 조건으로 시작한다:
| 데이터 열 1 | 데이터 열 2 |
| 앨리스 | 밥 |
행동 "파란색" 버튼을 누른다
결과 결과는 다음과 같아야 한다:
"""
여러 줄에 걸친
데이터 문자열 예시
"""
# 필요하다면 이렇게 주석을 추가할 수 있다.
시나리오 개요: 여러 입력 값에 대해 동일한 시나리오를 반복 실행할 때 사용
조건 "
행동 "
이 예시에서는 `기능`(Feature), `배경`(Background), `시나리오`(Scenario), `시나리오 개요`(Scenario Outline), `조건`(Given), `행동`(When), `결과`(Then), 그리고 `예시`(Examples) 키워드를 사용하여 테스트 케이스를 구조화한다. `시나리오 개요`는 표 형식의 `예시` 데이터를 사용하여 동일한 시나리오를 여러 번 실행할 때 유용하다.
4. 2. Gherkin 문법 상세 (예시)
"Given" 뒤의 전제 조건은 실행할 PHP 메서드 이름과 일치한다:
Feature: 테스트할 기능 설명
자유 형식 텍스트
Scenario: 시나리오 1
Given 전제 조건
When 행동
Then 결과
Scenario: 시나리오 2
...
아래는 Gherkin 문법의 다양한 요소를 보여주는 예시이다.
# 기능(Feature): 테스트 대상 기능의 전체적인 설명
Feature: 이 기능에 대한 간단한 설명
# 시나리오 실행 전 공통적으로 필요한 배경 설명 (선택 사항)
혜택, 역할, 기능 또는 사용자 스토리 설명
필요에 따라 여러 줄 사용
# 배경(Background): 모든 시나리오 시작 전에 실행되는 공통 단계
Background:
Given 모든 시나리오에 대해 실행되는 몇 가지 단계가 주어짐
# 시나리오(Scenario): 테스트할 구체적인 상황과 예상 결과
Scenario: 시나리오 또는 예시 설명
# Given: 시나리오 실행을 위한 초기 상태 또는 전제 조건 설정
Given 다음과 함께 전제 조건을 설정합니다:
# 데이터 테이블: 여러 데이터를 구조화하여 전달
| 데이터 열 1 | 데이터 열 2 |
| 앨리스 | 밥 |
# When: 특정 행동이나 이벤트 발생
When "파란색" 버튼을 누르면
# Then: 예상되는 결과 검증
Then 결과는 다음과 같습니다:
# 여러 줄 문자열(DocString): 여러 줄의 텍스트 데이터를 전달
"""
여러 줄
데이터 문자열
"""
# 주석: '#' 기호를 사용하여 설명을 추가할 수 있음
# 시나리오 개요(Scenario Outline): 유사한 시나리오를 템플릿화하여 여러 데이터 세트로 실행
Scenario Outline: 시나리오 또는 예시 설명
Given "
When "
참조
[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