【问题标题】:Design Reusable Steps Specflow-Is this approach correct设计可重用步骤规范流-这种方法是否正确
【发布时间】:2015-08-27 10:22:48
【问题描述】:

我们是 Specflow 的新手并试图在我们的公司中实施它,我们开发了一些功能作为烟雾/回归测试的一部分并且目前正在执行中。我们正在遵循描述的方法 - Specflow,Selenium-Share data between different Step definitions or classes 我们观察到的是重用步骤 - 必须将步骤分解为其最多的组件/单元功能,如下所示-

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"

我们观察到,如果您的步骤未按上述描述,则它们的可重用性在其他功能中非常有限。这种方法是否正确或需要针对功能而不是可重用性的步骤?

【问题讨论】:

    标签: selenium-webdriver bdd specflow


    【解决方案1】:

    示例规范与您在上面尝试实现的关键字驱动测试不同。真正的 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(不推荐)来完成。

    该场景也可以在没有实现上下文的情况下运行:无论您将其作为网络服务器、通过浏览器还是作为 Windows Phone 应用程序运行都没有关系。因此,“检查复选框”或“填充编辑框”和“单击链接”等信息不应出现在功能中。 如果您正在测试特定的页面布局,则例外。

    在您的测试设计开始时,这会使您的步骤在低级别上不太可重用,因此您必须在胶水代码中创建可重用的步骤。对于 Selenium 网络测试,您可以使用 page object pattern 来实现此目的。

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

    所以,是的,如果没有在步骤中定义对象,那么在低级别上,步骤不是很可重用,但从长远来看,它会给您带来巨大的优势。当您想在可读的步骤定义中使用低级步骤时,也许 SpecFlow 不适合您。

    【讨论】:

    • @AutomatedChaos-我确实实现了 POM 并尝试使这些步骤尽可能可重用。已编辑顶部的功能文件-感谢所有输入。真的很有帮助。
    猜你喜欢
    • 2016-05-23
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多