Библиотека тестировщика | QA, тестирование, quality assurance, manual testing, autotesting, ручное тестирование, автотесты
9.11K subscribers
1.94K photos
237 videos
107 files
3.41K links
Все самое полезное для тестировщика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/12538d6f

Работать у нас: https://job.proglib.io/

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
🍿 «Но тесты же прошли!» — история бага, который E2E не заметили

🔴 Пользователь видел:

Нажал «Оплатить» → экран мигнул → снова корзина  
Решил «не нажалось» → тапнул ещё раз → опять ничего


🔴 Тесты видели:


Кнопка найдена
tap() выполнен
Переход на следующий экран
Test passed


🔤 Реальность:

Кнопка с анимацией + медленная сеть = race condition  
Второй клик отменял первый API-запрос
Backend возвращал 409, UI молча откатывался назад


💡 Почему тесты не поймали:

1. Проверяли экран, а не результат — смена UI ≠ созданный заказ
2. Не тестировали double tap — в тестах всегда один идеальный клик
3. Не ждали завершения запроса — только waitForElement
4. Flutter-специфика — кастомные виджеты с анимацией ≠ нативные кнопки

Что исправили:

→ Проверка через API: заказ действительно создан

→ Тест на double tap с задержкой 200ms

→ Network throttling в CI (slow 3G)

→ Debounce на кнопке + disabled состояние

💬 А у вас были случаи, когда тесты проходили, а баг уходил в прод?

📍 Навигация: [Вакансии]

🐸 Библиотека тестировщика

#разбор_полетов
Please open Telegram to view this post
VIEW IN TELEGRAM
👏5🥰2😢2
💬 WebSocket на пальцах

☝️ Это HTTP-polling — клиент постоянно спрашивает «есть что-то новое?». Неэффективно и медленно.

WebSocket — это телефонный звонок:

Один раз соединился → канал открыт → оба могут слать данные когда угодно → пока кто-то не отключится


HTTP = SMS (запрос → ответ → конец)
WebSocket = открытая линия связи

🔴 Где встречается:

Чаты, уведомления, онлайн-игры, биржевые котировки, Google Docs Всё, где нужна мгновенная двусторонняя связь

🔤 Что тестировать:

 Обрыв связи — переподключается ли автоматически?  
Смена сети — WiFi → 4G → соединение живое?
Порядок сообщений — не перепутались ли?
Таймаут — долгое бездействие → отвалилось?


Проверка: Chrome DevTools → Network → фильтр WS

📍 Навигация: [Вакансии]

🐸 Библиотека тестировщика

#теория_на_пальцах
Please open Telegram to view this post
VIEW IN TELEGRAM
4🤔3🥰2
📕 Шпаргалка: HTTP-коды ответа

100–199

Запрос принят, сервер ещё работает. Результата нет.


200–299

Запрос выполнен.
⚠️ 200 OK — не гарантия корректной бизнес-логики.


300–399

Перенаправление. Клиенту нужно перейти по другому адресу.


400–499

Ошибка клиента. Запрос неверный или нет прав доступа.
Часто: 400, 401, 403, 404, 422.


500–599

Ошибка сервера. Запрос корректный, сервер не смог обработать.
Часто: 500, 502, 503, 504.


📍 Навигация: [Вакансии]

🐸 Библиотека тестировщика

#артефакт
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🥰3😢1
Как в одной результирующей таблице получить среднюю зарплату работников

👇 Правильный ответ (нажми, чтобы прочитать):

Используйте агрегатную функцию AVG():

```
SELECT AVG(salary) AS avg_salary
FROM employees;```

📌 Такой запрос вернёт одну строку с общей средней зарплатой.

Если нужна средняя зарплата по отделам — добавьте группировку:

```
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department;```

— AVG() игнорирует NULL
— без GROUP BY — один результат
— с GROUP BY — несколько строк, но один результатный набор


🐸 Библиотека тестировщика

#карьерный_трек
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥53🥰2😢1
«Этот манёвр будет стоить нам 51 год...»

QA-инженер без знаний Python и алгоритмов рискует остаться на ручном тестировании навсегда. Не ждите, пока автоматизация закроет двери: время прокачиваться в AI и разработке.

Забирайте обучение в Proglib Academy по старой цене до понедельника:

— Разработка ИИ-агентов
— Математика для разработки AI-моделей
— ML для старта в Data Science
— Математика для Data Science
— Специалист по ИИ
— Алгоритмы и структуры данных
— Программирование на Python
— Основы IT для непрограммистов
— Архитектуры и шаблоны проектирования

Выбрать направление

⚠️ Цены вырастут 19 января
🥰3🤩1
🔍 10 эвристик юзабилити Нильсена за 14 минут

Быстрый ввод в базовые принципы UX, которые полезны при тестировании интерфейсов.

✍🏼 Эвристики помогают замечать типовые UX-проблемы, формулировать баги без субъективных оценок и структурировать UI-чек-листы.

Хорошая отправная точка для UI- и exploratory-тестирования.


🔗 Смотреть по ссылке

📍 Навигация: [Вакансии]

🐸 Библиотека тестировщика

#карьерный_трек
Please open Telegram to view this post
VIEW IN TELEGRAM
3🤩2👍1
📌 Тренажёры для практики Git и GitHub

Подборка площадок, где можно безопасно и осмысленно прокачать Git-навыки — от первого PR до регулярной контрибуции в open source.

🟣 First Contributions

Простой и понятный вход в open source. Пошагово проводит через первый pull request без давления и токсичности.

🟣 GitHub Skills

Официальные интерактивные курсы от GitHub: Issues, Pull Requests, Actions, Pages. Всё в формате «сделал — увидел результат».

🟣 Up-for-Grabs

Каталог open source-проектов с задачами для начинающих. Удобно, если не знаете, куда идти контрибьютить.

Эти ресурсы помогают перейти от «я знаю Git в теории» к реальной работе с репозиториями, PR и ревью — спокойно и без стресса.


📍 Навигация: [Вакансии]

🐸 Библиотека тестировщика

#release_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
5🥰3🔥2🤩1
📕 Тест на знание Git

В тестировании времени почти никогда не хватает: релиз близко, задач много, ошибок ждать не будут.

Git в таких условиях — не «инструмент разработчика», а способ работать быстрее и точнее: смотреть историю изменений, сравнивать версии, понимать, что и где сломалось.

🔗 На сколько вопросов сможете ответить вы?

🐸 Библиотека тестировщика

#стендап_qa
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩3🥰2
👍 REST-вопрос, на котором ошибаются

В REST используются два направления передачи данных:

1️⃣ Клиент → сервер (Request)

Клиент отправляет данные в HTTP-запросе:

• URL (path parameters, query parameters)
• заголовки запроса
• тело запроса (POST / PUT / PATCH)


2️⃣ Сервер → клиент (Response)

Сервер возвращает результат обработки запроса:

• HTTP-статус
• заголовки ответа
• тело ответа (обычно JSON)


REST основан на модели request–response и не предполагает постоянной двусторонней связи.

📍 Навигация: [Вакансии]

🐸 Библиотека тестировщика

#теория_на_пальцах
Please open Telegram to view this post
VIEW IN TELEGRAM
4🤔3🤩2🥰1
🐳 Docker для тестировщика

Docker считают инструментом «для DevOps». А это просто способ не возиться с настройкой окружений и забыть про споры

«у меня работает».


🔢 С ним поднимаете стенд за пару минут, воспроизводите баги в том же окружении, что у разраба, сразу видите, где косяк — в коде или конфиге. Плюс уверенно чувствуете себя с CI и релизами.

🔗 Шпаргалка по ссылке

📍 Навигация: [Вакансии]

🐸 Библиотека тестировщика

#артефакт
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42🥰2🤩1
Тест на внимательность: сегодня дешевле

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

Проверить курсы на прочность
🤩3🥰2
🎲 Задача дня: регистрация без дублей

Регистрация нового пользователя:

POST /api/register


Отправьте одинаковый запрос 5 раз одновременно (интервал 0 мс, один email).


{
"email": "test123@example.com",
"password": "Pass123!"
}


Что должно произойти:

👍 — создан ровно 1 пользователь
🥰 — первый запрос: 201, остальные: 409
❤️ — допустимо: все ответы 200/201, но с одним и тем же userId
🔥 — в БД одна запись с этим email

Это баг, если:

💀 — создано 2+ аккаунтов
💀 — все 5 запросов вернули 201 с разными userId
💀 — ошибка 500 или зависание

Проверка в бд:

SELECT COUNT(*) FROM users WHERE email = 'test123@example.com'


📍 Навигация: [Вакансии]

🐸 Библиотека тестировщика

#стендап_qa
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰11🔥32👍2🤩1
Что такое KISS

👇 Правильный ответ (нажми, чтобы прочитать):

KISS (Keep It Simple, Stupid) — принцип, согласно которому решения, код и тесты должны быть максимально простыми и понятными.

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

Простые тесты легче поддерживать, они стабильнее и быстрее выявляют дефекты.


📍 Навигация: [Вакансии]

🐸 Библиотека тестировщика

#карьерный_трек
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰6😁2🤩2
🌐 Что происходит, когда вы вводите адрес сайта и жмёте Enter

1️⃣ Кэш

Браузер сначала проверяет:

— DNS в кэше браузера и ОС
— сохранённые HTML/CSS/JS/картинки


Если всё есть — сайт открывается почти мгновенно.

2️⃣ DNS (если в кэше пусто)

Домен → IP-адрес


Через цепочку: локальный DNS → корневые → TLD → авторитетные.

Результат кешируется по TTL.

3️⃣ Соединение

— TCP (или QUIC)
— Для HTTPS: TLS и проверка сертификата


4️⃣ HTTP-запрос

Браузер отправляет GET / + заголовки (cookies, user-agent и т.д.).


5️⃣ Ответ сервера

— статус (200, 301, 404…)
— HTML и метаданные


6️⃣ Рендеринг

HTML → CSS → JS → подгрузка ресурсов и API-запросов.


📌 Итог:

Кэш → DNS → соединение → запрос → ответ → рендеринг

🔗 Источник

📍 Навигация: [Вакансии]

🐸 Библиотека тестировщика

#теория_на_пальцах
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔64🥰2
📂 Кейс: «Файл загружен», но его нигде нет

Прогресс-бар дошёл до 100%. Пользователь видит галочку. Переходит в список файлов — пусто.

Что происходит на самом деле

🟡 Фронт показал 100% по завершению отправки
🟡 Сервер ещё обрабатывает файл (вирусы, конвертация, thumbnails)
🟡 База обновится через 5–30 секунд
🟡 Пользователь не ждёт и сразу проверяет список

Happy-path:

— пользователь ждёт несколько секунд
— файл маленький
— обработка моментальная


Реальность:

— большие файлы
— медленный процессинг
— немедленная проверка


Чеклист для тестирования прикрепили к посту 📎

📍 Навигация: [Вакансии]

🐸 Библиотека тестировщика

#разбор_полетов
Please open Telegram to view this post
VIEW IN TELEGRAM
6🥰2😢2
Media is too big
VIEW IN TELEGRAM
📌 k6 — нагрузочное тестирование

k6 — современный инструмент для performance-проверок, ориентированный на автоматизацию и CI/CD, а не на ручное «кликание графиков».

🟢 Чем полезен:

— сценарии читаются как код, а не как XML-лабиринт
— легко встраивается в CI/CD (GitLab CI, GitHub Actions и т.д.)
— понятные метрики: latency, RPS, error rate
— удобно версионировать сценарии вместе с кодом

🟢 Когда брать:

— для базовой и средней нагрузки
— для регресса по производительности
— для автопроверок в CI перед релизом

✖️ Честно о минусах:

— не про сложные enterprise-сценарии на тысячи параметров
— визуализация — через внешние системы (Grafana, Cloud), а не «из коробки»

🔗 Ссылка на GitHub | Ссылка на Desktop версию

📍 Навигация: [Вакансии]

🐸Библиотека тестировщика

#тест_драйв
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰43🤩2
🙂 Почему автотесты не спасают плохую архитектуру

Автотесты — не магия. Если система хрупкая, они просто ломаются вместе с ней.

Узнаёте ситуацию?

→ Поправили тест на логин — упали корзина и оформление заказа

→ Разработчик сменил формат API — минус 30 тестов разом

→ Локально всё зелёное, в CI — падения без объяснений

→ Чтобы запустить один тест, нужно поднять БД, очередь, пару микросервисов и S3


Почему так происходит:

— всё связано со всем, нет чётких границ
— один shared-компонент используется везде
— тестовые данные живут отдельно от реальности

Что с этим делать:

Изоляция — тест логина не должен знать о корзине
Контракты — изменился API → падает контракт, а не весь набор
Фикстуры — данные создаются скриптами и одинаковы везде

📍 Навигация: [Вакансии]

🐸 Библиотека тестировщика

#карьерный_трек
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3🤔3🥰2