เจธเฉเจตเจฟเจงเจพเจœเจจเจ• BDD: SpecFlow+TFS

เจ‡เฉฐเจŸเจฐเจจเฉˆเฉฑเจŸ 'เจคเฉ‡ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจฒเฉ‡เจ– เจนเจจ เจ•เจฟ SpecFlow เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฟเจตเฉ‡เจ‚ เจ•เจฐเฉ€เจ, เจŸเฉˆเจธเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ TFS เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจธเฉฐเจฐเจšเจฟเจค เจ•เจฐเจจเจพ เจนเฉˆ, เจชเจฐ เจ…เจœเจฟเจนเจพ เจ•เฉ‹เจˆ เจจเจนเฉ€เจ‚ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจธเจพเจฐเฉ‡ เจชเจนเจฟเจฒเฉ‚ เจธเจผเจพเจฎเจฒ เจนเจจเฅค เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฆเฉฑเจธเจพเจ‚เจ—เจพ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ SpecFlow เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจนเจฐ เจ•เจฟเจธเฉ‡ เจฒเจˆ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจ•เจฟเจตเฉ‡เจ‚ เจฒเจพเจ‚เจš เจ…เจคเฉ‡ เจธเฉฐเจชเจพเจฆเจฟเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

เจ•เฉฑเจŸ เจฆเฉ‡ เจนเฉ‡เจ เจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจธเจฟเฉฑเจ–เฉ‹เจ—เฉ‡ เจ•เจฟ เจ•เจฟเจตเฉ‡เจ‚ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจเจพ เจนเฉˆ:

  • TFS เจคเฉ‹เจ‚ เจŸเฉˆเจธเจŸ เจšเฉฑเจฒ เจฐเจฟเจนเจพ เจนเฉˆ
  • TFS เจตเจฟเฉฑเจš เจ•เฉ‡เจธเจพเจ‚ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจ เจฒเจˆ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจฆเฉ€ เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ• เจฒเจฟเฉฐเจ•เจฟเฉฐเจ—
  • TFS เจตเจฟเฉฑเจš เจŸเฉˆเจธเจŸ เจ•เฉ‡เจธเจพเจ‚ เจฆเฉ€ เจนเจฎเฉ‡เจธเจผเจพ เจ…เฉฑเจช-เจŸเฉ‚-เจกเฉ‡เจŸ เจธเจฎเฉฑเจ—เจฐเฉ€
  • เจŸเฉˆเจธเจŸเจฐเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจธเฉฐเจธเจ•เจฐเจฃ เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจชเฉเจฐเจฃเจพเจฒเฉ€ เจตเจฟเฉฑเจš เจธเจฟเฉฑเจงเฉ‡ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉฐเจชเจพเจฆเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจธเจฎเจฐเฉฑเจฅเจพ
    เจธเฉเจตเจฟเจงเจพเจœเจจเจ• BDD: SpecFlow+TFS

prehistory

เจธเจพเจจเฉ‚เฉฐ 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

เจธเจฟเฉฑเจŸเจพ

เจ‡เจธ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ‡ เจซเจพเจ‡เจฆเฉ‡:

  • เจ•เฉ‹เจˆ เจตเฉ€ เจŸเฉˆเจธเจŸเจฐ เจธเฉฐเจธเจ•เจฐเจฃ เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจตเฉˆเจฌ เจซเจพเจฐเจฎ เจตเจฟเฉฑเจš fetaure เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจ–เฉ‹เจฒเฉเจน เจธเจ•เจฆเจพ เจนเฉˆ, เจ‡เจธเจจเฉ‚เฉฐ เจธเฉฐเจชเจพเจฆเจฟเจค เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฌเจฟเจฒเจก เจคเฉ‹เจ‚ เจคเฉเจฐเฉฐเจค เจฌเจพเจ…เจฆ เจฒเจพเจ—เฉ‚ เจนเฉ‹ เจœเจพเจฃเจ—เฉ€เจ†เจ‚เฅค
  • เจคเฉเจธเฉ€เจ‚ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจธเจฎเฉ‡เจ‚ เจตเจฟเจ…เจ•เจคเฉ€เจ—เจค เจคเฉŒเจฐ 'เจคเฉ‡ เจŸเฉˆเจธเจŸ เจšเจฒเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹
  • เจชเจพเจฐเจฆเจฐเจธเจผเฉ€ เจŸเฉˆเจธเจŸ เจฎเจพเจกเจฒ - เจ…เจธเฉ€เจ‚ เจนเจฎเฉ‡เจธเจผเจพ เจœเจพเจฃเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจฒเจพเจ‚เจš เจ•เฉ€เจคเจพ เจŸเฉˆเจธเจŸ เจ•เฉ€ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹