Библиотека тестировщика | QA, тестирование, quality assurance, manual testing, autotesting, ручное тестирование, автотесты
Відкрити в Telegram
Все самое полезное для тестировщика в одном канале. Наши курсы: https://clc.to/wlBkTA По рекламе: @tproger_sales_bot Учиться у нас: https://proglib.io/w/12538d6f Для обратной связи: @proglibrary_feeedback_bot
Показати більше8 954
Підписники
Немає даних24 години
-167 днів
-6330 днів
Архів дописів
Данные в UI есть, а page.route молчит
Мок Playwright не срабатывает, хотя страница показывает данные. Один из возможных участников цепочки — Service Worker. В документации Playwright отдельно разобран случай с MSW: его Service Worker забирает запросы, и они становятся невидимыми для
page.route() и browserContext.route().
Для теста, которому нужен перехват средствами Playwright, документация предлагает блокировать Service Workers. Настройка Playwright Test:
import { defineConfig } from '@playwright/test'
export default defineConfig({
use: { serviceWorkers: 'block' },
})
Перехват задавайте до действия, которое отправляет запрос. Если при заблокированном SW обработчик начал получать запросы, это повод разобраться с маршрутом запроса в исходной среде. Само по себе это не диагноз «баг приложения».
У такой проверки есть цена: среда изменилась. Прогон с serviceWorkers: 'block' не проверяет настоящий путь через SW, его кеш и offline-поведение. Для них нужен отдельный сценарий со включённым Service Worker.
Почему Service Worker влияет на перехват
#тест_драйв📌 Один курс — хорошее вложение в себя. Два по той же цене — ещё лучше.
В Proglib Academy действует акция: покупаешь один курс, а второй получаешь в подарок.
Например, можно совместить два направления по работе с ИИ:
💥 ИИ для разработчиков — применение нейросетей в повседневной разработке: работа с кодом, тестирование и ревью. 💥 Разработка ИИ-агентов — архитектура агентов и создание собственных AI-решений.📍 Разница в цене — почти 50 тысяч рублей. Можно освоить больше, не выходя за рамки запланированного бюджета. А если тебе интереснее Python, алгоритмы, backend или DevOps — выбирай другую пару курсов из каталога. Акция действует до 31 октября включительно ⏳ ⏮️ Пора прокачать свой стек
Warning тоже можно проверить тестом
Функция обработала ошибку, но забыла записать предупреждение. Если такой лог нужен для диагностики, одного правильного результата функции мало.
В pytest фикстура
caplog даёт доступ к записям логов. В record_tuples каждая запись — это имя logger, числовой уровень и уже сформированное сообщение.
import logging
def reject_payment():
logging.getLogger('payments').warning('payment rejected: %s', 'timeout')
def test_warning_is_contract(caplog):
with caplog.at_level(logging.WARNING, logger='payments'):
reject_payment()
assert ('payments', logging.WARNING, 'payment rejected: timeout') in caplog.record_tuples
Проверка наличия нужной тройки допускает другие записи. Сравнение всего вывода целиком сделало бы тест зависимым от посторонних логов. at_level меняет уровень временно, в пределах блока.
Если захват пуст, проверьте настройку logging: dictConfig может удалить обработчик caplog с root logger. Для записей из другой стадии теста используйте get_records('setup') или соответствующее имя стадии.
Это учебный logger. Показанный тест и проверка отсутствия записи без вызова функции прошли на pytest 9.0.3: 2 passed. Реальная платёжная система здесь не тестировалась.
Работа с логами в pytest
#тест_драйвГоризонтальный скролл при увеличении: когда это дефект
Страница при 100% выглядит аккуратно. Увеличиваете масштаб — и для чтения каждой строки приходится двигать её вправо и влево. Для обычного вертикального контента это повод проверить reflow.
Критерий WCAG 2.2 1.4.10, уровень AA требует при ширине, эквивалентной 320 CSS px, сохранять информацию и функции без прокрутки в двух направлениях. Для частей, которым по смыслу нужна двумерная компоновка, есть исключения.
Что проверить
— Доведите CSS-ширину viewport до 320 px. Один из вариантов — исходный viewport 1280 CSS px и browser zoom 400%. Сверяйте фактическую ширину, а не разрешение экрана.
— Прочитайте текст, заполните форму, доберитесь до кнопок. Ничего не должно теряться из-за нового расположения блоков.
— Если на странице таблица или карта, определите границы исключения. Горизонтальная прокрутка такой части сама по себе ещё не доказывает нарушение.
Ловушка с таблицей
Исключение не распространяется на её заголовок, поиск и пагинацию. Обычный текст внутри ячеек тоже должен перестраиваться, если ему не нужна двумерная компоновка.
Pinch zoom и увеличение только текста не равнозначны browser zoom. Этот чек-лист проверяет один критерий и не подтверждает соответствие всему WCAG.
Официальное объяснение Reflow от W3C
#теория_на_пальцах
Первый тест ждал 503, второй сразу получил 200
Учебный мок WireMock устроен так: первый запрос возвращает 503 и переводит сценарий из
Started в Recovered. Следующие запросы в этом состоянии получают 200.
Один тест прошёл эту цепочку. Следующий ждёт исходный 503, но получает 200. В такой ситуации проверьте, не осталось ли состояние от предыдущего теста.
В JSON поле requiredScenarioState задаёт состояние, в котором подходит заглушка. newScenarioState переводит сценарий дальше. Само начало нового теста не означает возврата к Started.
Перед повтором сценария
— Посмотрите текущее состояние через GET /__admin/scenarios.
— На изолированном тестовом экземпляре пустой POST /__admin/scenarios/reset сбрасывает все сценарии.
— Для одного сценария, например retry, используйте пустой PUT /__admin/scenarios/retry/state.
Общий reset может сбросить состояние соседнего параллельного теста. Поэтому для параллельных прогонов нужна изоляция экземпляров или сценариев, а не только сброс «перед каждым тестом».
Цепочка 503 → 200 проверяет поведение клиента на заданных ответах мока. Восстановление настоящего внешнего API она не подтверждает.
Состояния и сброс сценариев WireMock
#теория_на_пальцах😎 Выбираешь один курс, второй получаешь бесплатно. Баг? Нет, акция!
До 31 октября в Proglib Academy можно выбрать два курса и заплатить только за один.
Например, можно совместить:
💥 ИИ для разработчиков — применение нейросетей в повседневной разработке: работа с кодом, тестирование и ревью. 💥 Разработка ИИ-агентов — архитектура агентов и создание собственных AI-решений.Вместе курсы стоят 108 000 ₽, но по акции оба обойдутся в 59 000 ₽. Экономия — 49 000 ₽ 🔥 Интересуют Python и ИИ или алгоритмы и архитектура? Можно выбрать любые два курса из каталога. Акция действует до 31 октября включительно ⏳ ⏬ Собрать свой учебный билд
Checks красные, а CI зелёный
В отчёте k6 есть неуспешные проверки ответов, но шаг CI завершился успешно. Прежде чем искать ошибку в пайплайне, посмотрите на thresholds.
check фиксирует результат проверки. Сам по себе он не меняет код завершения k6. Критерий провала всего прогона задаёт threshold по метрике.
Например, в скрипт с checks можно добавить такой учебный порог:
export const options = {
thresholds: {
checks: ['rate>0.9'],
},
}
Он требует больше 90% успешных checks. Ровно 90% уже не проходит. Если хотя бы один threshold нарушен, k6 завершает прогон с ненулевым кодом. Шаг CI должен учитывать этот код.
Число 90% здесь показывает синтаксис, а не рекомендуемую планку качества. Порог выбирают из требований продукта. То же относится к http_req_duration: ['p(95)<200']: это пример ограничения 95-го перцентиля времени запросов в миллисекундах.
Порог не задаёт профиль нагрузки. Зелёный результат одного прогона не доказывает, что сервис выдержит любое число пользователей.
Checks и thresholds в документации k6
#тест_драйвДва NULL при UNIQUE. Это баг?
В PostgreSQL 18 у необязательного поля
external_id стоит обычный UNIQUE. Вы создаёте две записи без внешнего идентификатора, в обеих сохраняется NULL. База принимает их. Заводим дефект?
Подсказка: уникальность и обязательность значения — разные требования.
Сам по себе второй NULL не нарушает обычный UNIQUE в PostgreSQL 18. По умолчанию два NULL не считаются равными при этой проверке. Если по требованиям допустим только один NULL, проверьте вариант UNIQUE NULLS NOT DISTINCT. Если значение обязательно, нужен NOT NULL.
Перед выводом сверяйте требования с реальным DDL таблицы. Проверьте три случая: два одинаковых непустых значения, два разных и два NULL.
Отдельно посмотрите, что API сохраняет из пустой строки и отсутствующего поля запроса. Это разные входные данные, и приложение может их преобразовывать. Поведение PostgreSQL не стоит переносить на все СУБД.
Ограничения в PostgreSQL 18
#теория_на_пальцахНовый уровень ИТ-практик: Импульс Т1 снова в Москве 🚀
19 ноября столица примет ИТ-конференцию Импульс Т1. Мы создаём среду, где специалисты получают не просто полезную информацию, а рабочие инструменты, применимые в проектах уже на следующий день.
Импульс Т1 2026 — это:
🔹5 направлений деловой программы; 🔹130+ экспертных спикеров; 🔹70+ прикладных активностей; 🔹2 000+ участников сообщества.Уникальный формат — учимся через действие: каждый участник собирает индивидуальный трек, объединяя доклады и практические тренажеры. Среди них ⬇️ 🔘Код-ретрит – оттачиваем инженерные практики, парное программирование и TDD; 🔘Зона арх-каты – разбираем архитектурные кейсы, ищем уязвимости и моделируем решения на интерактивной карте; 🔘Ресурсные игры – проверяем командные коммуникации и скорость принятия решений в условиях жестких ограничений; 🔘Стенд доступности – тестируем интерфейсы и сценарии с точки зрения инклюзивности и доступной среды. Ваше участие — это возможность: ✔️ прокачать практические навыки на реальных задачах; ✔️ поделиться опытом и создать сильное профессиональное окружение вокруг себя; ✔️забрать передовые практики раньше конкурентов. 📆 Дата: 19 ноября 2026 года. 📍 Место: г. Москва, ул. Волочаевская, д. 48, стр. 1, Дворец культуры завода «Серп и молот» (LOFT#8). Покажите экспертизу на деле, осваивайте новейшие подходы и двигайте ИТ-индустрию вперёд! Регистрация по ссылке. О рекламодателе
Импульс Т1: возвращаемся с главным ИТ-событием осени ⚡️
19 ноября в Москве состоится одна из самых значимых ИТ-конференций года — Импульс Т1. Это масштабная площадка для обмена практическим опытом и формирования актуальных инженерных навыков.
Мероприятие объединит более 2000 участников ИТ-отрасли: программистов, архитекторов, инженеров, лидеров технологического рынка — всех, кто создает цифровое будущее.
Вас ждет:
🔹5 направлений деловой программы; 🔹130+ спикеров со всей страны; 🔹70+ активностей от практиков индустрии.Главная особенность года — «практические тренажеры», когда каждый участник формирует свой маршрут и сразу отрабатывает теорию на практике: 🔘Код-ретрит — развитие навыков парного программирования, разработка через тестирование и фокус на качестве кода в реальных условиях; 🔘Ресурсные игры — командная работа с ограничениями ресурсов и времени, практика решений конфликтов и ретроспективы; 🔘Зона арх-каты — стресс-тест архитектуры на прочность, поиск слабых мест и интерактивная карта решений; 🔘Стенд доступности — практическое погружение в цифровую доступность и опыт взаимодействия людей с ОВЗ с ИТ-сервисами. Зачем участвовать?
✔️ Получить реальные инструменты для ежедневной работы. ✔️ Показать экспертизу на деле и обменяться опытом с ведущими инженерами. ✔️ Быть в курсе ключевых трендов и опережать индустрию. ✔️ Стать частью сообщества технологических лидеров отрасли.📆 Дата: 19 ноября 2026 года. 📍 Где встречаемся: г. Москва, ул. Волочаевская, д. 48, стр. 1, Дворец культуры завода «Серп и молот» (LOFT#8). Получите доступ к опыту лидеров отрасли и новым ИТ-решениям, регистрируйтесь по ссылке. О рекламодателе
Тестируем не запрос, а цепочку действий
В учебной корзине добавление работает. При удалении товар исчезает, а общая цена остаётся прежней. Одиночный happy path этого не показывает.
Проверка модели
— Храним простой эталон корзины.
— Hypothesis выбирает цепочки add/remove.
— После каждого шага сравниваем итог с суммой позиций модели.
В проверенном примере Hypothesis 6.169 сократил сбой до
add(pen) → remove(pen): товара нет, сумма всё ещё 20. Исправленный вариант прошёл прогоны с max_examples=50 и stateful_step_count=20.
Найденную цепочку сохраняем как регрессионный пример. Успешный прогон не доказывает корректность всех сценариев.
Документация
Навигация: Вакансии
Библиотека тестировщика
#теория_на_пальцах☔️ Планы на выходные снова испортила погода? У нас есть план получше.
Выходные — хороший повод заняться тем, на что вечно не хватает времени. Например, освоить новый навык или углубиться в знакомую тему.
📍 В Proglib Academy покупаешь один курс, а второй получаешь в подарок. Платишь только за один!
Вот несколько сочетаний:
💥 Разработка ИИ-агентов + Python
💥 Machine Learning + Математика для Data Science
Можно выбрать и другие курсы — под свои интересы и цели.
⏳ Акция действует до 18 октября.
➡️ Выбрать курсы и оставить заявку
Пять минут без sleep: проверяем таймаут интерфейса
Тест ждёт выхода по бездействию? В Playwright временем можно управлять через
page.clock.
Короткий маршрут
1. Вызываем install до запуска таймеров страницы.
2. Через fastForward переносим часы к границе таймаута.
3. Проверяем: действие пользователя сбрасывает отсчёт, а бездействие меняет состояние UI.
В учебном тесте на Playwright 1.62.1 проверены обе ветки без пяти минут ожидания. setFixedTime фиксирует Date, а для управления таймерами нужен установленный clock.
Это проверка браузерного поведения. Серверный срок жизни токена таким тестом не подтверждается.
Документация
Навигация: Вакансии
Библиотека тестировщика
#тест_драйвНовый уровень ИТ-практик: Импульс Т1 снова в Москве 🚀
19 ноября столица примет ИТ-конференцию Импульс Т1. Мы создаём среду, где специалисты получают не просто полезную информацию, а рабочие инструменты, применимые в проектах уже на следующий день.
Импульс Т1 2026 — это:
🔹5 направлений деловой программы; 🔹130+ экспертных спикеров; 🔹70+ прикладных активностей; 🔹2 000+ участников сообщества.Уникальный формат — учимся через действие: каждый участник собирает индивидуальный трек, объединяя доклады и практические тренажеры. Среди них ⬇️ 🔘код-ретрит – оттачиваем инженерные практики, парное программирование и TDD; 🔘зона арх-каты – разбираем архитектурные кейсы, ищем уязвимости и моделируем решения на интерактивной карте; 🔘ресурсные игры – проверяем командные коммуникации и скорость принятия решений в условиях жестких ограничений; 🔘стенд доступности – тестируем интерфейсы и сценарии с точки зрения инклюзивности и доступной среды. Ваше участие — это возможность: ✔️ прокачать практические навыки на реальных задачах; ✔️ поделиться опытом и создать сильное профессиональное окружение вокруг себя; ✔️забрать передовые практики раньше конкурентов. 📆 Дата: 19 ноября 2026 года. 📍 Место: г. Москва, ул. Волочаевская, д. 48, стр. 1, Дворец культуры завода «Серп и молот» (LOFT#8). Покажите экспертизу на деле, осваивайте новейшие подходы и двигайте ИТ-индустрию вперёд! Регистрация по ссылке. О рекламодателе
Repost from Библиотека программиста
👀 Как вы смотрите видео?
Разбираете урок, слушаете интервью фоном или начинаете на телефоне, а продолжаете на большом экране?
Хотим узнать, что делает просмотр удобным для вас. Вспомните последнее видео — ролик, урок, фильм или серию сериала — и расскажите о своём опыте. Если детали не запомнились, можно так и ответить.
🕰️ Опрос займёт около 3 минут.
В результатах сможете сравнить свои привычки с ответами других участников. А разработчики и инженеры видеоплатформы расскажут, что происходит по ту сторону экрана, пока вы смотрите видео.
🔗 Поделиться опытом
🐸 Библиотека программиста
Repost from Нейроканал
Showboat и Rodney помогают показать работу ИИ-агента
Саймон Уиллисон собирает демонстрации кода с помощью двух своих инструментов. Showboat выполняет команды и записывает их вывод в документ. Rodney управляет Chrome из командной строки и делает скриншоты интерфейса.
uvx showboat --help
Эту команду автор предлагает дать агенту: в справке есть всё необходимое, чтобы тот создал документ с демонстрацией новой функции.
Уиллисон замечал и обход механизма: агент напрямую правит текст отчёта. Тогда записанный вывод может расходиться с реальным запуском. Содержимое демонстрации тоже требует проверки.
#ии #инструментыRepost from Нейроканал
Вспомните последний раз, когда ИИ сделал для вас рабочий результат: код, тесты, документацию или требования. Как вы его проверяли?
🎹 Что делать после ChatGPT?
Следующий шаг — AI-агенты. Они не просто отвечают на запросы, а сами работают с данными, инструментами и выполняют цепочки действий.
На курсе «Разработка ИИ-агентов» разбираем всё, что нужно для этого уровня:
⬇️ RAG и работа с данными
⬇️ MCP и инструменты
⬇️ структурированный вывод
⬇️ контроль качества и стоимости
⬇️ мультиагентные системы
⬇️ AgentOps
Курс полностью в записи — проходите материалы в своём темпе, без привязки к расписанию.
⏰ 4 октября цена вырастет на 10 000 ₽.
Если давно хотели разобраться в AI-агентах — сейчас ещё можно зайти по текущей цене.
🔗 Посмотреть курс
🔥 Последний день для разработчиков
AI уже пишет код. Теперь важнее научиться встраивать его в разработку так, чтобы он действительно экономил время.
На курсе «ИИ для разработчиков» собираете AI-workflow на своём проекте: от задачи и планирования до тестов, ревью и PR 🤩Разберёте AI-агентов, MCP, контекст проекта, безопасность и контроль расходов на модели. 📍 Только сегодня, 30 сентября — скидка 10 000 ₽
Промокод: LastcallAI
🤩 Присоединиться к курсу🎁 Вот как может выглядеть подарок человеку, у которого уже всё есть ☝️🎬
Не очередная кружка, сертификат или носки 😄
А собственный музыкальный клип, где главный герой — он сам.
Его любимый трек. Его образ. Его история ❤️
С ClipChat не нужны съёмки и монтаж: загружаете трек, AI придумывает концепцию и раскадровку, создаёт сцены, сохраняет образ героя и собирает всё в готовый клип.
А реакция потом одна:
«ПОДОЖДИ… ЭТО КАК ВООБЩЕ СДЕЛАЛИ?!» 😳🔥
🎬 Создать свой клип в ClipChat
