2013-06-26 3 views
4

Я написал эту функцию огурца и отлично работает. Но моя компания попросила меня иметь возможность запускать ее несколько раз во время тестов. У нас есть клиентская сторона приложения, которое контролирует серверную часть для имитации реального человека с помощью программного обеспечения. Итак, моя клиентская сторона создается один раз и должна запускаться в 3 раза по сравнению с этим сценарием.Как запустить сценарий огурца несколько раз

Есть ли инструкция «для», как я могу использовать здесь?

Feature: Test program startup time 

Background: 
    Given my program is activated with a licence 

Scenario: Startup 
    Given I want to use a clean installation 
    Given the user preferences file is user_startup_performances.config 
    Given the CurrentPath directory is empty 
    Given I want to monitor startup performances 
    Then I want to log those data 

Cheers!

+0

Помог ли мой ответ? –

ответ

1

Я не уверен, что это «тест».

Это определенно сценарий, который захватывает данные, но тесты также имеют в них условие, значение или состояние, которое должно быть проверено.

Так что я бы ожидал увидеть нечто большее, как

Given I set something up 
And I setup something else 
.... 
When I run the program 
Then my startup time should be less than 1 second 

Однако, я понимаю ваше желание простого последовательного способа выполнения этого теста, и в то время как я думаю, что SpecFlow не может быть лучшим средством Достигая того, чего вы хотите, вы можете рассмотреть возможность детализации ваших тестов. Например, вы можете переписать свой сценарий как

Given I ... 
When I run the program 
Then my startup time should be less than 1 second 
When I run the program 
Then my startup time should be less than 1 second 
When I run the program 
Then my startup time should be less than 1 second 

И теперь вы его протестировали три раза.

Или вы могли бы написать его как

Given I ... 
When I run the program 3 times 
Then my startup time should be less than 1 second 

, а затем в вашем C#

[When("I run the program (\d+) times")] 
public void WhenIRunTheProgramManyTimes(int count) 
{ 
    for(int i=0; i++; i<count) 
    WhenIRunTheProgram(); 
} 

[When("I run the program")] 
public void WhenIRunTheProgram() 
{ 
    .... 

также посмотреть на Dan Норта Whose Domain is it anyway?, это может помочь вам структурировать ваши будущие сценарии. :-)

0

Вы правы, это не просто тест, это один из тестов производительности, которые мы проводим каждую ночь, чтобы увидеть стабильность решения. Таким образом, дело больше в том, чтобы получать данные, чем видеть зеленую кнопку успеха :)

Если specflow - это не лучшее решение, какой инструмент может быть лучше?

Дизайн программного обеспечения не позволяет мне использовать «Когда я запускаю программу 3 раза», к сожалению ... и я не хотел просто повторять ту же строку 3 раза.

В любом случае, я использовал схему сценария и определил, как мои шаги зависят от примеров. Затем, если кто-то хочет изменить количество прогонов, все, что ему нужно сделать, это добавить в пример больше строк.

Я искал инструкцию цикла, поскольку я новичок в этих технологиях. Это были также не лучшие задачи для первого сценария :)

Спасибо!

PS: вот сценарий

Feature: Test my program startup time 

Background: 
    Given my program is activated with a licence elite 

Scenario Outline: Startup 
    Given I want to use a clean installation 
    Given the user preferences file is user_startup_performances.config 
    Given the CurrentPath directory is empty 
    Given I want to monitor startup performances for run '<id>' 
    Then I want to log those data 

Examples: Run ID 
    | id | 
    | 1 | 
    | 2 | 
    | 3 | 
2

В текущей функции вы пишете:

Given I want to monitor start-up performances for run '<id>' 

Как вы используете «я хочу» после «Учитывая» вместо этого вы должны использовать «Тогда», потому что вы ожидаете результата.

также следующее:

Then I want to log those data 

является почти такой же, как и предыдущий Учитывая то вы хотите получить данные журнала.

Я бы повторно написать свой сценарий как:

Feature: Test my program startup time 

Background: 
    Given the system is activated with a license 
    And I have a clean installation environment 

Scenario Outline: Startup 
    Given the system is ready to start 
    When I perform test run '<id>' 
    Then the system should start in less than 3 seconds 
    And the system should generate log data for test run '<id>' 

Examples: Run ID 
    | id | 
    | 1 | 
    | 2 | 
    | 3 | 

Кроме того, если шаг:

And I have a clean installation environment 

явно очищает CurrentPath и устанавливает конфигурационный файл как user_startup_performances.config, то я d Избавиться от:

And the user preferences file is user_startup_performances.config 
And the CurrentPath directory is empty 

Это то, что я сделал в своей предлагаемой перезаписи.