Добрый день.
Есть проект на php, важной составляющей которого является http api. В тестировании профан, но встала такая необходимость. Каким образом лучше организовать тестирование API, как подготовить окружение/инфраструктуру, в частности как быть с базой, с чего начать в общем)
Буду благодарен за любые советы.
Не зная специфики проекта, и имея на руках только ваши общие вопросы, можно дать только один общий ответ - LMGTFY - Let Me Google That For You . Язык выбираете такой, на котором хорошо пишет большинство людей в команде. Идете на coursera, udemy, другие ресурсы и смотрите как люди разбирают это все по полочкам.
Имхо, удобнее всего тестировать API с Codeception,
Там есть специальные модули для REST и SOAP тестирования а также детальный гайд по их использованию: http://codeception.com/docs/10-WebServices
спасибо за ответ. тоже смотрел в сторону codeception. однако вопрос больше стоит в организации окружения для тестирования, т.к. тестировать на реальной не вариант, все же данные должны оставаться в сохранности. разворачивать дампы не вариант, база тяжелая. к тому же в стеке есть еще elasticsearch. тот же codeception имеет модуль для баз данных, который разворачивает ее из дампа, однако держать какой-то урезанный актуальный дамп будет сложно, а набор определенных данных как бы необходим. может глупый вопрос, просто пока плохо понимаю workflow всего этого. какие советы тут могут быть?
Ну опять таки зависит от того что за базу вы используете. Какая среда у вас есть для тестирования ? Какие ограничения у вас есть по базе - она должна содержать определенные сущности в каких то состояниях ? Если да, то зачем. Хорошие тесты - это независимые тесты. По этому лучше придерживаться стратегии, когда у теста, при необходимости, создавались прекондишены, а потом после теста все эти условия чистились. Можете дать хоть какое то описание системы, что делает, какие задачи стоят и так далее ? Мы сейчас говорим о сферическом коне в вакууме.
Не вижу ничего сложного.
Берете тот же проксмокс, создаете vz контейнер
Разворачиваете на нем все необходимое для работы кода и бд
Берете структуру бд и часть данных, с корорыми можно работать.
Получаете некое урезанное по базе тестовое окружение, с которым можно работать по api.
Создаете шаблон из получившегося контейнера.
А дальше все самое простое.
Развернули виртуалку из шаблона, получили IP, запустили тесты, убили виртуалку.
При желании можно заюзать API самого Proxmox и автоматизировать это дело.
ну и как инструмент очень рекомендую Codeception. Я им пользуюсь уже более 3-х лет и доволен. Сейчас у меня в одном месте тесты и на API и на Frontend. Запускается все через TeamCity
вот, уже ближе к делу, спасибо. я думаю еще это дело несколько упростится если проксмокс заменить на докер. а самым сложным наверное будет все же поддержание актуального дампа базы, но думаю попробовать сделать как рекомендовал товарищ выше - изначально создавать какие-то предустановленные записи в базе, если я правильно понял.
У нас тоже довольно сложный проект и потому мы решили создать доп. файлы с setup / teardown которые по началу теста создают данную сущность, которая нас интересует и после прогона теста эту сущность и всё что её связывает сразу удаляет.
На данном этапе это очень удобно так как тоже имеет одну базу для тестирования.