0

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

Я использую SpecFlow для .net, используя Selenium для WebUI и NUnit для тестового бегуна.

Приложение само по себе представляет собой большое веб-приложение с мули-страницей.

Функции SpecFlow разделены функциями страницы, и большинство, если не все страницы, имеют таблицу, отображающую созданные записи. Ex. Я создаю новую категорию, и на странице отображается добавленная категория в таблице. Чтобы иметь возможность запускать эти тесты снова и снова, мне нужно удалить все добавленные записи, которые были созданы из базы данных, чтобы те же самые категории можно было воссоздать, когда тесты будут проходить повторно.

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

Итак, мой вопрос в том, что является лучшей практикой для очистки базы данных?

+1

К сожалению, Вы используете базу данных, которая разделяет жить клиентские данные производства с тестовыми данными? – AlSki

+0

Хорошо, я сожалею, нет, все среды, прежде чем мы добираемся до производства, не имеют данных о производственных клиентах. Тем не менее, они хотят запустить эти тесты в prod, и в этом случае тестовый клиент будет делиться базой данных. Мы пока не находимся на таком уровне, чтобы еще не определиться. –

ответ

1

Лучше всего удалить тестовые данные до и после запуска теста. Таким образом, данные будут очищены, даже если тест прерывается на полпути и не очищается после этого.

В specflow это может быть достигнуто с использованием сценариев/после сценария/перед функцией/после перехвата функций.

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

Если вы не можете этого сделать, вам нужно каким-то образом идентифицировать тестовые данные для каждого теста.

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

+0

Спасибо! В настоящее время у меня есть настройка для запуска как перед функцией, так и после этой функции. Я просто пытаюсь найти лучшее решение для очистки созданных данных из таблиц, которые были затронуты во время теста. Создает ли резервная копия, а затем восстанавливает, выполняет хранимую процедуру для удаления тех строк, которые относятся к тестовому клиенту, или с помощью мягкого удаления. Извините за недопонимание. Все клиенты - это тестовые клиенты, и все тестовые данные создаются. –