Желтый QA
Canal cerrado
Канал QA-комьюнити Т-Банка. Здесь мы делимся кейсами, рассказываем про технологии тестирования и говорим про надежность и качество продуктов. Кейсы, технологии и анонсы митапов по направлениям: https://t.me/kod_zheltyi
Mostrar más4 090
Suscriptores
-124 horas
-67 días
-3030 días
Archivo de publicaciones
4 089
🎉 Нам 4 года!
Четыре года назад мы запустили канал Желтый QA с простой, но важной миссией: делать культуру качества частью повседневной работы команд.
Все это время команда канала ежедневно работает над контентом, чтобы:
✅ Повышать качество наших продуктов через обмен лучшими практиками
✅ Распространять культуру тестирования и обеспечения качества (QA) не только в компании, но и среди всего QA комьюнити
✅ Делиться реальной экспертизой: от отдельных тест-кейсов до архитектурных паттернов, автоматизации и интеграции с AI
Спасибо, что вы с нами! Ваши реакции, вопросы и дискуссии в комментариях делают этот канал живым и полезным. Впереди ещё много интересного!
Оставайтесь с нами, чтобы строить надежные продукты вместе! 🚀
Подписывайтесь 📚
4 089
А вы проверяете логи в автотестах? 🤔
Знакомая ситуация: после релиза инженеры вручную открывают логи и глазами проверяют, что персональные данные замаскированы?
Когда сервисов мало — работает. Но при масштабировании ручная проверка становится узким горлышком.
📖 В своей статье Марина Столповская, инженер по обеспечению качества в Т-Банке, рассказала, как они с командой автоматизировали проверку маскирования чувствительных данных в логах — сделали её частью CI/CD-пайплайна.
❓ Коллеги, а как у вас?
Проверяете логи в автотестах или пока вручную?
Были ли инциденты из-за «утечки» данных в логах?
Делитесь опытом! 👇
Подписывайтесь 📚
#статья_телеграф
4 089
+4
Пятый сезон подкаста завершен 🐸
Начинали мы с вопроса «Я не умею и не хочу программировать, меня уволят?», а весь пятый сезон разбирались, что вокруг нас — эволюция или революция.
Что было в сезоне? 🐱
✨ Обсудили, что реально изменилось в профессии QA за это время.
✨ Поговорили про Сферы, бизнес-платформы и то, как ускорять Time to Market, не теряя культуру качества.
✨ Залезли под капот к одному из сервисов экосистемы и разобрались, как ИИ меняет работу с обращениями пользователей.
✨ Поговорили про новое поколение, тренды в образовании и зачем вообще высшее образование.
✨ Узнали, как технологии защищают нас от мошенников.
✨ Закрыли сезон разговором про AGI, тревогу от ИИ и тестирование агентов, которые уже перехватывают наши профессиональные навыки.
Так эволюция это была или революция? 🤔
Пишите свой ответ в комментариях — соберем самые интересные ответы 🐸
А пока делимся кадрами с записей— за этими кадрами скрывается много хороших разговоров 📸
Подписывайтесь 📚
#qak_qak
4 089
🏦 Возвращаемся к недавней задаче!
Наш QA инженер смог разгадать несложный шифр и написал расшифровщик
public static void main(String[] args) {
// Перемешанная строка: сначала символы с чётных позиций, потом — с нечётных
String scrambled = "АёаПпвчиТгрнЗелш оои уаи мй"; // ← результат из прошлого кода
// Длина всей строки
int totalLength = scrambled.length();
// Разделяем на две части:
// Первая половина — это символы с ЧЁТНЫХ позиций оригинала
// Вторая половина — это символы с НЕЧЁТНЫХ позиций оригинала
int evenCount = (totalLength + 1) / 2; // сколько символов было на чётных позициях
String evenPart = scrambled.substring(0, evenCount);
String oddPart = scrambled.substring(evenCount);
// Теперь "расплетаем": поочерёдно берём символ из evenPart и oddPart
StringBuilder original = new StringBuilder();
for (int i = 0; i < oddPart.length(); i++) {
original.append(evenPart.charAt(i)); // символ с чётной позиции
original.append(oddPart.charAt(i)); // символ с нечётной позиции
}
// Если в evenPart на один символ больше (когда строка нечётной длины), добавим последний
if (evenPart.length() > oddPart.length()) {
original.append(evenPart.charAt(evenPart.length() - 1));
}
// Выводим расшифрованное название
System.out.println("Расшифровано:");
System.out.println(original.toString());
}
}
⭐️ В итоге у нас есть правильный ответ и список фильмов на лето был успешно восстановлен:
☑️ Алёша Попович и Тугарин Змей
☑️ Летучий корабль
☑️ Чебурашка
☑️ Питер FM
☑️ Я шагаю по Москве
☑️ Последний богатырь
Подписывайтесь 📚4 089
Наш QA инженер запланировал посмотреть несколько интересных фильмов на лето. Составил список и забыл заблокировать ноутбук. 😱
Его коллега решил подшутить над ним и зашифровал список фильмов, при этом оставил ему в подсказку код шифрования и ответы от программы:
public static void main(String[] args) {
// Пример: название фильма
String movie = "Example movie";
StringBuilder even = new StringBuilder();
StringBuilder odd = new StringBuilder();
for (int i = 0; i < movie.length(); i++) {
if (i % 2 == 0) {
even.append(movie.charAt(i));
} else {
odd.append(movie.charAt(i));
}
}
String scrambled = even.toString() + odd.toString();
System.out.println("Угадайте фильм:");
System.out.println(scrambled);
}
}
В ответе программа вернула следующее:
АёаПпвчиТгрнЗелш оои уаи мй
Лтчйкрбьеуи оал
Чбршаеуак
ПтрFие M
Яшгюп оке аа оМсв
Псенйбгтролди оаыь
Помоги нашему QA расшифровать фильмы и хорошо отдохнуть летними вечерами после работы!
Ответы принимаются как списком фильмов, так и расшифровщиком в комментариях под постом 🐈4 089
❓ А знаете ли вы, что такое модель зрелости QA?
Скорее открывайте новую статью, в которой Эдвард Аджей, QA Head в Т-Банке, подробнее рассказал о модели и её внедрении в командах.
🟡 Зачем создали свою модель зрелости?
🟡 Каково устройство Quility Maturity Model?
🟡 Какие проблемы в команде она может подсветить?
🟡 Есть ли перспективы развития у данного инструмента?
Узнать ответы на эти вопросы, а также узнать больше о практике оценки процессов вы сможете прочитав данный материал.
⬇️ Пишите в комментариях, проводите ли вы анализ процессов у себя с помощью подобных инструментов?
#статья
4 089
❓ Давайте подведем итоги сложного выбора:
«Является ли унификация процессов фундаментом для роста или лишней бюрократией?»
Большинство из вас считает, что без единых процессов команде сложно расти и сохранять качество.
Но важно помнить: унификация должна лечить реальную боль, а не создавать видимость порядка. Стандартизируйте критичное, но оставляйте место для экспериментов.
Спасибо вам за голоса! Пусть ваши процессы будут гибкими, но надежными.
#сложный_выбор
4 089
В предыдущем посте мы привели чек-лист онбординга для QA 📝
🔹 А как в вашей команде/компании обстоит дело с онбордингом?
🔹 Кто отвечает за адаптацию новичка в команде?
🔹 Можно ли по имеющейся документации понять, что и как работает?
Расскажите в комментариях и проголосуйте в опросе ниже 👇
Подписывайтесь 📚
#опрос
4 089
📃 Последовательный чек-лист для онбординга может сильно облегчить адаптацию нового сотрудника в команде
👀 Предлагаем вам готовый чек-лист онбординга для QA, который помогает не только ускорить адаптацию нового специалиста по качеству, но и навести порядок в документации команды и продукта
👇🏻 Добавляйте в комментарии, если мы что-то забыли
Подписывайтесь 📚
#полезная_подборка
4 089
Генерация всего.
Завершаем пятый сезон "QАk-QAk – и в Продакшен" - "Эволюция или революция"! 🐸
Герой этого выпуска - Александр Поломодов - технический директор в Т-Банке.
О чем болтаем? 🐱
✨ Обсудим, как ИИ внедрился в нашу жизнь и необратимо трансформировал индустрию и рынок труда.
✨ Поделимся тревогой и ощущениями, что упускаем что-то важное.
✨ Узнаем, что такое AGI и то, какие прорывные вещи мы сможем сделать с ним.
✨ Разберемся, является ли опыт и возраст блокером на пути внедрения ИИ-инструментов.
✨ Выясним, как нужно тестировать ИИ-агенты, и что делать, если агенты уже перехватили твой профессиональный навык.
А вы используете ИИ-инструменты в работе или повседневной жизни ❓
Как по вашему, являются ли они действительно помощниками или только все усложняют ❓
Слушайте нас на платформах:
📱 Яндекс музыка
📱 Apple Podcast
📱 ВК
📱 Telegram
А также можете найти удобную для прослушивания платформу тут 😎
Подписывайтесь 📚
#qak_qak
4 089
+2
Делимся фотоотчетом с прошедшего Сезона кода в Санкт-Петербурге!
На фестивале наш коллега Григорий Березин выступал с докладом про Gray-box тестирование. В своем выступлении он говорил о следующем:
🟡 Почему они пишут тесты на другом языке
🟡 Какие инструменты для этого используют
🟡 А также поделился стратегиями параллельного запуска изолированных тестов
Кто был на мероприятии в эту субботу? Поделитесь в комментариях вашими впечатлениями!
#мероприятие
4 089
⚡️ Пробовали ли самостоятельно так проверять свои приложения? Пишите в комментариях!
Подписывайтесь 📚
#мем
4 089
🧠 Возвращаемся с разбором задачи из прошлого поста.
Ошибка была в условии цикла: while left < right вместо while left <= right.
Из-за строгого < цикл завершается, как только область поиска сужается до одного элемента (left == right). Этот последний элемент так и не проверяется — и если искомое число оказалось именно там, функция возвращает -1, хотя элемент в массиве есть.
Чаще всего под удар попадают крайние элементы (первый и последний), потому что поиск нередко сходится именно к ним.
Пример-ловушка:
nums = [1, 3, 5, 7, 9], target = 9 → вернёт -1 вместо 4 nums = [1, 3, 5, 7, 9], target = 3 → вернёт -1 вместо 1Разберём target = 9 по шагам (индексы 0–4): left=0, right=4, mid=2 → nums[2]=5 < 9 → left=3 left=3, right=4, mid=3 → nums[3]=7 < 9 → left=4 left=4, right=4 → условие 4 < 4 ложно → выходим → return -1 На последнем шаге left == right == 4, и nums[4] == 9 — это и есть наш ответ, но цикл до него «не дотягивается». Правильное решение:
def binary_search(nums, target): left, right = 0, len(nums) - 1 while left <= right: # <= вместо mid = (left + right) // 2 if nums[mid] == target: return mid elif nums[mid] < target: left = mid + 1 else: right = mid - 1 return -1С условием left <= right область поиска из одного элемента тоже проверяется, и крайние значения находятся корректно. Такие off-by-one ошибки в бинарном поиске — классика, которую часто спрашивают на собеседованиях, поэтому хорошо помнить о том, как их решать ❤️ Подписывайтесь 📚 #задача
4 089
Всем привет! 👋
Сегодня предлагаем вам решить задачу на поиск бага в коде 🔥
Нужно реализовать функцию binary_search, которая ищет target в отсортированном массиве и возвращает его индекс. Если элемента нет — функция возвращает -1.
Примеры:
binary_search([1, 3, 5, 7, 9], 5) → 2 binary_search([2, 4, 6, 8], 4) → 1 binary_search([1, 3, 5, 7, 9], 2) → -1Для решения задачи написан такой код:
def binary_search(nums, target): left, right = 0, len(nums) - 1 while left < right: mid = (left + right) // 2 if nums[mid] == target: return mid elif nums[mid] < target: left = mid + 1 else: right = mid - 1 return -1Код запускается без ошибок, но в некоторых примерах выдаёт некорректный результат. Вопросы: 1️⃣ В чём логическая ошибка? 2️⃣ При каких входных данных функция вернёт неверный результат? 3️⃣ Как правильно исправить? Пишите свои варианты в комментариях ⬇️ Подписывайтесь 📚 #задача
4 089
Защитники.
Встречайте пятый выпуск пятого сезона "QАk-QAk – и в Продакшен". 🐸
Герой этого выпуска – Михаил Гульшин, руководитель технологий защиты в Т-Мобайле.
О чем болтаем? 🐱
✨ Обсудим, какие они – звоночки от мошенников, и как им противостоит Нейрощит.
✨ Выясним, как обучают ML-модели Нейрощита и почему команда ручается за качество определения мошенников.
✨ Узнаем, на что обычно жалуются клиенты и объясним, как их потребности закрывает Фродрулетка.
А вы пользуетесь защитниками в своем мобильном ❓
Поделитесь вашим опытом в комментариях!
Слушайте нас на платформах:
📱 Яндекс музыка
📱 Apple Podcast
📱 ВК
📱 Telegram
А также можете найти удобную для прослушивания платформу тут 😎
Подписывайтесь 📚
#qak_qak
