SpecFlowMaster:如何提高测试质量

做正确的事


没有自动化测试,就不可能有现代发展。 即使是外行人也可以很快地编写测试。 因此,我们进行了测试,一切似乎都很好。 我们可以相信这样的测试吗? 我们的质量控制工具的质量是什么? 让我们看一下可以用人类语言编写的Specflow测试。

Feature: SpecFlowFeature In order to avoid silly mistakes As a math idiot I want to be told the sum of two numbers Scenario: Add two numbers Given I have entered 50 into the calculator And I have entered 70 into the calculator When I press add Then the result should be 120 on the screen 

该测试包含三个标准部分,分别是设置,操作和验证。 一切看起来都很好。 但是,当有人在此测试中增加额外的步骤时会发生什么?

 Feature: SpecFlowFeature In order to avoid silly mistakes As a math idiot I want to be told the sum of two numbers Scenario: Add two numbers Given I have entered 50 into the calculator And I have entered 70 into the calculator When I press add And I press memorize Then the result should be 120 on the screen 

记忆是计算器中将当前数字写入内存的常用操作。 如果我们运行此测试,它将仍然是绿色。 现在这不是一个很好的测试,因为没有人检查测试中的新步骤如何影响整个系统。

这种测试可能是由于大量重构或职责范围内的重大更改而出现的。 这意味着我们将所有测试变为绿色,但它们不能很好地检查系统性能。 上面提到的测试可以通过两种方式进行修复:删除添加的步骤“然后按记忆”,或在测试结束时再添加一个步骤以检查内存状态“然后存储在内存中的值为120”。

SpecFlowMaster插件


此Specflow插件可让您查找此类测试以及可疑的测试行。 如何运作? 对于Specflow功能的每一行,它都会生成一个运行相同测试的特殊测试,但没有此行。 如果测试执行导致错误,则这是预期的行为,此处一切正常。 如果这样的测试成功,则该测试中的测试行出了点问题,系统认为该行可疑。 即 新生成的测试将为红色。

还检查了具有多个数据集的后台步骤或场景的更复杂情况。 对于前提条件步骤,插件将执行文件中的所有测试,但不执行测试行。 对于带有数据集的测试,插件会为所有数据集生成测试执行。

技术说明

  1. C#,VB
  2. SpecFlow 3.0或更高
  3. .NET Framework 4.7.1或更高版本,.NET Core 2.0或更高版本

将来计划做什么?

  1. 支持之前和之后属性
  2. Java和Node.js的类似插件

参考文献

  1. 该插件可以在github上找到
  2. 请将任何反馈发送到arskiev@gmail.com

Source: https://habr.com/ru/post/zh-CN473320/


All Articles