Rails приемочного тестирования с использованием "API тестирования" для контроля состояния на стороне клиента

В настоящее время я оцениваю, как протестировать довольно большое и сложное веб-приложение на основе Rails 4 на стороне сервера и EmberJS на стороне клиента. В нашем приложении клиент общается исключительно через спокойный JSON API с сервером.

До сих пор мы провели много модульных тестов на базе Konacha и теперь готовы настроить интеграционные / приемочные тесты. Мы не уверены, стоит ли нам начинать писать сквозные тесты, то есть тесты, включающие в себя работающий экземпляр нашего сервера, или же мы должны пойти на интеграционное тестирование API и клиентской части по отдельности.

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

Что ж, нам нравятся современные и быстрые среды тестирования, такие как Konacha, поэтому мы не хотим использовать Selenium. Не только потому, что он немного староват, но и потому, что его производительность довольно низкая. Тем не менее вам нужно будет управлять созданием ложных данных на сервере и перезагрузкой сервера, поэтому мы пришли к следующему подходу:

Мы реализовали API тестирования, который концептуально используется для управления состоянием сервера, например, он имеет следующие методы:

GET /api/test/setup  # Simple bootstrapping of the database, e.g. populate table with ISO language codes etc...
GET /api/test/reset  # Reset the database, using `database_cleaner` gem

Тестовый случай Конаша будет тогда вызывать setup а также resetдо и после каждого теста соответственно.

Что вы думаете об этом подходе?

1 ответ

Решение

Не уверен, что я бы назвал тестирование API и клиента по отдельности, но даже если вы подумаете о том, чтобы запустить этот вид теста, вам все равно стоит пройти сквозной тест.

Так что да, я думаю, что ваша идея пройти сквозное тестирование очень хорошая.

Ваша идея настроить простые команды, позволяющие автоматизировать тестирование вашей системы (команды настройки и сброса), также очень хороша. Будьте готовы добавить больше во время автоматизации - хотя сквозное тестирование концептуально является тестом "черного ящика", в действительности это часто тест "серого ящика", то есть вам потребуется доступ к внутреннему состоянию вашей системы. Я бы назвал это "интерфейсом эксплуатации и обслуживания" тестируемой системы.

Другие вопросы по тегам