пятница, 13 июля 2018 г.

Личные консультации и подготовка к QA интервью

Всем привет,

я решил что пора проводить индивидуальные консультации, чтобы помогать людям и передавать свои знания новому поколению:

1) Ревью резюме с рекомендациями (я проверяю резюме, и рассказываю что надо переписать, что убрать и что добавить, чтобы резюме выглядело интереснее и вас заметили и пригласили на интервью) - по результатам могу порекомендовать вас в одну из компаний как подходящего кандидата (если у меня будут подходящие контакты и вакансии)

2) Помощь в подготовке к техническому интервью на позицию QA Manual / QA Automation (репетиция собеседования, дополнительные тренировки с практическими заданиями по теории тестирования, сетям, линуксу или Python)

3) Помощь в прокачивании практических навыков и знания теории в Networks, Linux, Python, Selenium, REST API, Android mobile testing (любая из этих тем - будут практические задания "на вырост", подсказки и помощь с любыми вопросами, будем работать индивидуально  пока все не получится)

4) Как правильно проводить технические интервью (все тонкости проведения интервью - будет актуально не только QA, но с фокусом именно на QA - подробный разбор всех шагов, важных вопросов, репетиции)

Если Вам интересно - напишите мне в Telegram (xwizard707) или Skype (xwizard707).

Время прокачивать свои навыки и переходить на новый уровень!

пятница, 15 июня 2018 г.

Selenium: дожидаемся загрузки страницы

Наверное, почти каждый, кто пробовал писать тесты на Selenium, знаком с explicit wait и implicit wait.

Но иногда их не хватает, да и хочется чтобы тесты работали быстро.

Еще есть AJAX и скрипты, которые подгружают контент только при скроле странички и не дают нам успокоиться просто установкой таймаутов. Нужно что-то еще.

Конечно, для каждого случая тут можно придумать "свое решение" (что чаще всего и делают).

Здесь хочу поделиться хорошей ссылкой, как один инженер уже решил такую задачу для себя (и почему эта проблема возникла у него):
https://blog.codeship.com/get-selenium-to-wait-for-page-load/

Мое решение я сделал в виде функции, может, и не самой красивой, но у страничек почти не остается шансов незагрузить весь свой контент (для загрузки картинок, конечно, нужна дополнительная магия и она тоже есть в виде отдельной функции).

Логика простая - скролим страничку и с помощью выполнения JavaScript дожидаемся загрузки странички и каждой картинки на страничке.

Такую функцию можно использовать для элементарных тестов на время загрузки страниц в браузере (с учетом времени на рендеринг страницы и загрузку всех картинок)

Код доступен здесь: https://github.com/TimurNurlygayanov/test-tasks-example/blob/master/selenium_wait.py

Комментарии и предложения о том, как можно сделать лучше, приветвуются )).

вторник, 5 июня 2018 г.

Ожидаемый результат

Только что подумал вот о чем - когда описываю баг репорт, каждый раз немного лукавлю.

Я пишу:

Steps To Reproduce: 1,..2..,3..
Expected Result: Страница выглядит хорошо, все элементы отображаются правильно.
Actual Result: Но, к сожалению, что-то не так <screenshot>

На самом деле все немного иначе:
Steps To Reproduce: open page <url>
Expected Result: На этой странице по-любому сейчас будет мясо будут баги.
Actual Result: Ну вот, как всегда, давайте делать скриншот.

То есть каждый раз открывая страницу, я начинаю думать "ну что на этот раз будет не так?". Поэтому Expected Result многие из нас пишут наоборот, а не так как на самом деле :)

Хорошей всем рабочей недели :)

среда, 23 мая 2018 г.

Игра в Кубики

Очень многие в детстве играли в деревянные кубики, выстраивая из кубиков слова, змейки, пирамидки, стенки или колонны :)

У вас появилась возможность поиграть в кубики, но теперь уже онлайн! Конечно же, мы добавили специальные правила, чтобы игру было интереснее тестировать (многие просили нас сделать задание на тестирование требований, и теперь такое задание у нас есть :) ).

На игровом поле всего 6 кубиков, и 4 цвета (один цвет - белый, означающий отсутствие кубика).

Правила игры:
1. Белый кубик - пустое место, куда может быть установлен любой кубик. Сверху пустого кубика не могут находиться другие кубики.
2. Красный кубик весит в два раза больше других кубиков.
3. Кубики одного цвета не должны соприкасаться.
4. Зеленый кубик выдерживает вес одного стандартного кубика.

Попробуйте придумать тестовые сценарии для такой игры, а потом проверьте сколько баллов получится набрать, пройдя все кейсы из вашего тест плана :) Максимально можно набрать 160 баллов, игра доступна в Песочнице QA Battle (для доступа к заданию нужна регистрация в QA Battle).

четверг, 17 мая 2018 г.

Очень просто автоматизируем сбор урожая в Android игре

Недавно был опубликован отличный инструмент для автоматизации мобильных приложений - Airtest IDE.

Этот фреймворк использует распознавание картинок на экране мобильного устройства, и умеет делать все, что может потребоваться для автоматизации любого приложения.

Мне нравится играть в Township, поэтому на примере этой игры я и решил поэкспериментировать и автоматизировать простые действия пользователя, проверив возможности фреймворка.

Интерфейс Airtest IDE выглядит удобно, все достаточно просто и понятно.

Тесты пишутся на Python, при этом в IDE мы можем объявлять собственные переменные, присваивая им картинки с экрана устройства, выглядит это так:


В Python коде это будет выглядеть иначе:

carrot = Template(r"tpl1526539603051.png", record_pos=(0.078, -0.018), resolution=(1920, 1080))

Картинки складываются прямо рядом с Python скриптом отдельными файлами.

Пример ожидания и нажатия кнопки "Забрать" (для ежедневной награды пользователю):


Немного разобравшись с возможностями инструмента, я перешел к автоматизации реального сценария:

1) Открываем игру
2) Ждем ежедневную награду и забираем ее, если награды нет, то просто пропускаем этот шаг
3) Если на поле есть созревшая морковка, то собираем всю морковку
4) Если на поле есть созревшая пшеница, то собираем всю пшеницу
5) Если есть пустые поля - засеиваем их пшеницей

Пример кода, который в результате получился, можно посмотреть здесь.

Итого:

Сильные стороны Airtest IDE:
1) Поддерживает Python синтаксис и сторонние Python библиотеки
2) Умеет находить элементы по картинке (а значит с его помощью можно автоматизировать любое приложение, в том числе мобильные игры)
3) Есть удобные локаторы, например, можно найти элемент по тексту внутри элемента и даже по регулярке, можно применять сразу несколько локаторов
4) Основан на Poco Library и поддерживает все его фичи.

Слабые стороны Airtest IDE:
1) Пока нет поддержки iOS (но обещают скоро сделать)
2) IDE не работает на Linux (либо Windows, либо MacOS) - но можно писать на чистом Poco SDK, тогда и IDE не нужна
3) Нет всего многообразия продвинутых локаторов как в Appium (например XPath) - но есть другие, и их вполне хватает
4) Нет подробной документации по продвинутому использованию (будем надеяться скоро появится)
5) Нет нормальной интеграции с тестовыми фреймворками, придется одновременно использовать Airtest IDE и PyCharm, копируя куски кода, чтобы написать нормальный тест, либо сразу переходить на PyCharm + Poco SDK, без Airtest IDE.

среда, 16 мая 2018 г.

Appium: автоматизация Android приложений

Appium - известный инструмент автоматизации мобильных приложений (Android & iOS), с возможностью написания тестов на большом количестве языков программирования / фреймворках, среди которых есть Python (полный список поддерживаемых языков можно найти на сайте).

Для моего рабочего проекта потребовалось сделать скрипт, обходящий все пункты меню в мобильном приложении и проверяющий число товаров в каждой категории.

Дополнительные условия:
1) Пункты меню могут быть вложенными
2) Меню динамическое, меняется каждый день вручную несколькими людьми
3) Надо проверить каждую категорию (кликнуть на каждый пункт меню и проверить сколько будет доступно товаров на странице)

четверг, 10 мая 2018 г.

Метрики/KPI в тестировании: как узнать кто хороший мальчик?



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

Как говорит Илья Лыков, у которого я многому научился, менеджеры придумывают численные метрики для того, чтобы выразить то, что они уже и так знают, в виде чисел.
При этом часто нерациональные, эмоциональные решения и выводы формулируются в виде формально рассчитанных числовых метрик, которые можно показать в презентации или использовать как аргумент при отстаивании своего взгляда на проблему и свое решение.

За время работы в качестве QA инженера, лида и менеджера, я сформулировал для себя собственные практики оценки QA специалистов, которые, конечно же, субъективны, но все-таки хочу ими с вами поделиться.