Плохая ли практика удалять и комбинировать регрессионные тесты для ускорения тестирования?

#testing #language-agnostic #refactoring #integration-testing #regression-testing

#тестирование #не зависит от языка #рефакторинг #интеграция-тестирование #регрессионное тестирование

Вопрос:

Я работаю над приложением, которое интегрируется со сторонним веб-сервисом. В настоящее время у меня есть отдельные интеграционные / регрессионные тесты, которые вызывают веб-службу для выполнения следующего:

  • Измените политику — Добавьте транспортное средство
  • Изменить политику — Удалить Vehicle
  • Измените политику — добавьте несколько транспортных средств
  • Изменить политику — Добавить застрахованный

Большинство этих тестов были созданы по мере обнаружения и исправления ошибок. Сторонний веб-сервис slooow, и я пытаюсь ускорить процесс тестирования. Поскольку каждый тест вызывает веб-службу, объединение их в один тест, который вызывает веб-службу только один раз, значительно ускорило бы процесс.

Будет ли объединение этих тестов плохой практикой, потому что каждый тест был написан для конкретной ошибки? Меня беспокоит то, что ошибка в рефакторинге потенциально может привести к повторному появлению ошибки позже.

Ответ №1:

Да, их объединение было бы плохой практикой. Вместо этого подумайте о том, как снизить риск, не комбинируя тесты. Одним из подходов — вероятно, вашим лучшим выбором — было бы создать макет веб-службы, чтобы тесты выполнялись намного быстрее, не ставя под угрозу их способность обнаруживать регрессию. Другим вариантом было бы разделить ваши медленные регрессионные тесты на их собственный набор, который выполняется реже (но все же достаточно часто!) чем ваш обычный набор тестов. Наконец, вы могли бы их объединить — но я бы рекомендовал явно повторно ввести все исходные ошибки в ваш код, чтобы убедиться, что объединенный тест все еще их обнаруживает.

Конкретные, точечные, прямые модульные тесты очень ценны; приятно точно знать, что сломалось. Объединение тестов снижает это значение.

Ответ №2:

Я бы не рекомендовал их комбинировать, если вы не сохраняете возможность запускать их по отдельности (возможно, держите их отдельно в вашей ночной сборке и объединяйте в вашей непрерывной сборке).

Попробуйте распараллелить их (в отдельных «политиках»), если ваша тестовая платформа это поддерживает.

Комментарии:

1. Я не рассматривал возможность их распараллеливания. Хорошая идея!

Ответ №3:

Я бы посоветовал включить их в вашу ночную сборку, чтобы они запускались один раз в день, когда вы спите и не смотрите на часы. И только удаляя их, вы проверяете время разработчика.

Конечно, это предполагает, что они не настолько оооочень слабо настроены, что одной ночи недостаточно.

Простое объединение ваших тестов в один большой тест, скорее всего, сделает их бесполезными или еще хуже. Это не намного лучше, чем просто удалять их.