Автоматизация и тестирование
46 subscribers
38 photos
74 links
Просто и понятно про тестирование
Download Telegram
Отличная статья про шардинг в Playwright – процесс распределения тестов по нескольким машинам для параллельного выполнения. Это позволяет масштабировать тестирование, уменьшая общее время выполнения тестов. Шардинг особенно полезен для больших наборов тестов, так как позволяет запускать части тестов на различных машинах или процессорах одновременно, что значительно ускоряет процесс тестирования.
50 вопросов на собеседовании по Docker

В данной статье вы найдете вопросы для подготовки к собеседованию по Docker, которые мы разделили на три категории:

-Базовые вопросы по докеру
-Основные команды докера
-Дополнительные вопросы по Docker
Самые популярные коды состояние HTTP

▫️2xx: Успешные

200 OK — запрос успешно выполнен.
201 Created — ресурс успешно создан.
202 Accepted — запрос принят, но еще не обработан.

▫️3xx: Перенаправления

301 Moved Permanently — ресурс перемещен навсегда.
302 Found — ресурс временно перемещен.
304 Not Modified — ресурс не изменялся (используйте кеш).

▫️4xx: Ошибки клиента

400 Bad Request — некорректный запрос.
401 Unauthorized — требуется авторизация.
403 Forbidden — доступ запрещен.
404 Not Found — ресурс не найден.
405 Method Not Allowed — метод не поддерживается.
408 Request Timeout — время запроса истекло.

▫️5xx: Ошибки сервера

500 Internal Server Error — внутренняя ошибка сервера.
501 Not Implemented — метод не реализован.
502 Bad Gateway — ошибка шлюза.
503 Service Unavailable — сервис недоступен.
504 Gateway Timeout — время ожидания шлюза истекло.
Вводный гайд по тестированию API для новичков

Введение в тестирование API: все самое важное о HTTP/HTTPS, REST и SOAP для начинающих

▫️В чем заключается тестирование API
▫️Терминология тестирования веб-сервисов
▫️Что такое HTTP
▫️Что такое REST API
▫️Как писать тест-кейсы
▫️Распространенные проблемы

Читать
Как писать автотесты, которые легко читать, поддерживать и расширять? В новом видео разбираем принципы чистого кода для тестов на Python!

Смотри видео и улучшай свои тесты!

Смотреть видео
Асинхронность: Playwright + pytest

В этой статье мы рассмотрим, как pytest, один из самых популярных фреймворков для тестирования, поддерживает асинхронные тесты. Вы узнаете о лучших практиках написания асинхронных тестов. Этот материал поможет вам эффективно тестировать ваш продукт и избегать распространённых ошибок.
Playwright на Python: работа с iframe, алертами, вкладками и селектами

Если вы работаете с Playwright, то наверняка сталкивались с такими элементами, как вкладки браузера, iframe, всплывающие алерты и выпадающие списки. В этом видео подробно можно узнать, как с ними работать:

• Как взаимодействовать с элементами внутри iframe с помощью метода frame.
• Как переключаться между вкладками браузера, используя expect_page().
• Как обрабатывать всплывающие алерты (dialog) в Playwright.
• Как выбирать нужные опции в стандартных дропдаунах (select).
Работа с динамическим контентом и ожидания в Playwright

Динамический контент, такой как асинхронная загрузка данных, анимации и интерактивные элементы, часто вызывает сложности при автоматизации тестирования.

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

Статя на данную тему.
🚀 Отличные новости для тестировщиков и разработчиков! Теперь официальная документация Playwright доступна на русском языке! 🎉

📚 Изучайте фреймворк для автоматизации браузеров еще проще и удобнее.

🔗 Ознакомиться можно здесь: Документация

#Playwright #Автотесты #Тестирование #QA
Хотите ускорить тесты в Playwright, сохранив их надежность? Используйте проверенные методы:

Ретраи – автоматические повторы падающих тестов для борьбы с флакингом.
Сериализация – контроль порядка выполнения тестов, когда это важно.
WaitFor – умные ожидания вместо жестких пауз.

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

Читайте подробнее в статье!
🔍 Современные подходы в автоматизации с Playwright!

Узнайте, как комбинировать Page Object Model (POM), BDD и Data-Driven Testing (DDT) в Playwright для создания чистых, масштабируемых автотестов. В статье разбираются примеры кода и лучшие практики для эффективного тестирования. 🚀
Проверьте свои знания в тестировании ПО! Попробуйте решить 10 вопросов из экзамена ISTQB и оцените, готовы ли вы к сертификации.

🔗 Ссылка на тест.
Ускоряем отладку тестов Playwright с помощью ИИ. Как искусственный интеллект помогает находить и исправлять ошибки автоматически. Подробнее в статье.
Forwarded from Irina Sh.
Друзья! В этом году сообщество тестировщиков в Перми переживает второе рождение. Мы каждый месяц встречаемся в Морион Диджитал, чтобы обсудить доклады на профессиональные темы. Неофициально несколько раз встречались в барах, просто пообщаться. И сегодня объявляем о новом этапе - проведении серии митапов!

Приглашаем вас 2 октября на митап  “Вызовы современного тестирования”, организованный  сообществом тестировщиков  QA Guild Perm и Контуром.

📚 На митапе расскажем про:

- Обеспечение защиты моделей ИИ при revers-prompting
- WebSocket vs Rest: погружение в нагрузочное тестирование с K6
- Как мы снизили регресс-баги: от отчаяния до решения

Что: QA Meetup “Вызовы современного тестирования”
Где: Стахановская 54П, 2 этаж, конференц-зал «Иолла».
Когда: 02.10.2025 в 18:30
Регистрация: ссылка
Гигабайтный Excel и Python? Легко! 🚀

Забудьте о том, что read_excel — это медленно. Нашел крутейшее исследование по ускорению чтения Excel. Автор провел честные бенчмарки и нашел явных фаворитов. Спойлер: Pandas — не всегда ответ.

Ловите гайд, который ускорит вашу работу
👩‍💻 Pydantic v2 — что изменилось и как теперь валидировать данные

Pydantic v2 — не мелкий апдейт, а рефакторинг движка в отдельный pydantic-core на Rust. Это смена архитектуры: быстрее, строже и с новой API-парадигмой для валидации и сериализации.

🔧 Главное изменение — API и ядро

🟢 Вся валидация теперь идёт через pydantic-core (Rust) — профит по скорости и надёжности.
🟢 Старые удобные алиасы и методы переехали/переименованы: parse_objmodel_validate, dict()model_dump/model_dump_json.


📦 Простая модель и валидация (новый базовый паттерн)
from pydantic import BaseModel

class User(BaseModel):
id: int
name: str = "Anon"

u = User.model_validate({"id": "1", "name": "Bob"})
print(u) # id=1 (если режим lax — pydantic попытается привести)

➡️ model_validate — основной метод для валидации словарей/объектов.

⚡️ Строгость vs приведение типов

По умолчанию Pydantic пытается привести типы. Но ты можешь включить строгий режим на модель:
from pydantic import BaseModel, ConfigDict

class M(BaseModel):
model_config = ConfigDict(strict=True)
id: int

M.model_validate({"id": "1"}) # ValidationError: строка → int запрещена

➡️ model_config = ConfigDict(strict=True) включает strict-режим для всех полей модели.

Если нужен только жёсткий тип для конкретного поля — используй строгие типы (StrictInt, StrictStr и т.д.).

🧪 Поля и кастомная валидация — @field_validator
from pydantic import BaseModel, field_validator, ValidationError

class User(BaseModel):
username: str
password: str
password2: str

@field_validator('password2')
def passwords_match(cls, v, info):
if v != info.data['password']:
raise ValueError("Пароли не совпадают")
return v

try:
User.model_validate({'username': 'u', 'password': 'x', 'password2': 'y'})
except ValidationError as e:
print(e)

➡️ @field_validator — заменитель старого @validator. Может запускаться before/after и получать доступ к уже валидированным данным через ValidationInfo.


🔗 Валидация уровня модели @model_validator
from pydantic import BaseModel, model_validator

class Payment(BaseModel):
amount: int
currency: str

@model_validator(mode='after')
def check_amount(cls, values):
if values['amount'] <= 0:
raise ValueError("amount must be > 0")
return values

➡️ @model_validator — для cross-field правил и общего pre/post-processing. Есть режимы before, after, wrap.

🔁 Создание без валидации (performance / trust)
user = User.model_construct({"id": 1, "name": "x"})

➡️ model_construct() создаёт экземпляр без валидации — только если данные доверенные и нужны микро-оптимизации.

🧾 Сериализация: model_dump / model_dump_json
u = User.model_validate({"id": 1, "name": "Bob"})
print(u.model_dump()) # dict
print(u.model_dump_json()) # json
# опции: exclude_none, exclude_unset, round_trip, by_alias и т.д.

➡️ model_dump заменил dict() и даёт контроль над сериализацией.

🚫 Extra поля и конфигурация поведения
class A(BaseModel):
model_config = ConfigDict(extra='forbid')
name: str

A.model_validate({'name': 'x', 'bad': 1}) # ValidationError, extra not allowed

➡️ model_config.extraignore (по умолчанию), allow, forbid.

/✔️ Частые миграционные ловушки
Привычка: User.parse_obj(...)
✔️ Теперь: User.model_validate(...).

Ожидать, что dict() сохранит все флаги и алиасы.
✔️ Используй model_dump(by_alias=True, exclude_unset=True).

Делать сложную cross-field валидацию в @field_validator.
✔️ Для таких случаев — @model_validator(mode='after').


🛠 Практические паттерны и советы
👍
Нужна производительность? Для доверенных данных используй model_construct().
👍
Хочешь полностью выключить «магическое» приведение — model_config = ConfigDict(strict=True) или StrictInt/StrictStr.
👍
Для сложных преобразований — @field_validator(..., mode='before'), чтобы нормализовать вход до основной валидации.
Please open Telegram to view this post
VIEW IN TELEGRAM
Изучать Git можно не только по учебникам, но и в игровой форме. Вот подборка интерактивных ресурсов для практики:

Игры:
[Oh My Git!](https://ohmygit.org) — настольная игра с Git-картами.
[Git Game](https://github.com/git-game/git-game) — консольная игра с заданиями на команды.
[Git-It](https://github.com/jlord/git-it-electron) — упражнения на клонирование и работу с GitHub.

Тренажёры:
[Learn Git Branching](https://learngitbranching.js.org/) — лучший способ наглядно освоить ветвление.
[Visualizing Git](https://git-school.github.io/visualizing-git/) — симулятор команд в реальном времени.

Практика на GitHub:
[GitHub Skills](https://skills.github.com/) — официальные мини-курсы с заданиями.

Прокачайте свои навыки в увлекательном формате!
Playwright 1.59: Технический апгрейд AI-интеграции

Ключевые изменения для встраивания AI-агентов в E2E-пайплайны:

Screencast API
Запись видео с аннотацией действий (подсветка кликов/ввода) и навигационными главами. Позволяет AI-агенту генерировать верифицируемый артефакт прохождения сценария для CI/CD.

browser.bind()
Единая браузерная сессия для нескольких клиентов: MCP-сервер, тестовый раннер, AI-тулчейн. Агент подхватывает уже авторизованный контекст без повторной инициализации.

CLI Debugger
Пошаговый трейс и анализ DOM-снэпшотов в терминале. Используется AI-хилерами для диагностики упавших тестов и автоматической генерации альтернативных селекторов.

Async disposables (await using)
Автоматическая очистка страниц и контекстов — критично для долгоживущих AI-процессов с сотнями микросессий.