
Anton
13.11.2017
04:51:11
не подтвердилось ?
на реплай твоего сообщения тоже собачка светиться будет, пока прочитанным не отметится

Prokop
13.11.2017
06:03:59
Всем привет. Коллеги, кто шардит/параллелит мобильные тесты на апиуме? Что для этого используете ?

Dmitry
13.11.2017
06:05:14
Grid + testng

Prokop
13.11.2017
06:06:06
И сильно с бубном плясать приходится?

Google

Dmitry
13.11.2017
06:09:07
Ну сейчас уже нет) (про андроид), ios не трогал ещё.

Prokop
13.11.2017
06:10:25
Как я понимаю, ты просто кормишь пачку тестов под определенные настройки гриду, а он уже сам там раскидывает? Или на уровне testng раскидывается и кидается через грид уже на нужную ноду?

Dmitry
13.11.2017
06:16:26
К гриду цепляются аппиум сервера сконфигуренные под каждый девайс, в тестнг файлике у сьюта прописываются что тесты выполняются параллельно , где каждый тест это девайс + классы с выполняемыми тест кейсами. Когда инициализируется драйвер указывается порт грида, он там уже раскидывает действия между всеми

Prokop
13.11.2017
06:44:23
ок, спасибо

Igor
13.11.2017
06:48:58
Пасибо, как раз тоже искал такую инфу!

Dmitry
13.11.2017
06:52:09
рад помочь

Prokop
13.11.2017
06:56:05
А есть извращенцы, кто делал все тоже самое, но с Jbehave?)

Sergey
13.11.2017
07:17:57
Друзья, а кто где фрилансит? Возможно эта тема обсуждалась, но поиск по чату ничего кроме "фриланс плохо и нигде не найдёшь" не нашёл. Пытался откликаться на upwork, но там что-то совсем глухо. Прошу прощенья, если эта тема уже была

Dmitry
13.11.2017
07:19:28
utest ?

Sergey
13.11.2017
07:20:18
там вообще дико специфичные вакансии вроде "QA with <некий очень специфичный девайс> from <далёкая страна> needed

Водитель НЛО
13.11.2017
07:20:55
Мне кажется upwork - самый живой вариант

Artem
13.11.2017
07:23:34

Mariya
13.11.2017
08:20:03

Google

Mariya
13.11.2017
08:20:26

Sergey
13.11.2017
08:22:04
это что?
Ещё есть топтэл, вдруг пройдёшь :)

Светлана
13.11.2017
08:23:00

Mariya
13.11.2017
08:24:18
это что?
Это ресурс випфрилансеров высокого профиля так сказать. Всякие индусы на 30 баксов/ведро не проходят.

Shoo
13.11.2017
08:24:19
это что?
Это такая иностранная "элитная" галера.

Mariya
13.11.2017
08:30:26

Sergey
13.11.2017
08:35:09

Anatol
13.11.2017
09:08:21
Дамы и господа, возможно подскажете, adb logcat в txt файл в какой кодировке пишет ?

Tanya
13.11.2017
09:10:57
utf-8 вроде

Anatol
13.11.2017
09:14:06
предполагаю что нет, ибо если читать лог через BufferedReader, он может кинуть эксепшен на кодировку

Alexander
13.11.2017
09:16:21
Есть вопрос к вам. Синтаксис Oracle Sql отличается от MySql?

Alexei
13.11.2017
09:19:03
да

Prokop
13.11.2017
09:26:54
Коллеги, возвращаясь к утреннему вопросу. Есть Appium+Java+Selenium Hub. Есть условные 4 одинаковые мобилы с одной версией Андроид и есть условные 4 теста которые необходимо запустить по 1 на каждой мобиле. Кто-нибудь такое реализовывал? Если да, то как? Собрав в кучу всю инфу, складывается ощущение, что без написания своего сервиса управления всем этим зоопарком тут не обойтись(

Anton
13.11.2017
09:47:09
не работал с аппиумом, но по теории тесты запускаются из специального апк в котором сидит инструментатион раннер и сами тесты. Для их запуска юзается что-то такое.
adb shell am instrument -w -e class com.loloru.automation.$1#$2 com.loloru.automation/android.support.test.runner.AndroidJUnitRunner
adb можно передать айди девайса через ключ -s

Arseniy
13.11.2017
10:18:24

Prokop
13.11.2017
10:20:43
Логически я понимаю, что их нужно разделить на пачки с флагом какого-либо общего признака апиум нод, потом кинуть в грид и грид сам раскидает по нодам, которые соответствуют признаку

Google

Arseniy
13.11.2017
10:24:10
хм. а зачем этот признак?
по-моему их просто запускаешь в N потоков и отправляешь на грид.
Очередной поток приходит на грид и говорит «дай сессию».
Грид смотрит, есть ли у него есть свободные ноды и отправляет поток на конкретную ноду либо ставит в очередь
или в гриде ещё браузеры?

Prokop
13.11.2017
10:25:59
ну как минимум чтобы разделять разные версии ОС
Например на гриде может висеть 15 абсолютно разных девайсов, я хочу только самсунги или только Android 7. Значит мой тестовый фреймворк должен знать, какие ноды отвечают этому признаку
И опять же получается, что нужно пилить отдельный сервис под зоопарк

Arseniy
13.11.2017
10:32:15
при регистрации аппиума в гриде указываются browserName, version, platform - при создании сессии можно указывать в capabilities требуемые значения
если этого мало, можно custom capability matcher написать и в грид подключить, это не оч много писать

Jevgeni
13.11.2017
15:08:42
Вопрос по Jenkins'у и Groovy postbuild
Раньше работал Groovy postbuild в post-actions, который запускался для всей матрицы и для matrix parent
Сейчас заметил, что этот groovy postbuild больше не запусается для matrix parent, хотя галочка стоит и ничего не менялось. Для thread'ов самой матрицы запусается, а вот для matrix parent нет...
Есть догадки почему такое может быть и почему перестало запускаться?

Shoo
13.11.2017
16:36:25
Кстати, небольшой статистический опрос, исключительно из любопытства.
Скажите мне, господа тестировщики и сочувствующие, кто из вас намеренно (и осознанно) задействует в ходе тестирования своих продуктов legacy-данные?
Ну, и как вы подходите к выборке (или генерации) подобных данных - тоже интересно было бы послушать.

Evgeniy
13.11.2017
16:38:54
что в твоем понимании legacy данные? которым пара лет?
есть подозрение , что retention rate ( для тестов - актуальность этих данных для вопроизводимости кейса на с прода на тестовом, например) данных для теста у каждого свой. Очень сильно зависит от специфики

Yuryi
13.11.2017
16:39:47
Есть отдельная (и с большего неработающая :) ) группа тестов на перенос легаси-сущностей в новую версию решения. Данные есть живые, поэтому генерировать не надо, с выборками проблем нет. Есть проблемы с их валидностью, т.к. за время их существования - там образовалась полный колапсец.

Shoo
13.11.2017
16:42:24

Ivan
13.11.2017
16:43:12
Легаси данные? У нас каждый тест устанавливает свои данные перед тестом. После все очищает
Можешь подробнее кейс с тем что данные устаревают описать ?

Evgeniy
13.11.2017
16:44:29
в текущей ситуации чтобы функционально протестировать, я сам генерирую данные. Легаси данные в функциональных тестах не участвуют, но прокачиваются ими на стейджинге

Shoo
13.11.2017
16:46:28
Ну смотри, у тебя есть определенная модель, структура и флоу данных в приложении.
Любое изменение, меняющее эти вещи, по сути требует или обработки обратной совместимости, или миграции старых данных на обновленный формат.
Шанс того, что в определенный момент эти условия не были соблюдены - довольно высокий, следовательно есть шанс поиметь в базе неконсистентные данные.
(Условно: null там, где поле обязательно, некорректное значение там, где потом прикрутили валидацию, некорректное положение в state machine и прочее)
Соответственно все дальнейшие изменения, вносимые в систему имеют шанс оказаться не рабочими на текущей версии приложения, и в идеальном мире этот кейс тоже должен как-то, вероятно, тестироваться.

Evgeniy
13.11.2017
16:48:05
для моего на 99% tsql проекта это исключено

Ivan
13.11.2017
16:48:37
А, ясно, у нас тестовые данные хранятся в json. Из него мапятся в thrift объекты и накатываются в базу. Если пошёл рассинхрон. Они просто не спамятся. Не накатятся, и тест упадёт

Google

Shoo
13.11.2017
16:49:55
для моего на 99% tsql проекта это исключено
Мне кажется это весьма ложная уверенность, на самом деле.
Если с nullable\not nullable все довольно просто, то с изменениями правил валидации и состояний - это, на мой взгляд, почти не решаемая боль, в плане того, что там иногда даже миграцию нет возможности корректно сделать.

Evgeniy
13.11.2017
16:51:06
все возможно :) какие правила валидации, например?

Ivan
13.11.2017
16:52:17
Для функциональных тестов синтетические. Есть разные стресс тесты на основе прод данных. Но мы их так же раскладываем в json ы под thrift объекты. В случае изменения делаем миграцию данных

Shoo
13.11.2017
16:52:21
все возможно :) какие правила валидации, например?
Ну, самый банальный пример: у нас на одном из проектов не было валидации Date of Birth (т.е. оно должно было быть датой и not null), а потом появилось ограничение на over18.
Или всякие min\max количество символов в имени.

Ivan
13.11.2017
16:53:04
Ну логично поправить все их :)

Shoo
13.11.2017
16:53:31
Ну, а как ты предлагаешь "поправить" DOB пользователю, у которого там, условно 01.01.0001?
Проставить минимально-требуемую - некорректно, с точки зрения бизнес логики.

Ivan
13.11.2017
16:54:22
Ну если это не функциональный тест , то да любую подходящую дату
Если функциональный то уже в зависимости от проверок

Shoo
13.11.2017
16:55:09
Ну, в тестах-то можно править всё, что угодно, это да. :)
Я имел ввиду, что в продакшене-то ты это не поправишь (т.к. это некорректно так данные корежить по своему усмотрению), следовательно по сути - такие изменения в прод катить нельзя.

Evgeniy
13.11.2017
16:55:41
окей, как проблема изменения бизнес требований помешает тебе протестировать это?

Ivan
13.11.2017
16:56:35
Вообще получается что во время тестирование выявлены данные которые нужно смигрировать по какой то бизнес логике

Evgeniy
13.11.2017
16:56:37
в конечном счете ты какой-то default на not null поле должен будешь проставить

Ivan
13.11.2017
16:56:55
И на проде тоже

Evgeniy
13.11.2017
16:56:56
прогнать UPDATE на таблицу и обновить null поля

Shoo
13.11.2017
16:57:11

Evgeniy
13.11.2017
16:57:23
дальше уже для актуализации данных на фронте маркером по минимальному трешолду времени проси\ не проси юзверей указать корректную дату

Shoo
13.11.2017
16:57:37
Вы радостно выкатываетесь, а потом выясняется что у пачки Legacy пользователей, которым N лет, в Date of Birth абы что (потому что валидации не было) и это ломает приложение.

Google

Evgeniy
13.11.2017
16:57:54
для этого и делаются миграции
сначали миграции - потом накат логики. золотое правило деплоя

Shoo
13.11.2017
16:58:22
Ты можешь гарантировать что за весь жизненный цикл твоего продукта разработчики не пропустили ни одной миграции там, где менялась модель данных?

Evgeniy
13.11.2017
16:58:52
нет, конечно, если я не был на этом проекте когда фича релизилась