4

我写了这个小黄瓜功能,效果很好。但是我的公司要求我能够在测试期间运行它几次。我们有一个应用程序的客户端,它控制服务器端来模拟使用该软件的真人。所以我的客户端被实例化一次并且必须运行 3 次这个场景。

有没有像我可以在这里使用的“for”语句?

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

干杯!

4

3 回答 3

2

我不确定这是一个“测试”。

它绝对是一个捕获数据的脚本,但测试中也有一个条件,一个必须验证的值或状态。

所以我希望看到更多类似的东西

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 North 的Whose Domain 是什么?,它可能会帮助您构建未来的场景。:-)

于 2013-06-28T10:10:58.180 回答
2

在您当前的功能中,您编写:

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

当您在“给定”之后使用“我想要”时,您应该使用“那么”,因为您期待结果。

还有以下内容:

Then I want to log those data

和前面的 Given 差不多,就是要获取日志数据。

我会将您的方案重写为:

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,然后我会摆脱:

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

这就是我在建议的重写中所做的。

于 2013-09-12T21:58:46.573 回答
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  |
于 2013-07-01T08:22:54.360 回答