SlideShare une entreprise Scribd logo
1  sur  84
Télécharger pour lire hors ligne
Автоматизация функционального
тестирования REST API
секреты,
тонкости и подводные камни
Павел Асанов
QA Lead
90 городов
700 тыс.
пользователей
12 млн
просмотров
1 млн
отзывов
3 млн
посетителей
API как продукт
API как продукт
80%
20%
Регрессия
3 месяца 5 минут
● Ресурсы, однозначно определяемые по URL
● Представления ресурсов (JSON)
● Методы работы с ресурсами
REST - это...
POST /reviews GET /reviews/666
PUT /reviews/666
PATCH /reviews/666
DELETE /reviews/666
Что тестируем?
1. Логика
отсутствие
обязательных
параметров
невалидный
протокол
параметры
запроса
скрытыйобычный
скрытый с
особым типом
авторизованный гость
БАК
удалённыйзаблокированный
забаненный
филиал БАК
автор неактивированный удалённый
обычный
корректные
с фото
невалидные
значения
параметров
невалидные
типы
параметров
БАК
expired
другой юзер
приватныйконтент
пользователь
аксесс токен
отсутствие
обязательных
параметров
невалидный
протокол
параметры
запроса
скрытыйобычный
скрытый с
особым типом
авторизованный гость
БАК
удалённыйзаблокированный
забаненный
филиал БАК
автор неактивированный удалённый
обычный
корректные
с фото
невалидные
значения
параметров
невалидные
типы
параметров
БАК
expired
другой юзер
201
Авторизованный пользователь добавляет отзыв с фото
приватныйконтент
пользователь
аксесс токен
POST
отсутствие
обязательных
параметров
невалидный
протокол
параметры
запроса
скрытыйобычный
скрытый с
особым типом
авторизованный гость
БАК
удалённыйзаблокированный
забаненный
филиал БАК
автор неактивированный удалённый
обычный
корректные
с фото
невалидные
значения
параметров
невалидные
типы
параметров
БАК
expired
другой юзер
200
Авторизованный владелец Бизнес-аккаунта запрашивает приватное обращение
приватныйконтент
пользователь
аксесс токен
GET
отсутствие
обязательных
параметров
невалидный
протокол
параметры
запроса
скрытыйобычный
скрытый с
особым типом
авторизованный гость
БАК
удалённыйзаблокированный
забаненный
филиал БАК
автор неактивированный удалённый
обычный
корректные
с фото
невалидные
значения
параметров
невалидные
типы
параметров
БАК
expired
другой юзер
401
Гость добавляет отзыв
приватныйконтент
пользователь
аксесс токен
POST
отсутствие
обязательных
параметров
невалидный
протокол
параметры
запроса
скрытыйобычный
скрытый с
особым типом
авторизованный гость
БАК
удалённыйзаблокированный
забаненный
филиал БАК
автор неактивированный удалённый
обычный
корректные
с фото
невалидные
значения
параметров
невалидные
типы
параметров
БАК
expired
другой юзер
403
Авторизованный пользователь запрашивает чужое приватное обращение
приватныйконтент
пользователь
аксесс токен
GET
отсутствие
обязательных
параметров
невалидный
протокол
параметры
запроса
скрытыйобычный
скрытый с
особым типом
авторизованный гостьаксесс токен
БАК
удалённыйзаблокированный
забаненный
филиал БАК
автор неактивированный удалённый
обычный
корректные
с фото
невалидные
значения
параметров
невалидные
типы
параметров
БАК
expired
другой юзер
500 400 400 404
Невалидный запрос
приватныйконтент
пользователь
2. Данные
и их формат
{
code: 200
status: "success"
review:
{
filial_id: "985690699651034"
text: "Для меня Code Fest - это глоток свежего воздуха. Только
надо баги пофиксить."
is_recommended: false
project_id: 1
source: "flamp"
rating: 4
date_created: "2011-03-28T05:30:50+04:00"
user_id: 171
photo: null
}
}
{
code: 200
status: "success"
review:
{
filial_id: "985690699651034"
text: "Для меня Code Fest - это глоток свежего воздуха. Только
надо баги пофиксить."
is_recommended: false
project_id: 1
source: "flamp"
rating: 4
date_created: "2011-03-28T05:30:50+04:00"
user_id: 171
photo: null
}
}
точное значение
{
code: 200
status: "success"
review:
{
filial_id: "985690699651034"
text: "Для меня Code Fest - это глоток свежего воздуха. Только
надо баги пофиксить."
is_recommended: false
project_id: 1
source: "flamp"
rating: 4
date_created: "2011-03-28T05:30:50+04:00"
user_id: 171
photo: null
}
}
точное значение
тип значения и его диапазон
{
code: 200
status: "success"
review:
{
filial_id: "985690699651034"
text: "Для меня Code Fest - это глоток свежего воздуха. Только
надо баги пофиксить."
is_recommended: false
project_id: 1
source: "flamp"
rating: 4
date_created: "2011-03-28T05:30:50+04:00"
user_id: 171
photo: null
}
}
точное значение
enum
тип значения и его диапазон
{
code: 200
status: "success"
review:
{
filial_id: "985690699651034"
text: "Для меня Code Fest - это глоток свежего воздуха. Только
надо баги пофиксить."
is_recommended: false
project_id: 1
source: "flamp"
rating: 4
date_created: "2011-03-28T05:30:50+04:00"
user_id: 171
photo: null
}
}
точное значение
enum
тип значения и его диапазон
формат значения
{
code: 200
status: "success"
review:
{
filial_id: "985690699651034"
text: "Для меня Code Fest - это глоток свежего воздуха. Только
надо баги пофиксить."
is_recommended: false
project_id: 1
source: "flamp"
rating: 4
date_created: "2011-03-28T05:30:50+04:00"
user_id: 171
photo: null
}
}
точное значение
наличие атрибута
enum
тип значения и его диапазон
формат значения
3. Изменение состояния
системы
● После DELETE сущность стала недоступна
● После логаута access token удаляется
● После DELETE сущность стала недоступна
● После логаута access token удаляется
запрос сущности возвращает 404
● После DELETE сущность стала недоступна
● После логаута access token удаляется
запрос с данным токеном возвращает 401
запрос сущности возвращает 404
● После DELETE сущность стала недоступна
● После логаута access token удаляется
запрос с данным токеном возвращает 401
или
запрос сущности возвращает 404
access token отсутствует в БД
Глава первая, в которой мы
знакомимся с JSON-schema
JSON-схема — это…
1) готовая документация + примеры
header: "Информация об отзыве",
description: "Информация об отзыве",
request: {
type: "GET",
url: "https://flamp.ru/api/2.0/reviews/{id}",
properties: {
id: {
type: "integer",
required: true,
examples: ["1"],
description: "Идентификатор отзыва"
}
}
},
response: {
type: "object",
required: true,
properties: {
code: "{{ common/code }}",
status: "{{ common/status }}",
review: "{{ objects/review }}"
}
},
...
2) валидация запроса на сервере
3) валидация ответа на сервере в dev-режиме
+ простейший smoke-тест
+ полная проверка формата
+ простейший smoke-тест
+ полная проверка формата
- white-box
- схема может содержать ошибки
- нельзя использовать на продакшне
Глава вторая, в которой мы
добавляем assertions в JSON-
schema
assertions: [
{
name: "View Review #1",
request: {
id: 1
},
response: {
status: "success",
review: {
id: 1,
date_created: "_is_datetime",
date_edited: "_is_datetime|null"
}
}
},
]
assertions: [
{
name: "View Review #99999999",
request: {
id: 99999999
},
response: {
status: "error"
}
}
]
Flamposcope
+ smoke testing
+ выполняется ~20 сек
+ тесты пишет разработчик
+ smoke testing
+ выполняется ~20 сек
+ тесты пишет разработчик
- только GET
- захардкоженные данные
- тесты пишет разработчик
Глава третья, в которой
мы хотели прикрутить
к JSON-схеме UI
+ удобный UI
+ нет кода
+ автоподстановка из схемы
+ удобный UI
+ нет кода
+ автоподстановка из схемы
- серый ящик
- фикстуры
- поддержка UI
Глава четвёртая, в которой мы
начали писать на PHP
Параметризованные тесты
https://flamp.ru/api/2.0/filials/?what=кафе&project=1&lon=71&lat=65&radius=1000&
sort=relevance&limit=12&page=5&with_markers=false&building_id=1&metarubric=323&
depth=1&scopes=reviews&access_token=fa07c31442508e2248fcd634a786d409428ca50d
Параметризованные тесты
https://flamp.ru/api/2.0/filials/?what=кафе&project=1&lon=71&lat=65&radius=1000&
sort=relevance&limit=12&page=5&with_markers=false&building_id=1&metarubric=323&
depth=1&scopes=reviews&access_token=fa07c31442508e2248fcd634a786d409428ca50d
[params_set_1] => 200,
[params_set_2] => 404,
[params_set_3] => 401,
[params_set_4] => 403,
[params_set_5] => 400,
[params_set_6] => 500,
...
Параметризованные тесты
https://flamp.ru/api/2.0/filials/?what=кафе&project=1&lon=71&lat=65&radius=1000&
sort=relevance&limit=12&page=5&with_markers=false&building_id=1&metarubric=323&
depth=1&scopes=reviews&access_token=fa07c31442508e2248fcd634a786d409428ca50d
[params_set_1] => 200,
[params_set_2] => 404,
[params_set_3] => 401,
[params_set_4] => 403,
[params_set_5] => 400,
[params_set_6] => 500,
...
набор N
...
набор 1 тест
2fingers =
PHPUnit + сomposer + http-клиент
(Guzzle поверх cURL) + данные
данные
dataProvider
параметры
проверки
Структура теста
test
Тестовые
наборы
Тестовые
наборы
Тестовые
наборы
Данные
Установка параметров запроса
источник
данных
Проверки
если
success
ожидаемый
код
ожидаемый
результат
фактический
результат
ожидаемый
код
роль
параметры
запроса
объект
запрос
код
ответа
ожидаемый
ответ
тело
ответа
Данные
фикстуры дамп
● реальные
● случайные, но однородные
● уникальные
Требования к данным
Работа с БД
$entity = Db()->entity('review')->forFilial('141265770608749')
->isHidden(false)->withPhoto(true)->getRandomEntity();
$user_id = Db()->user()->withStatus(1)->getRandomUser()->id;
$article = Db()->table('articles')->isPublished(true)->getRow();
Всегда ли?
'bacs' => [
'flamp_nsk' => 1,
'flamp_krsk' => 4,
'flamp_msk' => 13,
],
'filials' => [
'pac' => '141265770608749',
'pac2' => '141265771836316',
'bac' => '141265771910841',
'simple' => '141265771459351',
],
config.php
assertions
$this->assertEquals($user_id, $actual->user_id, “incorrect user_id”);
$this->assertEquals($project_id, $actual->project_id, “incorrect project_id”);
$this->assertEquals($id, $actual->id, “incorrect id”);
...
$this->assert($expected, $actual);
// Фактический результат
$actual = $this->getResponseBody();
// Ожидаемый результат
$expected = [
'user' => CHECK_STRING_NOT_EMPTY,
'access_token' => CHECK_STRING_NOT_EMPTY
];
// Сравниваем ФР и ОР
$this->assert($expected, $actual);
assertions
// Ожидаемый результат
$expected = [
'filial_id' => $filial_id,
'user_id' => $user_id,
'text' => $text,
'date_created' => CHECK_DATETIME_FORMAT,
'date_edited' => null,
'comments_count' => 0,
'likes_score' => 0,
'source' => CHECK_SOURCE,
'filial' => CHECK_NOT_NULL,
'user' => CHECK_EXIST,
'comments' => CHECK_NOT_NULL,
'official_answer' => null,
'additional_data' => [
'is_liked' => false,
'is_subscribed_to_comments' => false
],
'url' => CHECK_STRING_NOT_EMPTY,
'id' => CHECK_POSITIVE
];
// Ожидаемый результат
$expected = [
'filial_id' => $filial_id,
'user_id' => $user_id,
'text' => $text,
'date_created' => CHECK_DATETIME_FORMAT,
'date_edited' => null,
'comments_count' => 0,
'likes_score' => 0,
'source' => CHECK_SOURCE,
'filial' => CHECK_NOT_NULL,
'user' => CHECK_EXIST,
'comments' => CHECK_NOT_NULL,
'official_answer' => null,
'additional_data' => [
'is_liked' => false,
'is_subscribed_to_comments' => false
],
'url' => CHECK_STRING_NOT_EMPTY,
'id' => CHECK_POSITIVE
];
точное значение
точное значение
// Ожидаемый результат
$expected = [
'filial_id' => $filial_id,
'user_id' => $user_id,
'text' => $text,
'date_created' => CHECK_DATETIME_FORMAT,
'date_edited' => null,
'comments_count' => 0,
'likes_score' => 0,
'source' => CHECK_SOURCE,
'filial' => CHECK_NOT_NULL,
'user' => CHECK_EXIST,
'comments' => CHECK_NOT_NULL,
'official_answer' => null,
'additional_data' => [
'is_liked' => false,
'is_subscribed_to_comments' => false
],
'url' => CHECK_STRING_NOT_EMPTY,
'id' => CHECK_POSITIVE
];
точное значение
тип значения и его диапазон
точное значение
// Ожидаемый результат
$expected = [
'filial_id' => $filial_id,
'user_id' => $user_id,
'text' => $text,
'date_created' => CHECK_DATETIME_FORMAT,
'date_edited' => null,
'comments_count' => 0,
'likes_score' => 0,
'source' => CHECK_SOURCE,
'filial' => CHECK_NOT_NULL,
'user' => CHECK_EXIST,
'comments' => CHECK_NOT_NULL,
'official_answer' => null,
'additional_data' => [
'is_liked' => false,
'is_subscribed_to_comments' => false
],
'url' => CHECK_STRING_NOT_EMPTY,
'id' => CHECK_POSITIVE
];
точное значение
enum
тип значения и его диапазон
точное значение
// Ожидаемый результат
$expected = [
'filial_id' => $filial_id,
'user_id' => $user_id,
'text' => $text,
'date_created' => CHECK_DATETIME_FORMAT,
'date_edited' => null,
'comments_count' => 0,
'likes_score' => 0,
'source' => CHECK_SOURCE,
'filial' => CHECK_NOT_NULL,
'user' => CHECK_EXIST,
'comments' => CHECK_NOT_NULL,
'official_answer' => null,
'additional_data' => [
'is_liked' => false,
'is_subscribed_to_comments' => false
],
'url' => CHECK_STRING_NOT_EMPTY,
'id' => CHECK_POSITIVE
];
формат значения
точное значение
enum
тип значения и его диапазон
точное значение
// Ожидаемый результат
$expected = [
'filial_id' => $filial_id,
'user_id' => $user_id,
'text' => $text,
'date_created' => CHECK_DATETIME_FORMAT,
'date_edited' => null,
'comments_count' => 0,
'likes_score' => 0,
'source' => CHECK_SOURCE,
'filial' => CHECK_NOT_NULL,
'user' => CHECK_EXIST,
'comments' => CHECK_NOT_NULL,
'official_answer' => null,
'additional_data' => [
'is_liked' => false,
'is_subscribed_to_comments' => false
],
'url' => CHECK_STRING_NOT_EMPTY,
'id' => CHECK_POSITIVE
];
формат значения
точное значение
enum
тип значения и его диапазон
наличие атрибута
точное значение
Примеры
public function providerGetBlogAuthors()
{
// запись блога
$article = Db()->table('articles')->isPublished(true)->hasAuthor(true)->getRow();
// неопубликованная запись блога
$article_not_published = Db()->table('articles')->isPublished(false)->getRow();
return [
// опубликованная
[$article, Config()->roles->user, 200],
// неопубликованная под авторизованным юзером
[$article_not_published, Config()->roles->user, 404],
// неопубликованная под гостем
[$article_not_published, Config()->roles->guest, 404],
];
}
public function testGetBlogAuthors($article, $user_id, $expected_code)
Формируем тестовые наборы
/**
* @dataProvider providerGetBlogAuthors
*/
public function testGetBlogAuthors($article, $user_id, $expected_code)
{
// Задаём http-метод, метод API, параметры запроса
$this->http_method = 'GET';
$this->method = "blogs/{$article->id}/authors";
// Выполняем запрос и проверяем коды ответа
$this->asUser($user_id)->send();
$this->waitFor($expected_code);
Получаем авторов записи блога
// проверяем поля в ответе
if ($expected_code === 200) {
$actual = $this->getResponseBody()->authors;
// авторов может быть много, проверяем первого
$expected[0] = [
'name' => CHECK_STRING_NOT_EMPTY,
'user' => CHECK_NOT_NULL,
];
$this->assert($expected, $actual);
}
Получаем авторов записи блога
public function testDeleteReview($entity_id, $cause, $user_id, $expected_code)
{
// Задаём http-метод, метод API, параметры запроса
$this->http_method = 'DELETE';
$this->method = "reviews/{$entity_id}";
$this->params = [
'cause' => $cause
];
// Выполняем запрос и проверяем коды ответа
$this->asUser($user_id)->send();
$this->waitFor($expected_code);
// Проверка на повторное удаление сущности
if ($expected_code === 202) {
$this->asUser($user_id)->send();
$this->waitFor(404);
}
}
Удаляем отзыв
Запуск и отладка
Запуск и отладка
Приёмочное тестирование фичи
10-20
сек
Регрессия
1400
тестов
35 000
проверок
5 минут
1400
тестов
Регрессия
1400
тестов
35 000
проверок
5 минут
1400
тестов
28 860
минут
вместо
Процессы
● отдельный репозиторий
● все пушат, мёржат, коммитят
● новая фича покрывается при тестировании,
или даже параллельно с разработкой :)
Flamp API
JSON-schema
Flamposcope
2fingers
Луковица качества API
Вопросы?

Contenu connexe

Tendances

Типичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriverТипичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriverIgor Khrol
 
Автоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST APIАвтоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST APIPavel Asanov
 
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...WrikeTechClub
 
Инструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщикаИнструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщикаSQALab
 
QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...
QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...
QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...Badoo Development
 
Speeding up UI tests, profiling of UI tests
Speeding up UI tests, profiling of UI testsSpeeding up UI tests, profiling of UI tests
Speeding up UI tests, profiling of UI testsAnton Stepanenko
 
Grail: шаги для ваших Python-тестов
Grail: шаги для ваших Python-тестовGrail: шаги для ваших Python-тестов
Grail: шаги для ваших Python-тестовCodeFest
 
BDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveBDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveSQALab
 
GUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test StudioGUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test StudioSQALab
 
Автоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows PhoneАвтоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows PhoneCodeFest
 
Практика тестирования web сервисов
Практика тестирования web сервисовПрактика тестирования web сервисов
Практика тестирования web сервисовSQALab
 
Selenium grid on-demand
Selenium grid on-demandSelenium grid on-demand
Selenium grid on-demandSQALab
 
Тестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практикТестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практикSQALab
 
Автоматизация и Selenium IDE
Автоматизация и Selenium IDEАвтоматизация и Selenium IDE
Автоматизация и Selenium IDEISsoft
 
автоматизация тестирования с помощью Selenium
автоматизация тестирования с помощью Seleniumавтоматизация тестирования с помощью Selenium
автоматизация тестирования с помощью Seleniumvyacheslavmaslov
 
UICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестамиUICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестамиSQALab
 
Визуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестамиВизуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестамиSQALab
 
Как Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QAКак Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QASQALab
 
Selenium, а давай подождем?
Selenium, а давай подождем?Selenium, а давай подождем?
Selenium, а давай подождем?SQALab
 

Tendances (20)

Типичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriverТипичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriver
 
Автоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST APIАвтоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST API
 
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
 
Инструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщикаИнструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщика
 
QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...
QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...
QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...
 
Speeding up UI tests, profiling of UI tests
Speeding up UI tests, profiling of UI testsSpeeding up UI tests, profiling of UI tests
Speeding up UI tests, profiling of UI tests
 
Grail: шаги для ваших Python-тестов
Grail: шаги для ваших Python-тестовGrail: шаги для ваших Python-тестов
Grail: шаги для ваших Python-тестов
 
BDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveBDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehave
 
GUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test StudioGUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test Studio
 
Seamy side of autotests
Seamy side of autotestsSeamy side of autotests
Seamy side of autotests
 
Автоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows PhoneАвтоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows Phone
 
Практика тестирования web сервисов
Практика тестирования web сервисовПрактика тестирования web сервисов
Практика тестирования web сервисов
 
Selenium grid on-demand
Selenium grid on-demandSelenium grid on-demand
Selenium grid on-demand
 
Тестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практикТестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практик
 
Автоматизация и Selenium IDE
Автоматизация и Selenium IDEАвтоматизация и Selenium IDE
Автоматизация и Selenium IDE
 
автоматизация тестирования с помощью Selenium
автоматизация тестирования с помощью Seleniumавтоматизация тестирования с помощью Selenium
автоматизация тестирования с помощью Selenium
 
UICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестамиUICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестами
 
Визуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестамиВизуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестами
 
Как Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QAКак Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QA
 
Selenium, а давай подождем?
Selenium, а давай подождем?Selenium, а давай подождем?
Selenium, а давай подождем?
 

Similaire à Автоматизация функционального тестирования REST API: секреты, тонкости и подводные камни

Игорь Любин -- Об опыте тестирования программного компонента без пользователь...
Игорь Любин -- Об опыте тестирования программного компонента без пользователь...Игорь Любин -- Об опыте тестирования программного компонента без пользователь...
Игорь Любин -- Об опыте тестирования программного компонента без пользователь...sqadays8
 
QaApi: взгляд на тестирование с другой стороны баррикад
QaApi: взгляд на тестирование с другой стороны баррикадQaApi: взгляд на тестирование с другой стороны баррикад
QaApi: взгляд на тестирование с другой стороны баррикадDmitry Maruschenko
 
QA Fes 2016. Игорь Любин. Об автоматическом тестировании бэкенда в MediaMarkt
QA Fes 2016. Игорь Любин. Об автоматическом тестировании бэкенда в MediaMarktQA Fes 2016. Игорь Любин. Об автоматическом тестировании бэкенда в MediaMarkt
QA Fes 2016. Игорь Любин. Об автоматическом тестировании бэкенда в MediaMarktQAFest
 
Об автоматическом тестировании бэкенда в Media markt
Об автоматическом тестировании бэкенда в Media marktОб автоматическом тестировании бэкенда в Media markt
Об автоматическом тестировании бэкенда в Media marktIgor Lyubin
 
Python Meetup
Python Meetup Python Meetup
Python Meetup iQSpace
 
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCDevDay
 
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полнойОмские ИТ-субботники
 
Тестирование Web API
Тестирование Web APIТестирование Web API
Тестирование Web APIByndyusoft
 
Нагрузочное тестирование с помощью Яндекс.Танк - Алексей Лавренюк, PyCon RU 2...
Нагрузочное тестирование с помощью Яндекс.Танк - Алексей Лавренюк, PyCon RU 2...Нагрузочное тестирование с помощью Яндекс.Танк - Алексей Лавренюк, PyCon RU 2...
Нагрузочное тестирование с помощью Яндекс.Танк - Алексей Лавренюк, PyCon RU 2...it-people
 
Load Testing with Yandex.Tank (in russian, PyCon Russia 2014)
Load Testing with Yandex.Tank (in russian, PyCon Russia 2014)Load Testing with Yandex.Tank (in russian, PyCon Russia 2014)
Load Testing with Yandex.Tank (in russian, PyCon Russia 2014)Alexey Lavrenuke
 
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...Badoo Development
 
Архитектура А/Б тестирования: сделай сам
Архитектура А/Б тестирования: сделай самАрхитектура А/Б тестирования: сделай сам
Архитектура А/Б тестирования: сделай самSergey Xek
 
Cергей Aверин, Badoo
Cергей Aверин, BadooCергей Aверин, Badoo
Cергей Aверин, BadooOntico
 
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...Igor Khrol
 
Cоздание приложений со знанием Perl
Cоздание приложений со знанием PerlCоздание приложений со знанием Perl
Cоздание приложений со знанием PerlAnatoly Sharifulin
 
Что могут статические анализаторы, чего не могут программисты и тестировщики
Что могут статические анализаторы, чего не могут программисты и тестировщикиЧто могут статические анализаторы, чего не могут программисты и тестировщики
Что могут статические анализаторы, чего не могут программисты и тестировщикиAndrey Karpov
 
QA Fest 2018. Анастасия Асеева. Shift-Left Testing
QA Fest 2018. Анастасия Асеева. Shift-Left TestingQA Fest 2018. Анастасия Асеева. Shift-Left Testing
QA Fest 2018. Анастасия Асеева. Shift-Left TestingQAFest
 
Развитие процессов тестирования в Badoo за три года
Развитие процессов тестирования в Badoo за три годаРазвитие процессов тестирования в Badoo за три года
Развитие процессов тестирования в Badoo за три годаSQALab
 
Grail - CodeFest'2015
Grail - CodeFest'2015Grail - CodeFest'2015
Grail - CodeFest'2015Igor Khrol
 
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETОпыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETGoSharp
 

Similaire à Автоматизация функционального тестирования REST API: секреты, тонкости и подводные камни (20)

Игорь Любин -- Об опыте тестирования программного компонента без пользователь...
Игорь Любин -- Об опыте тестирования программного компонента без пользователь...Игорь Любин -- Об опыте тестирования программного компонента без пользователь...
Игорь Любин -- Об опыте тестирования программного компонента без пользователь...
 
QaApi: взгляд на тестирование с другой стороны баррикад
QaApi: взгляд на тестирование с другой стороны баррикадQaApi: взгляд на тестирование с другой стороны баррикад
QaApi: взгляд на тестирование с другой стороны баррикад
 
QA Fes 2016. Игорь Любин. Об автоматическом тестировании бэкенда в MediaMarkt
QA Fes 2016. Игорь Любин. Об автоматическом тестировании бэкенда в MediaMarktQA Fes 2016. Игорь Любин. Об автоматическом тестировании бэкенда в MediaMarkt
QA Fes 2016. Игорь Любин. Об автоматическом тестировании бэкенда в MediaMarkt
 
Об автоматическом тестировании бэкенда в Media markt
Об автоматическом тестировании бэкенда в Media marktОб автоматическом тестировании бэкенда в Media markt
Об автоматическом тестировании бэкенда в Media markt
 
Python Meetup
Python Meetup Python Meetup
Python Meetup
 
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
 
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
 
Тестирование Web API
Тестирование Web APIТестирование Web API
Тестирование Web API
 
Нагрузочное тестирование с помощью Яндекс.Танк - Алексей Лавренюк, PyCon RU 2...
Нагрузочное тестирование с помощью Яндекс.Танк - Алексей Лавренюк, PyCon RU 2...Нагрузочное тестирование с помощью Яндекс.Танк - Алексей Лавренюк, PyCon RU 2...
Нагрузочное тестирование с помощью Яндекс.Танк - Алексей Лавренюк, PyCon RU 2...
 
Load Testing with Yandex.Tank (in russian, PyCon Russia 2014)
Load Testing with Yandex.Tank (in russian, PyCon Russia 2014)Load Testing with Yandex.Tank (in russian, PyCon Russia 2014)
Load Testing with Yandex.Tank (in russian, PyCon Russia 2014)
 
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
 
Архитектура А/Б тестирования: сделай сам
Архитектура А/Б тестирования: сделай самАрхитектура А/Б тестирования: сделай сам
Архитектура А/Б тестирования: сделай сам
 
Cергей Aверин, Badoo
Cергей Aверин, BadooCергей Aверин, Badoo
Cергей Aверин, Badoo
 
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
 
Cоздание приложений со знанием Perl
Cоздание приложений со знанием PerlCоздание приложений со знанием Perl
Cоздание приложений со знанием Perl
 
Что могут статические анализаторы, чего не могут программисты и тестировщики
Что могут статические анализаторы, чего не могут программисты и тестировщикиЧто могут статические анализаторы, чего не могут программисты и тестировщики
Что могут статические анализаторы, чего не могут программисты и тестировщики
 
QA Fest 2018. Анастасия Асеева. Shift-Left Testing
QA Fest 2018. Анастасия Асеева. Shift-Left TestingQA Fest 2018. Анастасия Асеева. Shift-Left Testing
QA Fest 2018. Анастасия Асеева. Shift-Left Testing
 
Развитие процессов тестирования в Badoo за три года
Развитие процессов тестирования в Badoo за три годаРазвитие процессов тестирования в Badoo за три года
Развитие процессов тестирования в Badoo за три года
 
Grail - CodeFest'2015
Grail - CodeFest'2015Grail - CodeFest'2015
Grail - CodeFest'2015
 
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETОпыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
 

Plus de 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
 

Plus de 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 или как тест-менеджеру перекроить внут...
 

Автоматизация функционального тестирования REST API: секреты, тонкости и подводные камни