Badoo corporate blog
IT systems testing
PHP
JavaScript
Programming
Comments 36
+2
Ребята, есть штуки вроде Sentry, их можно даже в production использовать (особенно полезно для отлова тяпляпов из-за разработчиков браузерных расширений). Самое главное, там есть вещь, которая называется breadcrumbs — в них вы можете записать цепочку действий, которая приводит к возникновению ошибки.
Есть еще один момент с Sentry — она умеет отлавливать ошибки из разных кодовых баз, например из PHP и JS. Это удобно, когда какая-нибудь PHP-ошибка вызывает ошибку в JS.
+3
Привет. Когда я готовил статью, я узнавал у наших ребят из фронтэнда, как именно они собирают логи с клиента. Мне рассказали о Sentry в том числе, но сказали, что мы свою систему сборки писали примерно в то же время или чуть раньше. Тогда на рынке ничего подходящего не нашлось.

Насколько я понял, наша система в целом работает аналогично. Мои коллеги из разработки меня поправят, если я не прав.
+1
А вы не могли бы рассказать, как вы добились стабильной работы Selenium? На моей практике половина тестов сваливалась с таймаутами или просто web-driver зависал.
+1
Вы имеете в виду — в ��елом или конерктно со сборкой JS-ошибкой?

Если в целом, то поэтапно, конечно. UI тесты по определению нестабильны, это нормально и с этим нужно бороться ситуативно.

Если Вы про сбор JS-ошибкок, то там с нестабильностью проблем не было.
+1
Вы что-то не так делаете. Мой рекорд — трое суток непрерывной работы тестов (проверка отображения около 100 тыс единиц сложного контента). Не обошлось без подводных камней, например, в Хроме при работе с Selenium почему-то не запускается уборка мусора в Javascript, поэтому когда элементы на страничке обновляются без перезагрузки (ajax) через пару часов браузер сжирал несколько гигабайт оперативной памяти при одной открытой вкладке и падал. Все решилось принудительным перезапуском после проверки N единиц контента ( параметр подбирали по опыту)
0
тесты последовательные были или параллельные? если параллельные, то сколько потоков?
0
последовательные, но по оршанизационным причинам: наш тестовый сервер использовался и для других тестов, запуск в несколько потоков мог замедлять их тоже. Кроме того, в работе использовался самописный фреймворк-надстройка над селениум(содержащий абстракции для нашего контента), который не был thread safe, а на его обновление времени не было.
0
Главное и основное правило не использовать голый Selenium Webdriver. Такой подход имеет много недостатков. Лучше применить какой-нибудь «фреймворк» на основе Webdriver — в мире java например популярен Selenide.
+3
Да, спасибо, мы знаем про sentry — отличное решение, но у нас для сбора и агрегации клиентских ошибок уже достаточно давно написано свое, и оно по-сути очень похоже на то как работает sentry/raven.js. Тут же речь именно про препродакшн тестирование и про то, что нам важно не только как интерфейс выглядел, но и то что при этом не сыпались какие-нибудь ошибки, и если все же сыпались — то вот как мы их привязываем к результату прогона
UFO landed and left these words here
+2
Привет.
У нас есть похожее решение, но его автор не я. Я попрошу автора выделить время и рассказать. :)
+2

Интересный функционал. Мы рассматривали BugReplay, но в итоге просто иногда записываем видео (когда надо) и почти всегда пишем HAR. Этого вполне достаточно (пока).
Но как мы знаем, аппетит приходит во время еды и пока функционала нет, то его никто и не просит.
Вы это расширение где-то опубликовали?

UFO landed and left these words here
+1
Подскажите пожалуйста про вот эти штуки:

/** lang JavaScript */

Это IDE? Если да — та какие IDE это поддерживают? Или это для каких-то других целей?
+1
Привет.
Да, это для IDE. Для PHPStrom. В этом случае он подсвечивает код внутри строки так, как JS-код.
+1

При помощи WD можно еще свою психику проверять. Этот функционал работает даже лучше чем основной.

+1
Нет, что Вы… Настоящая проверка психики — угадать, как поведет себя тот или иной код на JavaScript. Например, вот:

null > 0
  false

null < 0
  false

null == 0
  false

null >= 0
  true
0
Для проверки верстки можно использовать applitools, особенно если таких проверок много или они критичны для бизнеса. метод с попикселным сравнением не слишком надежный
0

Applitools стали популярны примерно полтора года назад. VRT (Visual regression testing) мы начали делать года четыре назад :)

0
Привет.
Насколько я помню, это до сих пор не во всех браузерах работает. Нам же требовалось универсальное решение.

Но я посмотрю повнимательнее, спасибо!
0
У меня в своё время возникала проблема и с ФФ. В спеке geckodriver'а логирование не описано, что ли, поэтому не поддерживается.
+2
Ну сейчас всё в порядке.
firefox-source-docs.mozilla.org/testing/geckodriver/geckodriver/TraceLogs.html

Кстати в FF как и в Chrome можно и полный http лог в файл записать.
about:networking в FF и chrome://net-internals у Chrome
Можно и через аргументы браузера запись в файл включить.
developer.mozilla.org/en-US/docs/Mozilla/Debugging/HTTP_logging
dev.chromium.org/for-testers/providing-network-details
0
Попробую ещё, спасибо за наводку! Плюс не позволяет поставить карма, к сожалению.
0

Спасибо за наводку, интересно.
HAR мы вытягиваем с помощью экстеншена для Firefox и средствами performance logs для Chrome. Решение хорошо описано у ребят из https://sitespeed.io
Я вот прямо сейчас глянул на то, что Mozilla предлагает — не уверен, что так можно сделать, например, в Selenoid (может, невнимательно смотрел).

+1
В Selenoid для FF можно передать переменные среды в browsers.json
"env" : ["MOZ_LOG=timestamp,rotate:200,nsHttp:5,cache2:5,nsSocketTransport:5,nsHostResolver:5", "MOZ_LOG_FILE=/tmp/log.txt"]
У хрома всё можно сделать через capabilities добавив аргументы:
--net-log-capture-mode=IncludeCookiesAndCredentials
--net-log-capture-mode=IncludeSocketBytes
--log-net-log=/tmp/network_log.json
--log-net-log-level=0

Да, хром может и показать записанный файл, достаточно загрузить его в
chrome://net-internals/#import
0

Привет
В webdriver есть возможность получить все логи браузера, в том числе и JS ошибки.

0
Здравствуйте! Извините за, возможно, глупый вопрос. Касаемо темплейтов: вы просто добавляете темплейт со скриптом внутри в код тестируемой страницы? Как это у вас происходит: вы изменяете код страницы на тестовых серверах, попросив помощи у разработчика, либо самолично имеете доступ к коду? либо как-то исполняете код, который добавит этот темплейт в код страницы на время исполнения автотеста, не меняя её исходного кода? Ещё раз прошу прощения за дилетантский вопрос. Если не затруднит, хотелось бы почитать, как именно это реализовано. Спасибо!
+1
Добрый день.
Тут, скорее, вопрос не в том, у кого какие доступы есть. Тут вопрос ответственности. Никто, ни разработчики, ни QA-инженеры ничего не делают сами по себе, только потому, что это взбрело в голову.
Задачи предварит��льно обсуждаются, а после их выполнения проходят Code Review со стороны разработки и несколько этапов тестирования со стороны QA. Вся работа исключительно командная.
О том, как у нас построено тестирование в целом и о Code Review в частности очень подробно написал руководитель отдела тестирования — Илья Агеев. Почитайте , это интересно.
+2
Спасибо за ответ, обязательно прочту. И спасибо за статью! Мысль про отлов JS-ошибок очень актуальна в рамках нашего проекта, поэтому возьму на вооружение и попробую запустить у себя нечто подобное.
Only those users with full accounts are able to leave comments., please.