Перейти к содержимому

Фотография

Как подготовить тестовые данные для автотестов?


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 27

#21 Vasiliy

Vasiliy

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 2 959 сообщений
  • ФИО:Касимов Василий
  • Город:Москва

Отправлено 16 июля 2019 - 07:54

devepshko, что в итоге получилось? Подготовку тестовых данных сделали?


  • 0

#22 devepshko

devepshko

    Новый участник

  • Members
  • Pip
  • 21 сообщений
  • ФИО:Sergei

Отправлено 16 июля 2019 - 10:53

devepshko, что в итоге получилось? Подготовку тестовых данных сделали?

 

и да, и нет (= для текущей версии сервиса из-за замены его новой версией решили, что нет смысла ресурсы туда направлять. А для новой система будет такая (поиск, например):

1) подготавливаются тестовые данные (то, что ввожу в поля поиска)

2) описывается ожидаемый результат (результат на сайте - таблица) со значениями полей таблицы (в json скорее всего)

3) собирается тестовый билд

4) при запуске тестов в дженкинсе выполняется сначала удаление предыдущих подставленных данные, а затем - инжект новых чистых

Но это опять же в теории, как договорились с девелоперами.


  • 0

#23 devepshko

devepshko

    Новый участник

  • Members
  • Pip
  • 21 сообщений
  • ФИО:Sergei

Отправлено 30 октября 2019 - 17:55

Итак, что в итоге есть на текущий момент (если кому то интересно). Небольшая ремарка, чтобы был понятен нижеописанный подход: тесты гоняются параллельно в 8-10 потоков для каждого браузера (сначала все тесты на хроме, потом - на фф, потом - в эдже, потом - ие), для этого используются разные учетные записи (1 тест - 1 поток - 1 учетная запись) - для стабильности.

Сейчас использую 2 подхода для подготовки тестовых (предопределенных) данных.

1) на пайтоне был написан скрипт, который парсит json файл и через API добавляет данные для тестов. Этот вариант используется для добавления данных на все аккаунты, т.к. не известно, какой аккаунт будет использован для конкретного теста. Скрипт запускается один раз при запуске задачи в Дженкинс перед непосредственно самими тестами.

2) некоторые тесты оперируют одними и теми же объектами (например, настройки профиля), поэтому перед отдельно взятым тестом все так же через API данные "сбрасываются". Первый подход для этих тестов не подойдет, т.к. на одну учетную запись могут попасть конкурирующие тесты. 2й подход, на первый взгляд, подойдет для тестов из 1го подхода. Но, как мне кажется, эффективнее добавить данные сразу, чтобы не выполнять аутентификацию в API для каждого теста.

 

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


  • 1

#24 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 30 октября 2019 - 18:51

пайтоновский скрипт тут видимо лишний, ведь сетап теста может эти же самые данные и создавать


  • 0

#25 devepshko

devepshko

    Новый участник

  • Members
  • Pip
  • 21 сообщений
  • ФИО:Sergei

Отправлено 31 октября 2019 - 19:54

пайтоновский скрипт тут видимо лишний, ведь сетап теста может эти же самые данные и создавать

можно на этом моменте поподробнее?


  • 0

#26 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 31 октября 2019 - 20:33

 

 

можно на этом моменте поподробнее?

вот есть программный код который запускает Селениум, в том же коде надо описать методы которые создают тестовые данные (не надо никакого внешнего скрипта)

 

эти методы вызывать прямо из теста, перед запуском кода который поднимает Селениум


  • 0

#27 devepshko

devepshko

    Новый участник

  • Members
  • Pip
  • 21 сообщений
  • ФИО:Sergei

Отправлено 31 октября 2019 - 21:30

 

 

 

можно на этом моменте поподробнее?

вот есть программный код который запускает Селениум, в том же коде надо описать методы которые создают тестовые данные (не надо никакого внешнего скрипта)

 

эти методы вызывать прямо из теста, перед запуском кода который поднимает Селениум

 

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


  • 1

#28 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 01 ноября 2019 - 14:54

 

 

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

так вы в не той фикстуре запускаете, надо не которая перед каждым тестом, а которая перед всеми тестами

 

 

 

но громоздко получается

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


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных