Selenium webdriver 设计可重用步骤Specflow这种方法正确吗

Selenium webdriver 设计可重用步骤Specflow这种方法正确吗,selenium-webdriver,bdd,specflow,Selenium Webdriver,Bdd,Specflow,我们是Specflow的新手,并试图在我们公司中实现它,我们开发了一些功能作为冒烟/回归测试的一部分,目前正在执行。我们遵循所述的方法- 我们观察到的是恢复步骤-必须将步骤分解为其most组件/单元特性,如下所示- Scenario: Search Cash book by Id Given Site browser launched Given Login is successful with "******" and "********" Given Set the

我们是Specflow的新手,并试图在我们公司中实现它,我们开发了一些功能作为冒烟/回归测试的一部分,目前正在执行。我们遵循所述的方法- 我们观察到的是恢复步骤-必须将步骤分解为其most组件/单元特性,如下所示-

Scenario: Search Cash book by Id
    Given Site browser launched
    Given Login is successful with "******" and "********"
    Given Set the service to "*******"
    Given Search a specific account "ABCDEFG" to match "Account"
    When A specific account is selected "ABCDEFG"
    When I search cash book with these data "CSX"
    Then the result should display records with transaction Amount "$1234"

我们观察到的是,如果您的步骤没有如上所述,那么它们在其他特性中的可重用性非常有限。这种方法是正确的还是需要在功能方面而不是在可重用性方面采取步骤?

示例规范与您试图实现的关键字驱动测试不同。真正的BDD方法如下所示:

Feature: Viewing transaction amounts in certain cashbooks
As a customer
In order to know if I am paid
I want to see the amount next to a transaction

Background:
Given the following transaction:
    | Name      | Account   | CashBook | Transaction | Amount |
    | CustomerA | ABCDEFG   | CSX      | GlipGlob    | 1234   |

Scenario: A Cash book can be searched by ID
    Given I am logged in as CustomerA
    And I have selected the account "ABCDEFG"
    And I have selected the cash book "CSX"
    Then there should be a transaction with amount "1234"
后台检查存在和/或设置数据。如何做到这一点对于特性(实现细节)并不重要。这可以通过直接DB查询、Web服务或通过GUI(不推荐)完成

该场景也在没有实现上下文的情况下运行:不管您是作为Web服务器、通过浏览器还是作为Windows Phone应用程序运行它。因此,“复选框”或“填写编辑框”和“点击链接”等信息不应出现在功能中。除非您正在测试特定的页面布局

在测试设计开始时,这会使您的步骤在较低级别上不可重用,因此您必须在粘合代码中创建可重用的步骤。对于Selenium en webtesting,您可以使用来实现这一点

最后,您将拥有一个更灵活的框架。当复选框更改为单选按钮或对象上的链接时,您只需更改页面对象中的一种方法,而无需更改100个功能文件。
如果管理层决定要一个iPhone应用程序,你可以重复使用所有测试,只需为你的胶水代码制作一个不同的界面。
当开发人员将RESTAPI交给应用程序,因为它需要与其他源互连时,您只需更改粘合代码即可重用相同的功能文件


因此,是的,在低级别上,如果步骤中没有定义对象,那么步骤不是很可重用的,但从长远来看,它将给您带来巨大的优势。当你想在易读的步骤定义中使用低级步骤时,也许SpecFlow对你来说是一个错误的框架。

@AutomatedChaos-I确实实现了POM&尝试使这些步骤尽可能可重用。已经在顶部编辑了功能文件-感谢所有的输入。非常有用。