В общем ...
Если вашей главной целью является тестирование операций CRUD с базой данных, я бы пошел по крайней мере на один уровень ниже и написал бы что-то вродеинтеграционных тестов, которые не используют графический интерфейс для тестирования.Тесты станут более сфокусированными на реальных операциях CRUD, если вы вытащите графический интерфейс.
Как обращаться с базой данных ...
Независимо от того, проходите ли вы тесты Selenium или интеграционные тесты, хорошая идея, что тесты не зависят друг от друга .Это означает настройку базы данных перед каждым тестом и / или снос их в чистое / известное состояние после теста.Поддерживать написанные таким образом тесты намного проще.Например, вы можете запустить один тест самостоятельно.
Для наших интеграционных и приемочных тестов мы используем dbunit для достижения этой цели.Простая настройка и демонтаж БД - не новость, для вашего технологического стека должно быть что-то доступное.(Вы не упомянули технологии, которые вы используете)
Как классифицировать тесты ...
Для операций CRUD я бы удостоверилсяЯ проверяю одно и только одно.Например, у меня есть таблица Employee .У вас может быть набор тестов, который тестирует все, что связано с Employee , но один тест должен проверять только одну вещь.' Сохранить сотрудника успешно ' должен отличаться от ' Попытка сохранить сотрудника, который уже существует ' или ' Удалить сотрудника '.
РЕДАКТИРОВАТЬ: (ответ на комментарий)
Мы в основном убиваем базу данных и строим ее с нуля в начале тестирования.(Не уверен, насколько важна эта часть, но это гарантирует, что наш БД соответствует тому, что ожидает код. Мы используем hibernate ...)
Затем для каждого теста у нас есть разные наборы данных для вставки.Итак, давайте снова скажем, что мы тестируем Сотрудник .Если я хочу протестировать удаление Employee , я бы вставил набор данных, который содержал наименьшее количество информации в базе данных, чтобы это произошло.Меньшие наборы данных легче поддерживать.Если вы используете один и тот же набор данных для всех ваших тестов, вам будет очень трудно изменить код и изменить или добавить новые тесты.
Мы используем один и тот же набор данных для вещей, которые, кажется, требуют одинаковую информацию.Например, вы хотите проверить « Попытка сохранить Сотрудника в базе данных » и « Удалить Сотрудника ».Вы могли бы повторно использовать один набор данных для этого.
Мне было интересно, будет ли сборка и разборка БД для каждого теста дорогостоящим и затратным для вычислений способом?слишком беспокоиться об этом.Да, это может добавить, скажем, 3-4 секунды к каждому тесту, но в целом это действительно важно?Более важно, чтобы у вас были тесты, предназначенные для сопровождения, потому что ваше время как разработчика намного более ценно, чем эти тесты, требующие 5 минут вместо 3 минут.