• Конкуренция в автоматизации тестирования. Эксперт в технологиях тестирования или lead QA?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Начнем с первого вопроса:
    Я бы вообще не смотрел вакансии где написано "ручной тестировщик", а искал вакансии где написано "тестировщик" и необходимы навыки автоматизации, или обозначено "тестировщик-автоматизатор". Т.е. понимаете, что если фирма в голове у себя считает что тестировщики делятся на ручных и неручных то вам с такой фирмой не по пути. Вы там в лучшем случае наберете нужное количество лет профессионального опыта, чтобы свалить оттуда без сожаления при первой возможности.

    И нe смотрите на конкурренцию, смотрите на свои интересы. Нужно заходить с сильной позиции. Люблю тестировать, дотошный, целеустремленный, упорный, люблю технологии, быстро учусь, и т.п по списку. Если им такой не нужен то они себя лишают хорошего сотрудника или сотрудника на вырост. Так им и надо. Следующий.

    Второй вопрос:
    Может так случиться что применения всему спектру навыков на проекте не найдется. Так что сильно заморачиваться изучением чего-то сильно отстоящего от мейнстрима вероятно не стоит. Но ознакомиться на уровне чтобы понимать о чем и зачем это - стоит. И чем шире спектр осведомленности, тем лучше. Меня например спрашивали на собеседовании, знаю ли я JMeter, сказал знаком, знаю зачем он, пользоваться не приходилось, если надо научусь. И мне много-много чем не приходилось пользоваться о чем я знаю. И это нормально. Сегодня человеку умственного труда важно научиться учиться. И быстро адаптировать свои навыки под новые требования. Гибкость бьет всё. Гибкий кадр это джокер-карта в руках проект-менеджера.

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

    Что касается перехода в менеджеры, у меня был момент когда мне предложили перекинуться в разработчики либо пойти в тест-менеджеры. Но я понимал что из крепкого тестировщика-автоматизатора превращаться в нуба разработчика не комильфо. А тест-менеджер, это куча отчетности, а тестировать будут другие. А мне нравится тестировать. Поэтому не пошел ни туда ни туда. А остался дальше тестировщиком-автоматизатором. И оказалось что это дерево растет пока растешь ты.
    --
    Надеюсь попал своими ответами в ваши вопросы хотя бы на 7/10 :)
    Спрашивайте еще, пишите в личку если что, я на хабре есть, а может еще в моих старых комментариях чего-то найдете полезного.
    Ответ написан
    Комментировать
  • Как тестировать запросы к API?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Сначала нужно понять какую информацию мы пытаемся получить от теста, на какой вопрос он должен отвечать. Потом решаем необходимые границы охвата. Будет это приемочный / end-to-end тест, на работающем экземпляре приложения, либо это будет "сухой" юнит или интеграционный тест. Затем думаем как такой тест можно реализовать.

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

    Когда ход действий ясен, приступаем к исследованию доступных подсказок. Тут все как обычно.
    Первое - смотрим как устроены остальные тесты на проекте, может там будет подсказка.
    Второе - смотрим раздел о тестировании той библиотеки или фреймворка который используется.
    Третье - беззастенчиво пользуемся опытом других людей с помощью поисковой машины. Думаю по запросу "Laravel API Testing" много чего можно будет найти. Или по запросу "PHP Mock Server"
    Ответ написан
    Комментировать
  • Ошибка str не могу исправить, как ее исправить?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Правильно конечно отлавливать значения, но для быстрого дебаггинга можно сделать и так
    caption="<b>" + str(name) + "<b>\n<i>" + str(price) + f"<i>\n<a href='{url}'> Ссылка на сайт</a>",

    Т.е. просто при конкатенации ковертировать значения в строковые, и тогда если переменная получит значение None, то оно в строке будет прописано как None. Будет сразу видно откуда пустое значение приходит.
    Ответ написан
    4 комментария
  • Как написать собственную платформу для e-commerce?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Ищите готовые решения в open source сегменте. Что-то типа Magento.
    Вы правильно делаете, что не переоцениваете свои силы. Написать работающую безопасную систему вам никаких ресурсов не хватит и опыта, ведь придется параллельно поддерживать старое решение.
    У готовых решений есть пользовательская база, они проверены временем, многие типовые задачи уже были кем-то решены. А магента сейчас вообще под крыло адобе перешла, и они например вкладываются в образовательные ресурсы по платформе. Я вижу одни преимущества. Ну есть еще OpenCart, она вроде более легковесная, их часто сравнивают.
    А потом просто ищите как залить туда свои данные, уж импорт данных есть в таких системах, через XLS там, или CSV.
    Ответ написан
  • Какой самый оптимальный способ ввести тестирование в готовый проект?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Баги в готовом функционале называются регрессом, соответственно нужно регрессионное тестирование. А какие слои приложения при этом нужно проверять - ну это от архитектуры приложения зависит. Любой слой может сломаться, после внесения изменений, значит по уму надо все слои проверять на регресс. Но на это жизни не хватит. Значит нужно сконцентрироваться для начала на ключевых самых жизненно важных проверках. Да, все функции жизненно важные, но например если корень апишки не отвечает то это суровее чем если не отвечает какой-то один ресурс. Раскидайте по рискам, и по этой иерархии покрывайте. Риск это насколько огромным будет WTF у пользователя если эта штука отвалится.
    Ответ написан
    Комментировать
  • Как вывести статистику по прохождению каждого отдельного автоматизированного теста за длительный период?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Там вкладка History есть. Не оно?
    1*bY7csygX2PtlExGLAz-y7g.png
    А если эту статистику нужно отдельно как-то выводить, то парсить джейсоны из которых все эти данные собственно в аллюре и отрисовываются.
    Ответ написан
    Комментировать
  • Как правильно использовать Given, when и then в UI тестировании вводимых без данных?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Представьте, что ваш тест это эксперимент (над приложением) и попытайтесь прочитать его так:
    При условии что
    GIVEN и GIVEN а также GIVEN,
    Если я WHEN
    To тогда должно произойти THEN .

    Т.е. Given позволяет вам сократить описание предварительной подготовки к тесту
    до описания желаемого состояния приложения, например:

    При условии, что пользователь уже залогинен.
    При условии, что корзина пуста
    При условии, что поле выбрана опция такая-то.
    При условии, что в поле А введено значение Х а в поле Б значение Y

    А потом вы переходите к самому эксперименту.

    When: я нажимаю на кнопку А
    When: и нажимаю на кнопку Б
    Then: создается объект C

    В данном случае скорее всего условие это нахождение на какой-то странице, или то, что выбрана какая-то секция приложения.
    Вы же не можете "в воздухе" нажать кнопку A и Б, правильно? Given это не действие, это состояние.

    Используя Given вы как бы говорите мне все равно каким образом это состояние будет достигнуто, мне важен результат, потому что от него отталкивается мой эксперимент.
    Ответ написан
    1 комментарий
  • Как узнать, поддерживает ли шрифт кириллицу, используя fontaine?

    lxsmkv
    @lxsmkv
    Test automation engineer
    устанавливаешь пакет через pip (https://pypi.org/project/fontaine/)
    а потом вызываешь через консоль приложение
    pyfontaine <шрифт.ttf>
    он выдает отчет о поддерживаемых шрифтом языках.
    Ответ написан
  • Как организовать процесс тестирования начинающему тестировщику?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Слишком широкий вопрос, чтобы так вот взять и дать на него развернутый ответ.

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

    Блитц-тест: если у вас в компании кроме вас нет заинтересованых в этой информации лиц, то уже что-то пошло не так.
    Ответ написан
    Комментировать
  • В чём минусы и плюсы веб-приложений?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Все просто: для каждой платформы свой клиент. Не предоставляя мобильный клиент ты в лучшем случае лишаешь приложение части аудитории, а также уникальных возможностей.

    Ведь мобильное приложение может, например, пользоваться железом мобильного телефона, как то, захват изображений с камеры и их удобная загрузка "в два касания". Или можно через шеринг передать файл в приложение. Это также и GPS, отслеживание маршрута и передача данных о твоем передвижении на сервер, для улучшения пользовательского опыта. Например, такси может видеть на карте где ты и быстрее и удобнее к тебе подъехать. Это и использование голосовых сервисов, и сервисов искусственного интеллекта, например, захват изображения с камеры распознавание текста на нем и произнесение "вслух". Или ты делаешь приложение для управления бюджетом и с помощью камеры и искусственного интеллекта даешь пользователю удобную возможность просто засканировать всю корзину и продукты автоматически добавятся в список и распределятся по категориям и так далее и тому подобное.

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

    Поэтому тут нельзя сравнивать что лучше что хуже. Вопрос скорее в том какие возможности мне как разработчику и продьюсеру (человеку заинтересованному в распространии сервиса), дает или не дает десктопный браузер по сравнению с мобильной платформой для реализации уникального ползовательского опыта.
    Ответ написан
    Комментировать
  • Почему не работает return в java?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Ну так, а куда значение возвращается-то? В пустоту! Кто возвращаемое значение выводить должен? Оберни хотя бы в System.out.println() - сразу все увидишь.
    Ответ написан
    7 комментариев
  • Парсинг динамических сайтов на python?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Не нужно задавать новый вопрос по той же теме (https://qna.habr.com/q/803841), ответы от этого лучше не станут, Вас просто в худшем случае забанят.

    Возьмем Ваш пример со ссылкой: https://youla.ru/moskva/zhenskaya-odezhda/aksessua...
    Не знаю как Вы смотрите через консоль разработчика, но нужно смотреть вкладку Network, там все ресурсы указаны.
    Выбираю из списка ресурсов изображение, и смотрю вкладку headers (заголовки запроса) там указано например
    https://cache3.youla.io/files/images/160_160_out/5...
    Так же в списке файлов можно найти ссылку на api например
    https://api.youla.io/api/v1/products/59edaaaabd36c...
    и такую
    https://api.youla.io/api/v1/texts?app_id=web%2F2&u...

    Или пользуйтесь сторонним неофициальным API https://rest-app.net/api-youla (чего бы я вам сильно не рекомендовал. Вы передаете свои данные авторизации в чужие руки, а судя по ограничению на количество запросов, они просто юзают вышеназванную апи сайта.)
    Ответ написан
  • Ребят, такой вопрос, я вообще не был в ITсфере, но уже много начитался про тестирование игр и ПО, очень хочу в эту сферу, как попасть?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Богдан Кирий Конечно в "кустарной" мастерской вряд ли будут процессы по учебнику или какие-нибудть стандарты. Они им попросту не нужны. Поэтому пользы от такого опыта для применения в условиях средней или крупной компании ну не чересчур много. Например, полностью отсутствует процесс отчетности. Он там и не нужен, отчитываться не перед кем, кроме своей совести. Интересно вот, пытались ли вы привнести что-то в тестирование чтобы его улучшить. Ведь, как гвоорится "плох тот солдат который не мечтает стать генералом". Может пытались автоматизировать рутину или что-то в этом роде?

    Кстати, намедни по Хабру пролетало"FunCorp ищет QA-инженеров: пройди интервью и получ..." - срок еще не вышел, до 3 мая. Дерзайте, попытайте силы на тестовом задании.
    Ответ написан
  • Как создать подобную отчетность Jira по багам? Или как ее улучшить?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Это похоже стандартная диаграмма/гаджет Two Dimensional Filter Statistics которую можно просто добавить на дешборд. Обычно, для диаграммы нужно сперва создать фильтр, на основе которого она будет отображать информацию. Вот ссылка на документацию
    Ответ написан
    Комментировать
  • Как передать арифметическое выражение в аргумент функции?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Если это из основ, то можно математическую операцию обозначить какой-нибудь переменной.
    Tогда ваша функция будет выглядеть как-то так
    def calc(op,*args):
      if op=="add":
        return sum(i for i in args)
      elif op=="square":
        return args[0]*args[0]
    
    print calc("add", 3,12,45) #60
    print calc("square", 12, 32, 7) # 144
    Ответ написан
  • "Тест на способность стать программистом" версия Джоэля Спольски. Что думаете?

    lxsmkv
    @lxsmkv
    Test automation engineer
    То чем многие в советах новичкам пренебрегают, и на чем я от всей души настаиваю - по ходу дела ознакомиться с историей каждого из широко распространенных языков программирования. В каких условиях и для чего он был создан, какую проблему он был призван решить. Какие языки, и парадигмы на него повлияли. Читая, смотря видео об этом и ходя по ссылкам вы сильно укрепите базу, это будет не зря потраченое время.

    Именно поэтому новичкам так тяжело втянуться. Потому что их обучают как сделать шаблонную вещь, но не обьясняют почему все так как оно есть. Соответственно, человек не учится решать проблемы, а учится применять решения. В результате очень скудная аналитическая база и реактивное знание.

    Cи - надо сказать, не самый удобный для повседневных задач язык программирования. Просто он один из "старых". Он создавался когда IT ландшафт выглядел совсем иначе. Никакими вебами 2.0 тогда и в помине не пахло. Был распространен Юникс. И Java я бы тоже не советовал для обучения, там много неочевидных вещей для неподготовленного ума. Т.е для решения прикладных задач он хорош, но для обучения - нет.

    Можете сразу начать изучать JavaScript, который собственно является основным языом программирования применяемым в веб-приложениях. Вас ведь как я понял ведь "веб" привлекает? Чем удобно изучать JS - браузер предоставляет вам готовую платформу для создания графической оболочки приложения. Стыковка действий в графической оболочке на HTML/CSS и функций в скрипте реализована очень интуитивно. Могу порекомендовать "Самоучитель JavaScript" Марины Дмитриевой - книжка старая, но очень правильная. С задачами и решениями которых в современных "учебниках" не найдешь.

    Однако LOGO (как упоминалось выше) я тоже могу порекомендовать для изучения азов. Вот одна из его современных инкарнаций - https://ccl.northwestern.edu/netlogo/. Там даже веб-редактор есть. Куча примеров из коробки. Сразу есть контекст применения - агентное моделирование.
    Чем хорош LOGO - его синтаксис на мой взгляд хорошо демонстрирует и прививает процедурный подход.
    Например, последовательность команд или говоря иначе процедура отмечается блоком
    to <что-сделать> 
    ... 
    end
    В блоке поочередно указываются все процедуры которые необходимо вызвать для выполнения <что-сделать>.

    А вообще, заходишь сюда https://repl.it/languages/ и сюда https://www.tutorialspoint.com/tutorialslibrary.htm
    выбираешь любой язык из туториала и пробуешь. Сравниваешь.
    Ответ написан
    Комментировать
  • Почему в 2019 году Java популярнее, чем Kotlin?

    lxsmkv
    @lxsmkv
    Test automation engineer
    В техническом плане может это и так. Но решает бизнес. Как только делать на другой технологии станет очевидно дешевле или смена технологии будет окупаться - она получит свое распространение.

    Конечный пользователь платит за продукт, а не за язык на котором он написан. Заказчику в принципе все равно на чем написан продукт, лишь бы было дешево, быстро и качественно. А исполнителю быстрее и дешевле нанять разработчиков на яве чем на мало распространенном языке.

    Можно просто задать себе вопрос: "Я готов получать меньше денег за радость работать с новой, более продвинутой технологией?".

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