• Как правильно использовать Given, when и then в UI тестировании вводимых без данных?

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

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

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

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

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

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

    Используя Given вы как бы говорите мне все равно каким образом это состояние будет достигнуто, мне важен результат, потому что от него отталкивается мой эксперимент.
    Ответ написан
  • Как узнать, поддерживает ли шрифт кириллицу, используя 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() - сразу все увидишь.
    Ответ написан
  • Парсинг динамических сайтов на 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
    В техническом плане может это и так. Но решает бизнес. Как только делать на другой технологии станет очевидно дешевле или смена технологии будет окупаться - она получит свое распространение.

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

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

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

    lxsmkv
    @lxsmkv
    Test automation engineer
    брали людей из других команд на пару дней дабы быстро-быстро прогнать функционал что бы не сфейлиться на релизе.
    Исходя из этого могу предположить, что тестировали функционал через исследовательское тестирование по методу черной коробки. Значит вам нужно именно end-to-end тестирование.
    Раз проект для веба и без дополнительных трат, то очевидный ответ - Selenium. Про него написано-переписано и на конференциях рассказано тоннами. Selenium поддерживает несколько языков Java, C#, Ruby, Python. Самый низкий порог вхождения у Python. Почитать/посмотреть про page object pattern и вперед.
    Мне тут как-то на глаза попадался вполне достойный и даже бесплатный курс "Автоматизация тестирования с помощью Selenium и Python".
    На будущее, для диагноза затруднений возникающих в процессе внедрения автоматизации и нахождения возможных путей выхода из них на макро и микро уровне могу посоветовать этот ресурс - testautomationpatterns.org - одна из его создателей небезызвестная Dorothy Graham.
    Ответ написан
  • Интересный вопрос от Я! Как решить проблему неправильных монет?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Вы в рассуждении говорите о "последовательности" выпадения. Тут нет никакой "последовательности". Монеты можно бросить все сразу или по очереди - разницы нет никакой.

    Альтернативно можно решать другую задачу. У нас кубики с пронумерованными сторнами. Первый кубик имеет три стороны (ну представим себе такой), второй - пять, третий - 7, следующий - 2*i+1. Соответственно выбросить единицу на каждом кубике мы можем с вероятностью 1/2*i+1. Нас интересует вероятность того. что после броска всех кубиков количество единиц на них будет нечетным.
    Вспомним элементарную задачу. Пусть у нас два шестигранных кубика. Как мы посчитаем вероятность того что мы получим две единицы? Количество благоприятствующих исходов к количеству возможных исходов. т.е. 1 исход из 11. Идем дальше, у нас два кубика. Какова вероятность того что мы бросим нечетное количество единиц? Это вероятность единицы на одном кубике помноженная на вероятнось "не-единицы" на другом. Т.е. 1/6 * 5/6.

    Думаю такой подсказки будет достаточно.
    Ответ написан
  • Как написать скрипт под динамическую страницу в Load Runner?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Вообще не понимаю зачем брать инструмент для нагрузочного тестирования, когда нужно просто автоматизировать взаимодействие с веб страницей. Не приходилось им пользоваться, так что по самому инструменту ничем не помогу.
    Сам принцип довольно простой.
    Скрипт берет html страницы и выявляет в нем ней нужные элементы. A потом производит нужное действие в зависимости от того какие элементы нашлись. Если это input type=text - вводит в него значение "test", если это input type=radio то выбирает тот в котором значение самое длинное. Для парсинга html есть там всякиe библиотеки например beautifulsoup.
    Ответ написан
  • Как простестировать игру на сайте?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Раз тестирование ручное, все 2 тысячи с плюсом не реально протестировать руками, это понятно. Я думаю предполагается, что вы обснуете выборку браузеров, осей и разрешений. Я бы посмотрел статистику по распространненности браузеров и плаформ и разрешений например тут, и взял бы самые рапространенные. Потом по методу pairwise выбрал бы комбинации. Причем предпочтение я бы отдавал мобильным платформам, потому что mobile first.

    Если делать регрессионное тестирование, то тут нужно уже пилить автоматизацию со сравнением снимков.
    Ответ написан
  • Зачем нужно ООП?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Абстракции являются способом добавить системе модульности. Потому что требования к (крупной) системе постоянно меняются. Тут заменяемость и расширяемость - важные факторы. Обычно это еще называют "гибкостью". Привязываться к конкретным имплементациям - очень быстро выходит боком. Поэтому все на абстракциях, даже там где они возможно не нужны. Но поскольку инженер не знает, что заказчик захочет завтра - сразу все заворачивает в абстракции. Отсюда появляется масса кода который просто поддерживает эту расширяемость. Поэтому когда смотришь на конечный продукт и на тот код из которого он сделан, думаешь это ведь можно было уместить в 100МБ, а у нас система на 6 Гб. Да, если конечный алгоритм отлить в железе он будет компактным но не будет расширяемым. Это "цена" за возможность внесения корректировок в систему, не переделывая систему целиком.
    Ответ написан
  • Как написать документацию для приложения?

    lxsmkv
    @lxsmkv
    Test automation engineer
    User story описывает цели которые могут быть достигнуты с помощью приложения. Они определяют пользу. Например, чтобы решить какую задачу выполнить сегодня, пользователь хочет определить самые приоритетные задачи. Польза приложения тут в помощи принятию решений по задачам. Тут нужно думать максимально с т.з конечного пользователя. Зачем он что-то делает и как продукт может помочь ему в этом.

    Use cases будут включать в себя описания какие взаимодействия с приложением пользователь может произвести чтобы достичь своей цели. Например: Отсортировать по приоритету. Отфильтровать по тегам. И пр. По юзкейсам можно проверить, что приложение действительно предоставляет заявленные функции заявленным образом.

    По юзкейсам можно проводить системное тестирование. Т.е. есть заявленный сценарий, работает он или нет.

    Функциональная спецификация определяет детально устройство приложения, с подробным описанием всех технических "если", и "а вдруг".

    По функциональной спецификации пишется реализация, и сам код приложения уже покрывается юнит-тестами.
    Ответ написан