เช…เชจเซเช•เซ‚เชณ BDD: SpecFlow+TFS

เชธเซเชชเซ‡เช•เชซเซเชฒเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชตเซ‹, เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ TFS เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช—เซ‹เช เชตเชตเซเช‚ เชคเซ‡ เชตเชฟเชถเซ‡ เช‡เชจเซเชŸเชฐเชจเซ‡เชŸ เชชเชฐ เช˜เชฃเชพ เชฒเซ‡เช–เซ‹ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซเชฏเชพเช‚ เชเช• เชชเชฃ เชจเชฅเซ€ เชœเซ‡เชฎเชพเช‚ เชคเชฎเชพเชฎ เชชเชพเชธเชพเช“ เชถเชพเชฎเซ‡เชฒ เช›เซ‡. เช† เชฒเซ‡เช–เชฎเชพเช‚, เชนเซเช‚ เชคเชฎเชจเซ‡ เชœเชฃเชพเชตเซ€เชถ เช•เซ‡ เชคเชฎเซ‡ เชธเซเชชเซ‡เช•เชซเซเชฒเซ‹ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซเชธเชจเซ‡ เชฆเชฐเซ‡เช• เชฎเชพเชŸเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช…เชจเซเช•เซ‚เชณ เชฌเชจเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹.

เช•เชŸ เชจเซ€เชšเซ‡ เชคเชฎเซ‡ เชถเซ€เช–เซ€ เชถเช•เชถเซ‹ เช•เซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฎเซ‡เชณเชตเชตเซเช‚:

  • TFS เชคเชฐเชซเชฅเซ€ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชšเชพเชฒเซ€ เชฐเชนเซเชฏเชพ เช›เซ‡
  • TFS เชฎเชพเช‚ เช•เซ‡เชธ เชšเช•เชพเชธเชตเชพ เชฎเชพเชŸเซ‡ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซเชธเชจเซเช‚ เชธเซเชตเชšเชพเชฒเชฟเชค เชœเซ‹เชกเชพเชฃ
  • TFS เชฎเชพเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เซ‡เชธเซ‹เชจเซ€ เชนเช‚เชฎเซ‡เชถเชพ เช…เชช-เชŸเซ‚-เชกเซ‡เชŸ เชธเชพเชฎเช—เซเชฐเซ€
  • เชŸเซ‡เชธเซเชŸเชฐเซเชธ เชฆเซเชตเชพเชฐเชพ เชตเชฐเซเชเชจ เช•เช‚เชŸเซเชฐเซ‹เชฒ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชธเซ€เชงเชพ เชœ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซ‡ เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ
    เช…เชจเซเช•เซ‚เชณ BDD: SpecFlow+TFS

เชชเซเชฐเชพเช—เซˆเชคเชฟเชนเชพเชธเชฟเช•

เช…เชฎเชจเซ‡ BDD เช…เชญเชฟเช—เชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชชเชฐเซ€เช•เซเชทเชฃเชจเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค เช•เชฐเชตเชพเชจเชพ เช•เชพเชฐเซเชฏเชจเซ‹ เชธเชพเชฎเชจเซ‹ เช•เชฐเชตเซ‹ เชชเชกเซเชฏเซ‹ เชนเชคเซ‹. เช…เชฎเชพเชฐเซ€ เช•เช‚เชชเชจเซ€เชฎเชพเช‚ เชŸเชพเชธเซเช• เชŸเซเชฐเซ‡เช•เชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเชจเซ‹ เช†เชงเชพเชฐ TFS เชนเซ‹เชตเชพเชฅเซ€, เชฎเชพเชฐเชพ เชฎเช—เชœเชฎเชพเช‚ เชเช• เชšเชฟเชคเซเชฐ เชนเชคเซเช‚ เช•เซ‡ เชœเซเชฏเชพเช‚ SpecFlow เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเชพ เชธเซเชŸเซ‡เชชเซเชธ TFSเชฎเชพเช‚ เชŸเซ‡เชธเซเชŸ เช•เซ‡เชธเชจเชพ เชธเซเชŸเซ‡เชชเซเชธ เช›เซ‡ เช…เชจเซ‡ เชŸเซ‡เชธเซเชŸ เชชเซเชฒเชพเชจเชฎเชพเช‚เชฅเซ€ เชŸเซ‡เชธเซเชŸ เชถเชฐเซ‚ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชจเซ€เชšเซ‡ เชฎเซ‡เช‚ เชคเซ‡เชจเซ‹ เช…เชฎเชฒ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเซเชฏเซ‹ เชคเซ‡ เช›เซ‡.

เช…เชฎเชจเซ‡ เชถเซเช‚ เชœเซ‹เชˆเช เช›เซ‡:

  1. SpecFlow เชชเชฐ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชธเชพเชฅเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ
  2. Azure DevOps เชธเชฐเซเชตเชฐ (เช‰เชฐเซเชซ เชŸเซ€เชฎ เชซเชพเช‰เชจเซเชกเซ‡เชถเชจ เชธเชฐเซเชตเชฐ)
  3. TFS เชฎเชพเช‚ เชŸเซ‡เชธเซเชŸ เช•เซ‡เชธ เชธเชพเชฅเซ‡ SpecFlow เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เช เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซเช‚ เชเช• เชธเชพเชงเชจ

เช—เซ‹เช เชตเชฃ

1. เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชธเชพเชฅเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฌเชฟเชฒเซเชก เชฌเชจเชพเชตเชตเซ‹

เช…เชนเซ€เช‚ เชฌเชงเซเช‚ เชธเชฐเชณ เช›เซ‡, เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เช…เชจเซ‡ เช•เชฒเชพเช•เซƒเชคเชฟเช“เชจเซเช‚ เชชเซเชฐเช•เชพเชถเชจ. เชคเซเชฐเซ€เชœเชพ เช•เชพเชฐเซเชฏ เชตเชฟเชถเซ‡ เชชเช›เซ€เชฅเซ€ เชตเชงเซ.

เช…เชจเซเช•เซ‚เชณ BDD: SpecFlow+TFS

2. เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชชเซเชฐเช•เชพเชถเชจ เชฌเชจเชพเชตเชตเซเช‚

เชเช• เช•เชพเชฐเซเชฏ เชธเชพเชฅเซ‡ เชชเซเชฐเช•เชพเชถเชจ เชฌเชจเชพเชตเชตเซเช‚ - เชตเชฟเชเซเชฏเซเช…เชฒ เชธเซเชŸเซเชกเชฟเชฏเซ‹ เชŸเซ‡เชธเซเชŸ

เช…เชจเซเช•เซ‚เชณ BDD: SpecFlow+TFS

เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช•เชพเชฐเซเชฏ เชชเชฐเซ€เช•เซเชทเชฃ เชฏเซ‹เชœเชจเชพเชฎเชพเช‚เชฅเซ€ เชฎเซ‡เชจเซเชฏเซเช…เชฒเซ€ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช—เซ‹เช เชตเซ‡เชฒ เช›เซ‡

เช…เชจเซเช•เซ‚เชณ BDD: SpecFlow+TFS

3. เชชเชฐเซ€เช•เซเชทเชฃ เช•เซ‡เชธเซ‹เชจเซเช‚ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เชเซ‡เชถเชจ

เช…เชฎเซ‡ เชœเชพเชฃเซ€เช เช›เซ€เช เช•เซ‡ เชตเชฟเชเซเชฏเซเช…เชฒ เชธเซเชŸเซเชกเชฟเชฏเซ‹ เชคเชฎเชจเซ‡ TFS เชฎเชพเช‚ เช•เซ‡เชธ เชšเช•เชพเชธเชตเชพ เชฎเชพเชŸเซ‡ เชชเชฐเซ€เช•เซเชทเชฃ เชชเชฆเซเชงเชคเชฟเช“เชจเซ‡ เชฒเชฟเช‚เช• เช•เชฐเชตเชพเชจเซ€ เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ‡ เชชเชฐเซ€เช•เซเชทเชฃ เชฏเซ‹เชœเชจเชพเช“เชฎเชพเช‚เชฅเซ€ เชšเชฒเชพเชตเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เช† เชฎเซ‡เชจเซเชฏเซเช…เชฒเซ€ เชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชจเซ‡ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซเชธเชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€เชจเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เช เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชฎเซ‡เช‚ เชเช• เชธเชฐเชณ เช•เชจเซเชธเซ‹เชฒ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฒเช–เซ€ เช›เซ‡. เชซเซ€เชšเชฐ เชธเชฟเช‚เช•. เชธเชฟเชฆเซเชงเชพเช‚เชค เชธเชฐเชณ เช›เซ‡ - เช…เชฎเซ‡ เชซเซ€เชšเชฐ เชซเชพเช‡เชฒเชจเซ‡ เชชเชพเชฐเซเชธ เช•เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ TFS API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชŸเซ‡เชธเซเชŸ เช•เซ‡เชธ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ€เช เช›เซ€เช.

FeatureSync เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชตเซ‹

เชซเซ€เชšเชฐ เชซเชพเช‡เชฒ เชนเซ‡เชกเชฐเชฎเชพเช‚ เชจเซ‡เชฎเชธเซเชชเซ‡เชธ เช…เชจเซ‡ เชฒเซ‹เช•เซ‡เชฒ เช‰เชฎเซ‡เชฐเซ‹:

#language:en
@Namespace:Application.Autotests
Feature: Log to application

*เชจเซ‡เชฎเชธเซเชชเซ‡เชธ เช .dll เชซเชพเช‡เชฒเชจเชพ เชจเชพเชฎ เชธเชพเชฅเซ‡ เชฎเซ‡เชณ เช–เชพเชคเซ€ เชนเซ‹เชตเซ€ เชœเซ‹เชˆเช เชœเซ‡เชฎเชพเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เชชเชฆเซเชงเชคเชฟเช“ เชถเชพเชฎเซ‡เชฒ เช›เซ‡

เช…เชฎเซ‡ TFS เชฎเชพเช‚ เช–เชพเชฒเซ€ เชŸเซ‡เชธเซเชŸ เช•เซ‡เชธเซ‹ เชฌเชจเชพเชตเซ€เช เช›เซ€เช เช…เชจเซ‡ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซเชธเชฎเชพเช‚ เชคเซ‡เชฎเชจเชพ id เชธเชพเชฅเซ‡ เชŸเซ…เช—เซเชธ เช‰เชฎเซ‡เชฐเซ€เช เช›เซ€เช:

เช…เชจเซเช•เซ‚เชณ BDD: SpecFlow+TFS

@2124573 @posistive
Scenario: Successful authorization
    Given I on authorization page
    And I enter:
        | Login | Password |
        | user  | pass     |
    When I press Login button
    Then Browser redirect on Home page

เชซเซ€เชšเชฐ เชธเชฟเช‚เช• เชฒเซ‹เช‚เชš เช•เชฐเซ‹:

FeatureSync.exe -f C:FolderWithFeatures -s https://tfs.server.com/collection -t 6ppjfdysk-your-tfs-token-2d7sjwfbj7rzba

เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชธเชพเชฅเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฌเชจเชพเชตเซเชฏเชพ เชชเช›เซ€ เชฒเซ‹เช‚เชš เชฅเชพเชฏ เช›เซ‡:

เช…เชจเซเช•เซ‚เชณ BDD: SpecFlow+TFS

เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เชเซ‡เชถเชจ เชชเชฐเชฟเชฃเชพเชฎ

SpecFlow เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชชเช—เชฒเชพเช‚เช“ เชธเชฎเชจเซเชตเชฏเชฟเชค เช›เซ‡ เช…เชจเซ‡ เช“เชŸเซ‹เชฎเซ‡เชถเชจ เชธเซเชฅเชฟเชคเชฟ เชธเซ‡เชŸ เช›เซ‡

เช…เชจเซเช•เซ‚เชณ BDD: SpecFlow+TFS

เช…เชจเซเช•เซ‚เชณ BDD: SpecFlow+TFS

4. เชŸเซ‡เชธเซเชŸ เชชเซเชฒเชพเชจ เชธเซ‡เชŸ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เช…เชฎเซ‡ เชŸเซ‡เชธเซเชŸ เชชเซเชฒเชพเชจ เชฌเชจเชพเชตเซ€เช เช›เซ€เช, เชคเซ‡เชฎเชพเช‚ เช…เชฎเชพเชฐเชพ เชธเซเชตเชšเชพเชฒเชฟเชค เช•เซ‡เชธ เช‰เชฎเซ‡เชฐเซ€เช เช›เซ€เช, เชธเซ‡เชŸเชฟเช‚เช—เชฎเชพเช‚ เชฌเชฟเชฒเซเชก เช…เชจเซ‡ เชฐเชฟเชฒเซ€เช เชชเชธเช‚เชฆ เช•เชฐเซ€เช เช›เซ€เช

เช…เชจเซเช•เซ‚เชณ BDD: SpecFlow+TFS

เช…เชจเซเช•เซ‚เชณ BDD: SpecFlow+TFS

5. เชšเชพเชฒเซ€ เชฐเชนเซ‡เชฒ เชชเชฐเซ€เช•เซเชทเชฃเซ‹

เชŸเซ‡เชธเซเชŸ เชชเซเชฒเชพเชจเชฎเชพเช‚ เชœเชฐเซ‚เชฐเซ€ เชŸเซ‡เชธเซเชŸ เชชเชธเช‚เชฆ เช•เชฐเซ‹ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชšเชฒเชพเชตเซ‹.

เช…เชจเซเช•เซ‚เชณ BDD: SpecFlow+TFS

เชจเชฟเชทเซเช•เชฐเซเชท

เช† เชฐเซ‚เชชเชฐเซ‡เช–เชพเชจเชพ เชซเชพเชฏเชฆเชพ:

  • เช•เซ‹เชˆเชชเชฃ เชŸเซ‡เชธเซเชŸเชฐ เชซเซ€เชšเชฐ เชซเชพเช‡เชฒเชจเซ‡ เชตเชฐเซเชเชจ เช•เช‚เชŸเซเชฐเซ‹เชฒ เชตเซ‡เชฌ เชซเซ‹เชฐเซเชฎเชฎเชพเช‚ เช–เซ‹เชฒเซ€ เชถเช•เซ‡ เช›เซ‡, เชคเซ‡เชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡ เช…เชจเซ‡ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชฌเชฟเชฒเซเชก เชฅเชฏเชพ เชชเช›เซ€ เชคเชฐเชค เชœ เช…เชธเชฐเชฎเชพเช‚ เช†เชตเชถเซ‡.
  • เชคเชฎเซ‡ เช•เซ‹เชˆเชชเชฃ เชธเชฎเชฏเซ‡ เชตเซเชฏเช•เซเชคเชฟเช—เชค เชฐเซ€เชคเซ‡ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชšเชฒเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹
  • เชชเชพเชฐเชฆเชฐเซเชถเช• เชชเชฐเซ€เช•เซเชทเชฃ เชฎเซ‹เชกเซ‡เชฒ - เช…เชฎเซ‡ เชนเช‚เชฎเซ‡เชถเชพ เชœเชพเชฃเซ€เช เช›เซ€เช เช•เซ‡ เช…เชฎเซ‡ เชฒเซ‰เชจเซเชš เช•เชฐเซ‡เชฒ เชชเชฐเซ€เช•เซเชทเชฃ เชถเซเช‚ เช•เชฐเซ‡ เช›เซ‡.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹