Ответ 1
В моей работе мы недавно собрали пару тестовых наборов для тестирования некоторых API RESTful, которые мы построили. Как и ваши сервисы, наши могут ссылаться на другие API RESTful, от которых они зависят. Мы разделили его на два набора.
- Suite 1 - тестирование каждой службы изолированно
- Извлекает любые сервисы peer API, которые зависят от использования restito. Другие альтернативы включают rest-driver, wiremock, pre-canned и betamax.
- Тестирование, сервис, который мы тестируем, и все издевательства запускаются в одной JVM
- Запуск службы, которую мы тестируем в Jetty
Я бы определенно рекомендовал это сделать. Это сработало очень хорошо для нас. Основные преимущества:
- Службы одноранговой сети высмеиваются, поэтому вам не нужно выполнять какую-либо сложную настройку данных. Перед каждым тестом вы просто используете restito для определения того, как вы хотите, чтобы службы-сверстники вели себя так же, как и с классами в модульных тестах с Mockito.
- Сюита очень быстро, так как издевательские службы обслуживают предварительно запрограммированные ответы в памяти. Таким образом, мы можем получить хорошее покрытие без набора, требующего возраста для запуска.
- Набор надежный и повторяемый, поскольку он изолирован в нем собственной JVM, поэтому не нужно беспокоиться о других пакетах/людях, сбрасывающих с общей средой, в то же время пакет работает и приводит к сбоям тестирования.
- Suite 2 - полный конец до конца
- Suite работает против полной среды, развернутой на нескольких машинах.
- API, развернутый на Tomcat в среде
- Службы сверстников являются реальными "живыми" полноценными развертываниями.
Этот набор требует от нас делать данные, настроенные в одноранговых службах, что означает, что тесты обычно требуют больше времени для написания. Насколько это возможно, мы используем клиенты REST для создания данных, созданных в одноранговых службах.
Тесты в этом пакете обычно занимают больше времени, поэтому мы помещаем большую часть нашего охвата в Suite 1. Это говорит о том, что в этом пакете по-прежнему остается четкое значение, так как наши макеты в Suite 1 не могут вести себя как настоящие сервисы,
Что касается ваших очков, вот что мы делаем:
- Возможность определять тестовые примеры интеграции, которые выполняют бизнес-сценарии.
- Мы используем cucumber-jvm для определения бизнес-сценариев для обоих вышеперечисленных наборов. Эти сценарии представляют собой текстовые текстовые файлы английского языка, которые бизнес-пользователи могут понять, а также вести тесты.
- Настройте базу данных с тестовыми данными перед запуском пакета.
- Мы не делаем этого для наших пакетов интеграции, но в прошлом я использовал unitils с dbunit для модульных тестов, и это работал довольно хорошо.
- Вызвать API REST, запущенный на удаленном сервере (Tomcat)
- Мы используем rest-assured, который является отличным HTTP-клиентом, специально предназначенным для тестирования API REST.
- Подтвердить выполнение тестового теста базы данных для проверки ожидаемого результата
- Здесь я не могу дать никаких рекомендаций, так как мы не используем какие-либо библиотеки, чтобы помочь сделать это проще, мы просто делаем это вручную. Дайте мне знать, если вы найдете что-нибудь.
- Получите отчет о покрытии кода API REST, чтобы мы знали, насколько мы уверенны в сценариях, охватываемых пакетом.
- Мы не измеряем покрытие кода для наших интеграционных тестов, только для наших модульных тестов, поэтому снова я не могу предоставить никаких рекомендаций здесь.
Держите глаза очищенными на techblog, поскольку в будущем их может быть больше.