QArelia | Блог про тестирование, QA 🧩
1.13K subscribers
39 photos
66 links
Про тестирование, автотесты, QA.
🚀 Fullstack QA Engineer
💡 Делюсь опытом, лайфхаками и полезными ресурсами

✏️ Связь: @prafair
📌 Голосовать за канал: t.me/boost/qa_relia
😊 Эмодзи: t.me/addemoji/TestAutomation
Download Telegram
Поздравляю всех с наступающим Новым годом! 🎄
Желаю успехов, интересных фич, поменьше багов и удачных релизов! 💫
WebDriver радует нас хорошими новостями

Добавилась поддержка печати страниц в PDF:
https://t.me/webdriver_ru/30

В спецификацию WebDriver W3C добавили поддержку Shadow DOM.
Ну а пока пользуемся JavaScript'ом или (что лучше) селенидом😊

https://t.me/webdriver_ru/31

#selenium #webdriver
Chromium ограничит доступ к частным API

В ходе аудита команда Chromium обнаружила, что некоторые браузеры на основе Chromium смогли интегрировать функции Google, такие как синхронизация, звонок по клику, которые предназначены только для использования в Google Chrome.
Это означало, что небольшая часть пользователей могла войти в свою учётную запись Google и сохранить свои личные данные синхронизации Chrome, такие как закладки, не только в Google Chrome, но и в некоторых сторонних браузерах на основе Chromium.

Ограничение к частному API вступит в силу с 15 марта 2021 года.

Для пользователей, которые уже получили доступ к функциям Google через сторонний браузер на основе Chromium, данные будут по прежнему доступны.

#chromium #браузеры
Результаты первого в истории Selenium пользовательского опроса

Опрос длился чуть больше месяца, по итогу ответило 410 человек.

🚀 Управление браузером
Этот пункт выбрали 59,5% (243) отвечающих. Это неудивительно, было бы очень удобно управлять браузерами прямо в Selenium, подобно WebDriverManager, который уже это умеет, и даже лучше, например, используя концепцию toolchain'ов, скачивая сами браузеры, а не только их драйверы.

🛠 Фреймворки
61% (250) пользователей используют фреймворки на основе селениума. В основном, связанные с JavaScript'ом. Некоторые используют несколько фреймворков в зависимости от языка или проекта.

🎭 Headless vs headful
57% (233) опрошенных хотят запускать тесты в headful режиме. Отмечу, что более новые инструменты, такие как Puppeteer и Playwright по умолчанию запускают тесты в headless режиме.

🌐 Браузеры
Люди склонны отдавать предпочтение новейшим версиям браузеров с автоматическим обновлением, причем более 55% это подтверждают. Но бывают исключения, например, люди выбирают конкретную версию для IE.

В большинстве (78%) пользователи также хотят протестировать в нескольких браузерах. Это противоречит только поддержке Chrome, которую мы видим в социальных сетях.
Наиболее часто используемые браузеры для тестирования:

🔶 Google Chrome (98%)
🔶 Firefox (67%)
🔶 Microsoft Edge (33%)
🔶 Safari (29%)
🔶 IE (13,5%)

51,6% подтвердили, что тестирование в нескольких браузерах является сложной задачей, а ещё 27,3% - выбрали 3 из 5.
Вероятно, именно здесь некоторые фреймворки становятся популярными, поскольку они устраняют необходимость в понимании асинхронности браузеров. У Puppeteer и Playwright всё ещё есть проблемы, поскольку они добавляют механизмы ожидания, похожие на те, что есть в Selenium.

📱Мобильные браузеры
Пользователи хотят больше использовать мобильные браузеры.

Из 410 респондентов 367 хотят протестировать в мобильном браузере. Интересно, что это далеко не только в Chrome для Android и Safari для iOS.

Ниже приведён список браузеров и процент пользователей, желающих его использовать.

🔷 Chrome на Android и iOS: 91%
🔷 Safari на iOS: 69%
🔷 Firefox для Android: 38%
🔷 Samsung Internet Browser: 16,6%
🔷 Microsoft Edge: 14%

🌐 Поддержка языков программирования
Большинство пользователей используют Java или Python:

◻️ Java: 67%
◻️ Python: 31%
◻️ JavaScript: 21,4%
◻️ .NET: 17,6%
◻️ Ruby: 6,1%
◻️ PHP: 1,5%

💡Что пользователи хотят улучшить в Selenium
Основные категории ответов:

1️⃣ нестабильность (flaky) (35,3%)
2️⃣ управление браузерами (18,3%)
3️⃣ документация (15%)
4️⃣ новые API (9,2%)
5️⃣ фреймворк (6,5%)

🎉 Общий итог
Из 410 респондентов 219 (53%) сказали что-то хорошее о Selenium и в общем-то были благодарны за этот продукт.
Некоторые из основных причин - простота API, хорошая обратная совместимость и открытый исходный код.

#selenium #статистика
🚀 Moon: поддержка эмуляции для мобильных платформ

Теперь запуск тестов на Chrome на разных мобильных платформах стал проще, благодаря новому API, которое предоставляет Moon:

http://moon.example.com:4444/mobile

В зависимости от выбранного устройства будут выставляться размеры окна и User-Agent. В данный момент поддерживается только Chromium.

📲 Пример реализации на Java:

ChromeOptions options = new ChromeOptions();
options.setCapability("browserVersion", "87.0");
options.setCapability("moon:options", new HashMap<String, Object>() {{
put("mobileDevice", new HashMap<String, Object>(){
{
put("deviceName", "Apple iPhone XR");
put("orientation", "landscape");
}
});
}});
WebDriver driver = new RemoteWebDriver(new URL("http://moon.example.com:4444/mobile"), options);


#полезности #selenoid
🆚 Плюсы и минусы тест-кейса и чек-листа

📄 Тест-кейс
легко понять даже новичку
минимальное количество вопросов коллег
при грамотном написании легче для автоматизации

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

☑️ Чек-лист
легко и быстро создавать
проще поддерживать
меньше текста, меньше копипасты
уменьшение эффекта пестицида

различная интерпретация одних и тех же действий
сложнее для понимания, меньше подходят для обучения
меньшая детализация, неустраивающая заказчика или руководство

#тестирование #тест_кейс #чек_лист
Обзор новостей после затишья 🤖 (совсем как у Selenium 4)

⤵️ Что произошло самого интересного за последнее время?

🔹 Playwright продолжает наращивать набор фич: новый Test Runner, который поддерживает контекст браузеров, умеет запускать тесты параллельно и обладает поддержкой фикстур.
Добавили Playwright Trace & TraceViewer, который умеет снимать snapshot страниц для последующего дебага, инспекции элементов и трафика.
Вдобавок реализовали Reporter API, уже готова реализация для Allure.

🔸 Продолжается эпопея с новым стандартом - WebDriver BiDi, обьединяющий лучшее от WebDriver и Chrome DevTools Protocol (CDP). Chrome рассказал более подробно про следующие шаги в этом направлении.

🔹IntelliJ IDEA снова радует нас новыми возможностями — Test Data и Selenium Page Object Generator.
Test Data плагин позволяет генерировать различные рандомные значения для тестов и не только.
Selenium Page Object Generator упрощает написание пейдж обжектов для разных фреймворков и языков. Конечно, плагину ещё необходимы доработки, чтоб быть более юзабельным.

🔸 Конференции: Heisenbug 2021 и Podlodka QA Crew.
Удалось немного посмотреть подлодку, подчерпнул несколько новых идей для себя, например, про мониторинг в продакшене, продуктовые лайфхаки для QA, улучшение взаимодействий с разработчиками с помощью юнит-тестов, правильное проведение нагрузочного тестирования.

#новости
Forwarded from Грейдап
Йоу, готов драфт программы предстоящего IT мероприятия 🥷

(Нетворкинг + 2 спикера + Питч-сессия)

18:45 — 19:00 Встре­ча гостей
19:00 — 19:20 Нетворкинг для интровертов (20 минут)
19:20 — 20:00 Выступление первого спикера (40 минут)
20:00 — 20:20 Питч-сессия (20 минут)
20:20 — 21:00 Выступление второго спикера (40 минут)

Получилась на 2 часа активность. Можно придумать организованное афтерпати, но я пока не придумал.


Нетворкинг для интровертов:
Можно сделать по классике — Меня зовут Миша, я фронтент разработчик. И так по кругу.
Либо докрутить до чего-то более концептуального.

Питч-сессия:
Это формат открытого микрофона где можно заявить о себе и своей задаче:
Возможные темы: поиск людей в команду, поиск финансирования, поиск исполнителей для стартапа, поделиться кейсом, что-то другое
4 выступления по 5 минут

Выступления спикеров:
[самое противоречивое направление]
С одной стороны круто получать информацию по конкретному запросу
Frontend / Design / Backend / Тестирование (QA) / DevOps / Project Mangement

С другой стороны есть определенный кайф в том чтобы узнать что-то из нецелевой сферы.

P.S. Напшите в чат — ради чего вы бы пришли в пятницу вечером на мероприятие? Возможно вам интересно узнать про софт-скиллз? 🤷‍♂️
​​Про ISTQB
ISTQB — международная некоммерческая независимая организация по сертификации в сфере тестирования.
ISTQB разработала программу "ISTQB® Certified Tester", которая является лидером в сфере сертификации компетенций в тестировании.

Сертификация делится на 3 уровня:
🔹Базовый
🔹Продвинутый
🔹Экспертный

Более подробную схему можно посмотреть здесь.

Подготовка
Года 2 назад я заинтересовался темой сертификации. Было интересно почитать, узнать что-то новое для себя.
В первую очередь я прочитал основной документ — Syllabus. В нём содержится вся информация, которая может потребоваться на экзамене. Затем я подробно ознакомился с официальными терминами. В документе их много, но достаточно выучить только те, которые относятся к Foundation.
Так как я решил сдавать на русском языке, то пришлось более внимательно обратить на это внимание, т.к. порой значение термиов отличаются одним словом (например, каверзная валидация и верификация). Также я пообщался с опытным человеком, который помог сориентироваться по подготовке, на что заострить внимание и т.д.. Важно соотнести свой опыт с документом, потому что не всегда ваши знания соответствуют написанному в документе.
Также мне помог при подготовке набор заданий с сайта https://istqb-training.ru (возможно уже старые задания, но в целом задания похожи на реальные).

Сдача экзамена
Проходила удалённо в офисе. Лучше заранее подготовить всё, что вас просят в присланном e-mail с объяснениеми. Например, это касается настройки плагина, настройки телефона. Продумайте заранее место, где вы будете сдавать. В комнате не должно быть никакой техники от слова совсем (вас попросят убрать всё или закрыть чем-нибудь, даже просто неработающее радио или телевизор).
За 48 часов необходимо пройти системный тест компьютера и телефона, она проходится достаточно быстро, проблем не должно возникать)
На самом экзамене попросят показать все открытые программы, так лучше оставить один браузер, а всё-всё-всё закрыть (все вкладки и все программы).
Камера телефона должна располагаться так, как это разрешено в инструкции, то есть на достаточном расстоянии, чтобы увидеть вас и компьютер было полностью видно) Я решал эту проблему прям на самом экзамене, потому что думал, что всё нормально, но меня попросили настроить чуть ниже камеру) Лучше купите штатив или нормальную подставку для телефона.
В самом экзамене меня напрягло долгое подключение к самому экзамену. Я уже было собрался писать им в чат, но всё прогрузилось и я начал решать экзамен. 40 вопросов, 60 минут на всё, 1,5 минуты на вопрос.
По ходу пьесы на странице с экзаменом я сразу открыл текстовое модальное окно, в которое можно использовать, как черновик.
Можно спокойно перемещаться между заданиями, главное на всё ответить)
Конкретно новых и сложных заданий не появилось. Как обычно, всё дело в мелочах и внимательности, особенно к цифрам, потому что счёт идёт порой на десятитысячные.
Неудобно было работать с табами в модалке для задания, там было 2 таблицы в одной модалке на двух разных табах. То есть постоянно надо переключаться туда-сюда.
Ну и в конце, после того выходишь из режима тестирования сразу появляется сообщение, что вы сдали экзамен и небольшая статистика.

Послемыслие
Опыт удалённой сдачи экзамена — интересный и незабываемый. Да и в целом, полученные знания в ходе подготовки и сдачи очень ценны. Конечно, всё и не всегда достижимо на практике, а зачастую недостижимо вовсе. ISTQB не даёт 100% готовых решений. Но что-то применить всегда полезно и нужно, например, какие-то определённые подходы к тестированию. Следующий уровень Advanced тоже действует неограниченное количество времени, но экзамен посложнее, требуется более тщательная подготовка.

#статьи #istqb #qa
Forwarded from Грейдап
Айтишная пятница в Петрозаводске!

Приглашаем тебя провести вечер пятницы в кругу IT специалистов, послушать доклады и пообщаться.

Встреча пройдет в формате митап — несколько докладов, неформальное общение и питч-сессия.

Питч-сессия — это крутая возможность презентовать свой стартап, продукт, идею или задачу для аудитории встречи за 5 минут!

Для участников питч-сессии вход свободный.

Нетворкинг — отличный способ познакомиться с другими айтишниками, расширить сеть деловых контактов, а также найти партнеров и единомышленников для реализации новых проектов.

Встреча точно будет полезна для:
— начинающих и опытных IT специалистов
— студентов технических специальностей
— стартаперов и предпринимателей в сфере IT
— инвесторов в IT проекты
— всех, кто хочет познакомиться и пообщаться с гостями встречи.

Место: коворкинг «CreatePtz», Петрозаводск, ул. Казарменская 4
Время: 27 августа, пятница 19:00 — 22:00

Регистрация по ссылке: https://lorety.com/e/LY1ATxXV
Количество мест ограничено.
🚀 Как разрабатывают API в Slack

На днях вышла бомбическая статья в инженерном блоге компании Slack:

https://slack.engineering/how-we-design-our-apis-at-slack/

После прочтения захотелось выделить главные мысли:

1⃣ Создавайте API методы, которые решают одну проблему, а не несколько одновременно (старайтесь возвращать ограниченное количество объектов, разбейте на пагинацию)

2⃣ Упростите работу с API
Например, добавьте возможность отправить запрос прямо с браузера, добавьте сниппеты кода.
Всегда спрашивайте себя, что важно для вашей платформы, которую вы делаете.

3⃣ Создайте правила именования методов, переменных и т.д.

4⃣ Возвращайте понятные и подробные сообщения об ошибках (например, со ссылками на документацию и т.д.)

5⃣ Делайте эндпоинты перформансными и масштабируемыми
— пагинация больших коллекций
— не вкладывайте одни большие коллекции в другие
— добавьте ограничение на частоту запросов
Если API работает «достаточно хорошо» для вас — это не значит, что этого достаточно для остальных. Часть удовольствия от использования API заключается в том, что мы никогда не знаем, как другой разработчик собирается его использовать. И всё же вам всё ещё предстоит предвидеть множество возможностей, о которых вы можете не знать.

6⃣ Избегайте ломающих совместимость изменений
Или другими словами — то, что работало вчера, должно работать и сегодня.

Процесс проектирования API:
1) написать API спецификацию
2) провести внутреннее ревью API в специальном канале
3) собрать ранние отзывы от партнёров
4) провести бета-тестирование

#новости #статьи
Как автоматизируют в Твиттере

Небольшое интервью с Kalisha Campbell, Software Engineer из Твиттера:
https://medium.com/@MHendersog/how-twitter-does-automated-testing-e27bce0b947e

В статье поднимается несколько интересных тем. Например, что не все правильно понимают концепцию Accessibility. Приложение должно быть доступным не только для людей с ограниченными возможностями, но и также для людей, которые пользуются разными браузерами. В статье рекомендуют тестировать в Safari и в Firefox 👀

Ещё одним интересным моментом я бы отметил, что они предпочитают тулы, которые не требуют написания кода, например, Postman и Endtest.

Несколько пунктов, как проверить, что с вашими автотестами всё хорошо:
— автотесты запускаются где-то на удалённом сервере или в облаке
— используется параллельный запуск тестов
— полная регрессия занимает меньше 15 минут
— есть интеграция с CI/CD
— тесты запускаются автоматически
— результаты генерируются автоматически

#статьи #автоматизация
Test as Text Approach в IntelliJ IDEA

Недавно IntelliJ IDEA добавила нативную поддержку для подхода "test cases as code":
https://blog.jetbrains.com/qa/2021/08/test-as-text-approach-in-intellij-idea/

Данный подход позволяет держать тест-кейсы в репозитории, рядом с кодом приложения.

В релизе 2021.3 добавили поддержку многоуровневого запуска тестов, а также возможность использования общих шагов. К слову, в этом же релизе добавили возможность добавления таблицы в Markdown.

Кажется, что почти всё сделано и готово к использованию. Было бы здорово иметь интеграции не только с TestRail, а также с Zephyr Squad, Zephyr Scale, Xray.
На ютреке JetBrains уже есть эти задачи, думаю скоро реализуют👍

#ide #intellijidea #idea
#истории #opencv #хакатон
Как однажды я в CV 👁‍🗨 хакатоне участвовал

Весной я с коллегой (кстати, он тоже не разработчик) решили поучаствовать в хакатоне по компьютерному зрению iVision 2021. У меня опыта в этой сфере не было, поэтому я готовился изучать что-то новое на предстоящем мероприятии 💫

В нашей категории была дана задача на распознавание свободных парковочных мест 🚗 Организаторы дали видеопотоки нескольких камер и нужно было показывать свободные места в live-режиме 🖥
На втором этапе, на который мы прошли и это было уже достижение, мы дорабатывали раннее созданное нечто 😂 Теперь надо было стать фронтенд-разработчиком и создать веб-приложение в виде карты 🗺, на которой можно наглядно увидеть свободные места, а также бота 🤖 для Telegram, оповещающего о наличии свободного места на конкретной парковке.

Начали думать и искать хотя бы какие-то зацепки, что и как делать. Что-то находилось, но оно не совсем то и не работало в нашем случае 👀 Посмотрели как работает пример с Хабра — работал он откровенно криво и долго.
Затем попробовали библиотеку ImageAI, которая давала уже хоть какие-то результаты по распознаванию автомобилей, но даже она с какой-то большой погрешностью еле-еле могла различить автомобиль 🚗 на некоторых камерах из-за угла наклона. Количество автомобилей сложно было даже глазами посчитать, особенно вдалеке.
Исходя из этого было решено дообучать модель под наши условия 🚴‍♂️

Следующий этап выборки и разметки данных занимал от 6 до 12 часов и проделывался дважды из-за размеров картинок, влияющих на скорость обработки.
Получилась на время работающая модель с плюс-минус хорошим результатом 🎯
И ещё это дело куда-то задеплоить надо было, тут пришлось стать девопсом 🧙‍♂️

Я перепробовал 3 сервиса для деплоя: Heroku, Google App Engine и DigitalOcean.
С Heroku было сложно разобраться из-за внутреннего движка и непонятных ошибок, хотя там есть отдельный план для AI/ML приложений, но он платный разумеется.
Google App Engine отказался обрабатывать долгие запросы, такое он увы не поддерживает 🤷‍♂️
Спасибо DigitalOcean, что не тупил и всё поднял с первого раза 👌 Но ресурсов это съедало много.

Но вскоре нас поджидал главный подвох 🗿

На финальном этапе наша модель поплыла 🚣‍♀️, потому что растаял мартовский снег, а дело было в апреле уже.
По сути цель задания осталась та же, просто надо было всё красиво оформить в виде веб-странички с картой, на которой видны парковки и свободные места. А с помощью телеграм бота оповещать 📣 о наличии свободного места на определённой парковке.
Надо было что-то быстро создать, поэтому всё было написано в HTML файле, юзая jQuery, и даже ни капли не стыдно, зато что-то работало и удалось разобраться с Google Maps 📈
Telegram бот на Python вполне свои функции выполнял: подписался на парковку, получил уведомление, побежал парковать машину 👍
Только вот с точностью была проблема, модель подвела 🤔

Но несмотря на сложности, это был интересный челлендж 🙌 Мне понравилось пробовать разные решения с их плюсами и минусами, тестировать работу сервиса и получать наглядный результат. Разбивать задачи на подзадачи 🧩 Демонстрировать ход решения в Jupyter Notebook 📝 Вспоминать Python и JavaScript 😊

Извлёк некоторые уроки для себя на будущее, что надо больше изучать и понимать работу алгоритмов, в каких случаях лучше применять. И улучшать работу с фронтенд фреймворками 📚