BDD 중심의 시나리오 테스트
시나리오 테스트?
게임 서버를 개발 중에 있어, 현재의 고민은 최대한 문제 없이 서버를 오픈하기 위한 여러가지 방법을 도입하고, 팀원들과 연구하고 있습니다.
그 중 한가지가 개발중인 컨텐츠와 기존에 개발되었던 시스템간에 문제가 없는지를 상시적으로 테스트 할 수 있는 방법론들을 찾아서 도입하고 있는데요.
그래서 생각해 낸 방법이, 여러 상황에 대한 시나리오를 작성하고, 정해진 시나리오 대로 서버 패킷 들을 테스트 하는 방법이 좋겠다라는 생각에 도달하였습니다.
이 외적으로 단위 테스트도 도입하였는데요. 해당 이야기는 다음에 정리하겠습니다.
시나리오를 정해서 테스트 한다라는 개념은, 어느정도 많이 알려진 개념이였지만 BDD라는 개발 방법론으로 정리가 되어있었다는 것은 이번에 알게 되어 같이 정리해보려고 합니다.
BDD 란?
Behavior-driven development 의 약자로 동작 지향 개발, 행동 기반 개발의 의미인 프로그램 개발 방법의 일종입니다.
이는 테스트 주도 개발 (TDD) 에서 파생되어진 개념입니다.
BDD는 2003년 Dan North 에 의해 처음 개념이 언급되었고, 이후 TDD 지지자들의 성원 속에 스토리(시나리오) 테스트의 자동화라는 형태로 지원 프레임워크가 속속 등장하게 된다.
꽤 오래전에 언급된 개념인데, 일반적으로 생각할 수 있는 개념인데 이렇게 정형화되어서 정리가 된 방법론인지는 이제야 알게됬다.
https://dannorth.net/introducing-bdd/
BDD는 함수 단위 테스트를 권장하지 않고, 시나리오 기반으로 테스트 케이스를 작성한다. 이 시나리오는 개발자가 아닌 사람이 봐도 이해할 수 있는 수준으로 갖성되어야 하고,
하나의 시나리오는 Given, When, Then 구조를 가지는 것을 기본 패턴으로 권장한다.
Feature : 테스트 대상의 기능/책임을 명시한다.
Scenario : 테스트 목적에 대한 상황을 설명한다.
Given : 시나리오 진행에 필요한 값을 설정한다.
When : 시나리오를 진행하는데 필요한 조건을 명시한다.
Then : 시나리오를 완료했을 때 보장해야 하는 결과를 명시한다.
그래서 도입은??
실질적인 도입은 BDD 개념으로 시작 했지만, 위 방법론을 정확하게 따르며 구현하지는 않았습니다.
의미에 대해서는 충분히 인지를 하였고, 구체화하는 과정은 현 개발팀의 상황에 맞게 구현하는게 맞다고 생각했습니다.
개발된 모든 패킷을 검증 할 수 있는 각각의 시나리오를 작성하였으며, 해당 기능이 동작하는 Process 를 개발 하여 도입할 예정입니다.
구현방식에 대해서는 다음에 설명하도록 하겠습니다.
'Programming' 카테고리의 다른 글
[DI] 의존성 관리하기 (1) (0) | 2019.12.17 |
---|---|
[DI] 의존성과 계층화 (0) | 2019.12.16 |
[C#] interface 와 abstract class 의 차이 (0) | 2019.12.12 |
[C#] 인터페이스 (interface)에 대한 정리 (0) | 2019.12.06 |
MOCK을 활용한 .NET 단위 테스트 (0) | 2019.12.05 |