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

Содержание

Слайд 2

О себе Воробьев Андрей Test Automation Engineer EPAM Systems Автор и

О себе

Воробьев Андрей
Test Automation Engineer EPAM Systems
Автор и ведущий тренингов

для начинающих по авто-тестированию веб-сервисов
andrei_varabyeu@epam.com
Слайд 3

Профессиональный жаргон

Профессиональный жаргон

Слайд 4

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

Авто-тестирование веб-сервиса

Запрос

Ответ

Ответ
правильный?

Да

Тест
пройден

БАГ

Слайд 5

Авто-тестирование веб-сервиса Покупать продукт или разрабатывать самим?

Авто-тестирование веб-сервиса

Покупать продукт
или
разрабатывать самим?

Слайд 6

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

Как решить?

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

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

Сложно или просто?

Сложно или просто?

Слайд 8

Сложно или просто? Просто: Простые входные данные(числа, строки) Примитивные типы валидаций

Сложно или просто?

Просто:
Простые входные данные(числа, строки)
Примитивные типы валидаций (=, >,

<, contains)
Простые выборки в базу. Малый объем выборок

Сложно:
Сложные входные данные (части запросов, которые нужно группировать друг с другом)
Сложная валидация (по шаблону, по данным которые тоже нужно откуда-нибудь получить )
Поддержка транзакций БД, кэширования

Слайд 9

Сложно или просто?

Сложно или просто?

Слайд 10

Сложно или просто?

Сложно или просто?

Слайд 11

Сложно или просто? Лина Воробьева Сергей Воробьев

Сложно или просто?


Лина Воробьева
Сергей Воробьев

Слайд 12

Сложно или просто? Валентина Криводубская Дмитрий Криводубский Ядвига Воробьева Николай Воробьев

Сложно или просто?



Валентина Криводубская
Дмитрий Криводубский

Воробьев“>
Ядвига Воробьева
Николай Воробьев


Слайд 13

Сложно или просто? Анна Криводубская Петр Криводубский … … … … … … N == ?

Сложно или просто?




Анна Криводубская
Петр Криводубский

name=“Владимир Криводубский“>















N == ?

Слайд 14

Просто SOAP, Rest, HTTP, JMS, DB XPath Assertions XQuery Assertions Logging

Просто
SOAP, Rest, HTTP, JMS, DB
XPath Assertions
XQuery Assertions
Logging
Scripting Support (Groovy, JavaScript)
WS Security
….

and more
Слайд 15

Сложно Java/C#/… WS implementation *Unit testing Frameworks

Сложно
Java/C#/…
WS implementation
*Unit testing Frameworks

Слайд 16

«Сделай сам» Клиент веб-сервиса (для отправки запросов и получения ответов от

«Сделай сам»
Клиент веб-сервиса (для отправки запросов и получения ответов от сервера)
Реализация

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

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

Слайд 17

Task list ☺

Task list ☺

Слайд 18

Подготовка запроса Андрей Воробьев

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




Андрей Воробьев



Слайд 19

Подготовка запроса soapUI Java Property files Data Source (excel) DB via

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

soapUI
Java Property files
Data Source (excel)
DB via ‘Property Transfer’
использование groovy

Java-based

framework
Java Property files
DB (+ORM, cashing, transactions)
ЛЮБЫЕ другие источники данных (Windows Active Directory, http, ftp, etc)
Слайд 20

Отправка запроса/Получение ответа soapUI ВСЕ уже сделано за вас Java-based framework

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

soapUI
ВСЕ уже сделано за вас

Java-based framework
JAX-WS
Spring-WS

ЛЮБЫЕ другие источники

имплементации, которые удобно использовать ВАМ
Слайд 21

Валидация ответа Лина Воробьева Сергей Воробьев

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




Лина Воробьева
Сергей Воробьев



Слайд 22

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

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

Слайд 23

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

Архитектура

или то, над чем стоит поломать голову…

Слайд 24

Архитектура. Основные принципы Каждый из компонентов не зависит от другого Модульность

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

Модульность

Слайд 25

Архитектура. Основные принципы Легко добавлять: новый функционал новые типы валидаций Расширяемость

Архитектура. Основные принципы
Легко добавлять:
новый функционал
новые типы валидаций

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

Слайд 26

Архитектура. Основные принципы Достаточно посмотреть на исходный код теста, чтобы понять что он делает Читаемость

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

Достаточно посмотреть
на исходный код теста,
чтобы понять что

он делает

Читаемость

Слайд 27

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

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

Слайд 28

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

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

Слайд 29

Компоненты. Тест TestNG базовые типы валидации группировка в сьюты отчеты о

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

TestNG

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

в несколько потоков
зависимости между тестами
Слайд 30

Компоненты

Компоненты

Слайд 31

Компоненты. Процессор шаблонов Данные Шаблон Готовый запрос

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

Данные

Шаблон

Готовый
запрос

Слайд 32

Компоненты. Процессор шаблонов Шаблон ${amountValue} ${currencyValue}

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

Шаблон


${amountValue}
${currencyValue}

Слайд 33

Компоненты. Процессор шаблонов Данные amountValue = 100 currencyValue = USD

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

Данные

amountValue = 100
currencyValue = USD

Слайд 34

Компоненты. Процессор шаблонов Готовый запрос 100 USD

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

Готовый
запрос


100
USD

Слайд 35

Компоненты

Компоненты

Слайд 36

Компоненты. XML - модель Мы используем…

Компоненты. XML - модель

Мы используем…

Слайд 37

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

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

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

исходный код нужно

писать самому
Слайд 38

Компоненты

Компоненты

Слайд 39

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

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

Слайд 40

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

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

Слайд 41

Почему это так важно Новые тесты создаются быстро

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

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

Слайд 42

Почему это так важно Старые тесты поддерживать просто 2 x 2

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

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

2 x 2

Слайд 43

soapUI Pro умеет… измерять степень покрытия тестами тестирование безопасности (SQL-инъекции, XPath-инъекции)

soapUI Pro умеет…
измерять степень покрытия тестами
тестирование безопасности (SQL-инъекции, XPath-инъекции)
производить нагрузочное тестирование
интегрироваться

в сборку сервиса и CI-цикл
создавать Mock-сервисы
Слайд 44

soapUI vs. разработка не нужно никаких подготовительных работ новые тесты создаются

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

не нужно никаких подготовительных работ
новые тесты создаются медленно
старые тесты

поддерживаются медленно
квалификация авто-тестировщика ниже среднего
базовый набор функционала*
* расширяется только groovy-скриптингом
Слайд 45

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

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

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

валидации
новые тесты создаются быстро
старые тесты поддерживать просто
квалификация авто-тестировщика выше среднего
Слайд 46

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

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

Слайд 47

soapUI vs. разработка Любые протоколы Любые источники входных и выходных данных

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

Любые протоколы
Любые источники входных и выходных данных (Active Directory,

POP3, SMTP)
Простота валидации сложных типов данных (даты, UUID)
Слайд 48

Наш опыт На разработку Фреймворка и первого теста путем проб и ошибок ушло около 2 человеко-месяцев

Наш опыт

На разработку
Фреймворка и первого
теста путем
проб и ошибок
ушло

около
2 человеко-месяцев
Слайд 49

Наш опыт Сейчас, имея опыт, Это можно сделать за 2 человеко-недели

Наш опыт

Сейчас,
имея опыт,
Это можно
сделать за
2 человеко-недели

Слайд 50

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

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

Слайд 51

Спасибо за внимание! Воробьев Андрей Test Automation Engineer EPAM, Минск

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

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

Слайд 52

Валидация ответа soapUI Fault/Success Contains XPath Xquery Schema Compilance Timeout WS-Security

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

soapUI
Fault/Success
Contains
XPath
Xquery
Schema Compilance
Timeout
WS-Security Status
Groovy

Java-based framework
JUnit
TestNG
XmlUnit
HtmlUnit
DbUnit
…*Unit

Слайд 53

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

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