21
Полуавтоматизация Third-party API или избавляемся от лишних зависимостей Елена Бычкова, специалист по тестированию

Полуавтоматизация third-party API

  • Upload
    sqalab

  • View
    825

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Полуавтоматизация third-party API

Полуавтоматизация Third-party

API или избавляемся от лишних

зависимостей

Елена Бычкова, специалист по тестированию

Page 2: Полуавтоматизация third-party API

http://amigo.mail.ru

Социальный браузер

Page 3: Полуавтоматизация third-party API

Социальный плагин, использующий Third-party API

Page 4: Полуавтоматизация third-party API

Проблемы

Долго и утомительно

Много однообразных действий

И так каждый регресс.

Цена ошибки довольно высока, поскольку это одна из ключевых

функциональностей браузера.

Page 5: Полуавтоматизация third-party API

Автоматизация – почему нет?

Число обращений к API соцсетей ограничено

Это не классический веб, это браузерные расширения

Потребует большого ресёрча и времени автоматизатора.

Page 6: Полуавтоматизация third-party API

Полуавтоматизация: как это устроено?

Запрос к API/somePath

Ответ заглушкой

Сравнивает запрос к API

с шаблоном

Шаблон запроса

'httpRequest': {

'method': 'POST',

'path': '/somePath',

'body': {}

},

'httpResponse': {

'statusCode': 200,

'body': { }

}

Page 7: Полуавтоматизация third-party API

Предварительные настройки среды

• Сохраняем ответы API в виде json-файлов

• Ставим браузер Google Chrome + расширение DHC (Dev HTTP Client)

• Ставим java + mockserver

• Помещаем заглушки в расширение DHC и сохраняем их там в виде

проекта

Page 8: Полуавтоматизация third-party API

Алгоритм действий

• Перенаправляем API на localhost

• Запускаем Mockserver

• Запускаем расширение DHC

• Посылаем запросы к API

• Смотрим результат

Page 9: Полуавтоматизация third-party API

Необходимые инструменты

• Java

• Mockserver

• Google Chrome + расширение DHC

• Notepad++

• Fiddler

Page 10: Полуавтоматизация third-party API

DEV HTTP Client

Page 11: Полуавтоматизация third-party API

DEV HTTP Client: Request

"httpRequest": {

"method" : "GET",

"path" : "/fb.do",

"queryStringParameters" : [ ],

"headers" : [ {

"name" : "Host",

"values" : [ "api.odnoklassniki.ru" ]

}]

}

Page 12: Полуавтоматизация third-party API

DEV HTTP Client: Response

"httpResponse": {

"statusCode": 200,

"headers": [ {

"name": "Content-Type",

"values": ["application/json; charset=utf-8"]

},

{

"name": "Cache-Control",

"values": ["no-store"] }],

"body": "

}

Page 13: Полуавтоматизация third-party API

DEV HTTP Client: плохой ответ

"httpResponse": {

"statusCode": 404,

"headers": [{

"name": "Content-Type",

"values": ["application/json; charset=utf-8"]

},

{

"name": "Cache-Control",

"values": ["no-store"] }],

"body": ""

}

Page 14: Полуавтоматизация third-party API

DEV HTTP Client: результат

Page 15: Полуавтоматизация third-party API

DEV HTTP Client: портирование

Page 16: Полуавтоматизация third-party API

Полуавтоматизация – почему да?

По сравнению с полной автоматизацией – простота

Облегчение жизни ручному тестировщику

Сокращение сроков тестирования: 2 дня vs 2 часа

Возможность генерировать самые разные ответы сервера, в том

числе, и невалидные

Легко портируемо

Page 17: Полуавтоматизация third-party API

Какие минусы?

Проблема с API, использующими механизм форсированного

защищённого протокола hsts

Решение:

Флаг командной строки --ignore-certificate-errors для Google Chrome

Page 18: Полуавтоматизация third-party API

Какие минусы?

Игнорирование возможных внезапных изменений в сторонних API

Решение:

Отдельные тесты для API с помощью приложения Postman для

Google Chrome

Page 19: Полуавтоматизация third-party API

Postman

Page 20: Полуавтоматизация third-party API

MockServer – http://www.mock-server.com/

DEV HTTP Client – https://dhc.restlet.com/

Postman – https://www.getpostman.com/

Amigo – https://amigo.mail.ru

Полезные ссылки

Page 21: Полуавтоматизация third-party API

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