2011-08-23 4 views
3

Specflow를 사용하여 월별 급여를 모델링 한 시나리오 모음을 작성하여 매월 계산 된 지급액과 마지막으로 연말 수치를 확인합니다.Specflow - "시나리오"사이의 상태

각 달의 결과는 누적되므로 이후 시나리오는 전월의 추가 및 공제에 따라 달라집니다. 지불 계산은 타사 도구를 통해 데이터베이스에 작성되므로 시나리오간에 테스트 데이터를 작성하고 파괴하는 것은 비용이 많이 듭니다.

필자가 경험 한 테스트에서 필자는 테스트의 실행 순서를 보장하는 것이 항상 가능한 것은 아니라는 것을 알고 있습니다. 일부 시나리오 명명 규칙을 사용하여 실행 순서를 제어 할 수 있지만 원격 테스트 러너가 테스트를 사전 순으로 실행하도록 보장 할 수는 없습니다.

옵션은 내가 생각했습니다

  • 주어진 많은, 다음 주장을 포함하여 하나의 시나리오를 전체 년을 실행합니다.이 경우 읽기 어려운 단일 시나리오가 발생합니다.
  • 각 시나리오에 대해 "주어진"연결을 만듭니다. "감안할 때 : 달 X에 대한 모든 지불이 이루어졌습니다". 이것은 각 시나리오가 테스트 데이터를 생성하고 파괴해야하므로 많은 데이터베이스 트래픽을 생성합니다.

시나리오간에 상태를 저장하고 시나리오가 원하는 순서로 실행되는지 확인하는 더 좋은 방법이 있습니까?

+0

문제의 원인을 파악하고 원하는 테스트 유형에 대해 높은 수준의 추상화를 선택하면이 답변이 도움이 될 수 있습니다. http://stackoverflow.com/a/23375756/936469 – realtime

답변

4

시나리오의 실행 순서에 의존하는 것은 패턴이 아니므로 피해야합니다. 테스트 주자는 일반적으로 같은 이유로 실행 순서를 제어하는 ​​메커니즘을 제공하지 않습니다. 또한 실행 가능 사양의 개념에 위배됩니다 : 시나리오는 자체적으로 이해할 수 있어야합니다 (실행 가능해야 함).

주어진 부분에 해당 계산을위한 데이터를 준비해야 할 때 계산해야 할 시점과 그 다음 그 계산 결과를 확인해야합니다.

실행 시간을 줄이려면 다른 측면을 테스트하는 방식으로 "중요한"시나리오를 선택하려고 할 수 있습니다. 아마도 매달 1-11 일 동안 시험 할 필요는 없습니다. 첫 번째 월별 급여에 대한 테스트, 두 번째 달에 대한 테스트, 한 해를 마감하는 테스트, 새해를 시작할 수있는 테스트 등을 할 수 있습니다.

Given은 꼭 필요한 것은 아닙니다. "실제 응용 프로그램"이 수행하는 것과 동일한 방식으로 수행됩니다 (처음부터). 때로는 테스트에서 바로 가기를 사용하여 전제 조건을 더 빠르고 쉽게 확인할 수 있습니다. 예 : 모든 시나리오가 다음 달을 계산해야하는 경우 이전 달의 합계를 지정할 수 있습니다 (앱이 모든 것을 처음부터 계산하도록하는 대신). 물론 당신이하고있는 일을 알아야하고 애플리케이션의 일부 측면을 위조하는 것과 관련된 위험을 고려해야합니다.

+0

의견을 보내 주셔서 감사합니다. 나는 "전체 연도를 하나의"시나리오로 이동하는 것을 속였습니다. 이전 월간 결제 계산을 제공하는 것이 어렵지 않은 경우 계산이 너무 까다롭게 진행됩니다. – Cr1spy

+1

"계산"이 너무 까다롭게 조롱하지 않습니까? 확실히 지난 달의 결과는 정적 데이터 일 수 있습니다. 실제로 정확히 단계들 사이에 저장하려고하는 데이터입니까? – perfectionist