Π£Π΄ΠΎΠ±Π½Ρ‹ΠΉ BDD: SpecFlow+TFS

Π’ сСти Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ статСй ΠΎ Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ SpecFlow, ΠΊΠ°ΠΊ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ TFS для запуска тСстов, Π½ΠΎ Π½Π΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ которая содСрТала Π±Ρ‹ Π² сСбС всС аспСкты. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ я расскаТу, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ запуск ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сцСнариСв SpecFlow ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ для всСх.

Под ΠΊΠ°Ρ‚ΠΎΠΌ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ:

  • Запуск тСстов ΠΈΠ· TFS
  • АвтоматичСский Π»ΠΈΠ½ΠΊ сцСнариСв ΠΊ тСсткСйсам Π² TFS
  • ВсСгда Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ содСрТаниС тСсткСйсов Π² TFS
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сцСнарии прямо Π² систСмС контроля вСрсий тСстировщиками
    Π£Π΄ΠΎΠ±Π½Ρ‹ΠΉ BDD: SpecFlow+TFS

ΠŸΡ€Π΅Π΄Ρ‹ΡΡ‚ΠΎΡ€ΠΈΡ

ΠŸΠ΅Ρ€Π΅Π΄ Π½Π°ΠΌΠΈ встала Π·Π°Π΄Π°Ρ‡Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ тСстированиС прилоТСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ BDD ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. Π’Π°ΠΊ ΠΊΠ°ΠΊ основой систСмой таск-Ρ‚Ρ€Π΅ΠΊΠΈΠ½Π³Π° Π² нашСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ являСтся TFS, Π² ΠΌΠΎΠ΅ΠΉ Π³ΠΎΠ»ΠΎΠ²Π΅ слоТилась ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π°, Π³Π΄Π΅ шаги сцСнария SpecFlow β€” это шаги тСсткСйсов Π² TFS, Π° запуск тСстов осущСствляСтся ΠΈΠ· тСст-ΠΏΠ»Π°Π½ΠΎΠ². Π”Π°Π»Π΅Π΅ ΠΎ Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ я это Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π».

Π§Ρ‚ΠΎ Π½Π°ΠΌ потрСбуСтся:

  1. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ с тСстами Π½Π° SpecFlow
  2. Azure DevOps Server (aka Team Foundation Server)
  3. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ для синхронизации сцСнариСв SpecFlow с тСсткСйсами Π² TFS

Настройка

1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° с тСстами

Π—Π΄Π΅ΡΡŒ всё просто, сборка ΠΈ публикация Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ². О Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ таскС ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ дальшС.

Π£Π΄ΠΎΠ±Π½Ρ‹ΠΉ BDD: SpecFlow+TFS

2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ€Π΅Π»ΠΈΠ·Π° для запуска тСстов

Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ Ρ€Π΅Π»ΠΈΠ· с ΠΎΠ΄Π½ΠΈΠΌ таском β€” Visual Studio Test

Π£Π΄ΠΎΠ±Π½Ρ‹ΠΉ BDD: SpecFlow+TFS

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС таск настроСн для запуска тСстов Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈΠ· тСст ΠΏΠ»Π°Π½Π°

Π£Π΄ΠΎΠ±Π½Ρ‹ΠΉ BDD: SpecFlow+TFS

3. Бинхронизация тСсткСйсов

ΠœΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Visual Studio позволяСт Π»ΠΈΠ½ΠΊΠΎΠ²Π°Ρ‚ΡŒ тСстовыС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΊ тСсткСйсам Π² TFS ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°ΡΡ‚ΡŒ ΠΈΡ… ΠΈΠ· тСст-ΠΏΠ»Π°Π½ΠΎΠ². Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ это Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π° Ρ‚Π°ΠΊ ΠΆΠ΅, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ содСрТаниС сцСнариСв, я написал простоС консольноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ FeatureSync. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ прост β€” парсим feature Ρ„Π°ΠΉΠ», ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ API TFS обновляСм тСсткСйсы.

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ FeatureSync

ДобавляСм namespace ΠΈ локаль Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ feature Ρ„Π°ΠΉΠ»Π°:

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

*namespace Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ .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:

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

Π’ нашСм случаС запуск происходит послС сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° с тСстами:

Π£Π΄ΠΎΠ±Π½Ρ‹ΠΉ BDD: SpecFlow+TFS

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ синхронизации

Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ шаги SpecFlow сцСнария ΠΈ проставлСн статус Automation

Π£Π΄ΠΎΠ±Π½Ρ‹ΠΉ BDD: SpecFlow+TFS

Π£Π΄ΠΎΠ±Π½Ρ‹ΠΉ BDD: SpecFlow+TFS

4. Настройка тСст-ΠΏΠ»Π°Π½Π°

Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ тСст-ΠΏΠ»Π°Π½, добавляСм Π² Π½Π΅Π³ΠΎ наши Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ кСйсы, Π² настройках Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ сборку ΠΈ Ρ€Π΅Π»ΠΈΠ·

Π£Π΄ΠΎΠ±Π½Ρ‹ΠΉ BDD: SpecFlow+TFS

Π£Π΄ΠΎΠ±Π½Ρ‹ΠΉ BDD: SpecFlow+TFS

5. Запуск тСстов

Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ тСст Π² тСст-ΠΏΠ»Π°Π½Π΅ ΠΈ запускаСм.

Π£Π΄ΠΎΠ±Π½Ρ‹ΠΉ BDD: SpecFlow+TFS

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠŸΠ»ΡŽΡΡ‹ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³Π°:

  • любой тСстировщик ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ fetaure Ρ„Π°ΠΉΠ» Π² Π²Π΅Π± Ρ„ΠΎΡ€ΠΌΠ΅ контроля вСрсий, ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΈ измСнСния вступят Π² силу сразу ΠΆΠ΅ послС сборки
  • ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ тСсты Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ
  • прозрачная тСстовая модСль β€” всСгда Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ тСст ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ запустили.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com