Очистка данных после теста на селен - PullRequest
5 голосов
/ 19 марта 2009

Я настраиваю некоторые тесты Selenium для внутреннего веб-приложения и ищу советы по тестированию «наилучшей практики». Один из тестов будет добавлять некоторые данные через пользовательский интерфейс, которые не могут быть удалены через пользовательский интерфейс (например, вы можете добавить запись через веб-приложение, но для удаления требуется связаться с кем-то внутри, чтобы удалить ее на уровне базы данных). Как вы обычно учитываете очистку данных после запуска теста Selenium?

Данное приложение написано на PHP, и я использую PHP для тестирования (с Selenium RC и SimpleTest), но я открыт для других инструментов и т. Д., Так как это всего лишь вопрос передового опыта. Тестируемое приложение находится в нашей среде разработки, поэтому меня не особо беспокоит перенос данных из тестов.

Некоторые идеи:

  1. Вручную подключиться к базе данных в тесте Selenium для очистки данных
  2. Использовать что-то вроде DBUnit для управления этим?
  3. Просто добавьте данные и не беспокойтесь об их очистке (иначе, ленивый подход)

Спасибо!

Редактировать: Кажется, что большинство идей были сосредоточены на одном и том же заключении: отработать известный набор данных и восстановить после завершения испытаний. Механизм для этого, вероятно, будет зависеть от языка, количества данных и т. Д., Но похоже, что он должен работать для моих нужд.

Ответы [ 5 ]

4 голосов
/ 19 марта 2009

Я использую Selenium с приложением Rails и использую механизм фиксации для загрузки и выгрузки данных из тестовой базы данных. Это похоже на подход DbUnit, хотя я не выгружаю и перезагружаюсь между тестами из-за объема данных. (Это то, над чем я работаю , хотя.)

2 голосов
/ 19 марта 2009

У нас есть веб-интерфейс для процедуры восстановления базы данных. Первое, что делают наши тесты, это восстанавливают «хорошо известную» отправную точку.

0 голосов
/ 25 марта 2009

Согласны с другими ответами здесь. В тестах Selenium и DBUnit я подключился к трем последним проектам, над которыми работал. В первом проекте мы попробовали ленивый подход, но, как и ожидалось, он потерял кучу, поэтому мы использовали DBUnit, и я не оглядывался назад.

Я понимаю, что вы используете PHP, поэтому, пожалуйста, переведите DBUnit / JUnit в ваши эквиваленты PHP.

Пара баллов:

  • Используйте как можно меньше данных. С Вы хотите провести много тестов на селен загрузка DBUnit должна быть быстрой возможный. Поэтому постарайтесь свести к минимуму количество данных, которые вы загружаете.
  • Загружать только те данные, которые изменяются. Часто Вы можете пропустить таблицы, которые никогда не изменено веб-приложением. Ссылочные данные столы и тд. Однако вы можете хочу создать отдельный DBUnit xml резервная копия файла / базы данных для загрузки этих данных в на случай, если вы случайно его потеряете.
  • Пусть тесты селена JUnit выберут нуждаются ли они в перезагрузке. Некоторые тесты Selenium не изменят данные, поэтому нет смысла перезагружать база данных после того, как они запускаются. В каждом из моих тестов на селен я переопределить / реализовать метод для возврата желаемого поведения DBUnit.

    @ Override Защищенный DBUnitRunConfig getDBUnitRunConfig () {

    return DBUnitRunConfig.RUN_ONCE_FOR_THIS_TEST_CASE;
    

    }

(Не удалось получить этот фрагмент для правильного форматирования.) Где DBUnitRunConfig:

public enum DBUnitRunConfig {
    NONE, 
    RUN_IF_NOT_YET_RUN_IN_ANY_TEST_CASE, 
    RUN_ONCE_FOR_THIS_TEST_CASE, 
    RUN_FOR_EACH_TEST_IN_TEST_CASE
};

Это сокращает время, необходимое для прохождения тестов. Суперкласс с поддержкой Selenium (или вспомогательный класс) может затем запускать или не запускать DBUnit для данных тестов.

0 голосов
/ 20 марта 2009

Избегайте ленивых подходов. Это не хорошо и в конечном итоге подведет вас. См. Мой предыдущий ответ по этой теме в этом отдельном вопросе StackOverflow .

0 голосов
/ 19 марта 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...