
Andrey
29.03.2017
12:58:44
руками все стопятьсот сценариев чекаешь?
не устаешь?

Nikita
29.03.2017
12:58:48

Andrey
29.03.2017
12:59:58
помню мне однажды на очень хитрый вопрос, который я задаю на собесе ответили очень смешно)

Google

Andrey
29.03.2017
13:00:20
мы можем деплоить со скоростью ручного тестирования)

Николай
29.03.2017
13:01:36

Nikita
29.03.2017
13:02:01

Николай
29.03.2017
13:02:17
почему нет?

Nikita
29.03.2017
13:02:27
ветка смотрится досконально, мастер смотрится на местах возможных конфликтов

Николай
29.03.2017
13:02:30
а как понять что в мастере ничего не сломалось?

Andrey
29.03.2017
13:02:40
после локализации и устранения добавляется еще одна регрессионка и забывается

Николай
29.03.2017
13:02:43

Nikita
29.03.2017
13:02:52
на стыке новой функциональности
если есть 10 кусков, добавился к одному куску подкусок, зачем смотреть остальные 9?

Николай
29.03.2017
13:03:22
но в текущий момент спор за счет такой модели в том числе я не выиграл )

Pavel
29.03.2017
13:03:35

Dmitry
29.03.2017
13:04:08

Google

Николай
29.03.2017
13:05:20
с разработчиками всм"
ладно всем спасибо =)

Pavel
29.03.2017
13:05:52
Постойте ка, а разве тут разрешен мат?

Richard
29.03.2017
13:07:31
Где мат?

Pavel
29.03.2017
13:08:00
Уже раза 3 видел

Richard
29.03.2017
13:08:10
Николай, давайте формулировать без мата. Здесь разные люди собрались.

Nick
29.03.2017
13:08:26

John
29.03.2017
13:09:31
Пожалуйста, помогите с nginx-ом. Никаких материалов не могу найти.

Pavel
29.03.2017
13:10:07
https://www.nginx.com/blog/nginx-caching-guide/

Николай
29.03.2017
13:11:27

Anton
29.03.2017
13:39:45

John
29.03.2017
19:07:57
Мдааа, я все делал неправильно
Приложение полностью на https, так что squid отпадает.
nginx и varnish тоже отпадают, потому-то у меня нет доступа к приложению со стороны сервера.

Николай
29.03.2017
19:08:49
например задача...пройти по 10 ссылкам посмотреть что баннер на месте и все ок.
как реализовать на мобильники в двух браузерах. Стандартном + хром
есть варианты без шнура?
То есть как то удаленно... вжух... и у тебя открыты все нужные вкладки во всех нужных браузерах во всех нужных устройствах...?)
ну ладно ладно...если вдруг нет. а со шнуром как оптимально? селениум подрубать? а прощще есть?)

Nikita
29.03.2017
19:09:53

Николай
29.03.2017
19:11:55
посмотрю спс. На всякий случай. Есть еще варианты?)

John
29.03.2017
19:12:40

Nikita
29.03.2017
19:12:44

Google

Nikita
29.03.2017
19:13:24
оно умеет собирать траффик с сервака, а потом перераздавать его

John
29.03.2017
19:14:53

Nikita
29.03.2017
19:16:39
А с HTTPS как?
смотри, я сам в своих реальных проектах не юзал. но разницы между https и http тут не должно быть. оно ведь не сниффает траффик, оно траффик собрало – считай загрузило ответы от REST API и условную статику, а потом перераздает собранное :)
когда тестировал, тестировал не с https

John
29.03.2017
19:17:04
Даже думал про shared cache между инстансами chrome.

Nikita
29.03.2017
19:17:35
а зачем тебе вообще понадобилось кеширование?

John
29.03.2017
19:19:17

Nikita
29.03.2017
19:19:37
ну и хорошо, пусть грузят реальные данные, или там супертяжеляк?

John
29.03.2017
19:20:44
Веп-апп довольно неповоротливый, только загрузка около 20 секунд, а с кешом хрома около 3-6 секунд.
Вот и подумал про кеширование.

Nikita
29.03.2017
19:23:21
не, ну так-то все правильно звучит, наверное полезным будет кеширование. но я не фанат, выше озвучивал почему – добавляется уровень, на котором может потеряться ошибка

John
29.03.2017
19:23:21
Но веб-апп полностью на https

Nikita
29.03.2017
19:34:10

John
29.03.2017
19:34:28

Nikita
29.03.2017
19:35:08
ну можно попробовать, хуже точно не будет) просто ведь общий кэш означает общую сессию и общий локал сторейдж по идее, или я не прав?

John
29.03.2017
19:35:55
Кстати, спасибо за Hoverfly. Попробую.

Nikita
29.03.2017
19:36:53
я не очень люблю применять такие штуки в тестах, если честно, и стараюсь все сделать проще и в тупую, если так можно) просто с нагромождением сложных технических решений возрастает процент ошибки

Google

Nikita
29.03.2017
19:38:14
даже простейший докер селениум иной раз добавляет непредвиденные ошибки с решениями из серии it's a magic

Evgeniy
29.03.2017
19:43:33
если это нужно для мобильных приложений, всегда опирайся на то, что в мобильных устройствах наверняка из памяти вкладки выгружаются. на iOS, андроиде, страницы отмирают, снова подкачивая js-бандлы. Смысла пытаться эмулировать уже загруженное приложение я не вижу только исходя из необходимости экономии времени, лучше придумать оркестрацию тестирования в параллели и скомпоновать по возможности сценарии в рамках одной роли аутентификации на предмет разных сценариев в одной сессии (одном инстансе вебдрайвера)

Nikita
29.03.2017
19:51:55
а зачем тесты с одним инстансом вебдрайвера гонять? мне кажется, это атомарности и изолированности не добавляет

Evgeniy
29.03.2017
20:05:16
а шаренный кеш - добавляет изолированности? :)

Nikita
29.03.2017
20:05:33
так я не топил за шаренный кэш)

Admin
ERROR: S client not available

Nikita
29.03.2017
20:05:53
не добавляет вообще ни разу

Evgeniy
29.03.2017
20:06:23
если пользователь в рамках своей сессии не закрывая страницу может делать операции - зайти в дашборд, потыкаться, сходить на публикацию чего-нибудь, засабмитить что-нибудь. То, в принципе, в рамках экономии выполнения тестов, это сделать можно
но это не исключает необходимость изолированных тестов
и опять же это вопрос того, как организованы будут тест-сьюты, обеспечивая наибольшую область покрытия
но имхо опять же - я б лучше нащупал, сколько агентов максимально можно загрузить тестами без возникновения ошибок при параллелизации, или придумать re-run логику в этом случае, и гонять медленные тесты по-честному

Nikita
29.03.2017
20:08:05
мне кажется, что если нужна скорость – лучше тесты попараллелить, чем выполнять все операции последовательно в рамках одной сессии. ведь есть шанс, что они друг другу помешают

John
29.03.2017
22:49:08
Огромное спасибо за детальное обсуждение. Знаю что, лучше делать по правилам, стандартам и best practices. Проблема в том, что идентифицировал bottleneck в системе, и просто думаю/пробую разные варианты. Да, шаренный кеш не изящен.
Проблема именно в том, что именно загрузка самая долгая часть всего.
Да, есть requirement параллелизации.
Про изолированнось согласен на 100%.
Вот такая дилемма получается: производительность vs изолированность + чистота среды


Evgeniy
29.03.2017
23:05:48
Производительность едва ли панацея от вообще чего бы то ни было. в случае тестирования (на качество это не влияет, а делать ненужные вещи чаще с большей энергией - такое себе))) Т.е. фактически если у тебя ручное тестирование + автоматизированные не превышает выделяемого времени на тест фичи, то производительность (скорость) тестов - это, фактически, бесполезное улучшение.
Потому что модели тестирования бывают разные: где-то коммит разработчика будет зареджектен автоматом при помощи CI потому что твои UI тесты упали. А где-то они не являются блокерами, но параллельно рассказывают о том, как дела с продуктом в его текущем состоянии.
Без понимания, для чего ты хочешь ускорять тесты - во что упереться - смысла упираться в это нет. Тесты гоняются на тестовых агентах, которые нужны другим тестировщикам? как часто разработчики коммитят код, который нужно по-каждому коммиту запускать набор тестов? _Нужно_ ли вообще запускать все тесты? может, подумать над запуском групп тестов в зависимости от тегов задачи в Jira?

Google

Evgeniy
29.03.2017
23:14:10
Или такой вопрос: может ли уровень разработки предоставить тебе пофичный релиз, релиз 5-6-10 фич за сутки с деплоем на бой, чтобы каждая из фич изолированно проверялась? А если разработка осуществляется сбором какой-то релизовой ветки из нескольких фичевых - то полный регрессионный прогон имеет смысл запускать в:
а) на машине тестировщика, когда он проверяет фичу и сам решает какую группу тестов запустить на своем железе
б) на "общем" тестовом контуре на фичу
в) на "общем" тестовом контуре на на ветку релиз-кандидата (если у тестировщиков "тонкие" клиенты)
Когда от каждой конкретной фичи нужно быть зарилеженной "сегодня" или "через 2 часа" - с начала тестирования, а регрессия предполагает 15 браузеров и разные разрешения под адаптивную верстку - тогда, возможно, и правда стоит задуматься над тем, чтобы каждый тест выполнялся на 15-20% быстрее.


Anton
30.03.2017
02:12:48
к слову, при "классической" настройке прокси меняет заголовки. имеет смысл также сделать приседание с фильтром пакетов и использовать уже transparent proxy

Pavel
30.03.2017
07:40:18
Привет, подскажите, пожалуйста, какой-нибудь канал для автоматизаторов? Или может у кого есть инфа по правильной настройке selenium grid + connection тестов. При browser.get(url) стало падать много TimeoutException, не могу побороть.

Evgeniy
30.03.2017
07:51:03

Pavel
30.03.2017
07:54:44
Спасибо, попробую. Да, кстати, запуск действительно в параллельном режиме + docker selenium grid, пробовал разную конфигурацию, 1 нода - 1 инсанс, 1 нода - 3 инстанса, контролирую потребление cpu/mem и т.п., результат был одинаковый, только в однопоточном режиме отрабатывает нормально.

Nikita
30.03.2017
08:14:10
но у меня все инстансы вебдрайвера в одном контейнере, а не в разных

Anton
30.03.2017
08:21:01
изучите код запуска браузера, может у вас переменные глобальные или что-то типа того

Pavel
30.03.2017
08:26:32
python, фикстурой создаю коннект и выставляю нужные ожидания, далее driver прокидываю тесту, после отработки теста - коннект прибивается.
driver = webdriver.Remote(
command_executor=RemoteConnection(request.config.option.selenium_url, keep_alive=False, resolve_ip=False),
desired_capabilities=request.param,
)
driver.implicitly_wait(request.config.option.implicitly_wait)
driver.set_page_load_timeout(request.config.option.page_timeout)
Падает именно на первичном открытии url. в 10-20% случаев (если параллельный запуск) и в 0-5% если однопоточный

Nikita
30.03.2017
08:26:54
а какую ошибку пишет браузер?
то есть какой лог у докер-контейнера на момент падения теста?

Pavel
30.03.2017
08:28:21
TimeoutException: Message: timeout: cannot determine loading status
При падении каждый тест снимает скришот, но в данном случае скрин не снимает, я так понимаю браузер просто не стартует.

Nikita
30.03.2017
08:29:12
ооо
было такое. и воспроизводится рандомно, верно?
не стабильно и не всегда

Pavel
30.03.2017
08:30:49
думал уже пробовать использовать https://github.com/bayandin/devtools-proxy чтобы понять что там происходит в контейнере, но может быть тут подскажут быстрее=)