ru
Feedback
Желтый QA

Желтый QA

Закрытый канал

Канал QA-комьюнити Т-Банка. Здесь мы делимся кейсами, рассказываем про технологии тестирования и говорим про надежность и качество продуктов. Кейсы, технологии и анонсы митапов по направлениям: https://t.me/kod_zheltyi

Больше
4 088
Подписчики
-324 часа
-87 дней
-3330 день
Архив постов
🎉 Нам 4 года! Четыре года назад мы запустили канал Желтый QA с простой, но важной миссией: делать культуру качества частью п
🎉 Нам 4 года! Четыре года назад мы запустили канал Желтый QA с простой, но важной миссией: делать культуру качества частью повседневной работы команд. Все это время команда канала ежедневно работает над контентом, чтобы: ✅ Повышать качество наших продуктов через обмен лучшими практиками ✅ Распространять культуру тестирования и обеспечения качества (QA) не только в компании, но и среди всего QA комьюнити ✅ Делиться реальной экспертизой: от отдельных тест-кейсов до архитектурных паттернов, автоматизации и интеграции с AI Спасибо, что вы с нами! Ваши реакции, вопросы и дискуссии в комментариях делают этот канал живым и полезным. Впереди ещё много интересного! Оставайтесь с нами, чтобы строить надежные продукты вместе! 🚀 Подписывайтесь 📚

А вы проверяете логи в автотестах? 🤔 Знакомая ситуация: после релиза инженеры вручную открывают логи и глазами проверяют, что персональные данные замаскированы? Когда сервисов мало — работает. Но при масштабировании ручная проверка становится узким горлышком. 📖 В своей статье Марина Столповская, инженер по обеспечению качества в Т-Банке, рассказала, как они с командой автоматизировали проверку маскирования чувствительных данных в логах — сделали её частью CI/CD-пайплайна. ❓ Коллеги, а как у вас? Проверяете логи в автотестах или пока вручную? Были ли инциденты из-за «утечки» данных в логах? Делитесь опытом! 👇 Подписывайтесь 📚 #статья_телеграф

Пятый сезон подкаста завершен 🐸 Начинали мы с вопроса «Я не умею и не хочу программировать, меня уволят?», а весь пятый сезо
+4
Пятый сезон подкаста завершен 🐸 Начинали мы с вопроса «Я не умею и не хочу программировать, меня уволят?», а весь пятый сезон разбирались, что вокруг нас — эволюция или революция. Что было в сезоне? 🐱 ✨ Обсудили, что реально изменилось в профессии QA за это время. ✨ Поговорили про Сферы, бизнес-платформы и то, как ускорять Time to Market, не теряя культуру качества. ✨ Залезли под капот к одному из сервисов экосистемы и разобрались, как ИИ меняет работу с обращениями пользователей. ✨ Поговорили про новое поколение, тренды в образовании и зачем вообще высшее образование. ✨ Узнали, как технологии защищают нас от мошенников. ✨ Закрыли сезон разговором про AGI, тревогу от ИИ и тестирование агентов, которые уже перехватывают наши профессиональные навыки. Так эволюция это была или революция? 🤔 Пишите свой ответ в комментариях — соберем самые интересные ответы 🐸 А пока делимся кадрами с записей— за этими кадрами скрывается много хороших разговоров 📸 Подписывайтесь 📚 #qak_qak

🏦 Возвращаемся к недавней задаче! Наш 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 ☑️ Я шагаю по Москве ☑️ Последний богатырь Подписывайтесь 📚

Наш 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 расшифровать фильмы и хорошо отдохнуть летними вечерами после работы! Ответы принимаются как списком фильмов, так и расшифровщиком в комментариях под постом 🐈

Было? Подписывайтесь 📚 #мем

❓ А знаете ли вы, что такое модель зрелости QA? Скорее открывайте новую статью, в которой Эдвард Аджей, QA Head в Т-Банке, по
❓ А знаете ли вы, что такое модель зрелости QA? Скорее открывайте новую статью, в которой Эдвард Аджей, QA Head в Т-Банке, подробнее рассказал о модели и её внедрении в командах. 🟡 Зачем создали свою модель зрелости? 🟡 Каково устройство Quility Maturity Model? 🟡 Какие проблемы в команде она может подсветить? 🟡 Есть ли перспективы развития у данного инструмента? Узнать ответы на эти вопросы, а также узнать больше о практике оценки процессов вы сможете прочитав данный материал. ⬇️ Пишите в комментариях, проводите ли вы анализ процессов у себя с помощью подобных инструментов? #статья

❓ Давайте подведем итоги сложного выбора: «Является ли унификация процессов фундаментом для роста или лишней бюрократией?» Бо
❓ Давайте подведем итоги сложного выбора: «Является ли унификация процессов фундаментом для роста или лишней бюрократией?» Большинство из вас считает, что без единых процессов команде сложно расти и сохранять качество. Но важно помнить: унификация должна лечить реальную боль, а не создавать видимость порядка. Стандартизируйте критичное, но оставляйте место для экспериментов. Спасибо вам за голоса! Пусть ваши процессы будут гибкими, но надежными. #сложный_выбор

Видеосообщение00:56

Видеосообщение00:59

В предыдущем посте мы привели чек-лист онбординга для QA 📝 🔹 А как в вашей команде/компании обстоит дело с онбордингом? 🔹 Кто отвечает за адаптацию новичка в команде? 🔹 Можно ли по имеющейся документации понять, что и как работает? Расскажите в комментариях и проголосуйте в опросе ниже 👇 Подписывайтесь 📚 #опрос

📃 Последовательный чек-лист для онбординга может сильно облегчить адаптацию нового сотрудника в команде 👀 Предлагаем вам готовый чек-лист онбординга для QA, который помогает не только ускорить адаптацию нового специалиста по качеству, но и навести порядок в документации команды и продукта 👇🏻 Добавляйте в комментарии, если мы что-то забыли Подписывайтесь 📚 #полезная_подборка

Генерация всего. Завершаем пятый сезон "QАk-QAk – и в Продакшен" - "Эволюция или революция"! 🐸 Герой этого выпуска - Алексан
Генерация всего. Завершаем пятый сезон "QАk-QAk – и в Продакшен" - "Эволюция или революция"! 🐸 Герой этого выпуска - Александр Поломодов - технический директор в Т-Банке. О чем болтаем? 🐱 ✨ Обсудим, как ИИ внедрился в нашу жизнь и необратимо трансформировал индустрию и рынок труда. ✨ Поделимся тревогой и ощущениями, что упускаем что-то важное. ✨ Узнаем, что такое AGI и то, какие прорывные вещи мы сможем сделать с ним. ✨ Разберемся, является ли опыт и возраст блокером на пути внедрения ИИ-инструментов. ✨ Выясним, как нужно тестировать ИИ-агенты, и что делать, если агенты уже перехватили твой профессиональный навык. А вы используете ИИ-инструменты в работе или повседневной жизни ❓ Как по вашему, являются ли они действительно помощниками или только все усложняют ❓ Слушайте нас на платформах: 📱 Яндекс музыка 📱 Apple Podcast 📱 ВК 📱 Telegram А также можете найти удобную для прослушивания платформу тут 😎 Подписывайтесь 📚 #qak_qak

Делимся фотоотчетом с прошедшего Сезона кода в Санкт-Петербурге! На фестивале наш коллега Григорий Березин выступал с докладо
+2
Делимся фотоотчетом с прошедшего Сезона кода в Санкт-Петербурге! На фестивале наш коллега Григорий Березин выступал с докладом про Gray-box тестирование. В своем выступлении он говорил о следующем: 🟡 Почему они пишут тесты на другом языке 🟡 Какие инструменты для этого используют 🟡 А также поделился стратегиями параллельного запуска изолированных тестов Кто был на мероприятии в эту субботу? Поделитесь в комментариях вашими впечатлениями! #мероприятие

⚡️ Пробовали ли самостоятельно так проверять свои приложения? Пишите в комментариях! Подписывайтесь 📚 #мем
⚡️ Пробовали ли самостоятельно так проверять свои приложения? Пишите в комментариях! Подписывайтесь 📚 #мем

🧠 Возвращаемся с разбором задачи из прошлого поста. Ошибка была в условии цикла: 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 ошибки в бинарном поиске — классика, которую часто спрашивают на собеседованиях, поэтому хорошо помнить о том, как их решать ❤️ Подписывайтесь 📚 #задача

Всем привет! 👋 Сегодня предлагаем вам решить задачу на поиск бага в коде 🔥 Нужно реализовать функцию 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️⃣ Как правильно исправить? Пишите свои варианты в комментариях ⬇️ Подписывайтесь 📚 #задача

Защитники. Встречайте пятый выпуск пятого сезона "QАk-QAk – и в Продакшен". 🐸 Герой этого выпуска – Михаил Гульшин, руководи
Защитники. Встречайте пятый выпуск пятого сезона "QАk-QAk – и в Продакшен". 🐸 Герой этого выпуска – Михаил Гульшин, руководитель технологий защиты в Т-Мобайле. О чем болтаем? 🐱 ✨ Обсудим, какие они – звоночки от мошенников, и как им противостоит Нейрощит. ✨ Выясним, как обучают ML-модели Нейрощита и почему команда ручается за качество определения мошенников. ✨ Узнаем, на что обычно жалуются клиенты и объясним, как их потребности закрывает Фродрулетка. А вы пользуетесь защитниками в своем мобильном ❓ Поделитесь вашим опытом в комментариях! Слушайте нас на платформах: 📱 Яндекс музыка 📱 Apple Podcast 📱 ВК 📱 Telegram А также можете найти удобную для прослушивания платформу тут 😎 Подписывайтесь 📚 #qak_qak