Я пытаюсь просеять множество тестовых решений, и я даже не уверен, что направляюсь в правильном направлении. История такова: у нас запущен веб-сервис RESTful, реализованный как приложение Rails, которое поддерживает наших мобильных клиентов. Мы проводим модульное тестирование веб-службы (конечно), но это включает в себя макетирование многих частей приложения, например стека поиска (Apache SOLR).
Более того, наши тесты не охватывают (то есть не могут!) Охватывать критически важные маршруты, такие как процесс входа в систему с мобильного устройства, поскольку это предполагает взаимодействие между приложением API и мобильным веб-сайтом, где пользователь может вводить учетные данные. например, для SSO (Janrain Engage). Следовательно, стандартный тест интеграции Rails не подойдет.
Я понимаю, что в теории, если набор тестов очень хорошо спроектирован, где насмешка происходит строго в тех точках соединения, где начинаются тесты для следующего уровня, то путем модульного или функционального тестирования API службы и мобильного веб-сайта отдельно можно получить такое же тестовое покрытие. Однако на практике я считаю, что это иллюзия, если несколько тестеров работают над набором тестов независимо друг от друга; Я просто признаю, что наши юнит-тесты просто не так хорошо разработаны. В частности, при работе с TDD я обнаружил, что, хотя тесты могут управлять кодом приложения, дизайн кода теста приспособлен только для тестируемого модуля, что приводит к довольно дико растущему набору тестов.
Еще одна вещь, которую я обнаружил, заключается в том, что иногда мы не обнаруживали регрессии исключительно с помощью модульных тестов, где, например, плохие запросы были отправлены на сервер SOLR из-за эффектов "зацепки". Вот почему я подумал, что единственный верный способ убедиться, что весь стек работает вдоль критических маршрутов, - это автоматическое сквозное тестирование его на промежуточном сервере перед каждым развертыванием, т. Е. С отправкой в приложение реальных HTTP-запросов.
Мои вопросы будут:
- Как вы думаете, это вообще разумно? Я обнаружил очень мало информации о сквозном тестировании живого API в Интернете, и мне стало интересно, имею ли я вообще смысл
- какие инструменты / настройки вы бы предложили? Мы используем Watir для запуска приемочных тестов для нашего веб-сайта, но это кажется излишним для веб-службы (не требуется среда браузера, нет JS или чего-либо еще). Что-нибудь простое, даже как скрипт на Ruby?
- любые общие рекомендации или советы, которые вы можете дать мне w.r.t. разработать такие тесты?