🔥 Стартуем с новым потоком «Python Base»
Курс подойдёт как ручным QA-инженерам, так и автотестировщикам на Java, желающим расширить стек.
Начинаете с ручного тестирования?
Python станет вашим быстрым входом в автоматизацию. Благодаря простому синтаксису, мощным библиотекам (Selenium, Playwright, Pytest, Requests) и низкому порогу входа вы быстро научитесь писать автотесты и внедрять их в реальную работу.
Уже пишете автотесты на Java?
Знание Python расширит ваш стек и откроет новые возможности. Во многих компаниях Python используют для тестирования API, мобильных приложений, data-пайплайнов и DevOps-задач. Плюс, код пишется быстрее, а инфраструктура настраивается проще.
Приходите на первое бесплатное занятие уже в этот четверг в 20:00 (МСК).
🔗 Подробнее о программе, регистрация на первый урок — по ссылке.
Курс подойдёт как ручным QA-инженерам, так и автотестировщикам на Java, желающим расширить стек.
Начинаете с ручного тестирования?
Python станет вашим быстрым входом в автоматизацию. Благодаря простому синтаксису, мощным библиотекам (Selenium, Playwright, Pytest, Requests) и низкому порогу входа вы быстро научитесь писать автотесты и внедрять их в реальную работу.
Уже пишете автотесты на Java?
Знание Python расширит ваш стек и откроет новые возможности. Во многих компаниях Python используют для тестирования API, мобильных приложений, data-пайплайнов и DevOps-задач. Плюс, код пишется быстрее, а инфраструктура настраивается проще.
Приходите на первое бесплатное занятие уже в этот четверг в 20:00 (МСК).
🔗 Подробнее о программе, регистрация на первый урок — по ссылке.
Media is too big
VIEW IN TELEGRAM
Как работать с базами данных в автотестировании: Connection Pooling и DataSource
💻 Если в тестах вы работаете с базой данных, важно понимать, как правильно управлять соединениями.
Давайте разберемся, чем отличается DriverManager от DataSource, зачем нам Connection Pool и почему нельзя забывать закрывать соединения.
Почему DriverManager — не лучшее решение?
Когда мы вызываем DriverManager.getConnection(), каждый раз создается новое соединение с базой данных. Это, во-первых, долго: каждое подключение требует установления TCP/IP соединения, аутентификации и передачи данных. Во-вторых, ресурсоемко: база имеет ограничение по количеству активных соединений, и они быстро заканчиваются.
Как работает DataSource и почему он эффективнее?
В отличие от DriverManager DataSource позволяет использовать Connection Pool, который:
👉 Создает соединения заранее. Мы не ждем подключения каждый раз.
👉 Повышает производительность. Из пула можно быстро получить готовый Connection.
👉 Оптимизирует нагрузку на БД. То есть ограничивает количество активных соединений, предотвращая сбои.
В тестировании часто используют PGSimpleDataSource, который не использует Connection Pool и работает аналогично DriverManager. Это удобно для небольших тестов, где важна простота. Но в продакшене Connection Pool обязателен для стабильной работы.
❗️ Всегда закрывайте соединения!
Каждое Connection — это реальный TCP/IP сокет. Если не закрывать соединения, их лимит в ОС быстро исчерпается, а приложение перестанет работать.
На курсе «Java Advanced 2.0» разберем лучшие практики работы с базами данных, многопоточность в тестах, API-тестирование и многое другое.
Автор программы —Дмитрий Тучс, Head of QA в Dodo Engineering, спикер Codefest, Codetalks, EpicHey!, ментор и open-source контрибьютор.
🔗 Зарегистрируйтесь на первый открытый урок — по ссылке.
Давайте разберемся, чем отличается DriverManager от DataSource, зачем нам Connection Pool и почему нельзя забывать закрывать соединения.
Почему DriverManager — не лучшее решение?
Когда мы вызываем DriverManager.getConnection(), каждый раз создается новое соединение с базой данных. Это, во-первых, долго: каждое подключение требует установления TCP/IP соединения, аутентификации и передачи данных. Во-вторых, ресурсоемко: база имеет ограничение по количеству активных соединений, и они быстро заканчиваются.
Как работает DataSource и почему он эффективнее?
В отличие от DriverManager DataSource позволяет использовать Connection Pool, который:
В тестировании часто используют PGSimpleDataSource, который не использует Connection Pool и работает аналогично DriverManager. Это удобно для небольших тестов, где важна простота. Но в продакшене Connection Pool обязателен для стабильной работы.
Каждое Connection — это реальный TCP/IP сокет. Если не закрывать соединения, их лимит в ОС быстро исчерпается, а приложение перестанет работать.
На курсе «Java Advanced 2.0» разберем лучшие практики работы с базами данных, многопоточность в тестах, API-тестирование и многое другое.
Автор программы —Дмитрий Тучс, Head of QA в Dodo Engineering, спикер Codefest, Codetalks, EpicHey!, ментор и open-source контрибьютор.
🔗 Зарегистрируйтесь на первый открытый урок — по ссылке.
Please open Telegram to view this post
VIEW IN TELEGRAM
Мобильная автоматизация: почему стоит освоить Appium на Python
Appium позволяет писать тесты одновременно для Android и iOS, используя единый подход и один язык программирования — Python.
А еще фреймворк поддерживает работу с реальными устройствами и эмуляторами и интегрируется в CI/CD-процессы.
Подробно о работе Appium мы говорим на курсе «Python Base». А также разбираемся с веб-автоматизацией, тестированием API, тест-менеджментом и многим другим.
Бесплатный пробный урок — уже сегодня в 20:00 (МСК).
🔗 Зарегистрируйтесь по ссылке, чтобы не пропустить занятие.
Appium позволяет писать тесты одновременно для Android и iOS, используя единый подход и один язык программирования — Python.
А еще фреймворк поддерживает работу с реальными устройствами и эмуляторами и интегрируется в CI/CD-процессы.
Подробно о работе Appium мы говорим на курсе «Python Base». А также разбираемся с веб-автоматизацией, тестированием API, тест-менеджментом и многим другим.
Бесплатный пробный урок — уже сегодня в 20:00 (МСК).
Please open Telegram to view this post
VIEW IN TELEGRAM
qa.guru
Курс по автоматизации тестирования на Python | QA.GURU
Основы тестирования на Python (пайтон) и Selen. Обучение автоматическому тестированию программ и приложений на Python..
🐍 Первый урок «Python Base» доступен в записи!
На занятии разработали несколько автотестов на поиск: google, yandex, yahoo. Написали код на Python / Selenium и переписали на Python / Selene и Python / Playwright.
P.S. Попробуйте запустить пример с Playwright, к занятию приложена рабочая ссылка.
Посмотреть занятие можно на платформе школы, YouTube или Rutube.
И небольшая скидка 5% действует до завтра до 12 утра по московскому времени.
До встречи на занятиях!
На занятии разработали несколько автотестов на поиск: google, yandex, yahoo. Написали код на Python / Selenium и переписали на Python / Selene и Python / Playwright.
P.S. Попробуйте запустить пример с Playwright, к занятию приложена рабочая ссылка.
Посмотреть занятие можно на платформе школы, YouTube или Rutube.
И небольшая скидка 5% действует до завтра до 12 утра по московскому времени.
До встречи на занятиях!
YouTube
Python 19-ый поток. Станислав Васенков. «Вводное занятие. Сразу к практике!»
00:00 - Введение
01:40 - Знакомимся
03:45 - План занятия
06:25 - Опыт преподавателя
11:50 - Преподаватели курса
12:30 - Введение в автотесты
16:30 - Текстовый редактор для работы с кодом
17:47 - Создаем новый проект
19:28 - Запуск браузера
22:30 - Разбираемся…
01:40 - Знакомимся
03:45 - План занятия
06:25 - Опыт преподавателя
11:50 - Преподаватели курса
12:30 - Введение в автотесты
16:30 - Текстовый редактор для работы с кодом
17:47 - Создаем новый проект
19:28 - Запуск браузера
22:30 - Разбираемся…
Forwarded from LikeaDuck🦆
#Java #qaguru
Скриншотные тесты - неизбежная необходимость во многих проектах, особенно где есть всякие красивые графики и диаграммы в canvas. Проверяется это только скриншотными тестами, и если мы используем Selenide, то понадобиться еще какая-нибудь библиотека-сравнивалка.
Самая известная из них - ashot от Яндекса.
Тогда наш код может выглядеть примерно так:
где
Этот код всем неплох (и даже прекрасно прячется внутрь PageObject), но у меня к нему есть вопросы:
1) В случае падения именно этого ассерта, нам нужен совершенно специфичный формат Allure Attachment:
2) Нам надо иметь возможность перезаписать expected изображения запустив тест со специальным флагом (например, у нас новый браузер и в нем canvas выглядит слегка по другому).
3) Задачи 1 и 2 хотелось бы делать где-то под капотом, что бы наш код тестов вообще ничего не знал об этих особенностях.
Все эти пункты можно изящно решить с помощью JUnit Extensions, и это один из практических примеров, которые я рассказываю на своем авторском курсе для java автоматизаторов, который стартует буквально на следующей неделе. Наши скриншотные тесты будут простыми, а все, что сложнее ассерта - будет жить в Extension.
Приходите послушать меня и Мишу Рубанова в 54 сериях, я гарантирую, что это будет интересно 🚀
Скриншотные тесты - неизбежная необходимость во многих проектах, особенно где есть всякие красивые графики и диаграммы в canvas. Проверяется это только скриншотными тестами, и если мы используем Selenide, то понадобиться еще какая-нибудь библиотека-сравнивалка.
Самая известная из них - ashot от Яндекса.
Тогда наш код может выглядеть примерно так:
assertFalse(
new ImageDiffer().makeDiff(
expectedImage,
ImageIO.read(requireNonNull($("canvas[role='img']").screenshot()))
).hasDiff()
);
где
ImageDiffer
- класс из ashot, expectedImage
- ожидаемое изображение, которое у вас где-то в ресурсах, завернутое в BufferedImage
.Этот код всем неплох (и даже прекрасно прячется внутрь PageObject), но у меня к нему есть вопросы:
1) В случае падения именно этого ассерта, нам нужен совершенно специфичный формат Allure Attachment:
Allure.addAttachment(
"Screenshot diff",
"application/vnd.allure.image.diff",
objectMapper.writeValueAsString(screenDif)
);
2) Нам надо иметь возможность перезаписать expected изображения запустив тест со специальным флагом (например, у нас новый браузер и в нем canvas выглядит слегка по другому).
3) Задачи 1 и 2 хотелось бы делать где-то под капотом, что бы наш код тестов вообще ничего не знал об этих особенностях.
Все эти пункты можно изящно решить с помощью JUnit Extensions, и это один из практических примеров, которые я рассказываю на своем авторском курсе для java автоматизаторов, который стартует буквально на следующей неделе. Наши скриншотные тесты будут простыми, а все, что сложнее ассерта - будет жить в Extension.
Приходите послушать меня и Мишу Рубанова в 54 сериях, я гарантирую, что это будет интересно 🚀
GitHub
GitHub - pazone/ashot: WebDriver Screenshot utility. Take screenshots, crop, prettify, compare
WebDriver Screenshot utility. Take screenshots, crop, prettify, compare - pazone/ashot
This media is not supported in your browser
VIEW IN TELEGRAM
Как правильно вставлять данные через JDBC и получать сгенерированные ключи?
При работе с JDBC одна из частых задач — вставка новых записей в базу данных и получение автоматически сгенерированных ключей. Рассмотрим конкретный пример реализации на Java и разберём важные детали, которые помогут вам избежать ошибок и писать чистый, эффективный код.
Шаг 1: Подготовка подключения и SQL-запроса
Создаём подключение к базе данных:
Важно: используем конструкцию try-with-resources для автоматического закрытия ресурсов (Connection, PreparedStatement, ResultSet). Это гарантирует отсутствие утечек памяти и соединений.
Шаг 2: Установка параметров PreparedStatement
Не забывайте использовать правильные методы для каждого типа данных:
Для UUID используем setObject()
Для строк — setString()
Для дат лучше использовать setDate()
Для чисел — соответствующие методы (setDouble(), setInt() и т.д.)
Пример заполнения параметров:
Шаг 3: Выполнение запроса и получение ключа
После выполнения запроса извлекаем сгенерированный ключ из ResultSet:
Это важно для того, чтобы объект в памяти соответствовал записи в базе данных.
Шаг 4: Повторное использование кода
Код вставки данных можно легко адаптировать для других таблиц. Например, для таблицы категорий (category) достаточно изменить SQL-запрос и количество параметров:
Итог: что важно помнить?
Используйте try-with-resources для надёжного закрытия соединений.
Правильно выбирайте методы установки параметров PreparedStatement.
Всегда проверяйте наличие сгенерированного ключа после вставки.
Повторно используйте проверенные шаблоны кода для разных сущностей.
Следуя этим рекомендациям, вы получите надёжный и поддерживаемый код работы с базой данных через JDBC.
На курсе «Java Advanced 2.0» вы получите практический опыт работы с JDBC, Hibernate, Spring Boot и другими востребованными технологиями.
Автор программы —Дмитрий Тучс, Head of QA в Dodo Engineering, спикер Codefest, Codetalks, EpicHey!, ментор и open-source контрибьютор.
🔗 Зарегистрируйтесь на первый открытый урок — по ссылке.
При работе с JDBC одна из частых задач — вставка новых записей в базу данных и получение автоматически сгенерированных ключей. Рассмотрим конкретный пример реализации на Java и разберём важные детали, которые помогут вам избежать ошибок и писать чистый, эффективный код.
Шаг 1: Подготовка подключения и SQL-запроса
Создаём подключение к базе данных:
try (Connection connection = getConnection()) {
String sql = "INSERT INTO spend (id, username, spend_date, currency, amount, description, category_id) VALUES (?, ?, ?, ?, ?, ?, ?)";
try (PreparedStatement ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) {
// заполняем параметры
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
Важно: используем конструкцию try-with-resources для автоматического закрытия ресурсов (Connection, PreparedStatement, ResultSet). Это гарантирует отсутствие утечек памяти и соединений.
Шаг 2: Установка параметров PreparedStatement
Не забывайте использовать правильные методы для каждого типа данных:
Для UUID используем setObject()
Для строк — setString()
Для дат лучше использовать setDate()
Для чисел — соответствующие методы (setDouble(), setInt() и т.д.)
Пример заполнения параметров:
ps.setObject(1, spend.getId()); // UUID
ps.setString(2, spend.getUserName());
ps.setDate(3, Date.valueOf(spend.getSpendDate())); // LocalDate -> Date
ps.setString(4, spend.getCurrency()); // валюта как строка ("USD", "RUB")
ps.setDouble(5, spend.getAmount());
ps.setString(6, spend.getDescription());
ps.setObject(7, spend.getCategory().getId()); // UUID
Шаг 3: Выполнение запроса и получение ключа
После выполнения запроса извлекаем сгенерированный ключ из ResultSet:
ps.executeUpdate();
try (ResultSet rs = ps.getGeneratedKeys()) {
if (rs.next()) {
UUID generatedKey = rs.getObject("id", UUID.class);
spend.setId(generatedKey);
} else {
throw new SQLException("Can't find id in result set");
}
}
Это важно для того, чтобы объект в памяти соответствовал записи в базе данных.
Шаг 4: Повторное использование кода
Код вставки данных можно легко адаптировать для других таблиц. Например, для таблицы категорий (category) достаточно изменить SQL-запрос и количество параметров:
String sql = "INSERT INTO category (id, username, name, archived) VALUES (?, ?, ?, ?)";
try (PreparedStatement ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) {
ps.setObject(1, category.getId());
ps.setString(2, category.getUserName());
ps.setString(3, category.getName());
ps.setBoolean(4, category.isArchived());
ps.executeUpdate();
try (ResultSet rs = ps.getGeneratedKeys()) {
if (rs.next()) {
UUID generatedKey = rs.getObject("id", UUID.class);
category.setId(generatedKey);
} else {
throw new SQLException("Can't find id in result set");
}
}
}
Итог: что важно помнить?
Используйте try-with-resources для надёжного закрытия соединений.
Правильно выбирайте методы установки параметров PreparedStatement.
Всегда проверяйте наличие сгенерированного ключа после вставки.
Повторно используйте проверенные шаблоны кода для разных сущностей.
Следуя этим рекомендациям, вы получите надёжный и поддерживаемый код работы с базой данных через JDBC.
На курсе «Java Advanced 2.0» вы получите практический опыт работы с JDBC, Hibernate, Spring Boot и другими востребованными технологиями.
Автор программы —Дмитрий Тучс, Head of QA в Dodo Engineering, спикер Codefest, Codetalks, EpicHey!, ментор и open-source контрибьютор.
🔗 Зарегистрируйтесь на первый открытый урок — по ссылке.
Forwarded from QA_Road_channel
Во вторник 18 марта в 20 по мск
К нам на посиделки придет true автоматизатор Станислав Васенков
Он расскажет про фреймворки:
- selene (надстройку на selenium)
- playwright
Их плюсы, минусы, особенности
Проходить все будет тут на канале
Запись будет
К нам на посиделки придет true автоматизатор Станислав Васенков
Он расскажет про фреймворки:
- selene (надстройку на selenium)
- playwright
Их плюсы, минусы, особенности
Проходить все будет тут на канале
Запись будет
Media is too big
VIEW IN TELEGRAM
Использование JDBC: почему CallableStatement не всегда нужен, и когда он полезен?
В работе с JDBC чаще всего упоминаются Statement и PreparedStatement. Но есть еще один интерфейс — CallableStatement, о котором говорят реже. Стоит ли вам его изучать и применять?
CallableStatement предназначен исключительно для вызова хранимых процедур в базе данных. Хранимые процедуры — это куски бизнес-логики, написанные непосредственно на стороне базы данных. Например, в PostgreSQL вы можете использовать язык PL/pgSQL для реализации логики, которая автоматически создает дефолтные категории при добавлении нового пользователя.
Когда это полезно:
👉 Если бизнес-логика тесно связана с данными и ее удобнее реализовать на уровне базы.
👉 Когда нужно повысить производительность за счет минимизации сетевого взаимодействия между приложением и базой данных.
👉 Если вы хотите централизовать логику и сделать ее доступной для разных приложений.
Но есть и обратная сторона:
👉 Логика в базе данных усложняет поддержку и тестирование приложения.
👉 Это может привести к зависимости от конкретного вендора базы данных, затрудняя миграцию на другую СУБД.
👉 Именно поэтому CallableStatement не всегда нужен. В большинстве случаев достаточно PreparedStatement, который позволяет безопасно передавать параметры в SQL-запросы.
Единственная сложность PreparedStatement — невозможность напрямую вывести готовый SQL-запрос через toString(). Но существуют обходные пути, позволяющие логировать запросы даже при его использовании.
Вывод: CallableStatement — мощный инструмент, но применять его стоит осознанно, только если преимущества перевешивают минусы. В остальных случаях PreparedStatement остается оптимальным выбором.
На курсе «Java Advanced 2.0» мы разберемся в тонкостях работы с JDBC, узнаем как эффективно использовать Statement, PreparedStatement и CallableStatement и освоим другие продвинутые технологии работы с базами данных и тестированием.
Автор программы — Дмитрий Тучс, Head of QA в Dodo Engineering, спикер Codefest, Codetalks, EpicHey!, ментор и open-source контрибьютор.
🔗 Зарегистрируйтесь на первый открытый урок — по ссылке.
До встречи завтра в 20:00 (мск)!
В работе с JDBC чаще всего упоминаются Statement и PreparedStatement. Но есть еще один интерфейс — CallableStatement, о котором говорят реже. Стоит ли вам его изучать и применять?
CallableStatement предназначен исключительно для вызова хранимых процедур в базе данных. Хранимые процедуры — это куски бизнес-логики, написанные непосредственно на стороне базы данных. Например, в PostgreSQL вы можете использовать язык PL/pgSQL для реализации логики, которая автоматически создает дефолтные категории при добавлении нового пользователя.
Когда это полезно:
Но есть и обратная сторона:
Единственная сложность PreparedStatement — невозможность напрямую вывести готовый SQL-запрос через toString(). Но существуют обходные пути, позволяющие логировать запросы даже при его использовании.
Вывод: CallableStatement — мощный инструмент, но применять его стоит осознанно, только если преимущества перевешивают минусы. В остальных случаях PreparedStatement остается оптимальным выбором.
На курсе «Java Advanced 2.0» мы разберемся в тонкостях работы с JDBC, узнаем как эффективно использовать Statement, PreparedStatement и CallableStatement и освоим другие продвинутые технологии работы с базами данных и тестированием.
Автор программы — Дмитрий Тучс, Head of QA в Dodo Engineering, спикер Codefest, Codetalks, EpicHey!, ментор и open-source контрибьютор.
🔗 Зарегистрируйтесь на первый открытый урок — по ссылке.
До встречи завтра в 20:00 (мск)!
Please open Telegram to view this post
VIEW IN TELEGRAM
Playwright уверенно закрепился в топе инструментов автоматизации тестирования, и в 2025 году его позиции только укрепились. Вот 7 причин, почему сегодня он заслуженно считается лучшим решением для QA-инженеров и разработчиков:
1) Нативная интеграция с браузерами
В отличие от инструментов, основанных на WebDriver (например, Selenium), Playwright взаимодействует напрямую с нативными протоколами автоматизации браузеров. Это обеспечивает более точный контроль над браузером, ускоряет выполнение тестов и минимизирует нестабильность сценариев.
2) Продвинутые возможности кросс-браузерного тестирования
Playwright поддерживает Chromium, Firefox и WebKit (Safari), позволяя запускать тесты без дополнительных конфигураций на разных платформах и устройствах. В 2025 году ожидается еще больше улучшений в поддержке последних версий браузеров и новых веб-стандартов.
3) AI-генерация и самовосстановление тестов
В 2025 году Playwright активно внедряет искусственный интеллект для автоматической генерации сценариев на основе анализа пользовательских действий. Кроме того, AI-функции позволяют тестам «самовосстанавливаться» при изменениях UI, заметно снижая затраты на поддержку тестового покрытия.
4) Расширенные возможности отладки и отчетности
Playwright предоставляет мощные инструменты для real-time отладки, пошагового выполнения сценариев и детализированного логирования ошибок. Кастомизируемые отчёты позволяют QA-командам принимать решения на основе глубокого анализа результатов.
5) Улучшенные возможности мобильного и адаптивного тестирования
Важнейшим направлением развития Playwright является точная эмуляция мобильных устройств, интеграция с облачными платформами реальных устройств и продвинутые функции проверки адаптивного дизайна на различных разрешениях экранов.
6) Расширенные возможности сетевого и нагрузочного тестирования
Playwright позволяет имитировать различные сетевые условия (задержки, нестабильность соединения), измерять производительность приложений и выявлять узкие места для оптимизации — это критически важно в условиях роста требований к скорости работы приложений.
7) Высокая масштабируемость за счёт параллельного выполнения
Playwright поддерживает параллельный запуск множества тестов одновременно, что значительно сокращает время выполнения тестовых наборов. Возможность распределённого запуска на различных окружениях обеспечивает стабильность результатов вне зависимости от инфраструктуры
Playwright — это не просто инструмент для автоматизации тестирования, а настоящий прорыв в мире QA.
Если вы хотите освоить его на экспертном уровне и стать востребованным Automation QA-инженером - зарегистрируйтесь на первый открытый урок по ссылке.
1) Нативная интеграция с браузерами
В отличие от инструментов, основанных на WebDriver (например, Selenium), Playwright взаимодействует напрямую с нативными протоколами автоматизации браузеров. Это обеспечивает более точный контроль над браузером, ускоряет выполнение тестов и минимизирует нестабильность сценариев.
2) Продвинутые возможности кросс-браузерного тестирования
Playwright поддерживает Chromium, Firefox и WebKit (Safari), позволяя запускать тесты без дополнительных конфигураций на разных платформах и устройствах. В 2025 году ожидается еще больше улучшений в поддержке последних версий браузеров и новых веб-стандартов.
3) AI-генерация и самовосстановление тестов
В 2025 году Playwright активно внедряет искусственный интеллект для автоматической генерации сценариев на основе анализа пользовательских действий. Кроме того, AI-функции позволяют тестам «самовосстанавливаться» при изменениях UI, заметно снижая затраты на поддержку тестового покрытия.
4) Расширенные возможности отладки и отчетности
Playwright предоставляет мощные инструменты для real-time отладки, пошагового выполнения сценариев и детализированного логирования ошибок. Кастомизируемые отчёты позволяют QA-командам принимать решения на основе глубокого анализа результатов.
5) Улучшенные возможности мобильного и адаптивного тестирования
Важнейшим направлением развития Playwright является точная эмуляция мобильных устройств, интеграция с облачными платформами реальных устройств и продвинутые функции проверки адаптивного дизайна на различных разрешениях экранов.
6) Расширенные возможности сетевого и нагрузочного тестирования
Playwright позволяет имитировать различные сетевые условия (задержки, нестабильность соединения), измерять производительность приложений и выявлять узкие места для оптимизации — это критически важно в условиях роста требований к скорости работы приложений.
7) Высокая масштабируемость за счёт параллельного выполнения
Playwright поддерживает параллельный запуск множества тестов одновременно, что значительно сокращает время выполнения тестовых наборов. Возможность распределённого запуска на различных окружениях обеспечивает стабильность результатов вне зависимости от инфраструктуры
Playwright — это не просто инструмент для автоматизации тестирования, а настоящий прорыв в мире QA.
Если вы хотите освоить его на экспертном уровне и стать востребованным Automation QA-инженером - зарегистрируйтесь на первый открытый урок по ссылке.
Forwarded from Anton
#qaguru #javaadvanced #отзыв
Хочу рассказать о курсе Java Advanced от Дмитрия Тучса, который попадает в категорию КУРСОВ, Олимп self-help образования. ⛰️
1️⃣ Почему вписался изначально?
За последние несколько лет редко работал с Java и успел забыть то, что раньше знал. На новом проекте надо было строить автоматизацию вокруг монолита на Джаве, поэтому принялся искать курс «для продолжающих», чтобы быстро вкатиться и начать применять знания на боевом проекте.
2️⃣ Первые впечатления
Курс сложный. Он не объёмный, он огромный — готовьтесь тратить пару десятков часов еженедельно, чтобы успевать с потоком.
Какие-то темы были понятны сразу, какие-то приходилось пересматривать. Если попытаться обобщать, курс строится вокруг границ применения JUnit Extensions для E2E тестов, чтобы код тестов оставался поддерживаемым и понятным.
JUnit Extensions — недооценённый алмаз 💎, который требует кропотливой огранки. Дмитрий Тучс овладел ремеслом огранки лучше всех в русскоязычном сегменте, поэтому научитесь вы многому.
Как учил Дэвид Линч «Понимание переоценено», поэтому не пытайтесь сходу въехать во все технические детали. Почему так, а не иначе. С практикой и выполнением домашек понимание начнёт догонять.
А когда догонит, вы поймёте, что инструмент мощный и позволяет делать крутые штуки без оверхеда.
По ходу курса Дмитрий объясняет не только как писать тесты, но и многие вещи из мира разработки бэкенд сервисов. А ссылок на материалы и доклады хватит еще на месяц самообразования.
3️⃣ Для кого?
Если вы готовы инвестировать в себя, как в специалиста в QA и автоматизации, этот курс для вас. Думаю, после прохождения результат можно назвать левел-апом с несколькими уровнями. По моему скромному мнению этот курс экономит годы времени в промышленном тестировании. Я был бы счастлив, чтобы соискатели на Senior позиции были на 50% знакомы с темами курса.
К сожалению, на рынке обычно все намного печальнее.
4️⃣ Пожелания
Было бы круто добавить пару уроков про Testcontainers, как библиотеку для в помощь при написании интеграционных тестов.
Курс помог мне переделать запуск интеграционных тестов с параллельным запуском контейнеров, у нас теперь эти тесты бегут в шесть потоков, и каждый класс запускает свой набор контейнеров независимо.
Хочу рассказать о курсе Java Advanced от Дмитрия Тучса, который попадает в категорию КУРСОВ, Олимп self-help образования. ⛰️
1️⃣ Почему вписался изначально?
За последние несколько лет редко работал с Java и успел забыть то, что раньше знал. На новом проекте надо было строить автоматизацию вокруг монолита на Джаве, поэтому принялся искать курс «для продолжающих», чтобы быстро вкатиться и начать применять знания на боевом проекте.
2️⃣ Первые впечатления
Курс сложный. Он не объёмный, он огромный — готовьтесь тратить пару десятков часов еженедельно, чтобы успевать с потоком.
Какие-то темы были понятны сразу, какие-то приходилось пересматривать. Если попытаться обобщать, курс строится вокруг границ применения JUnit Extensions для E2E тестов, чтобы код тестов оставался поддерживаемым и понятным.
JUnit Extensions — недооценённый алмаз 💎, который требует кропотливой огранки. Дмитрий Тучс овладел ремеслом огранки лучше всех в русскоязычном сегменте, поэтому научитесь вы многому.
Как учил Дэвид Линч «Понимание переоценено», поэтому не пытайтесь сходу въехать во все технические детали. Почему так, а не иначе. С практикой и выполнением домашек понимание начнёт догонять.
А когда догонит, вы поймёте, что инструмент мощный и позволяет делать крутые штуки без оверхеда.
По ходу курса Дмитрий объясняет не только как писать тесты, но и многие вещи из мира разработки бэкенд сервисов. А ссылок на материалы и доклады хватит еще на месяц самообразования.
3️⃣ Для кого?
Если вы готовы инвестировать в себя, как в специалиста в QA и автоматизации, этот курс для вас. Думаю, после прохождения результат можно назвать левел-апом с несколькими уровнями. По моему скромному мнению этот курс экономит годы времени в промышленном тестировании. Я был бы счастлив, чтобы соискатели на Senior позиции были на 50% знакомы с темами курса.
К сожалению, на рынке обычно все намного печальнее.
4️⃣ Пожелания
Было бы круто добавить пару уроков про Testcontainers, как библиотеку для в помощь при написании интеграционных тестов.
Курс помог мне переделать запуск интеграционных тестов с параллельным запуском контейнеров, у нас теперь эти тесты бегут в шесть потоков, и каждый класс запускает свой набор контейнеров независимо.
Мы начинаем! Вводное занятие курса "Автоматизация тестирования на Java Advanced"
🔗 Подключайтесь по ссылке.
🔗 Подключайтесь по ссылке.
Первый урок «Java Advanced» доступен в записи!
Вы найдете занятие на платформе школы, YouTube или Rutube.
Еще не купили курс? Сейчас самое время!
Скидка 5% действует до завтра до 12 часов по московскому времени.
До встречи на занятиях!
Вы найдете занятие на платформе школы, YouTube или Rutube.
Еще не купили курс? Сейчас самое время!
Скидка 5% действует до завтра до 12 часов по московскому времени.
До встречи на занятиях!
YouTube
Java+ 2.0, 8-ой поток. Дмитрий Тучс. «Intro to QA.GURU Java Advanced v. 2.0»
00:00 - Введение
00:51 - Цель занятия
01:16 - План занятия
01:59 - Структура учебного плана
08:10 - Преподаватели
10:38 - Основные принципы white-box тестирования
20:10 - Переходим к написанию теста
26:58 - Реализация методов
34:10 - Проблемы с тестом…
00:51 - Цель занятия
01:16 - План занятия
01:59 - Структура учебного плана
08:10 - Преподаватели
10:38 - Основные принципы white-box тестирования
20:10 - Переходим к написанию теста
26:58 - Реализация методов
34:10 - Проблемы с тестом…
Время автоматизировать на JavaScript 🌚
Автоматизация QA шагает вперед, нет времени отставать!
Преимущества экосистемы тестирования на JS:
👉 Возможность общего репозитория с фронтендом упрощает синхронизацию версий кода и тестов, облегчает CI/CD.
👉 С помощью инструментов по типу Istanbul/NYC для JavaScript мы можем оценить объем покрытия кода тестами.
👉 А Allure 3, который раньше ассоциировался в основном с Java, теперь переписан на JavaScript.
Приходите на открытое занятие по JS+Playwright, будем учиться писать автотесты на JavaScript и работать с новым фреймворком.
Что в программе?
👉 Разберемся в основах языка JavaScript и научимся использовать Playwright для автоматизации тестирования веб-приложений.
👉 Освоим создание автоматизированных тестов для современных веб-приложений, включая работу с динамическими элементами и сложными интерфейсами.
👉 Изучим Page Object Model для построения масштабируемых и поддерживаемых тестовых фреймворков.
👉 Узнаем, как интегрировать API-тестирование в свои сценарии, создавать данные, тестировать их и удалять в рамках одного скрипта.
👉 А еще, как настроить инфраструктуру для запуска тестов, включая отчеты (Allure Reports) и уведомления о статусе тестов в Telegram или Slack.
И многое другое!
🔗 Посмотрите план курса и зарегистрируйтесь на встречу по ссылке.
Автоматизация QA шагает вперед, нет времени отставать!
Преимущества экосистемы тестирования на JS:
Приходите на открытое занятие по JS+Playwright, будем учиться писать автотесты на JavaScript и работать с новым фреймворком.
Что в программе?
И многое другое!
🔗 Посмотрите план курса и зарегистрируйтесь на встречу по ссылке.
Please open Telegram to view this post
VIEW IN TELEGRAM
qa.guru
Курс по автоматизации тестирования JavaScript + PlayWright | QA.GURU
Основы тестирования на JavaScript (джаваскрипт) и Playwright. Обучение автоматическому тестированию программ и приложений на JavaScript.
Открываем удивительный мир автоматизации на Java!
🪄 Если вы ждали знак, то это он. Ваш знак написать свой первый автотест.
Java выбирают для старта в разработке и QA. Выучить язык с нуля реально, а для написания автотестов достаточно освоить базу.
Java — универсальный и востребованный язык. Популярен в самых разных отраслях, от веб-разработки до корпоративных систем.
На курсе мы учим писать код с нуля и применять его в ремесле QA, работать с популярными инструментами автоматизации, например, Selenide и JUnit. А еще запускать параллельное тесты, автотесты на разных платформах и многому другому!
Приходите знакомиться с Java на бесплатном занятии по Java Base в следующий четверг.
🔗 Программа курса и регистрация на первый урок — по ссылке.
Java выбирают для старта в разработке и QA. Выучить язык с нуля реально, а для написания автотестов достаточно освоить базу.
Java — универсальный и востребованный язык. Популярен в самых разных отраслях, от веб-разработки до корпоративных систем.
На курсе мы учим писать код с нуля и применять его в ремесле QA, работать с популярными инструментами автоматизации, например, Selenide и JUnit. А еще запускать параллельное тесты, автотесты на разных платформах и многому другому!
Приходите знакомиться с Java на бесплатном занятии по Java Base в следующий четверг.
🔗 Программа курса и регистрация на первый урок — по ссылке.
Please open Telegram to view this post
VIEW IN TELEGRAM
qa.guru
Автоматизированное тестирование на Java | Онлайн курс по написанию автотестов | QA.GURU
Курс тестирования на Java 🖥️ Научим писать автотесты | Без знания программирования и неподъёмных домашек ► Пошаговая поддержка в трудоустройстве ✅ Рекомендуем студентов в крупные компании
Разберем архитектуру тестового фреймворка на JS, как конструктор Lego 🧱
Ждем вас на первом занятии курса «JavaScript + Playwright» в этот четверг, 27 марта, в 20:00 (мск).
Вводное проведет Любовь Данилова, опытный QA-инженер с 10+ лет опыта.
Рекомендуем курс ручным тестировщикам, особенно если вы уже работали с тестированием веб-приложений📱
А еще программа подойдет новичкам!
Приходите на занятие, даже если никогда не писали код. Синтаксис JS проще, чем у многих других языков (например, у Java или C#).
На первом занятии вы научитесь:
🔜 Настраивать среду разработки, запускать и отлаживать тесты.
🔜 Работать с ключевыми элементами тестового фреймворка.
🔜 А еще разберетесь в структуре автотестов и тестового фреймворка.
🔠 И напишете свой первый автотест на JS.
🔗 Зарегистрируйтесь для участия по ссылке.
Все студенты первого занятия получат домашку, которую мы проверим.
Ждем вас на первом занятии курса «JavaScript + Playwright» в этот четверг, 27 марта, в 20:00 (мск).
Вводное проведет Любовь Данилова, опытный QA-инженер с 10+ лет опыта.
Рекомендуем курс ручным тестировщикам, особенно если вы уже работали с тестированием веб-приложений
А еще программа подойдет новичкам!
Приходите на занятие, даже если никогда не писали код. Синтаксис JS проще, чем у многих других языков (например, у Java или C#).
На первом занятии вы научитесь:
🔗 Зарегистрируйтесь для участия по ссылке.
Все студенты первого занятия получат домашку, которую мы проверим.
Please open Telegram to view this post
VIEW IN TELEGRAM
qa.guru
Курс по автоматизации тестирования JavaScript + PlayWright | QA.GURU
Основы тестирования на JavaScript (джаваскрипт) и Playwright. Обучение автоматическому тестированию программ и приложений на JavaScript.
Playwright — Флэш в мире автотестов 🦸♂️
Видит, кликает, ждет и проверяет, как это сделал бы настоящий пользователь, но без капризов и усталости.
Что может Playwright?
Параллельное выполнение тестов
Playwright использует всю мощь вашего оборудования, запуская тесты параллельно на нескольких ядрах процессора. Это значительно сокращает общее время выполнения.
Изоляция контекста браузера
Создание нового контекста браузера для каждого теста занимает всего несколько миллисекунд. Это обеспечивает полную изоляцию тестов без накладных расходов.
Встроенные механизмы ожидания
Playwright автоматически ждет, пока элементы станут доступными для взаимодействия. Это устраняет необходимость в ручных таймаутах, основной причине нестабильных тестов.
Быстрый запуск браузера
Playwright оптимизирует запуск браузера, что особенно важно при выполнении множества небольших тестов.
Эмуляция мобильных устройств
Тестирование мобильных версий сайтов происходит на том же движке рендеринга, что и десктопные версии. Это устраняет необходимость в отдельной инфраструктуре для мобильного тестирования.
Мощные инструменты отладки
Встроенные инструменты, такие как Inspector и Trace Viewer, позволяют быстро находить и исправлять ошибки.
Кодогенерация
Функция codegen позволяет быстро создавать базовые тесты, записывая действия пользователя.
Поддержка нескольких языков
Подойдет для работы на TypeScript, JavaScript, Python, .NET или Java.
Надежные селекторы
Playwright использует надежные селекторы, которые работают даже при изменении структуры DOM, а это уменьшает количество ложных срабатываний.
Интеграция с CI/CD
Легкая интеграция с популярными системами непрерывной интеграции дает возможность автоматизировать весь процесс тестирования.
Хотите узнать больше?
⏳ Ждем вас завтра в 20:00 (мск) на открытом занятии «JavaScript + Playwright».
Будет много практики 👩💻
🔗 Зарегистрируйтесь, чтобы получить ссылку на трансляцию.
Видит, кликает, ждет и проверяет, как это сделал бы настоящий пользователь, но без капризов и усталости.
Что может Playwright?
Параллельное выполнение тестов
Playwright использует всю мощь вашего оборудования, запуская тесты параллельно на нескольких ядрах процессора. Это значительно сокращает общее время выполнения.
Изоляция контекста браузера
Создание нового контекста браузера для каждого теста занимает всего несколько миллисекунд. Это обеспечивает полную изоляцию тестов без накладных расходов.
Встроенные механизмы ожидания
Playwright автоматически ждет, пока элементы станут доступными для взаимодействия. Это устраняет необходимость в ручных таймаутах, основной причине нестабильных тестов.
Быстрый запуск браузера
Playwright оптимизирует запуск браузера, что особенно важно при выполнении множества небольших тестов.
Эмуляция мобильных устройств
Тестирование мобильных версий сайтов происходит на том же движке рендеринга, что и десктопные версии. Это устраняет необходимость в отдельной инфраструктуре для мобильного тестирования.
Мощные инструменты отладки
Встроенные инструменты, такие как Inspector и Trace Viewer, позволяют быстро находить и исправлять ошибки.
Кодогенерация
Функция codegen позволяет быстро создавать базовые тесты, записывая действия пользователя.
Поддержка нескольких языков
Подойдет для работы на TypeScript, JavaScript, Python, .NET или Java.
Надежные селекторы
Playwright использует надежные селекторы, которые работают даже при изменении структуры DOM, а это уменьшает количество ложных срабатываний.
Интеграция с CI/CD
Легкая интеграция с популярными системами непрерывной интеграции дает возможность автоматизировать весь процесс тестирования.
Хотите узнать больше?
Будет много практики 👩💻
🔗 Зарегистрируйтесь, чтобы получить ссылку на трансляцию.
Please open Telegram to view this post
VIEW IN TELEGRAM
qa.guru
Курс по автоматизации тестирования JavaScript + PlayWright | QA.GURU
Основы тестирования на JavaScript (джаваскрипт) и Playwright. Обучение автоматическому тестированию программ и приложений на JavaScript.
Мы начинаем!
Вводное занятие курса «Автоматизация тестирования на JavaScript + Playwright».
🔗 Подключайтесь по ссылке.
Вводное занятие курса «Автоматизация тестирования на JavaScript + Playwright».
🔗 Подключайтесь по ссылке.
Первый урок «JavaScript + Playwright» доступен в записи!
Вы найдете занятие на платформе школы, YouTube или Rutube.
Еще не купили курс? Сейчас самое время!
Скидка 5% действует до завтра до 12 часов по московскому времени.
До встречи на занятиях!
Вы найдете занятие на платформе школы, YouTube или Rutube.
Еще не купили курс? Сейчас самое время!
Скидка 5% действует до завтра до 12 часов по московскому времени.
До встречи на занятиях!
YouTube
JS + Playwright. 3-ий поток. Любовь Данилова. «Вводное занятие»
00:00 - Введение
01:32 - Опыт и проекты преподавателя
03:18 - О чем будем говорить?
07:00 - Планируем автоматизацию
14:00 - Основные проблемы
19:37 - Архитектура
20:03 - Пирамида тестирования
22:18 - Разделение ответственности
23:44 - Модульность
27:45…
01:32 - Опыт и проекты преподавателя
03:18 - О чем будем говорить?
07:00 - Планируем автоматизацию
14:00 - Основные проблемы
19:37 - Архитектура
20:03 - Пирамида тестирования
22:18 - Разделение ответственности
23:44 - Модульность
27:45…
Ребят, привет, мини-опрос.
Мы часто проводим вводные к нашим курсам по автоматизации тестирования, что вы хотели бы видеть на вступительном занятии? (Можно несколько вариантов)
Мы часто проводим вводные к нашим курсам по автоматизации тестирования, что вы хотели бы видеть на вступительном занятии? (Можно несколько вариантов)
Anonymous Poll
38%
Теория, архитектура проекта и т.п. (без кода)
20%
Минимум теории, простой код, автотест на форму поиска
31%
Код посложнее, формы регистрации, фильтры, списки
26%
Примеры кода на других библиотеках в рамках того же языка (Selenium - Selenide - Playwright)
16%
Примеры кода на других языках (Если вводное на Java - показать примеры на JavaScript, Python)
43%
Показать пример итоговой дипломной работы
4%
Свой вариант