Инструменты и лайфхаки тестирования rest api

34
Инструменты и лайфхаки тестирования REST API

Upload: sqalab

Post on 19-Feb-2017

2.114 views

Category:

Education


0 download

TRANSCRIPT

Инструменты и лайфхаки тестирования

REST API

Статья на habrahabr: «RESTful API для сервера»

REST ли наш REST

Все должно работать как планировали

Автотесты должны автотестить

Сервер не должен падать под нагрузками

Следить чтоб все не поломалось

Чеклист доклада

GET http://api.hobout.com/user

REST запрос

OPTIONS

GET

HEAD

POST

PUT

PATCH

DELETE

TRACE

CONNECT

Методы HTTP

OPTIONS

GET

HEAD

POST

PUT

PATCH

DELETE

TRACE

CONNECT

Методы HTTP

OPTIONS

GET

HEAD

POST

PUT

PATCH

DELETE

TRACE

CONNECT

Методы HTTP

Реализация API на Python

Нет глаголам

Помни о числах

Не мудри

Вложенность

Правила именования ресурсов REST

Примеры ответов HTTP

200 OK (взлетело)400 Bad Request (не взлетело из-за пользователя)500 Internal server error (не взлетело из-за сервера)

201 Created (Запись создана)304 Not Modified (Данные не изменились)

404 Not Found (Данные не найдены)401 Unauthorized (Неавторизованный доступ)

403 Forbidden (Доступ запрещен)

Основные ответы HTTP

Пример формата ошибок

REST ли наш REST

Все должно работать как планировали

Сервер не должен падать под нагрузками

Следить чтоб все не поломалось

Чеклист доклада

Автотесты должны автотестить

curl -X POST http://api.test.hobout.com/purge

Консоль

JSONView

POSTMAN

SoapUI

Paw (only for OSX)

Paw (only for OSX)

REST ли наш REST

Все должно работать как планировали

Автотесты должны автотестить

Сервер не должен падать под нагрузками

Следить чтоб все не поломалось

Чеклист доклада

JSON Schema

import requests

URL = "http://api.qa.hobout.com"COUNT = 100

clear_all_request = requests.post(URL+"/purgeall")

admin_cookie = {'Cookie': "hobout_qa:sid="+clear_all_request.json()["cookies"][0]["cookie"]}business_id = clear_all_request.json()["businesses"][0]["_id"]

for i in range(COUNT): payload = { 'title': 'text', 'type':'news', } create_news_request = requests.post(URL+"/businesses/"+business_id+"/posts", data=payload,headers=admin_cookie)

REST запросы в языках программирования

Автоматизация с SoapUI

REST ли наш REST

Все должно работать как планировали

Автотесты должны находить баги

Сервер не должен падать под нагрузками

Следить чтоб все не поломалось

Чеклист доклада

Нагрузочное тестирование в SoapUI

REST ли наш REST

Все должно работать как планировали

Автотесты должны автотестить

Сервер не должен падать под нагрузками

Следить чтоб все не поломалось

Чеклист доклада

1. Cron

2. AlertSite для SoapUI

3. Другие сервисы (pingdom, site24x7 и тп.)

Пути мониторинга

REST ли наш REST

Все должно работать как планировали

Автотесты должны автотестить

Сервер не должен падать под нагрузками

Следить чтоб все не поломалось

Чеклист доклада

Apiary

Apiary

1. Всегда следите за вашими программистами

2. Пользуйтесь разными инструментами

3. Не изобретайте велосипед

Выводы

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

[email protected]

+79166260768

Васильев Егор