SlideShare a Scribd company logo
1 of 54
Фреймворк для
 авто-тестирования
веб-сервисов своими
       силами

                 Воробьев Андрей
          Test Automation Engineer
                     EPAM, Минск
О себе
Воробьев Андрей

  Test Automation Engineer EPAM Systems

 Автор и ведущий тренингов для начинающих по
 авто-тестированию веб-сервисов

  andrei_varabyeu@epam.com
Профессиональный
     жаргон
Авто-тестирование
         веб-сервиса
            Запрос

            Ответ



                         Да
              Ответ             Тест
БАГ
           правильный?        пройден
Авто-тестирование
   веб-сервиса

      Покупать продукт

      или

      разрабатывать самим?
Как решить?
  Для того, чтобы принять
  верное решение, достаточно
  ответить только на один
  вопрос:

  “Насколько тривиальные задачи
  требуется решить”
Сложно или просто?
Сложно или просто?
Просто:                           Сложно:

                                  • Сложные входные данные
• Простые входные
                                    (части запросов,
  данные(числа, строки)
                                    которые нужно
                                    группировать друг с
• Примитивные типы
                                    другом)
  валидаций (=, >, <, contains)
                                  • Сложная валидация (по
• Простые выборки в базу.
                                    шаблону, по данным
  Малый объем выборок
                                    которые тоже нужно
                                    откуда-нибудь получить
                                    )

                                  • Поддержка транзакций
                                    БД, кэширования
Сложно или просто?
Сложно или просто?
Сложно или просто?

<person name=„Андрей Воробьев‟>

      <relative>Лина Воробьева</relative>

      <relative>Сергей Воробьев</relative>

</person>
Сложно или просто?

<person name=„Андрей Воробьев‟>

      <relative name=“Лина Воробьева“>
               <relative>Валентина Криводубская</relative>
               <relative>Дмитрий Криводубский</relative>
      </relative >

      <relative name=“Сергей Воробьев“>
               <relative>Ядвига Воробьева</relative>
               <relative>Николай Воробьев</relative>
      </relative >

</person>
Сложно или просто?
 <person name=„Андрей Воробьев‟>
          <relative name=“Лина Воробьева“>
                    <relative name=“Валентина Криводубская“>
                              <relative>Анна Криводубская</relative>
                              <relative>Петр Криводубский</relative>
                    </relative>
                    <relative name=“Владимир Криводубский“>
N == ?                        <relative>…</relative>
                              <relative>…</relative>
                    </relative>
          </relative>
          <relative name=“Сергей Воробьев“>
                    <relative name=“Ядвига Воробьева“>
                              <relative>…</relative>
                              <relative>…</relative>
                    </relative>
                    <relative name=“Николай Воробьева“>
                              <relative>…</relative>
                              <relative>…</relative>
                    </relative>
          </relative >
 </person>
Просто

         • SOAP, Rest, HTTP, JMS, DB

         • XPath Assertions

         • XQuery Assertions

         • Logging

         • Scripting Support (Groovy,
           JavaScript)

         • WS Security

         • …. and more


                               14
Сложно

• Java/C#/…

• WS implementation

• *Unit testing Frameworks




                             15
«Сделай сам»

 Фреймворк для тестирования
 Веб Сервиса – это всего лишь:



• Клиент веб-сервиса (для отправки запросов и получения
  ответов от сервера)

• Реализация работы с БД, другими источниками
  входных/выходных данных

• Набор валидаций, которые нужны ВАМ (XPath, XQuery, DB,
  равно, содержит, большеменьше, соответствует
  заданному формату)


                                             16
Task list 

  подготовить входные данные
  (получить из файлов, БД, etc)

    сформировать и отправить
    запрос/получить ответ


    выполнить валидацию ответа


  … и так много раз в течение одного
  теста




                                       17
Подготовка запроса


<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
       <familyTree>
               <name>Андрей Воробьев</name>
       </ familyTree >
  </soapenv:Body>
</soapenv:Envelope>




                                             18
Подготовка запроса

soapUI                         Java-based framework
• Java Property files          • Java Property files

• Data Source (excel)          • DB (+ORM, cashing,
                                 transactions)
• DB via „Property Transfer‟
                               •   ЛЮБЫЕ другие источники
•   использование groovy           данных (Windows Active
                                   Directory, http, ftp, etc)




                                                 19
Отправка запроса/Получение ответа

soapUI                     Java-based framework
• ВСЕ уже сделано за вас   • JAX-WS

                           • Spring-WS

                           • …

                           •   ЛЮБЫЕ другие источники
                               имплементации, которые
                               удобно использовать ВАМ




                                           20
Валидация ответа


<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
       <person name=„Андрей Воробьев‟>
              <relative>Лина Воробьева</relative>
              <relative>Сергей Воробьев</relative>
       </person>
  </soapenv:Body>
</soapenv:Envelope>




                                             21
soapUI – это тоже Java код

                  htmlUnit         xmlUnit             jUnit
  easyMock
    Фреймворк      Расширение        Расширение         Библиотека
   для создания           Junit,           JUnit,               для
         Mock-    предназначен     предоставляю         модульного
      объектов          ное для     щее большой       тестирования
                      эмуляции     набор средств      на языке Java.
                      действий               для          Позволяет
                      браузера        валидации      создавать тест
                                   XML файлов, в     кейсы, группы
                                            т.ч. с      тест кейсов,
                                       помощью       предоставляет
                                          XPath.           базовые
                                                       средства для
                                                        валидации.




                                                          22
Архитектура
или то, над чем стоит поломать голову…




                                 23
Архитектура. Основные принципы


Модульность




   Каждый из компонентов не зависит от другого




                                        24
Архитектура. Основные принципы


Расширяемость


  Легко добавлять:

     новый функционал

     новые типы валидаций




                            25
Архитектура. Основные принципы


Читаемость

 Достаточно посмотреть

 на исходный код теста,

 чтобы понять что он делает




                              26
Архитектура. Компоненты
cmp Component Model



                                      Framew ork




                                   TemplateProccesor                WebServ er




            TestLayer
                           «use»
                                    Serv iceInv oker                 WebServ ice
                                                       «use»
                           «use»
              Test


                           «use»
                                       Validator




                                                               27
Архитектура. Диаграмма
                 последовательности
   sd Use Case1


            Test              TemplateProcessor          ServiceInvoker                           Validator



                                                                                        WS



                   PlainData()
                                      processMessage()


                   :Message


                                   invoke()


                                                                        sendRequest()


                                                                            :Response


                                    :Result


                                                         validate(Result)




                                                                                             28
Компоненты. Тест

                    TestNG

  • базовые типы валидации

  • группировка в сьюты

  • отчеты о прохождении тестов

  • возможность выполнять тесты в несколько
    потоков

  • зависимости между тестами
                                  29
Компоненты
cmp Component Model



                                   Framew ork




                                TemplateProccesor                WebServ er




            TestLayer
                        «use»
                                 Serv iceInv oker                 WebServ ice
                                                    «use»
                        «use»
              Test


                        «use»
                                    Validator




                                                            30
Компоненты. Процессор шаблонов


 Данные
                    Готовый
                     запрос
 Шаблон

                        31
Компоненты. Процессор шаблонов
    <request>

       <amount>${amountValue}</amount>

       <currency>${currencyValue}</currency>

    </request>




 Шаблон

                                         32
Компоненты. Процессор шаблонов


 Данные

        amountValue = 100

        currencyValue = USD


                        33
Компоненты. Процессор шаблонов


<request>

   <amount>100</amount>       Готовый
   <currency>USD</currency>
                               запрос
</request>




                                34
Компоненты
cmp Component Model



                                   Framew ork




                                TemplateProccesor                WebServ er




            TestLayer
                        «use»
                                 Serv iceInv oker                 WebServ ice
                                                    «use»
                        «use»
              Test


                        «use»
                                    Validator




                                                            35
Компоненты. XML - модель
   Мы используем…
            • XML в чистом виде
            • любые (в т.ч. невалидные) данные

  DOM       • парсинг, Xpath
            • слабая привязка к схеме




            • нет парсинга
            • нет необходимости писать xPath

  JAXB        выражения
            • невозможно вставить невалидные данные
            • жесткая привязка к схеме



                                         36
Компоненты. SOAP-клиент


                          Клиент
                                            НЕ
           Привязанный                 Привязанный
                 К                           К
               схеме                       схеме


•   исходный код может быть       •   исходный код нужно писать
    сгенерирован автоматически по     самому
    WSDL-схеме

                                                   37
Компоненты
cmp Component Model



                                   Framew ork




                                TemplateProccesor                WebServ er




            TestLayer
                        «use»
                                 Serv iceInv oker                 WebServ ice
                                                    «use»
                        «use»
              Test


                        «use»
                                    Validator




                                                            38
Компоненты. Валидация


           Ответ
       База данных
  Сторонние сервисы

                        39
Компоненты. Валидация. Ответ

            • JUnit /TestNG + XPath

  DOM       • XmlUnit + XPath
            • XMLUnit + шаблон ответа




  JAXB      • JUnit/TestNG
            • JXPath




                                   40
Почему это так важно

Новые тесты

создаются

быстро




                           41
Почему это так важно

Старые тесты

поддерживать

просто
               2x2
                           42
soapUI Pro умеет…

• измерять степень покрытия тестами

• тестирование безопасности (SQL-
  инъекции, XPath-инъекции)

• производить нагрузочное тестирование

• интегрироваться в сборку сервиса и CI-
  цикл

• создавать Mock-сервисы




                                           43
soapUI vs. разработка



•   не нужно никаких подготовительных работ

•   новые тесты создаются медленно

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

•   квалификация авто-тестировщика ниже среднего

•   базовый набор функционала*


* расширяется только groovy-скриптингом


                                                   44
soapUI vs. разработка



•   перед написанием тестов необходимо разработать механизмы
    отправки, получения и валидации

•   новые тесты создаются быстро

•   старые тесты поддерживать просто

•   квалификация авто-тестировщика выше среднего




                                                   45
soapUI vs. разработка




                        46
soapUI vs. разработка

  • Любые протоколы


  • Любые источники входных и
    выходных данных (Active Directory,
    POP3, SMTP)


  • Простота валидации сложных типов
    данных (даты, UUID)



                               47
Наш опыт
    На разработку

    Фреймворка и первого

    теста путем

    проб и ошибок

    ушло около

    2 человеко-
    месяцев
                 48
Наш опыт
   Сейчас,

   имея опыт,

   Это можно

   сделать за

   2 человеко-
   недели


             49
Ваши вопросы!




                50
Спасибо за внимание!



                 Воробьев Андрей
          Test Automation Engineer
                     EPAM, Минск
Валидация ответа

soapUI                   Java-based framework

•   Fault/Success        •   JUnit
•   Contains             •   TestNG
•   XPath                •   XmlUnit
•   Xquery               •   HtmlUnit
•   Schema Compilance    •   DbUnit
•   Timeout              •   …*Unit
•   WS-Security Status
•   Groovy
•   …




                                        52
Компоненты. Процессор шаблонов



Feature                      FreeMarker   Velocity
Циклы                        Да           Да
Условия                      Да           Да
Макросы                      Да           Да
Импорт других шаблонов       Да           Да
Процессинг импортированных
                             Да           Да
шаблонов
Выполнение Java-кода         Нет          Частично




                                               53
Компоненты. XML – модель. JAXB




                        54

More Related Content

What's hot

Настраиваемое тестирование производительности
Настраиваемое тестирование производительностиНастраиваемое тестирование производительности
Настраиваемое тестирование производительностиSQALab
 
Система мониторинга Zabbix в процессах разработки и тестирования | Алексей Буров
Система мониторинга Zabbix в процессах разработки и тестирования | Алексей БуровСистема мониторинга Zabbix в процессах разработки и тестирования | Алексей Буров
Система мониторинга Zabbix в процессах разработки и тестирования | Алексей БуровPositive Hack Days
 
3 zalomlenkov selenium
3 zalomlenkov   selenium3 zalomlenkov   selenium
3 zalomlenkov seleniumqasib
 
Инструментарий для создания дистрибутивов продуктов | Владимир Селин
Инструментарий для создания дистрибутивов продуктов | Владимир СелинИнструментарий для создания дистрибутивов продуктов | Владимир Селин
Инструментарий для создания дистрибутивов продуктов | Владимир СелинPositive Hack Days
 
Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...
Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...
Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...Positive Hack Days
 
Mikhail Chub: Web Services Testing
Mikhail Chub: Web Services TestingMikhail Chub: Web Services Testing
Mikhail Chub: Web Services TestingAndriy Krayniy
 
Использование игровой модели для выполнения сложных сценарных тестов
Использование игровой модели для выполнения сложных сценарных тестовИспользование игровой модели для выполнения сложных сценарных тестов
Использование игровой модели для выполнения сложных сценарных тестовSQALab
 
От простого к сложному: автоматизируем ручные тест-планы | Сергей Тимченко
От простого к сложному: автоматизируем ручные тест-планы | Сергей ТимченкоОт простого к сложному: автоматизируем ручные тест-планы | Сергей Тимченко
От простого к сложному: автоматизируем ручные тест-планы | Сергей ТимченкоPositive Hack Days
 
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр КовалевПакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр КовалевPositive Hack Days
 
Azure DevOps сборка, развертывание и тестирование
Azure DevOps сборка, развертывание и тестированиеAzure DevOps сборка, развертывание и тестирование
Azure DevOps сборка, развертывание и тестированиеАлександр Шамрай
 
Azure DevOps Адаптация под собственные потребности
Azure DevOps Адаптация под собственные потребностиAzure DevOps Адаптация под собственные потребности
Azure DevOps Адаптация под собственные потребностиАлександр Шамрай
 
Azure DevOps Управление проектом и версионный контроль
Azure DevOps Управление проектом и версионный контрольAzure DevOps Управление проектом и версионный контроль
Azure DevOps Управление проектом и версионный контрольАлександр Шамрай
 
Разработка Enterprise-приложения на основе Spring Framework
Разработка Enterprise-приложения на основе Spring FrameworkРазработка Enterprise-приложения на основе Spring Framework
Разработка Enterprise-приложения на основе Spring FrameworkCUSTIS
 
vSphereTools - инструмент для автоматизации работы с vSphere | Тимур Гильмуллин
vSphereTools - инструмент для автоматизации работы с vSphere | Тимур ГильмуллинvSphereTools - инструмент для автоматизации работы с vSphere | Тимур Гильмуллин
vSphereTools - инструмент для автоматизации работы с vSphere | Тимур ГильмуллинPositive Hack Days
 
Konstantin slisenko - Spring Framework
Konstantin slisenko - Spring FrameworkKonstantin slisenko - Spring Framework
Konstantin slisenko - Spring Frameworkbeloslab
 
Сокращение времени регрессионного тестирования
Сокращение времени регрессионного тестированияСокращение времени регрессионного тестирования
Сокращение времени регрессионного тестированияSQALab
 
Simonova sql server-enginetesting
Simonova sql server-enginetestingSimonova sql server-enginetesting
Simonova sql server-enginetestingLiloSEA
 
QA Fest 2014. Александра Волкова. Тестирование Enterprise Service Bus что где...
QA Fest 2014. Александра Волкова. Тестирование Enterprise Service Bus что где...QA Fest 2014. Александра Волкова. Тестирование Enterprise Service Bus что где...
QA Fest 2014. Александра Волкова. Тестирование Enterprise Service Bus что где...QAFest
 
Оптимизация производительности и нагрузочное тестирование в среде Visual Stud...
Оптимизация производительности и нагрузочное тестирование в среде Visual Stud...Оптимизация производительности и нагрузочное тестирование в среде Visual Stud...
Оптимизация производительности и нагрузочное тестирование в среде Visual Stud...Dmitry Andreev
 

What's hot (20)

ASP.NET MVC: new era?
ASP.NET MVC: new era?ASP.NET MVC: new era?
ASP.NET MVC: new era?
 
Настраиваемое тестирование производительности
Настраиваемое тестирование производительностиНастраиваемое тестирование производительности
Настраиваемое тестирование производительности
 
Система мониторинга Zabbix в процессах разработки и тестирования | Алексей Буров
Система мониторинга Zabbix в процессах разработки и тестирования | Алексей БуровСистема мониторинга Zabbix в процессах разработки и тестирования | Алексей Буров
Система мониторинга Zabbix в процессах разработки и тестирования | Алексей Буров
 
3 zalomlenkov selenium
3 zalomlenkov   selenium3 zalomlenkov   selenium
3 zalomlenkov selenium
 
Инструментарий для создания дистрибутивов продуктов | Владимир Селин
Инструментарий для создания дистрибутивов продуктов | Владимир СелинИнструментарий для создания дистрибутивов продуктов | Владимир Селин
Инструментарий для создания дистрибутивов продуктов | Владимир Селин
 
Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...
Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...
Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...
 
Mikhail Chub: Web Services Testing
Mikhail Chub: Web Services TestingMikhail Chub: Web Services Testing
Mikhail Chub: Web Services Testing
 
Использование игровой модели для выполнения сложных сценарных тестов
Использование игровой модели для выполнения сложных сценарных тестовИспользование игровой модели для выполнения сложных сценарных тестов
Использование игровой модели для выполнения сложных сценарных тестов
 
От простого к сложному: автоматизируем ручные тест-планы | Сергей Тимченко
От простого к сложному: автоматизируем ручные тест-планы | Сергей ТимченкоОт простого к сложному: автоматизируем ручные тест-планы | Сергей Тимченко
От простого к сложному: автоматизируем ручные тест-планы | Сергей Тимченко
 
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр КовалевПакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
 
Azure DevOps сборка, развертывание и тестирование
Azure DevOps сборка, развертывание и тестированиеAzure DevOps сборка, развертывание и тестирование
Azure DevOps сборка, развертывание и тестирование
 
Azure DevOps Адаптация под собственные потребности
Azure DevOps Адаптация под собственные потребностиAzure DevOps Адаптация под собственные потребности
Azure DevOps Адаптация под собственные потребности
 
Azure DevOps Управление проектом и версионный контроль
Azure DevOps Управление проектом и версионный контрольAzure DevOps Управление проектом и версионный контроль
Azure DevOps Управление проектом и версионный контроль
 
Разработка Enterprise-приложения на основе Spring Framework
Разработка Enterprise-приложения на основе Spring FrameworkРазработка Enterprise-приложения на основе Spring Framework
Разработка Enterprise-приложения на основе Spring Framework
 
vSphereTools - инструмент для автоматизации работы с vSphere | Тимур Гильмуллин
vSphereTools - инструмент для автоматизации работы с vSphere | Тимур ГильмуллинvSphereTools - инструмент для автоматизации работы с vSphere | Тимур Гильмуллин
vSphereTools - инструмент для автоматизации работы с vSphere | Тимур Гильмуллин
 
Konstantin slisenko - Spring Framework
Konstantin slisenko - Spring FrameworkKonstantin slisenko - Spring Framework
Konstantin slisenko - Spring Framework
 
Сокращение времени регрессионного тестирования
Сокращение времени регрессионного тестированияСокращение времени регрессионного тестирования
Сокращение времени регрессионного тестирования
 
Simonova sql server-enginetesting
Simonova sql server-enginetestingSimonova sql server-enginetesting
Simonova sql server-enginetesting
 
QA Fest 2014. Александра Волкова. Тестирование Enterprise Service Bus что где...
QA Fest 2014. Александра Волкова. Тестирование Enterprise Service Bus что где...QA Fest 2014. Александра Волкова. Тестирование Enterprise Service Bus что где...
QA Fest 2014. Александра Волкова. Тестирование Enterprise Service Bus что где...
 
Оптимизация производительности и нагрузочное тестирование в среде Visual Stud...
Оптимизация производительности и нагрузочное тестирование в среде Visual Stud...Оптимизация производительности и нагрузочное тестирование в среде Visual Stud...
Оптимизация производительности и нагрузочное тестирование в среде Visual Stud...
 

Viewers also liked

Qa Automation - отбрасываем лишнее и тестируем суть
Qa Automation - отбрасываем лишнее и тестируем сутьQa Automation - отбрасываем лишнее и тестируем суть
Qa Automation - отбрасываем лишнее и тестируем сутьIgor Khrol
 
Практика тестирования web сервисов
Практика тестирования web сервисовПрактика тестирования web сервисов
Практика тестирования web сервисовSQALab
 
Типичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriverТипичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriverIgor Khrol
 
Инструменты и лайфхаки тестирования REST API
Инструменты и лайфхаки тестирования REST APIИнструменты и лайфхаки тестирования REST API
Инструменты и лайфхаки тестирования REST APISQALab
 
Тестирование крупного проекта командой из одного тестировщика
Тестирование крупного проекта командой из одного тестировщикаТестирование крупного проекта командой из одного тестировщика
Тестирование крупного проекта командой из одного тестировщикаZestranec
 
Web Chat Software Light Chat
Web Chat Software Light ChatWeb Chat Software Light Chat
Web Chat Software Light ChatБМС Софт
 
В поисках магической кнопки или как приручить SOAP UI
В поисках магической кнопки или как приручить SOAP UIВ поисках магической кнопки или как приручить SOAP UI
В поисках магической кнопки или как приручить SOAP UIautomated-testing.info
 
Реализация REST и SOAP сервисов с помощью WCF
Реализация REST и SOAP сервисов с помощью WCFРеализация REST и SOAP сервисов с помощью WCF
Реализация REST и SOAP сервисов с помощью WCFPavel Tsukanov
 
Cовременный контроль качества: давай сделаем это по-быстрому...
Cовременный контроль качества: давай сделаем это по-быстрому...Cовременный контроль качества: давай сделаем это по-быстрому...
Cовременный контроль качества: давай сделаем это по-быстрому...Igor Khrol
 
Web driver история одной миграции
Web driver   история одной миграцииWeb driver   история одной миграции
Web driver история одной миграцииIgor Khrol
 
автоматизация Flex приложений с помощью selenium rc
автоматизация Flex приложений с помощью selenium rcавтоматизация Flex приложений с помощью selenium rc
автоматизация Flex приложений с помощью selenium rcIgor Khrol
 
Повышаем надёжность тестов через JavaScript
Повышаем надёжность тестов через JavaScriptПовышаем надёжность тестов через JavaScript
Повышаем надёжность тестов через JavaScriptIgor Khrol
 
Автоматизация функционального тестирования REST API: секреты, тонкости и подв...
Автоматизация функционального тестирования REST API: секреты, тонкости и подв...Автоматизация функционального тестирования REST API: секреты, тонкости и подв...
Автоматизация функционального тестирования REST API: секреты, тонкости и подв...SQALab
 
Grail - CodeFest'2015
Grail - CodeFest'2015Grail - CodeFest'2015
Grail - CodeFest'2015Igor Khrol
 
Разработка тест кейсов по методике pair wise
Разработка тест кейсов по методике pair wiseРазработка тест кейсов по методике pair wise
Разработка тест кейсов по методике pair wiseSQALab
 
Test Automation Wargaming SQA Days 17
Test Automation Wargaming SQA Days 17Test Automation Wargaming SQA Days 17
Test Automation Wargaming SQA Days 17Igor Khrol
 
Webium: Page Objects in Python
Webium: Page Objects in PythonWebium: Page Objects in Python
Webium: Page Objects in PythonIgor Khrol
 
Test automation with Cucumber-JVM
Test automation with Cucumber-JVMTest automation with Cucumber-JVM
Test automation with Cucumber-JVMAlan Parkinson
 
An introduction to property based testing
An introduction to property based testingAn introduction to property based testing
An introduction to property based testingScott Wlaschin
 
Testing web services
Testing web servicesTesting web services
Testing web servicesTaras Lytvyn
 

Viewers also liked (20)

Qa Automation - отбрасываем лишнее и тестируем суть
Qa Automation - отбрасываем лишнее и тестируем сутьQa Automation - отбрасываем лишнее и тестируем суть
Qa Automation - отбрасываем лишнее и тестируем суть
 
Практика тестирования web сервисов
Практика тестирования web сервисовПрактика тестирования web сервисов
Практика тестирования web сервисов
 
Типичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriverТипичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriver
 
Инструменты и лайфхаки тестирования REST API
Инструменты и лайфхаки тестирования REST APIИнструменты и лайфхаки тестирования REST API
Инструменты и лайфхаки тестирования REST API
 
Тестирование крупного проекта командой из одного тестировщика
Тестирование крупного проекта командой из одного тестировщикаТестирование крупного проекта командой из одного тестировщика
Тестирование крупного проекта командой из одного тестировщика
 
Web Chat Software Light Chat
Web Chat Software Light ChatWeb Chat Software Light Chat
Web Chat Software Light Chat
 
В поисках магической кнопки или как приручить SOAP UI
В поисках магической кнопки или как приручить SOAP UIВ поисках магической кнопки или как приручить SOAP UI
В поисках магической кнопки или как приручить SOAP UI
 
Реализация REST и SOAP сервисов с помощью WCF
Реализация REST и SOAP сервисов с помощью WCFРеализация REST и SOAP сервисов с помощью WCF
Реализация REST и SOAP сервисов с помощью WCF
 
Cовременный контроль качества: давай сделаем это по-быстрому...
Cовременный контроль качества: давай сделаем это по-быстрому...Cовременный контроль качества: давай сделаем это по-быстрому...
Cовременный контроль качества: давай сделаем это по-быстрому...
 
Web driver история одной миграции
Web driver   история одной миграцииWeb driver   история одной миграции
Web driver история одной миграции
 
автоматизация Flex приложений с помощью selenium rc
автоматизация Flex приложений с помощью selenium rcавтоматизация Flex приложений с помощью selenium rc
автоматизация Flex приложений с помощью selenium rc
 
Повышаем надёжность тестов через JavaScript
Повышаем надёжность тестов через JavaScriptПовышаем надёжность тестов через JavaScript
Повышаем надёжность тестов через JavaScript
 
Автоматизация функционального тестирования REST API: секреты, тонкости и подв...
Автоматизация функционального тестирования REST API: секреты, тонкости и подв...Автоматизация функционального тестирования REST API: секреты, тонкости и подв...
Автоматизация функционального тестирования REST API: секреты, тонкости и подв...
 
Grail - CodeFest'2015
Grail - CodeFest'2015Grail - CodeFest'2015
Grail - CodeFest'2015
 
Разработка тест кейсов по методике pair wise
Разработка тест кейсов по методике pair wiseРазработка тест кейсов по методике pair wise
Разработка тест кейсов по методике pair wise
 
Test Automation Wargaming SQA Days 17
Test Automation Wargaming SQA Days 17Test Automation Wargaming SQA Days 17
Test Automation Wargaming SQA Days 17
 
Webium: Page Objects in Python
Webium: Page Objects in PythonWebium: Page Objects in Python
Webium: Page Objects in Python
 
Test automation with Cucumber-JVM
Test automation with Cucumber-JVMTest automation with Cucumber-JVM
Test automation with Cucumber-JVM
 
An introduction to property based testing
An introduction to property based testingAn introduction to property based testing
An introduction to property based testing
 
Testing web services
Testing web servicesTesting web services
Testing web services
 

Similar to Фреймворк автотестирования веб-сервисов своими силами

Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...Andrey Rebrov
 
Построение собственного JS SDK — зачем и как?
Построение собственного JS SDK — зачем и как?Построение собственного JS SDK — зачем и как?
Построение собственного JS SDK — зачем и как?buranLcme
 
Simonova CSEDays
Simonova CSEDaysSimonova CSEDays
Simonova CSEDaysLiloSEA
 
Katerina Simonova CSEDays
Katerina Simonova CSEDaysKaterina Simonova CSEDays
Katerina Simonova CSEDaysLiloSEA
 
Katerina Simonova CSEDays
Katerina Simonova CSEDaysKaterina Simonova CSEDays
Katerina Simonova CSEDaysLiloSEA
 
Миграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows AzureМиграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows AzureNatalia Efimtseva
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012InTRUEdeR
 
webpack: 7 бед - один ответ
webpack: 7 бед - один ответwebpack: 7 бед - один ответ
webpack: 7 бед - один ответDenis Izmaylov
 
Automating Canvas: difficult but possible
Automating Canvas: difficult but possibleAutomating Canvas: difficult but possible
Automating Canvas: difficult but possibleCOMAQA.BY
 
Scala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application DevelopmentScala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application DevelopmentAnton Kirillov
 
Арсений Заречнев и Федор Шумов - Одностраничные приложения
Арсений Заречнев и Федор Шумов - Одностраничные приложенияАрсений Заречнев и Федор Шумов - Одностраничные приложения
Арсений Заречнев и Федор Шумов - Одностраничные приложенияArseny Zarechnev
 
Высокопроизводительные приложения на базе Windows Azure. Пример реального про...
Высокопроизводительные приложения на базе Windows Azure. Пример реального про...Высокопроизводительные приложения на базе Windows Azure. Пример реального про...
Высокопроизводительные приложения на базе Windows Azure. Пример реального про...UNETA
 
Высокопроизводительные приложения на базе Windows Azure
Высокопроизводительные приложения на базе Windows AzureВысокопроизводительные приложения на базе Windows Azure
Высокопроизводительные приложения на базе Windows AzureAlexander Feschenko
 
Михаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionМихаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionAlbina Tiupa
 
Как и зачем мы тестируем UI
Как и зачем мы тестируем UIКак и зачем мы тестируем UI
Как и зачем мы тестируем UIVyacheslav Lyalkin
 
So Your WAF Needs a Parser
So Your WAF Needs a ParserSo Your WAF Needs a Parser
So Your WAF Needs a Parseryalegko
 
Новости Global summit 2015
Новости Global summit 2015Новости Global summit 2015
Новости Global summit 2015Timur Safin
 

Similar to Фреймворк автотестирования веб-сервисов своими силами (20)

Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
 
Построение собственного JS SDK — зачем и как?
Построение собственного JS SDK — зачем и как?Построение собственного JS SDK — зачем и как?
Построение собственного JS SDK — зачем и как?
 
Сервлеты
СервлетыСервлеты
Сервлеты
 
Simonova CSEDays
Simonova CSEDaysSimonova CSEDays
Simonova CSEDays
 
Katerina Simonova CSEDays
Katerina Simonova CSEDaysKaterina Simonova CSEDays
Katerina Simonova CSEDays
 
Katerina Simonova CSEDays
Katerina Simonova CSEDaysKaterina Simonova CSEDays
Katerina Simonova CSEDays
 
Миграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows AzureМиграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows Azure
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012
 
webpack: 7 бед - один ответ
webpack: 7 бед - один ответwebpack: 7 бед - один ответ
webpack: 7 бед - один ответ
 
Behavior Driven Development
Behavior Driven DevelopmentBehavior Driven Development
Behavior Driven Development
 
Automating Canvas: difficult but possible
Automating Canvas: difficult but possibleAutomating Canvas: difficult but possible
Automating Canvas: difficult but possible
 
Telerik Web aii
Telerik Web aiiTelerik Web aii
Telerik Web aii
 
Scala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application DevelopmentScala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application Development
 
Арсений Заречнев и Федор Шумов - Одностраничные приложения
Арсений Заречнев и Федор Шумов - Одностраничные приложенияАрсений Заречнев и Федор Шумов - Одностраничные приложения
Арсений Заречнев и Федор Шумов - Одностраничные приложения
 
Высокопроизводительные приложения на базе Windows Azure. Пример реального про...
Высокопроизводительные приложения на базе Windows Azure. Пример реального про...Высокопроизводительные приложения на базе Windows Azure. Пример реального про...
Высокопроизводительные приложения на базе Windows Azure. Пример реального про...
 
Высокопроизводительные приложения на базе Windows Azure
Высокопроизводительные приложения на базе Windows AzureВысокопроизводительные приложения на базе Windows Azure
Высокопроизводительные приложения на базе Windows Azure
 
Михаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionМихаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с Codeception
 
Как и зачем мы тестируем UI
Как и зачем мы тестируем UIКак и зачем мы тестируем UI
Как и зачем мы тестируем UI
 
So Your WAF Needs a Parser
So Your WAF Needs a ParserSo Your WAF Needs a Parser
So Your WAF Needs a Parser
 
Новости Global summit 2015
Новости Global summit 2015Новости Global summit 2015
Новости Global summit 2015
 

More from SQALab

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировкуSQALab
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаSQALab
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиSQALab
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияSQALab
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...SQALab
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testingSQALab
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженSQALab
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииSQALab
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовSQALab
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовSQALab
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsSQALab
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеSQALab
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииSQALab
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестированиеSQALab
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"SQALab
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовSQALab
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных системSQALab
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросSQALab
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...SQALab
 

More from SQALab (20)

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировку
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
 

Фреймворк автотестирования веб-сервисов своими силами

  • 1. Фреймворк для авто-тестирования веб-сервисов своими силами Воробьев Андрей Test Automation Engineer EPAM, Минск
  • 2. О себе Воробьев Андрей Test Automation Engineer EPAM Systems Автор и ведущий тренингов для начинающих по авто-тестированию веб-сервисов andrei_varabyeu@epam.com
  • 4. Авто-тестирование веб-сервиса Запрос Ответ Да Ответ Тест БАГ правильный? пройден
  • 5. Авто-тестирование веб-сервиса Покупать продукт или разрабатывать самим?
  • 6. Как решить? Для того, чтобы принять верное решение, достаточно ответить только на один вопрос: “Насколько тривиальные задачи требуется решить”
  • 8. Сложно или просто? Просто: Сложно: • Сложные входные данные • Простые входные (части запросов, данные(числа, строки) которые нужно группировать друг с • Примитивные типы другом) валидаций (=, >, <, contains) • Сложная валидация (по • Простые выборки в базу. шаблону, по данным Малый объем выборок которые тоже нужно откуда-нибудь получить ) • Поддержка транзакций БД, кэширования
  • 11. Сложно или просто? <person name=„Андрей Воробьев‟> <relative>Лина Воробьева</relative> <relative>Сергей Воробьев</relative> </person>
  • 12. Сложно или просто? <person name=„Андрей Воробьев‟> <relative name=“Лина Воробьева“> <relative>Валентина Криводубская</relative> <relative>Дмитрий Криводубский</relative> </relative > <relative name=“Сергей Воробьев“> <relative>Ядвига Воробьева</relative> <relative>Николай Воробьев</relative> </relative > </person>
  • 13. Сложно или просто? <person name=„Андрей Воробьев‟> <relative name=“Лина Воробьева“> <relative name=“Валентина Криводубская“> <relative>Анна Криводубская</relative> <relative>Петр Криводубский</relative> </relative> <relative name=“Владимир Криводубский“> N == ? <relative>…</relative> <relative>…</relative> </relative> </relative> <relative name=“Сергей Воробьев“> <relative name=“Ядвига Воробьева“> <relative>…</relative> <relative>…</relative> </relative> <relative name=“Николай Воробьева“> <relative>…</relative> <relative>…</relative> </relative> </relative > </person>
  • 14. Просто • SOAP, Rest, HTTP, JMS, DB • XPath Assertions • XQuery Assertions • Logging • Scripting Support (Groovy, JavaScript) • WS Security • …. and more 14
  • 15. Сложно • Java/C#/… • WS implementation • *Unit testing Frameworks 15
  • 16. «Сделай сам» Фреймворк для тестирования Веб Сервиса – это всего лишь: • Клиент веб-сервиса (для отправки запросов и получения ответов от сервера) • Реализация работы с БД, другими источниками входных/выходных данных • Набор валидаций, которые нужны ВАМ (XPath, XQuery, DB, равно, содержит, большеменьше, соответствует заданному формату) 16
  • 17. Task list  подготовить входные данные (получить из файлов, БД, etc) сформировать и отправить запрос/получить ответ выполнить валидацию ответа … и так много раз в течение одного теста 17
  • 18. Подготовка запроса <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <familyTree> <name>Андрей Воробьев</name> </ familyTree > </soapenv:Body> </soapenv:Envelope> 18
  • 19. Подготовка запроса soapUI Java-based framework • Java Property files • Java Property files • Data Source (excel) • DB (+ORM, cashing, transactions) • DB via „Property Transfer‟ • ЛЮБЫЕ другие источники • использование groovy данных (Windows Active Directory, http, ftp, etc) 19
  • 20. Отправка запроса/Получение ответа soapUI Java-based framework • ВСЕ уже сделано за вас • JAX-WS • Spring-WS • … • ЛЮБЫЕ другие источники имплементации, которые удобно использовать ВАМ 20
  • 21. Валидация ответа <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <person name=„Андрей Воробьев‟> <relative>Лина Воробьева</relative> <relative>Сергей Воробьев</relative> </person> </soapenv:Body> </soapenv:Envelope> 21
  • 22. soapUI – это тоже Java код htmlUnit xmlUnit jUnit easyMock Фреймворк Расширение Расширение Библиотека для создания Junit, JUnit, для Mock- предназначен предоставляю модульного объектов ное для щее большой тестирования эмуляции набор средств на языке Java. действий для Позволяет браузера валидации создавать тест XML файлов, в кейсы, группы т.ч. с тест кейсов, помощью предоставляет XPath. базовые средства для валидации. 22
  • 23. Архитектура или то, над чем стоит поломать голову… 23
  • 24. Архитектура. Основные принципы Модульность Каждый из компонентов не зависит от другого 24
  • 25. Архитектура. Основные принципы Расширяемость Легко добавлять: новый функционал новые типы валидаций 25
  • 26. Архитектура. Основные принципы Читаемость Достаточно посмотреть на исходный код теста, чтобы понять что он делает 26
  • 27. Архитектура. Компоненты cmp Component Model Framew ork TemplateProccesor WebServ er TestLayer «use» Serv iceInv oker WebServ ice «use» «use» Test «use» Validator 27
  • 28. Архитектура. Диаграмма последовательности sd Use Case1 Test TemplateProcessor ServiceInvoker Validator WS PlainData() processMessage() :Message invoke() sendRequest() :Response :Result validate(Result) 28
  • 29. Компоненты. Тест TestNG • базовые типы валидации • группировка в сьюты • отчеты о прохождении тестов • возможность выполнять тесты в несколько потоков • зависимости между тестами 29
  • 30. Компоненты cmp Component Model Framew ork TemplateProccesor WebServ er TestLayer «use» Serv iceInv oker WebServ ice «use» «use» Test «use» Validator 30
  • 31. Компоненты. Процессор шаблонов Данные Готовый запрос Шаблон 31
  • 32. Компоненты. Процессор шаблонов <request> <amount>${amountValue}</amount> <currency>${currencyValue}</currency> </request> Шаблон 32
  • 33. Компоненты. Процессор шаблонов Данные amountValue = 100 currencyValue = USD 33
  • 34. Компоненты. Процессор шаблонов <request> <amount>100</amount> Готовый <currency>USD</currency> запрос </request> 34
  • 35. Компоненты cmp Component Model Framew ork TemplateProccesor WebServ er TestLayer «use» Serv iceInv oker WebServ ice «use» «use» Test «use» Validator 35
  • 36. Компоненты. XML - модель Мы используем… • XML в чистом виде • любые (в т.ч. невалидные) данные DOM • парсинг, Xpath • слабая привязка к схеме • нет парсинга • нет необходимости писать xPath JAXB выражения • невозможно вставить невалидные данные • жесткая привязка к схеме 36
  • 37. Компоненты. SOAP-клиент Клиент НЕ Привязанный Привязанный К К схеме схеме • исходный код может быть • исходный код нужно писать сгенерирован автоматически по самому WSDL-схеме 37
  • 38. Компоненты cmp Component Model Framew ork TemplateProccesor WebServ er TestLayer «use» Serv iceInv oker WebServ ice «use» «use» Test «use» Validator 38
  • 39. Компоненты. Валидация Ответ База данных Сторонние сервисы 39
  • 40. Компоненты. Валидация. Ответ • JUnit /TestNG + XPath DOM • XmlUnit + XPath • XMLUnit + шаблон ответа JAXB • JUnit/TestNG • JXPath 40
  • 41. Почему это так важно Новые тесты создаются быстро 41
  • 42. Почему это так важно Старые тесты поддерживать просто 2x2 42
  • 43. soapUI Pro умеет… • измерять степень покрытия тестами • тестирование безопасности (SQL- инъекции, XPath-инъекции) • производить нагрузочное тестирование • интегрироваться в сборку сервиса и CI- цикл • создавать Mock-сервисы 43
  • 44. soapUI vs. разработка • не нужно никаких подготовительных работ • новые тесты создаются медленно • старые тесты поддерживаются медленно • квалификация авто-тестировщика ниже среднего • базовый набор функционала* * расширяется только groovy-скриптингом 44
  • 45. soapUI vs. разработка • перед написанием тестов необходимо разработать механизмы отправки, получения и валидации • новые тесты создаются быстро • старые тесты поддерживать просто • квалификация авто-тестировщика выше среднего 45
  • 47. soapUI vs. разработка • Любые протоколы • Любые источники входных и выходных данных (Active Directory, POP3, SMTP) • Простота валидации сложных типов данных (даты, UUID) 47
  • 48. Наш опыт На разработку Фреймворка и первого теста путем проб и ошибок ушло около 2 человеко- месяцев 48
  • 49. Наш опыт Сейчас, имея опыт, Это можно сделать за 2 человеко- недели 49
  • 51. Спасибо за внимание! Воробьев Андрей Test Automation Engineer EPAM, Минск
  • 52. Валидация ответа soapUI Java-based framework • Fault/Success • JUnit • Contains • TestNG • XPath • XmlUnit • Xquery • HtmlUnit • Schema Compilance • DbUnit • Timeout • …*Unit • WS-Security Status • Groovy • … 52
  • 53. Компоненты. Процессор шаблонов Feature FreeMarker Velocity Циклы Да Да Условия Да Да Макросы Да Да Импорт других шаблонов Да Да Процессинг импортированных Да Да шаблонов Выполнение Java-кода Нет Частично 53
  • 54. Компоненты. XML – модель. JAXB 54

Editor's Notes

  1. Для ответа на этот вопрос нам нужно дать ответ на следующий вопрос.Однако понятие «тривиально» у каждого человека свое.
  2. Давайте попробуем поделить все задачи на простые и сложные
  3. Мы используем сложные древовидные реквесты?Пример: обменник и несколько валютНам необходима валидация всего респонса или только нескольких полей?Работа с базой данные предполагает транзакции?Насколько сложными будут прекондишны?Пример транзакции: Для того чтобы заплатить по счету вам нужен личный лицевой счет. Для этого нужно зарегистрировать карточку
  4. Мы используем сложные древовидные реквесты?Пример: обменник и несколько валютНам необходима валидация всего респонса или только нескольких полей?Работа с базой данные предполагает транзакции?Насколько сложными будут прекондишны?Пример транзакции: Для того чтобы заплатить по счету вам нужен личный лицевой счет. Для этого нужно зарегистрировать карточку
  5. Мы используем сложные древовидные реквесты?Пример: обменник и несколько валютНам необходима валидация всего респонса или только нескольких полей?Работа с базой данные предполагает транзакции?Насколько сложными будут прекондишны?Пример транзакции: Для того чтобы заплатить по счету вам нужен личный лицевой счет. Для этого нужно зарегистрировать карточку
  6. Мы используем сложные древовидные реквесты?Пример: обменник и несколько валютНам необходима валидация всего респонса или только нескольких полей?Работа с базой данные предполагает транзакции?Насколько сложными будут прекондишны?Пример транзакции: Для того чтобы заплатить по счету вам нужен личный лицевой счет. Для этого нужно зарегистрировать карточку
  7. Мы используем сложные древовидные реквесты?Пример: обменник и несколько валютНам необходима валидация всего респонса или только нескольких полей?Работа с базой данные предполагает транзакции?Насколько сложными будут прекондишны?Пример транзакции: Для того чтобы заплатить по счету вам нужен личный лицевой счет. Для этого нужно зарегистрировать карточку
  8. Мы используем сложные древовидные реквесты?Пример: обменник и несколько валютНам необходима валидация всего респонса или только нескольких полей?Работа с базой данные предполагает транзакции?Насколько сложными будут прекондишны?Пример транзакции: Для того чтобы заплатить по счету вам нужен личный лицевой счет. Для этого нужно зарегистрировать карточку
  9. Все простые задачи решаются с помощью инструмента который называется soapUIОднако бывают ситуации когда soapUIнедостаточно.
  10. Тестировщик должен бытьПрограммистомПонимать имплементацию веб-сервисовИметь представление о юнит-фреймоврках
  11. Для того чтобы пройти тест необходимо
  12. Часть 1. Подготовка реквеста - или откуда взять исходные данныеФункциональное тестирование как процесс заключается в проверке тех или иных свойств системы по принципу черного ящика. Используется какой-то готовый набор тестовых данных на которые система должна реагировать в соответствии со своим назначением. Эти массивы тестовых данных нужно каким-то образом хранить и обрабатывать, что в разрезе тестирования веб-сервисов, значит собирать в soap-реквест (XML формат) и отправлять серверу.  soapUIПозволяет работать с java-property файлами (java формат property-файла: ключ=значение), а также с базой данных. Работа с базой организована следующим образом - необходимо подготовить так называемый JDBC-request, который содержит в себе настройки соединения с БД и, конечно, SQL запрос. JDBC-request выбирает данные в виде XML файла, который потом можно распарсить с помощью XPathили преобразовать с помощью Xquery.Для того, чтобы сохранить какие-то значения выбранные из базы в переменные для последующей работы с ними, необходимо использовать еще одну специфическую фичуsoapUI - PropertyTransfer, которая позволяет передавать переменные от одного тест-степа к другому в рамках одного проекта. Есть возможность написать Groovy-скрипт и вытащить данные, используя стандартные Java-библиотеки, что, конечно, уже потребует от тестировщика знания основ программирования.  JavaС другой стороны, клиент для тестирования, написанный на Java, позволит вам сделать все, что вы захотите: работать с файлами любых форматов, базой данных (более того, с использованием, например, такой распространенной технологии как ORM), другими удаленными и локальными источниками информации.Если команды разработчиков и QA работают параллельно, то у QA-команды может вообще отпасть вопрос о работе с базой данных, т.к. достаточно часто разработчики просто предоставляют свой DAO API (расшифровка нужна?) Как только тестовые данные собраны/получены/загружены - подготовить реквест не составит труда ни в soapUI, ни в написанном вручную Java-клиенте. Схема, как правило, одинаковая и там, и там: создается xml-шаблон, который состоит из т.н. XML и плейсхолдеров - мест, где вместо значений находятся имена переменных. Позже в места этих переменных будут просто вставлены необходимые значения для каждого теста.….&lt;RequestType&gt;&lt;Amount&gt;${Amount}&lt;/Amount&gt;&lt;/RequestType&gt;….Предположим, что для каждого теста, значение &apos;Amount&apos; может отличаться. Тогда очень удобно подготовить темплейтреквеста и просто наполнять его значениями от теста к тесту. Основной вывод отсюда: soapUIпредоставляет очень ограниченный набор возможностей по подготовке реквеста. Расширить их можно с использованием groovy-скриптинга, что уже потребует больших временных затрат, а также повышенной квалификации от мануального тестировщика (что скажется и на его заработной плате).
  13. Часть 1. Подготовка реквеста - или откуда взять исходные данныеФункциональное тестирование как процесс заключается в проверке тех или иных свойств системы по принципу черного ящика. Используется какой-то готовый набор тестовых данных на которые система должна реагировать в соответствии со своим назначением. Эти массивы тестовых данных нужно каким-то образом хранить и обрабатывать, что в разрезе тестирования веб-сервисов, значит собирать в soap-реквест (XML формат) и отправлять серверу.  soapUIПозволяет работать с java-property файлами (java формат property-файла: ключ=значение), а также с базой данных. Работа с базой организована следующим образом - необходимо подготовить так называемый JDBC-request, который содержит в себе настройки соединения с БД и, конечно, SQL запрос. JDBC-request выбирает данные в виде XML файла, который потом можно распарсить с помощью XPathили преобразовать с помощью Xquery.Для того, чтобы сохранить какие-то значения выбранные из базы в переменные для последующей работы с ними, необходимо использовать еще одну специфическую фичуsoapUI - PropertyTransfer, которая позволяет передавать переменные от одного тест-степа к другому в рамках одного проекта. Есть возможность написать Groovy-скрипт и вытащить данные, используя стандартные Java-библиотеки, что, конечно, уже потребует от тестировщика знания основ программирования.  JavaС другой стороны, клиент для тестирования, написанный на Java, позволит вам сделать все, что вы захотите: работать с файлами любых форматов, базой данных (более того, с использованием, например, такой распространенной технологии как ORM), другими удаленными и локальными источниками информации.Если команды разработчиков и QA работают параллельно, то у QA-команды может вообще отпасть вопрос о работе с базой данных, т.к. достаточно часто разработчики просто предоставляют свой DAO API (расшифровка нужна?) Как только тестовые данные собраны/получены/загружены - подготовить реквест не составит труда ни в soapUI, ни в написанном вручную Java-клиенте. Схема, как правило, одинаковая и там, и там: создается xml-шаблон, который состоит из т.н. XML и плейсхолдеров - мест, где вместо значений находятся имена переменных. Позже в места этих переменных будут просто вставлены необходимые значения для каждого теста.….&lt;RequestType&gt;&lt;Amount&gt;${Amount}&lt;/Amount&gt;&lt;/RequestType&gt;….Предположим, что для каждого теста, значение &apos;Amount&apos; может отличаться. Тогда очень удобно подготовить темплейтреквеста и просто наполнять его значениями от теста к тесту. Основной вывод отсюда: soapUIпредоставляет очень ограниченный набор возможностей по подготовке реквеста. Расширить их можно с использованием groovy-скриптинга, что уже потребует больших временных затрат, а также повышенной квалификации от мануального тестировщика (что скажется и на его заработной плате).
  14. Часть 2. Отправка реквеста - получение респонсаПоскольку soapUIявляется soap-клиентом, процесс отправки и получения soap-сообщения в нем уже реализован. Java-клиент необходимо писать самому и в этом заключается основная сложность, поскольку это процесс требует от автоматизатора навыков разработчика. Написание soap-клиента потребует дополнительных временных затрат, однако в это есть и свои плюсы: если команда решила проводить тестирование с использованием объектов, которыми пользуются разработчики (для Java очень распространены JAXB-объекты), то написание собственного клиента - это единственный выход, т.к. soapUIпозволяет работать только на уровне XML и не использует никаких абстракций. Многие считают, что тестировать веб-сервис технологиями, на которых построен сам веб-сервис не самым лучшим подходом. Оппоненты такой позиции с юмором предлагают открыть окно telnet-терминала и работать прямо в нем, чтобы избежать лишних слоев абстракций. Так или иначе, каждое мнение имеет право на жизнь. Одно из утверждений в пользу custom-made framework состоит в следующем: Java программисты знают, что наиболее используемые типы java-кода -это так называемые POJO-объекты (расшифровка нужна?), которые представляют собой просто набор полей класса со значениями (словно это контейнер для свойств какого-либо объекта). Такими объектами можно описать и XML-документ (JavaArchitecture for XML Binding), что, несомненно, очень удобно - часть необходимого кода автоматизатор может взять у команды разработчиков (или наоборот). А все в сумме экономит время и, конечно, деньги.Основной вывод: На этом этапе soapUIвыигрывает, поскольку не требует глубоких знания программирования и временных затрат для реализации собственного soap-клиента. Тем не менее, soapUIне обладает мощью полноценного высокоуровнего языка программирования, поэтому для решения нетривиальных задач лучше выбрать custom-made framework.
  15. soapUIпредставляет выбор из достаточно большого набора типов валидацииреспонса, начиная от валидации непосредственно XML респонса по XPath, XQuery выражениям, так и валидациюsoap статуса респонса, секьюрити валидацию. Есть возможность валидировать выборки из базы данных, использовать Groovy-скрипты. Соль состоит в том, что soapUIсам написан на Java и, следовательно, просто реализует набор таких Java-based фреймворков как JUnit, TestNG,XMLUnit, DBUnit. Однако, soapUIограничивает функциональность этих фреймворков ради простоты и удобства конечного пользователя. Для полного понимания картины проведем небольшой экскурс:JUnit - библиотека для модульного тестирования на языке Java.Позволяет создавать тест кейсы, группы тест кейсов, предоставляет базовые средства для валидации.TestNG - библиотека для функционального тестирования на языке Java.Представляет собой аналог JUnit со множеством улучшений таких как зависимости между тестами, параметеризация через XML-файлы и т.п.XMLUnit - расширение JUnit, предоставляющее большой набор средств для валидацииXML файлов, в т.ч. с помощью XPath.DBUnit - расширение JUnit, предоставляющее большой набор средств для валидации баз данных.
  16. soapUIпредставляет выбор из достаточно большого набора типов валидацииреспонса, начиная от валидации непосредственно XML респонса по XPath, XQuery выражениям, так и валидациюsoap статуса респонса, секьюрити валидацию. Есть возможность валидировать выборки из базы данных, использовать Groovy-скрипты. Соль состоит в том, что soapUIсам написан на Java и, следовательно, просто реализует набор таких Java-based фреймворков как JUnit, TestNG,XMLUnit, DBUnit. Однако, soapUIограничивает функциональность этих фреймворков ради простоты и удобства конечного пользователя. Для полного понимания картины проведем небольшой экскурс:JUnit - библиотека для модульного тестирования на языке Java.Позволяет создавать тест кейсы, группы тест кейсов, предоставляет базовые средства для валидации.TestNG - библиотека для функционального тестирования на языке Java.Представляет собой аналог JUnit со множеством улучшений таких как зависимости между тестами, параметеризация через XML-файлы и т.п.XMLUnit - расширение JUnit, предоставляющее большой набор средств для валидацииXML файлов, в т.ч. с помощью XPath.DBUnit - расширение JUnit, предоставляющее большой набор средств для валидации баз данных.