2014-12-09 6 views
1

SpecFlow를 사용하여 API 서비스 레이어를 호출 한 다음 영구 레이어와 통신합니다. 대부분의 시나리오는 API를 사용하여 데이터베이스를 다른 상태로 설정하는 방법을 다루고 있지만 실패 상태이므로 API를 통해 데이터베이스를 가져올 수없는 몇 가지 시나리오가 있습니다.BDD에서 서비스 계층을 무시하고 테스트 설정을 위해 데이터 상태를 변경하는 것이 맞습니까?

우리는 SpecFlow 솔루션이 말하는 계층을 만들 수 있다고 생각 했었습니다. 그러면 우리는 예상 된 응답을 얻기 위해 API 계층을 호출 할 수 있도록 데이터베이스를 해당 상태로 "전환"합니다. BDD의 측면에서 이것이 맞습니까? BDD에 대한 필자의 이해는 ATDD와 매우 유사합니다. ATDD는 기본 행복 경로와 예외 경로를 테스트하고 미세 입자는 단위 테스트를 거쳐야합니다.

API를 통해 수행 할 수없는 작업은 BDD 시나리오에서 테스트하지 않아야합니까?

답변

1

이렇게하는 데는 아무런 문제가 없습니다.

실제로 귀하의 Given 계단은 테스트가 필요로 할 때 테스트 시스템을 설치하기 위해 필요한 조치를 취할 수 있어야합니다. 테스트중인 것은 When이며 Then으로 유효성을 검사합니다.

위의 단계를 통해 API를 통해 항상 설정을 수행 할 수 있다면 훌륭한 테스트 커버리지를 얻을 수 있지만 시스템을 쉽게 얻을 수없는 상황 (설명 된대로)이있을 수 있습니다. API를 사용하여 원하는 상태. 이 경우 주어진 단계를 데이터베이스에 직접 삽입하거나 일부 테스트 서비스를 호출하여 상태를 설정할 수 있습니다.

조치 결과가 API를 통해 공개적으로 표시되지 않는 경우 Then 단계와 유사한 작업을 수행해야 할 수도 있습니다.

실제 API를 호출하는 것이 너무 느리거나 필요한 설정 (특히 복잡한 워크 플로의 경우)이 길어서 주어진 단계에서 데이터베이스에 직접 데이터를 삽입하도록 선택할 수 있습니다. 테스트가 더 빠르며 복잡한 설정을 수행 할 필요가 없습니다.

데이터베이스 스키마가 변경되면 API 구현을 업데이트하고 데이터를 직접 삽입하는 단계를 업데이트해야 할 수도 있다는 점에 유의해야합니다.

이 비용의 가치가 있는지 여부는 사용자가 결정해야 할 사항입니다.