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

Фотография

данные для тестов


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

#1 Jenka156

Jenka156

    Активный участник

  • Members
  • PipPip
  • 137 сообщений
  • ФИО:Женя


Отправлено 06 сентября 2011 - 05:34

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

в интернете понятных статей о том, откуда взять нужные данные для теста, я к сожалению не нашла....
может мне кто нибудь объяснить, как поступать в такой ситуации? или нужно запускать последовательность тестов?
  • 0

#2 Demetri

Demetri

    Активный участник

  • Members
  • PipPip
  • 143 сообщений
  • ФИО:Дмитрий
  • Город:Podgorica, MNE


Отправлено 06 сентября 2011 - 06:05

Я, например, храню в БД список когда-либо зарегистрированных клиентов с указанием основных категорий, в которые они попали (наприvер, теже подразделения)
Потом легко можно будет дергать клиентов из такой базы по критериям типа подразделения или задач, которые они могут выполнять
  • 0
Hi! I'm a signature virus. Copy me into your signature to help me spread.

#3 biomaks

biomaks

    Постоянный участник

  • Members
  • PipPipPip
  • 171 сообщений
  • Город:Москва


Отправлено 06 сентября 2011 - 06:12

Нужно видимо эти данные придумать, уточните у своего лида.
  • 0

#4 Jenka156

Jenka156

    Активный участник

  • Members
  • PipPip
  • 137 сообщений
  • ФИО:Женя


Отправлено 06 сентября 2011 - 06:39

Нужно видимо эти данные придумать, уточните у своего лида.


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

Я, например, храню в БД список когда-либо зарегистрированных клиентов


у меня по этому поводу условие, надо чтоб тест после себя все удалял, чтоб типа не засорять базу и саму систему.

я сначала думала запускать цепочку тестов по очереди, сначала создать подразделения, потом пользователей, потом задачи, а потом все это удалить. но когда представила какой длины может быть эта цепочка дальше... ну и вообще, было бы лучше если все эти тесты независимо друг от друга выполнялись.
меня вобщем-то интересует такой вопрос: можно ли как-нибудь перед началом теста занести необходимые данные в систему, а в конце теста удалить их? может есть для этого какие нибудь "инструменты"?
я использую связку selenium rc + phpUnit.
  • 0

#5 ch_ip

ch_ip

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

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 06 сентября 2011 - 08:31

Сколько занимает поднять дамп с реальной базы?
Можно ли удалять не сразу, а, скажем, раз в неделю чистить базу или заливать туда дамп со свежими данными с продакшена?
Возможность просто вставить какие-то данные в базу сильно зависит от сложности этой базы и ее степени интегрированности с приложением –– как правило, в банковских приложениях просто вставить в базу еще одного пользователя достаточно тяжело, потому что нельзя просто добавить запись в определенную табличку, она должна быть связана с другими табличками, а записи в других табличках с еще табличками и т.д. При этом, если пользователя заводят из приложения, то там может выполняться код, который добавит еще какие-нибудь данные, обновит другие данные и т.д. - всю эту логику невозможно обычно в тестах повторить (а главное, что не нужно).
С другой стороны, добавлять все нужные данные через интерфейс может быть очень долго и ненадежно: ошибка в одном месте лишит вас возможности выполнить все остальные тесты. Рекомендую поговорить с программистами о том, как проще всего вам настраивать тестовый стенд с необходимыми данными.
При этом к разговору с программистами хорошо бы представлять
  • какого рода данные вы хотите видеть в базе,
  • как часто менять этот набор,
  • какие данные могут пригодиться в ближайшем будущем (но пока не нужны).
  • Сколько времени надо потратить, чтобы завести те же данные через интерфейс. Насколько это надежно/ненадежно.
  • Какое получается соотношение "время выполнения полезной части тестов" ко времени получения окружения и БД в нужном состоянии

  • 0

#6 snark

snark

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

  • Members
  • Pip
  • 62 сообщений

Отправлено 06 сентября 2011 - 11:57

а какая база? В Oracle и MS Sql есть Restore-Points. Может быть что-то типа того вам поможет: http://www.oracle-de...play.php?id=328
  • 0

#7 Mystery_Andrew

Mystery_Andrew

    Активный участник

  • Members
  • PipPip
  • 81 сообщений
  • ФИО:Андрей
  • Город:Москва

Отправлено 06 сентября 2011 - 12:21

Я перед каждым тестом создаю нового юзера с необходимыми атрибутами, а в конце удаляю все следы работы автотеста из базы. Довольно много времени ушло на создание методов для работы с базой (а у нас она немаленькая и без пол литра в ней не разобраться), зато теперь все быстро работает и нет никаких проблем с мусором в базе или с отсутствием чего-либо в базе до старта автотеста. Если вдруг произойдет какой-то сбой (потеря связи с базой), который помешал удалить за собой данные, то достаточно запустить автотест заново. Ведь при создании, например, пользователя в автотесте я сначала смотрю, есть ли такой в базе, если есть - удаляю все связанное с ним и создаю заново. Но тут надо позаботиться о неповторимости данных юзеров, чтобы не удалять реальных юзеров, если вдруг тест будет запущен на рабочей базе.
На начальном этапе могу посоветовать обратиться к разработчикам с просьбой внести в базу определенные тестовые данные (распишите все как можно дотошней). Лучше всего попросить написать скрипт, который будет накатывать все нужные Вам данные. Если что, его можно будет самостоятельно подкорректировать, разобраться с этим проблем не будет, да и к тому же базу можно будет "убить" и заново накатить тестовые данные. Для начала этого будет достаточно, но через некоторое время все же будет неплохо самостоятельно заботиться о данных в базе. Ведь будет множество тестов, для каждого из них потребуются определенные пользователи с определенными атрибутами.
  • 0

#8 Jenka156

Jenka156

    Активный участник

  • Members
  • PipPip
  • 137 сообщений
  • ФИО:Женя


Отправлено 06 сентября 2011 - 13:08

Довольно много времени ушло на создание методов для работы с базой


а эти методы работают через интерфейс приложения или напрямую с базой?
  • 0

#9 499356863

499356863

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

  • Members
  • Pip
  • 30 сообщений

Отправлено 07 сентября 2011 - 19:14

/// <summary>
////Генерирует текст из указанного количества RUS символов
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
public static string GenTextRusAttr(int val)
{
const string alphabet = "ЯЧСМИТЬБЮФЫВАПРОЛДЖЭЪХЗЩШГНЕКУЦЙ";
int ubound = alphabet.Length;
var sb = new StringBuilder(val);
for (int i = 0; i <= val; i++)
{
sb.Append(alphabet[Rnd.Next(0, ubound)]);
}
return sb.ToString();
}
/// <summary>
/// Генерирует текст из указанного количества ENG букв и цифр
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
public static string GenTextEngAttr(int val)
{
const string alphabet = "QWERTYUIOPASDFGHJKLZXCVBNM0123456789";
int ubound = alphabet.Length;
var sb = new StringBuilder(val);
for (int i = 0; i <= val; i++)
{
sb.Append(alphabet[Rnd.Next(0, ubound)]);
}
return sb.ToString();
}
  • 0

#10 499356863

499356863

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

  • Members
  • Pip
  • 30 сообщений

Отправлено 07 сентября 2011 - 19:15

Selenium RC +C#, удачи :victory:
Для php думаю вам не составит труда переписать методы, всё ООП специально для тебя убрал солнышко,пользуйся :air_kiss:
  • 0

#11 Jenka156

Jenka156

    Активный участник

  • Members
  • PipPip
  • 137 сообщений
  • ФИО:Женя


Отправлено 08 сентября 2011 - 05:04

спасибо большое всем!)))
  • 0

#12 Mystery_Andrew

Mystery_Andrew

    Активный участник

  • Members
  • PipPip
  • 81 сообщений
  • ФИО:Андрей
  • Город:Москва

Отправлено 08 сентября 2011 - 14:33


Довольно много времени ушло на создание методов для работы с базой


а эти методы работают через интерфейс приложения или напрямую с базой?


Через EntityManager
  • 0


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

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