В тестировании бывают баги, которые просто фиксишь — и забываешь. А бывают те, которые надолго остаются в памяти.
Вопрос от подписчика:
«Работаю в тестировании уже несколько лет. Иногда ловлю себя на мысли, что самые запоминающиеся баги — это не самые критичные, а самые странные. Например, как-то в форме на сайте имя «Тест» вызывало падение backend-а. А какие баги были у вас?»
Поделитесь историями в комментариях
P.S. Если хотите задать вопрос, заполните нашу гугл-форму. Это займет 5 минут.
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7🤩2🤔1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6💯6🤩2
Многие команды любят цифры. Но можно ли по количеству багов судить о качестве продукта или работе тестировщика?
— Может указывать на плохую реализацию или слабое покрытие
— Мешает команде фокусироваться: баг-трекинг превращается в свалку
— Возникает ощущение нестабильности у заказчика или менеджмента
— Активная фаза тестирования, всё выкопано до релиза
— Тестировщик глубоко погружается в продукт и не «пропускает»
— Много багов ≠ плохой код, особенно на ранних этапах разработки
Реальный кейс:
На одном из проектов QA завёл 150 багов за неделю. Команда запаниковала: «У нас катастрофа?» Оказалось, что новый функционал не был покрыт даже юнитами, и тестировщик просто вытащил наружу всё, что и так было сломано.
А вы как считаете: 200 багов — это тревога или просто хороший день у QA? Поделитесь своим мнением в комментариях!
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤2🥰2🤩2
Эта подборка — короткий и понятный путь в мир попарного тестирования. Что это за метод, зачем он нужен и как быстро начать использовать — с примерами, видео и инструментами.
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤3🥰2🤩1
На фронтенде есть форма регистрации с полем «возраст». Выше — фрагмент HTML и JS.
Какие из вариантов тест-кейсов наиболее точно позволят проверить работу проверки возраста?
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6🤩3🤔2❤1
Правильный ответ:
Anonymous Quiz
5%
10, 25, 70
9%
0, 17, 66, 100
73%
17, 18, 65, 66
14%
null, '', 'abc', 30
👍11🤩4👾2
Senior QA Lead — от 350 000 ₽, офис/гибрид (Москва)
Тестировщик ПО/QA Engineer — офис (Новосибирск)
Automation QA Engineer (Python) — удаленно (Пенза)
Middle+ Тестировщик — до 330 000 ₽, удаленно (Москва)
AQA / Автоматизатор тестирования на Python — от 150 000 ₽, офис (Казань)
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4🤩2
В ней собраны основные команды для эффективного управления ветками и фиксации правок:
Эта памятка поможет быстро ориентироваться в ключевых операциях Git и держать историю вашего проекта в порядке.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7🤩2
Как можно объединить преимущества обеих технологий в одном приложении? Гибридные приложения предлагают решение, которое позволяет экономить время и ресурсы, но не без своих ограничений.
В карточках разобрали ключевые моменты:
Погружаемся в детали
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5🥰3🤩2
Асинхронные экшены в Redux обрабатывают API-запросы и диспатчат действия по результату. Их можно проверить без UI — через мок-хранилище и анализ последовательности.
Почему важно:
Как протестировать:
1. Установим зависимости:
npm install redux-mock-store redux-thunk --save-dev
2. Создадим мок-хранилища:
import configureStore from 'redux-mock-store';
import thunk from 'redux-thunk';
const store = configureStore([thunk])();
3. Пример экшена:
export const fetchData = () => async dispatch => {
dispatch({ type: 'FETCH_START' });
try {
const res = await fetch('/api/data');
const data = await res.json();
dispatch({ type: 'FETCH_SUCCESS', payload: data });
} catch (e) {
dispatch({ type: 'FETCH_ERROR', error: true });
}
};
4. Позитивный сценарий:
it('dispatches FETCH_START и FETCH_SUCCESS', async () => {
global.fetch = jest.fn(() =>
Promise.resolve({ json: () => Promise.resolve({ name: 'test' }) })
);
await store.dispatch(fetchData());
const actions = store.getActions();
expect(actions).toEqual([
{ type: 'FETCH_START' },
{ type: 'FETCH_SUCCESS', payload: { name: 'test' } }
]);
});
5. Негативный сценарий (сетевая ошибка):
it('dispatches FETCH_ERROR при сбое запроса', async () => {
global.fetch = jest.fn(() => Promise.reject('Network error'));
await store.dispatch(fetchData());
const actions = store.getActions();
expect(actions).toEqual([
{ type: 'FETCH_START' },
{ type: 'FETCH_ERROR', error: true }
]);
});
Что проверяет тестировщик:
— Последовательность действий
— Корректность переданных данных
— Обработку ошибок и fallback-поведение
— Отсутствие лишних или пропущенных экшенов
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩5👍3🥰2🔥1
❗ Первый вебинар нашего курса по AI-агентам уже прошёл!
Запись уже выложили на обучающей платформе — можно влетать и догонять с комфортом.
Первые слушатели уже оставили фидбэки — и, кажется, мы попали в точку:
— «теперь наконец понял, как выбирать модели под задачу — раньше брал первую попавшуюся»
— «без лишнего, по делу, в лайве — кайф»
— «огонь, ожидания 100% оправданы лично у меня»
Если хотели вписаться, но сомневались — ещё не поздно. Вебинары идут вживую, записи сохраняются, чат работает, материалы открыты.
⏳ Ещё можно догнать и пройти всё вместе с потоком.
👉 Залетай на курс
Запись уже выложили на обучающей платформе — можно влетать и догонять с комфортом.
Первые слушатели уже оставили фидбэки — и, кажется, мы попали в точку:
— «теперь наконец понял, как выбирать модели под задачу — раньше брал первую попавшуюся»
— «без лишнего, по делу, в лайве — кайф»
— «огонь, ожидания 100% оправданы лично у меня»
Если хотели вписаться, но сомневались — ещё не поздно. Вебинары идут вживую, записи сохраняются, чат работает, материалы открыты.
⏳ Ещё можно догнать и пройти всё вместе с потоком.
👉 Залетай на курс
🥰4❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
💯6🤩3
При тестировании приложений часто забывают про экраны с необычными разрешениями, например, 800x600 или 5K. Эти размеры требуют отдельного подхода, чтобы убедиться, что интерфейс остаётся функциональным и красивым на всех типах устройств.
Промпт:
How can I check the responsiveness of my application for screen resolutions that are rarely used (e.g., 800x600 or 5K)? What testing tools and
methods should be applied for these screen sizes?Чем полезен:
Дополнительно можно запросить:
— Как настроить медиа-запросы для таких разрешений
— Использование инструментов, таких как Chrome DevTools, для проверки адаптивности
— Рекомендации по улучшению интерфейса для редких экранов
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5🤩2👍1
Наш подписчик поделился интересной историей:
«Во время тестирования регистрации на сайте я наткнулся на баг, из-за которого пользователи из разных часовых поясов не могли подтвердить свои аккаунты. Всё выглядело нормально, но время для ввода кода подтверждения не совпадало с реальным временем пользователя.
После разбирательства оказалось, что система не учитывала часовой пояс при расчёте времени действия кода. Пришли к такому решению: конвертировать время в UTC и отображать с учётом часового пояса.»
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🤩3😁2
Media is too big
VIEW IN TELEGRAM
Как относитесь к созданию своего жпт не через конструктор, а хардкорно через код?
🔥 — я своего завайбкодил
🏃♀️ Ссылка на курс
🔥 — я своего завайбкодил
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩5🌚2👏1
Cypress позволяет сохранять и восстанавливать сессию (cookies, localStorage, sessionStorage) при помощи команды
cy.session(), чтобы логин не выполнялся перед каждым it. Это ускоряет тесты и делает их стабильнее.Что еще полезного:
Как настроить:
beforeEach(() => {
cy.session(['[email protected]', '123456'], () => {
cy.visit('/login')
cy.get('input[name="email"]').type('[email protected]')
cy.get('input[name="password"]').type('123456')
cy.get('button[type="submit"]').click()
cy.url().should('contain', '/dashboard')
}, {
cacheAcrossSpecs: false
})
cy.visit('/dashboard')
})
cy.session() — кэширует сессию по идентификатору (массив или строка)cy.session() обязательно добавляйте cy.visit(), чтобы перейти на нужную страницу — Используйте
cacheAcrossSpecs: true, чтобы сессия сохранялась между spec-файлами при запуске cypress run --browser electron (но могут быть нюансы с Chrome)— Для валидации сессии можно добавить
validate() опцию: при неуспехе — сессия пересоздаётся— Cypress.session API позволяет отслеживать и очищать, если необходимо
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👏6🥰3😁1
Вы знаете, как устроен баг-репорт, умеете писать автотесты и работать с API — но ваше резюме на HH никто не смотрит? Значит, пора перестать ждать и начать играть по правилам алгоритма.
Что в карточках:
Если хотите больше откликов — научитесь быть видимым для системы.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🥰2