Upload
sqalab
View
825
Download
1
Embed Size (px)
Citation preview
Полуавтоматизация Third-party
API или избавляемся от лишних
зависимостей
Елена Бычкова, специалист по тестированию
http://amigo.mail.ru
Социальный браузер
Социальный плагин, использующий Third-party API
Проблемы
Долго и утомительно
Много однообразных действий
И так каждый регресс.
Цена ошибки довольно высока, поскольку это одна из ключевых
функциональностей браузера.
Автоматизация – почему нет?
Число обращений к API соцсетей ограничено
Это не классический веб, это браузерные расширения
Потребует большого ресёрча и времени автоматизатора.
Полуавтоматизация: как это устроено?
Запрос к API/somePath
Ответ заглушкой
Сравнивает запрос к API
с шаблоном
Шаблон запроса
'httpRequest': {
'method': 'POST',
'path': '/somePath',
'body': {}
},
'httpResponse': {
'statusCode': 200,
'body': { }
}
Предварительные настройки среды
• Сохраняем ответы API в виде json-файлов
• Ставим браузер Google Chrome + расширение DHC (Dev HTTP Client)
• Ставим java + mockserver
• Помещаем заглушки в расширение DHC и сохраняем их там в виде
проекта
Алгоритм действий
• Перенаправляем API на localhost
• Запускаем Mockserver
• Запускаем расширение DHC
• Посылаем запросы к API
• Смотрим результат
Необходимые инструменты
• Java
• Mockserver
• Google Chrome + расширение DHC
• Notepad++
• Fiddler
DEV HTTP Client
DEV HTTP Client: Request
"httpRequest": {
"method" : "GET",
"path" : "/fb.do",
"queryStringParameters" : [ ],
"headers" : [ {
"name" : "Host",
"values" : [ "api.odnoklassniki.ru" ]
}]
}
DEV HTTP Client: Response
"httpResponse": {
"statusCode": 200,
"headers": [ {
"name": "Content-Type",
"values": ["application/json; charset=utf-8"]
},
{
"name": "Cache-Control",
"values": ["no-store"] }],
"body": "
}
DEV HTTP Client: плохой ответ
"httpResponse": {
"statusCode": 404,
"headers": [{
"name": "Content-Type",
"values": ["application/json; charset=utf-8"]
},
{
"name": "Cache-Control",
"values": ["no-store"] }],
"body": ""
}
DEV HTTP Client: результат
DEV HTTP Client: портирование
Полуавтоматизация – почему да?
По сравнению с полной автоматизацией – простота
Облегчение жизни ручному тестировщику
Сокращение сроков тестирования: 2 дня vs 2 часа
Возможность генерировать самые разные ответы сервера, в том
числе, и невалидные
Легко портируемо
Какие минусы?
Проблема с API, использующими механизм форсированного
защищённого протокола hsts
Решение:
Флаг командной строки --ignore-certificate-errors для Google Chrome
Какие минусы?
Игнорирование возможных внезапных изменений в сторонних API
Решение:
Отдельные тесты для API с помощью приложения Postman для
Google Chrome
Postman
MockServer – http://www.mock-server.com/
DEV HTTP Client – https://dhc.restlet.com/
Postman – https://www.getpostman.com/
Amigo – https://amigo.mail.ru
Полезные ссылки
Спасибо за внимание!