Как тестировать HTTP API проекта на php?

http
php
Теги: #<Tag:0x00007fedb77216e8> #<Tag:0x00007fedb77215a8>

(Roma Rush) #1

Добрый день.
Есть проект на php, важной составляющей которого является http api. В тестировании профан, но встала такая необходимость. Каким образом лучше организовать тестирование API, как подготовить окружение/инфраструктуру, в частности как быть с базой, с чего начать в общем)
Буду благодарен за любые советы.


(Andrew Zakordonets) #2

Не зная специфики проекта, и имея на руках только ваши общие вопросы, можно дать только один общий ответ - http://bfy.tw/1va . Язык выбираете такой, на котором хорошо пишет большинство людей в команде. Идете на coursera, udemy, другие ресурсы и смотрите как люди разбирают это все по полочкам.


(Michael Bodnarchuk) #3

Имхо, удобнее всего тестировать API с Codeception,
Там есть специальные модули для REST и SOAP тестирования а также детальный гайд по их использованию: http://codeception.com/docs/10-WebServices


(Roma Rush) #4

спасибо за ответ. тоже смотрел в сторону codeception. однако вопрос больше стоит в организации окружения для тестирования, т.к. тестировать на реальной не вариант, все же данные должны оставаться в сохранности. разворачивать дампы не вариант, база тяжелая. к тому же в стеке есть еще elasticsearch. тот же codeception имеет модуль для баз данных, который разворачивает ее из дампа, однако держать какой-то урезанный актуальный дамп будет сложно, а набор определенных данных как бы необходим. может глупый вопрос, просто пока плохо понимаю workflow всего этого. какие советы тут могут быть?


(Andrew Zakordonets) #5

Ну опять таки зависит от того что за базу вы используете. Какая среда у вас есть для тестирования ? Какие ограничения у вас есть по базе - она должна содержать определенные сущности в каких то состояниях ? Если да, то зачем. Хорошие тесты - это независимые тесты. По этому лучше придерживаться стратегии, когда у теста, при необходимости, создавались прекондишены, а потом после теста все эти условия чистились. Можете дать хоть какое то описание системы, что делает, какие задачи стоят и так далее ? Мы сейчас говорим о сферическом коне в вакууме.


(Andrey Kurilov) #6

Не вижу ничего сложного.
Берете тот же проксмокс, создаете vz контейнер
Разворачиваете на нем все необходимое для работы кода и бд
Берете структуру бд и часть данных, с корорыми можно работать.
Получаете некое урезанное по базе тестовое окружение, с которым можно работать по api.
Создаете шаблон из получившегося контейнера.
А дальше все самое простое.
Развернули виртуалку из шаблона, получили IP, запустили тесты, убили виртуалку.
При желании можно заюзать API самого Proxmox и автоматизировать это дело.
ну и как инструмент очень рекомендую Codeception. Я им пользуюсь уже более 3-х лет и доволен. Сейчас у меня в одном месте тесты и на API и на Frontend. Запускается все через TeamCity


(Roma Rush) #7

вот, уже ближе к делу, спасибо. я думаю еще это дело несколько упростится если проксмокс заменить на докер. а самым сложным наверное будет все же поддержание актуального дампа базы, но думаю попробовать сделать как рекомендовал товарищ выше - изначально создавать какие-то предустановленные записи в базе, если я правильно понял.


(Dima Naglyuk) #8

У нас тоже довольно сложный проект и потому мы решили создать доп. файлы с setup / teardown которые по началу теста создают данную сущность, которая нас интересует и после прогона теста эту сущность и всё что её связывает сразу удаляет.
На данном этапе это очень удобно так как тоже имеет одну базу для тестирования.