SlideShare a Scribd company logo
1 of 64
Запускаемая спецификация на
 SpecFlow с использованием
       WatiN для .NET
      Дмитрий Жарий
      http://zhariy.com
       EPAM Systems


                          AUTOMATED-
                          TESTING.INFO
МЫ ЕЩЕ НЕ
    АВТОМАТИЗИРУЕМ…

2                     AUTOMATED-
                      TESTING.INFO
Ребят, нам нужно фичу реализовать,
     п’нятненько, чтобы пользователи
      при покупке 5-ти и более книг за
       один раз получали бесплатную
           доставку, п’нятненько.




3                                        AUTOMATED-
                                         TESTING.INFO
Опа! Оптическая иллюзия!




4                              AUTOMATED-
                               TESTING.INFO
// Хэ, просто, как два байта переслать

    if ( Заказ.Корзина["Книги"] > 5 )
    {
         Заказ.БесплатнаяДоставка = true;
    }




5                                            AUTOMATED-
                                             TESTING.INFO
Ага, круто:
• Добавить в корзину 1 книгу и оформить заказ.
   Проверить что доставка – стандартная.
• Добавить в корзину 4 книги и оформить заказ.
   Проверить что доставка – стандартная.
• Добавить в корзину 5 книг и оформить заказ.
   Проверить что тип доставки – бесплатная.
• Добавить в корзину 6 книг и оформить заказ.
   Проверить что тип доставки – бесплатная.
О-о-о тест кейсы почти готовы!




6                                                AUTOMATED-
                                                 TESTING.INFO
И всё вместе!
    Feature: Бесплатная доставка книг
        - При заказе 5-ти и более книг, клиент получает бесплатную доставку

    Scenario Outline: Стоимость доставки при покупке книг
        Дано Клиент заказывает <количество книг> книг
        Когда клиент оформляет заказ
        Тогда доставка должна быть <тип доставки>
    Examples:

           количество книг                тип доставки
                  1                       Стандартная
                  4                       Стандартная
                  5                        Бесплатная
                  6                        Бесплатная
7                                                                  AUTOMATED-
                                                                   TESTING.INFO
// Хэ, просто, как два байта переслать

    if ( Заказ.Корзина["Книги"] > 5 )
    {
         Заказ.БесплатнаяДоставка = true;
    }




8                                            AUTOMATED-
                                             TESTING.INFO
// Хэ, просто, как два байта переслать

    if ( Заказ.Корзина["Книги"] >= 5 )
    {
         Заказ.БесплатнаяДоставка = true;
    }




9                                            AUTOMATED-
                                             TESTING.INFO
Ой, круто!
Теперь все те кто заказывает Слонов
будут читать больше книг, потому что
доставка 5-ти книг и одного слона ведь
тоже бесплатная?




10                                       AUTOMATED-
                                         TESTING.INFO
Сло… каких еще слонов?!
     Нет, это касается только
        книг, п’нятненько?




11                              AUTOMATED-
                                TESTING.INFO
И снова всё вместе!
     Feature: Бесплатная доставка книг
         - При заказе 5-ти и более книг, клиент получает бесплатную доставку
         - При заказе книг и других товаров – доставка всегда стандартная

     Scenario Outline: Стоимость доставки при покупке книг
         Дано Клиент заказывает <количество книг> книг
         И других товаров -- <количество др. тов.>
         Когда клиент оформляет заказ
         Тогда доставка должна быть <тип доставки>
     Examples:
        количество книг      количество др. тов.      тип доставки
               1                     0                Стандартная
               4                     0                Стандартная
               5                     0                Бесплатная
               5                      1               Стандартная
               6                     0                Бесплатная
12                                                                   AUTOMATED-
                                                                     TESTING.INFO
Шо это было?!




13                   AUTOMATED-
                     TESTING.INFO
Acceptance Test Driven Development




                                 Море
Просто свинка




                Морская свинка
14                               AUTOMATED-
                                 TESTING.INFO
15   AUTOMATED-
     TESTING.INFO
Спецификация через пример
     1. Обсудить новые фичи и добиться
        общего понимания

     2.Спецификация с примерами

     3.Запускаемая спецификация

     4.Живая документация
16                                 AUTOMATED-
                                   TESTING.INFO
17   AUTOMATED-
     TESTING.INFO
Обсудить и поставить правильные
     цели




18                              AUTOMATED-
                                TESTING.INFO
Выбрать ключевые примеры и
     создать
     «Спецификацию с примерами»




19                            AUTOMATED-
                              TESTING.INFO
Автоматизировать ключевые
     примеры и создать «Запускаемую
     спецификацию»




20                             AUTOMATED-
                               TESTING.INFO
Со временем, запускаемая
     спецификация с примерами
     перерастет в Живую Документацию




21                            AUTOMATED-
                              TESTING.INFO
Спецификация с примерами




22                          AUTOMATED-
                            TESTING.INFO
Запускаемая спецификация




23                          AUTOMATED-
                            TESTING.INFO
Slide form David Evans' presentations
24                                           AUTOMATED-
                                             TESTING.INFO
В SpecFlow!
     Feature: Бесплатная доставка книг
     - При заказе 5-ти и более книг, клиент получает бесплатную доставку
     - При заказе книг и других товаров – доставка всегда стандартная

     Scenario Outline: Стоимость доставки при покупке книг
        Given Клиент заказывает <количество книг> книг
        And других товаров -- <количество др. тов.>
        When клиент оформляет заказ
        Then доставка должна быть <тип доставки>

     Examples:
     | количество книг | количество др. тов. | тип доставки         |
     | 1               | 0                   | Стандартная          |
     | 4               | 0                   | Стандартная          |
     | 5               | 0                   | Бесплатная           |
     | 5               | 1                   | Стандартная          |
     | 6               | 0                   | Бесплатная           |

25                                                           AUTOMATED-
                                                             TESTING.INFO
Язык Gherkin

     GIVEN WHEN THEN


26                     AUTOMATED-
                       TESTING.INFO
Gherkin – это:
• специализированый язык для создания тест
  кейсов
• расширяемый язык, имея готовую основу, вы
  можете «допиливать» его под ваши нужды
• понятен программистам, тестировщикам и
  простым смертным :)
• Имеет четкую структуру, что помогает различным
  инструментам парсить и преобразовывать
  *.feature файлы


27                                      AUTOMATED-
                                        TESTING.INFO
Обобщенный вид сверху
     Feature: Имя высокоуровневого требования
         - Описание требований
         - Текст из User Story, Use Cases
         - Ссылки на полезные материалы
         - Что-то еще – да что угодно!

     Scenario: Приемочный критерий
         Given что-то уже готово
         When совершено действие
         Then ожидаем результат

     Scenario: Тестирует требования, описанные выше

     Scenario: Дополняет и разъясняет требования

     Scenario: Автоматизируется
28                                                    AUTOMATED-
                                                      TESTING.INFO
Given When Then
     Given (Дано) Некоторый первоначальный
     контекст

       When (Когда) Происходит некоторое действие
       или событие


     Then (Тогда) Нужно убедиться, что у
     действия был ожидаемый результат

29                                         AUTOMATED-
                                           TESTING.INFO
Задачка!



     У Маши было 5 яблок, 2 яблока отдала
     Саше. Сколько яблок осталось у Маши?




30                                 AUTOMATED-
                                   TESTING.INFO
Мы не задачки тут решаем
     -- А тест-кейсы пишем:

     Дано у Маши было 5 яблок
     Когда Маша отдала 2 яблока Саше
     Тогда у Маши должно остаться 3
     яблока


31                                AUTOMATED-
                                  TESTING.INFO
Немножко на английском


     Given Masha had 5 apples
     When Masha gives 2 apples to Sasha
     Then Masha should have 3 apples




32                                    AUTOMATED-
                                      TESTING.INFO
С нашей стороны яблоки ушли...
     Я не знаю, почему вы яблоки не получили…


     Scenario: Apples sharing between users
       Given Masha had 5 apples
        And Sasha had 0 apples
       When Masha gives 2 apples to Sasha
        Then Masha should have 3 apples
         And Sasha should have 2 apples


33                                              AUTOMATED-
                                                TESTING.INFO
Сложно с Given/When/Then?
     * Звездочка!


     Scenario: Apples sharing between users
       * Masha had 5 apples
       * Sasha had 0 apples
       * Masha gives 2 apples to Sasha
       * Masha should have 3 apples
       * Sasha should have 2 apples


34                                            AUTOMATED-
                                              TESTING.INFO
Предпочитаете таблицы?
     Scenario Outline: Apples sharing between users
         Given Masha had <Masha initial balance> apples
          And Sasha had <Sasha initial balance> apples
         When Masha <Masha action> <Shared apples> apples to Sasha
          Then Masha should have <Masha expected balance> apples
           And Sasha should have <Sasha expected balance> apples
     Examples:

      Masha initial   Sasha initial   Masha action   Shared apples    Masha      Sasha expected
       balance          balance                                      expected       balance
                                                                      balance
           5               0             gives            2             3              2
           5               1             gives            2             3              3




35                                                                              AUTOMATED-
                                                                                TESTING.INFO
Предпочитаете таблицы?
     Scenario: Apples sharing between users
         Given the users balance as follows:

                User          Balance
               Masha             5
                Sasha            0

         When Masha gives 2 apples to Sasha
         Then the users balance should be as follows:

                 User         Balance
                Masha            3
                Sasha            2



36                                                      AUTOMATED-
                                                        TESTING.INFO
Цитаты – огромные куски текста
     Scenario: Apples sharing between users using command line
         Given the users balance as follows:
                User          Balance
               Masha             5
               Sasha             0

         When Masha executes the following command line:
         """
             user-account.exe /user: Masha /action:give /item:apple
             /touser:Sasha /quantity:2
         """
         Then the output should be the following:
         """
             Give operation was performed successfully.
             Current balance is: Masha: 3 apples;
37
         """                                                          AUTOMATED-
                                                                      TESTING.INFO
Background – не повторяйтесь!
     Background:
        Given the users balance as follows:

              User           Balance
             Masha              5
              Sasha             0

     Scenario: Apples sharing between users using command line
         When Masha executes the following command line:
         { вырезано }
         Then the output should be the following:
         { вырезано }

     Scenario: Apples sharing between users
        When Masha gives 2 apples to Sasha
         Then Masha should have 3 apples
          And Sasha should have 2 apples
38                                                               AUTOMATED-
                                                                 TESTING.INFO
Feature: Мы -- на вершине
     Feature: Items sharing between users
             In order to share the items
             As an user
             I want the system to handle my balance changes

     Background:
        Given the users balance as follows:
                { вырезано }

     Scenario: Apples sharing between users using command line
          When Masha executes the following command line:
          { вырезано }
          Then the output should be the following:
          { вырезано }

     Scenario: Apples sharing between users
         When Masha gives 2 apples to Sasha
          Then Masha should have 3 apples
            And Sasha should have 2 apples



39                                                               AUTOMATED-
                                                                 TESTING.INFO
А еще можно писать любой текст
     Feature: Items sharing between users

             In order to share the items
             As an user
             I want the system to handle my balance changes

             TODO: Add more scenarios

             Requirements
             ~~~~~~~~~~~~
             The users:
              - Should be allowed to give some items to the others
              - Should be allowed to take the items back
              - Should be allowed to share items via command line
               - Should be allowed to check balance

40                                                                   AUTOMATED-
                                                                     TESTING.INFO
Вид сверху
     Feature: Items sharing between users

            In order to share the items
            As an user
            I want the system to handle my balance changes

            TODO: Add more scenarios

            Requirements
            ~~~~~~~~~~~~
            The users:
            - Should be allowed to give some items to the others
            - Should be allowed to take the items back
            - Should be allowed to share items via command line
            - Should be allowed to check balance
     Background:
        Given the users balance as follows:
                    { вырезано }

     Scenario: Apples sharing between users using command line
            When Masha executes the following command line:
            { вырезано }
            Then the output should be the following:
            { вырезано }

     Scenario: Apples sharing between users
           When Masha gives 2 apples to Sasha
            Then Masha should have 3 apples
             And Sasha should have 2 apples

41                                                                 AUTOMATED-
                                                                   TESTING.INFO
И главное!


     Gherkin можно использовать
     только в Cucumber и SpecFlow!



42                          AUTOMATED-
                            TESTING.INFO
Нееееет! Не только в Cucucmber!
     Robot Framework       Fitnesse
     http://goo.gl/aJTnl   http://goo.gl/8XWQe




43                                      AUTOMATED-
                                        TESTING.INFO
И не только SpecFlow
     Concordion
     http://www.concordion.org/Technique.html




44                                              AUTOMATED-
                                                TESTING.INFO
ОБОБЩЕНИЯ И ДЕТАЛИЗАЦИЯ


45                        AUTOMATED-
                          TESTING.INFO
Лес?


     Scenario: Система позволяет создать
     пользователя с уникальным именем
        Дано Пользователь с именем «Скотт Тайгер»
              не существует в системе
        Когда я создаю пользователя с именем
              «Скотт Тайгер»
        Тогда регистрация должна быть успешной


46                                        AUTOMATED-
                                          TESTING.INFO
Регистрация должна быть
     успешной?
     • Форма регистрации сохранилась без ошибок

     • Пользователь получил письмо со ссылкой для
       подтверждения регистрации

     • Пользователь перешел по ссылке и получил сообщение об
       успешном подтверждении регистрации

     • Пользователь открыл форму логина и ввел логин и пароль

     • Пользователь вошел в систему под своим аккаунтом

47                                                  AUTOMATED-
                                                    TESTING.INFO
Или дерево?
     Scenario: Форма выдает ошибку если поля пароля и подтверждения
     пароля не совпадают
     Дано я на форме регистрации
     Когда я заполняю следующие поля:
     Поле                 Значение
     Имя                  Скотт
     Фамилия              Тайгер
     Логин                scott
     Пароль               tiger
     Подтвердите пароль   erroror

     И нажимаю на кнопку «Зарегистрировать»
     Тогда я должен увидеть ошибку «пароли не совпадают»


48                                                          AUTOMATED-
                                                            TESTING.INFO
И еще


     Scenario: При включении света – свет включается
        Дано свет выключен
        Когда я включаю свет
        Тогда свет должен быть включен


                                      (Спасибо, Кэп!)


49                                            AUTOMATED-
                                              TESTING.INFO
А кто это сделал? (включил свет)
      Scenario: Выключатель включает свет
         Дано свет выключен
         Когда я нажимаю на выключатель
         Тогда свет должен быть включен

      Scenario: Выключатель выключает свет
         Дано свет включен
         Когда я нажимаю на выключатель
         Тогда свет должен быть выключен


50                                           AUTOMATED-
                                             TESTING.INFO
Короче!

Scenario Outline: Выключатель контролирует состояние света
   Дано свет <в первоначальном состоянии>
   Когда я нажимаю на выключатель
   Тогда свет должен быть <в ожидаемом состоянии>

Examples:

       в первоначальном   в ожидаемом состоянии
           состоянии
            включен             выключен
            выключен            включен


51                                                AUTOMATED-
                                                  TESTING.INFO
И приглашенные звезды

     КРИТИКА


52                           AUTOMATED-
                             TESTING.INFO
Сказочная страна




     По мотивам: Тестирование в стиле TSA
53                                          AUTOMATED-
                                            TESTING.INFO
В которой
• Бизнес-аналитики, не умеющие программировать,
  самостоятельно пишут сценарии на Given/When/Then

• Бизнес-аналитики предпочитают использовать Notepad++
  или Visual Studio для редактирования .feature файлов, вместо
  убогого MS Word

• Программисты любят составлять, обсуждать и дописывать
  требования и сразу же пишут автоматизированные сценарии

• Все участники команды поддерживают документацию в
  актуальном состоянии
54                                                AUTOMATED-
                                                  TESTING.INFO
А нужен ли паттерн Given – When -
     Then?
«программирование в табличках» — адская
пытка, паттерн given-when-then не даёт
возможности сделать хоть сколько-нибудь
сложные автоматизированные тесты, а при
ручном тестировании он и вовсе не нужен.


Почему я не люблю огурцы и фитнес — плюсы и
минусы BDD и ATDD.
Доклад Алексея Баранцева на AgileDays-2011
55                                            AUTOMATED-
                                              TESTING.INFO
Дэн Норт: Человек, придумавший
     Given When Then
     +Scenario 1: Account is in credit+
        Given the account is in credit
        And the card is valid
        And the dispenser contains cash
       When the customer requests cash
       Then ensure the account is debited
       And ensure cash is dispensed
       And ensure the card is returned

Dan North: Введение в BDD (2006 г.)
56                                          AUTOMATED-
                                            TESTING.INFO
Джеймс Бах: Всё ли можно
      автоматизировать?
     +Scenario 1: Account is in credit+
     Given the account is in credit
     And the card is valid
     And the dispenser contains cash
     When the customer requests cash
     Then check that the account is debited
     And check that cash is dispensed
     And check that the card is returned
     And check that nothing happens that shouldn’t happen and everything else
     happens that should happen for all variations of this scenario and all possible
     states of the ATM and all possible states of the customer’s
     account and all possible states of the rest of the database and
     all possible states of the system as a whole, and anything
     happening in the cloud that should not matter
     but might matter.
     ::> http://www.satisfice.com/blog/archives/638
57                                                                     AUTOMATED-
                                                                       TESTING.INFO
Пока что…

     СЕРЕБРЯНОЙ ПУЛИ
     ДЕЙСТВИТЕЛЬНО НЕТ

58                       AUTOMATED-
                         TESTING.INFO
Автоматизация не заменит
     тестировщика
     Потому что:
     • Тестировщик умеет думать, а машина –
       выполнять

     • Тестировщик умеет тестировать, а машина
       – проверять

     • Тестировщик – это человек, а машина –
       это такая машина ;)
59                                      AUTOMATED-
                                        TESTING.INFO
Запускаемая спецификация не
     заменит всё-всё-всё

     • Детали в переписке с заказчиками
     • Информацию из баг-треккера,
     • Другая проектная документация
     • Диаграммы, скриншоты, разговоры в Скайпе
     • Другие инструменты тестирования
     • Все другие мануальные тесты

60                                        AUTOMATED-
                                          TESTING.INFO
Зато помогает
     • Обсудить ожидания от реализации новой
       функциональности с коллегами
     • Подкрепить требования примерами, тестами,
       которые тестируют сами требования
     • Создавать мануальные тест кейсы такими, чтобы их
       было легче автоматизировать
     • Автоматизировать регрессионное тестирование
     • Документировать новые знания и другую
       информацию о системе
61                                           AUTOMATED-
                                             TESTING.INFO
Но, не лечит всю автоматизацию




62                           AUTOMATED-
                             TESTING.INFO
Как вылечить?




63                   AUTOMATED-
                     TESTING.INFO
Спасибо за внимание!
     Я готов ответить на Ваши вопросы.

      Дмитрий Жарий

      http://blog.zhariy.com
      dzhariy@gmail.com




64                              AUTOMATED-
                                TESTING.INFO

More Related Content

Featured

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Запускаемая спецификация на SpecFlow с использованием WatiN для .NET

  • 1. Запускаемая спецификация на SpecFlow с использованием WatiN для .NET Дмитрий Жарий http://zhariy.com EPAM Systems AUTOMATED- TESTING.INFO
  • 2. МЫ ЕЩЕ НЕ АВТОМАТИЗИРУЕМ… 2 AUTOMATED- TESTING.INFO
  • 3. Ребят, нам нужно фичу реализовать, п’нятненько, чтобы пользователи при покупке 5-ти и более книг за один раз получали бесплатную доставку, п’нятненько. 3 AUTOMATED- TESTING.INFO
  • 5. // Хэ, просто, как два байта переслать if ( Заказ.Корзина["Книги"] > 5 ) { Заказ.БесплатнаяДоставка = true; } 5 AUTOMATED- TESTING.INFO
  • 6. Ага, круто: • Добавить в корзину 1 книгу и оформить заказ. Проверить что доставка – стандартная. • Добавить в корзину 4 книги и оформить заказ. Проверить что доставка – стандартная. • Добавить в корзину 5 книг и оформить заказ. Проверить что тип доставки – бесплатная. • Добавить в корзину 6 книг и оформить заказ. Проверить что тип доставки – бесплатная. О-о-о тест кейсы почти готовы! 6 AUTOMATED- TESTING.INFO
  • 7. И всё вместе! Feature: Бесплатная доставка книг - При заказе 5-ти и более книг, клиент получает бесплатную доставку Scenario Outline: Стоимость доставки при покупке книг Дано Клиент заказывает <количество книг> книг Когда клиент оформляет заказ Тогда доставка должна быть <тип доставки> Examples: количество книг тип доставки 1 Стандартная 4 Стандартная 5 Бесплатная 6 Бесплатная 7 AUTOMATED- TESTING.INFO
  • 8. // Хэ, просто, как два байта переслать if ( Заказ.Корзина["Книги"] > 5 ) { Заказ.БесплатнаяДоставка = true; } 8 AUTOMATED- TESTING.INFO
  • 9. // Хэ, просто, как два байта переслать if ( Заказ.Корзина["Книги"] >= 5 ) { Заказ.БесплатнаяДоставка = true; } 9 AUTOMATED- TESTING.INFO
  • 10. Ой, круто! Теперь все те кто заказывает Слонов будут читать больше книг, потому что доставка 5-ти книг и одного слона ведь тоже бесплатная? 10 AUTOMATED- TESTING.INFO
  • 11. Сло… каких еще слонов?! Нет, это касается только книг, п’нятненько? 11 AUTOMATED- TESTING.INFO
  • 12. И снова всё вместе! Feature: Бесплатная доставка книг - При заказе 5-ти и более книг, клиент получает бесплатную доставку - При заказе книг и других товаров – доставка всегда стандартная Scenario Outline: Стоимость доставки при покупке книг Дано Клиент заказывает <количество книг> книг И других товаров -- <количество др. тов.> Когда клиент оформляет заказ Тогда доставка должна быть <тип доставки> Examples: количество книг количество др. тов. тип доставки 1 0 Стандартная 4 0 Стандартная 5 0 Бесплатная 5 1 Стандартная 6 0 Бесплатная 12 AUTOMATED- TESTING.INFO
  • 13. Шо это было?! 13 AUTOMATED- TESTING.INFO
  • 14. Acceptance Test Driven Development Море Просто свинка Морская свинка 14 AUTOMATED- TESTING.INFO
  • 15. 15 AUTOMATED- TESTING.INFO
  • 16. Спецификация через пример 1. Обсудить новые фичи и добиться общего понимания 2.Спецификация с примерами 3.Запускаемая спецификация 4.Живая документация 16 AUTOMATED- TESTING.INFO
  • 17. 17 AUTOMATED- TESTING.INFO
  • 18. Обсудить и поставить правильные цели 18 AUTOMATED- TESTING.INFO
  • 19. Выбрать ключевые примеры и создать «Спецификацию с примерами» 19 AUTOMATED- TESTING.INFO
  • 20. Автоматизировать ключевые примеры и создать «Запускаемую спецификацию» 20 AUTOMATED- TESTING.INFO
  • 21. Со временем, запускаемая спецификация с примерами перерастет в Живую Документацию 21 AUTOMATED- TESTING.INFO
  • 24. Slide form David Evans' presentations 24 AUTOMATED- TESTING.INFO
  • 25. В SpecFlow! Feature: Бесплатная доставка книг - При заказе 5-ти и более книг, клиент получает бесплатную доставку - При заказе книг и других товаров – доставка всегда стандартная Scenario Outline: Стоимость доставки при покупке книг Given Клиент заказывает <количество книг> книг And других товаров -- <количество др. тов.> When клиент оформляет заказ Then доставка должна быть <тип доставки> Examples: | количество книг | количество др. тов. | тип доставки | | 1 | 0 | Стандартная | | 4 | 0 | Стандартная | | 5 | 0 | Бесплатная | | 5 | 1 | Стандартная | | 6 | 0 | Бесплатная | 25 AUTOMATED- TESTING.INFO
  • 26. Язык Gherkin GIVEN WHEN THEN 26 AUTOMATED- TESTING.INFO
  • 27. Gherkin – это: • специализированый язык для создания тест кейсов • расширяемый язык, имея готовую основу, вы можете «допиливать» его под ваши нужды • понятен программистам, тестировщикам и простым смертным :) • Имеет четкую структуру, что помогает различным инструментам парсить и преобразовывать *.feature файлы 27 AUTOMATED- TESTING.INFO
  • 28. Обобщенный вид сверху Feature: Имя высокоуровневого требования - Описание требований - Текст из User Story, Use Cases - Ссылки на полезные материалы - Что-то еще – да что угодно! Scenario: Приемочный критерий Given что-то уже готово When совершено действие Then ожидаем результат Scenario: Тестирует требования, описанные выше Scenario: Дополняет и разъясняет требования Scenario: Автоматизируется 28 AUTOMATED- TESTING.INFO
  • 29. Given When Then Given (Дано) Некоторый первоначальный контекст When (Когда) Происходит некоторое действие или событие Then (Тогда) Нужно убедиться, что у действия был ожидаемый результат 29 AUTOMATED- TESTING.INFO
  • 30. Задачка! У Маши было 5 яблок, 2 яблока отдала Саше. Сколько яблок осталось у Маши? 30 AUTOMATED- TESTING.INFO
  • 31. Мы не задачки тут решаем -- А тест-кейсы пишем: Дано у Маши было 5 яблок Когда Маша отдала 2 яблока Саше Тогда у Маши должно остаться 3 яблока 31 AUTOMATED- TESTING.INFO
  • 32. Немножко на английском Given Masha had 5 apples When Masha gives 2 apples to Sasha Then Masha should have 3 apples 32 AUTOMATED- TESTING.INFO
  • 33. С нашей стороны яблоки ушли... Я не знаю, почему вы яблоки не получили… Scenario: Apples sharing between users Given Masha had 5 apples And Sasha had 0 apples When Masha gives 2 apples to Sasha Then Masha should have 3 apples And Sasha should have 2 apples 33 AUTOMATED- TESTING.INFO
  • 34. Сложно с Given/When/Then? * Звездочка! Scenario: Apples sharing between users * Masha had 5 apples * Sasha had 0 apples * Masha gives 2 apples to Sasha * Masha should have 3 apples * Sasha should have 2 apples 34 AUTOMATED- TESTING.INFO
  • 35. Предпочитаете таблицы? Scenario Outline: Apples sharing between users Given Masha had <Masha initial balance> apples And Sasha had <Sasha initial balance> apples When Masha <Masha action> <Shared apples> apples to Sasha Then Masha should have <Masha expected balance> apples And Sasha should have <Sasha expected balance> apples Examples: Masha initial Sasha initial Masha action Shared apples Masha Sasha expected balance balance expected balance balance 5 0 gives 2 3 2 5 1 gives 2 3 3 35 AUTOMATED- TESTING.INFO
  • 36. Предпочитаете таблицы? Scenario: Apples sharing between users Given the users balance as follows: User Balance Masha 5 Sasha 0 When Masha gives 2 apples to Sasha Then the users balance should be as follows: User Balance Masha 3 Sasha 2 36 AUTOMATED- TESTING.INFO
  • 37. Цитаты – огромные куски текста Scenario: Apples sharing between users using command line Given the users balance as follows: User Balance Masha 5 Sasha 0 When Masha executes the following command line: """ user-account.exe /user: Masha /action:give /item:apple /touser:Sasha /quantity:2 """ Then the output should be the following: """ Give operation was performed successfully. Current balance is: Masha: 3 apples; 37 """ AUTOMATED- TESTING.INFO
  • 38. Background – не повторяйтесь! Background: Given the users balance as follows: User Balance Masha 5 Sasha 0 Scenario: Apples sharing between users using command line When Masha executes the following command line: { вырезано } Then the output should be the following: { вырезано } Scenario: Apples sharing between users When Masha gives 2 apples to Sasha Then Masha should have 3 apples And Sasha should have 2 apples 38 AUTOMATED- TESTING.INFO
  • 39. Feature: Мы -- на вершине Feature: Items sharing between users In order to share the items As an user I want the system to handle my balance changes Background: Given the users balance as follows: { вырезано } Scenario: Apples sharing between users using command line When Masha executes the following command line: { вырезано } Then the output should be the following: { вырезано } Scenario: Apples sharing between users When Masha gives 2 apples to Sasha Then Masha should have 3 apples And Sasha should have 2 apples 39 AUTOMATED- TESTING.INFO
  • 40. А еще можно писать любой текст Feature: Items sharing between users In order to share the items As an user I want the system to handle my balance changes TODO: Add more scenarios Requirements ~~~~~~~~~~~~ The users: - Should be allowed to give some items to the others - Should be allowed to take the items back - Should be allowed to share items via command line - Should be allowed to check balance 40 AUTOMATED- TESTING.INFO
  • 41. Вид сверху Feature: Items sharing between users In order to share the items As an user I want the system to handle my balance changes TODO: Add more scenarios Requirements ~~~~~~~~~~~~ The users: - Should be allowed to give some items to the others - Should be allowed to take the items back - Should be allowed to share items via command line - Should be allowed to check balance Background: Given the users balance as follows: { вырезано } Scenario: Apples sharing between users using command line When Masha executes the following command line: { вырезано } Then the output should be the following: { вырезано } Scenario: Apples sharing between users When Masha gives 2 apples to Sasha Then Masha should have 3 apples And Sasha should have 2 apples 41 AUTOMATED- TESTING.INFO
  • 42. И главное! Gherkin можно использовать только в Cucumber и SpecFlow! 42 AUTOMATED- TESTING.INFO
  • 43. Нееееет! Не только в Cucucmber! Robot Framework Fitnesse http://goo.gl/aJTnl http://goo.gl/8XWQe 43 AUTOMATED- TESTING.INFO
  • 44. И не только SpecFlow Concordion http://www.concordion.org/Technique.html 44 AUTOMATED- TESTING.INFO
  • 46. Лес? Scenario: Система позволяет создать пользователя с уникальным именем Дано Пользователь с именем «Скотт Тайгер» не существует в системе Когда я создаю пользователя с именем «Скотт Тайгер» Тогда регистрация должна быть успешной 46 AUTOMATED- TESTING.INFO
  • 47. Регистрация должна быть успешной? • Форма регистрации сохранилась без ошибок • Пользователь получил письмо со ссылкой для подтверждения регистрации • Пользователь перешел по ссылке и получил сообщение об успешном подтверждении регистрации • Пользователь открыл форму логина и ввел логин и пароль • Пользователь вошел в систему под своим аккаунтом 47 AUTOMATED- TESTING.INFO
  • 48. Или дерево? Scenario: Форма выдает ошибку если поля пароля и подтверждения пароля не совпадают Дано я на форме регистрации Когда я заполняю следующие поля: Поле Значение Имя Скотт Фамилия Тайгер Логин scott Пароль tiger Подтвердите пароль erroror И нажимаю на кнопку «Зарегистрировать» Тогда я должен увидеть ошибку «пароли не совпадают» 48 AUTOMATED- TESTING.INFO
  • 49. И еще Scenario: При включении света – свет включается Дано свет выключен Когда я включаю свет Тогда свет должен быть включен (Спасибо, Кэп!) 49 AUTOMATED- TESTING.INFO
  • 50. А кто это сделал? (включил свет) Scenario: Выключатель включает свет Дано свет выключен Когда я нажимаю на выключатель Тогда свет должен быть включен Scenario: Выключатель выключает свет Дано свет включен Когда я нажимаю на выключатель Тогда свет должен быть выключен 50 AUTOMATED- TESTING.INFO
  • 51. Короче! Scenario Outline: Выключатель контролирует состояние света Дано свет <в первоначальном состоянии> Когда я нажимаю на выключатель Тогда свет должен быть <в ожидаемом состоянии> Examples: в первоначальном в ожидаемом состоянии состоянии включен выключен выключен включен 51 AUTOMATED- TESTING.INFO
  • 52. И приглашенные звезды КРИТИКА 52 AUTOMATED- TESTING.INFO
  • 53. Сказочная страна По мотивам: Тестирование в стиле TSA 53 AUTOMATED- TESTING.INFO
  • 54. В которой • Бизнес-аналитики, не умеющие программировать, самостоятельно пишут сценарии на Given/When/Then • Бизнес-аналитики предпочитают использовать Notepad++ или Visual Studio для редактирования .feature файлов, вместо убогого MS Word • Программисты любят составлять, обсуждать и дописывать требования и сразу же пишут автоматизированные сценарии • Все участники команды поддерживают документацию в актуальном состоянии 54 AUTOMATED- TESTING.INFO
  • 55. А нужен ли паттерн Given – When - Then? «программирование в табличках» — адская пытка, паттерн given-when-then не даёт возможности сделать хоть сколько-нибудь сложные автоматизированные тесты, а при ручном тестировании он и вовсе не нужен. Почему я не люблю огурцы и фитнес — плюсы и минусы BDD и ATDD. Доклад Алексея Баранцева на AgileDays-2011 55 AUTOMATED- TESTING.INFO
  • 56. Дэн Норт: Человек, придумавший Given When Then +Scenario 1: Account is in credit+ Given the account is in credit And the card is valid And the dispenser contains cash When the customer requests cash Then ensure the account is debited And ensure cash is dispensed And ensure the card is returned Dan North: Введение в BDD (2006 г.) 56 AUTOMATED- TESTING.INFO
  • 57. Джеймс Бах: Всё ли можно автоматизировать? +Scenario 1: Account is in credit+ Given the account is in credit And the card is valid And the dispenser contains cash When the customer requests cash Then check that the account is debited And check that cash is dispensed And check that the card is returned And check that nothing happens that shouldn’t happen and everything else happens that should happen for all variations of this scenario and all possible states of the ATM and all possible states of the customer’s account and all possible states of the rest of the database and all possible states of the system as a whole, and anything happening in the cloud that should not matter but might matter. ::> http://www.satisfice.com/blog/archives/638 57 AUTOMATED- TESTING.INFO
  • 58. Пока что… СЕРЕБРЯНОЙ ПУЛИ ДЕЙСТВИТЕЛЬНО НЕТ 58 AUTOMATED- TESTING.INFO
  • 59. Автоматизация не заменит тестировщика Потому что: • Тестировщик умеет думать, а машина – выполнять • Тестировщик умеет тестировать, а машина – проверять • Тестировщик – это человек, а машина – это такая машина ;) 59 AUTOMATED- TESTING.INFO
  • 60. Запускаемая спецификация не заменит всё-всё-всё • Детали в переписке с заказчиками • Информацию из баг-треккера, • Другая проектная документация • Диаграммы, скриншоты, разговоры в Скайпе • Другие инструменты тестирования • Все другие мануальные тесты 60 AUTOMATED- TESTING.INFO
  • 61. Зато помогает • Обсудить ожидания от реализации новой функциональности с коллегами • Подкрепить требования примерами, тестами, которые тестируют сами требования • Создавать мануальные тест кейсы такими, чтобы их было легче автоматизировать • Автоматизировать регрессионное тестирование • Документировать новые знания и другую информацию о системе 61 AUTOMATED- TESTING.INFO
  • 62. Но, не лечит всю автоматизацию 62 AUTOMATED- TESTING.INFO
  • 63. Как вылечить? 63 AUTOMATED- TESTING.INFO
  • 64. Спасибо за внимание! Я готов ответить на Ваши вопросы. Дмитрий Жарий http://blog.zhariy.com dzhariy@gmail.com 64 AUTOMATED- TESTING.INFO