惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Project Zero
Project Zero
B
Blog RSS Feed
爱范儿
爱范儿
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
阮一峰的网络日志
阮一峰的网络日志
美团技术团队
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
D
Docker
B
Blog
大猫的无限游戏
大猫的无限游戏
V
Vulnerabilities – Threatpost
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
Schneier on Security
Spread Privacy
Spread Privacy
NISL@THU
NISL@THU
博客园 - 【当耐特】
IT之家
IT之家
云风的 BLOG
云风的 BLOG
L
Lohrmann on Cybersecurity
V
V2EX
Latest news
Latest news
S
Secure Thoughts
C
Check Point Blog
N
Netflix TechBlog - Medium
N
News | PayPal Newsroom
C
Cybersecurity and Infrastructure Security Agency CISA
The Register - Security
The Register - Security
The Cloudflare Blog
博客园_首页
博客园 - 三生石上(FineUI控件)
L
LINUX DO - 最新话题
W
WeLiveSecurity
G
GRAHAM CLULEY
量子位
T
The Exploit Database - CXSecurity.com
Security Latest
Security Latest
C
Cisco Blogs
Security Archives - TechRepublic
Security Archives - TechRepublic
GbyAI
GbyAI
A
Arctic Wolf
Attack and Defense Labs
Attack and Defense Labs
博客园 - 叶小钗
SecWiki News
SecWiki News
Vercel News
Vercel News
Engineering at Meta
Engineering at Meta
S
Security @ Cisco Blogs
小众软件
小众软件
N
News and Events Feed by Topic
WordPress大学
WordPress大学

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Процессы vs инструменты: как Авито Sales строит QA с нулевыми сдвигами сроков
EkaterinaSerikova · 2026-06-24 · via Все публикации подряд на Хабре

Простой

7 мин

5

Привет, Хабр! На связи Екатерина Серикова и Глеб Дмитриев, мы QA-инженеры в команде Авито Sales. В этой статье мы расскажем, как выстроили процесс обеспечения качества в Распродаже, где сроки нельзя сдвигать, а нагрузка на корчасть почти 2 млн RPM, а цена бага очень высока.

Это не история про «идеальный процесс». Она скорее про рабочую систему, которая помогает не сгореть команде и не терять качество, когда QA в проекте один, а разработчиков восемь.

Распродажа на Авито, где 120 млн пользователей, — это всегда высоконагруженные сценарии без права на ошибку. Поэтому в статье мы объясняем, почему важно подключать QA ещё на этапе идеи, а не тестирования. Перекладывание какой части задач на разработку только ускоряет общий процесс? Что можно скормить ИИ, а что следует выполнять самим? Для чего разделять Seller и Buyer контуры?

Здесь всё на личном опыте, по делу и понятно.

Содержание:

  • Что такое распродажа и почему с ней сложно

  • Главный принцип: QA подключается на этапе идеи

  • Верификация требований: держим контекст, а не только текст

  • Разработка и тестирование: снимаем боттлнек

  • Почему мы сделали ставку на системные API-flow тесты

  • Где мы применяем ИИ

  • Итог

Что такое распродажа и почему с ней сложно

С точки зрения бизнеса распродажа — это возможность для продавца привлечь покупателя скидкой, а для покупателя — купить товар по наиболее выгодной и честной цене.

С точки зрения разработки распродажа — это набор высоконагруженных сценариев и интеграций, где нельзя ошибаться:

  • Запуски привязаны к заранее запланированным бюджетам и рекламным слотам, дедлайны несдвигаемые;

  • Пиковая нагрузка может вырастать кратно за очень короткий интервал;

  • Много зависимостей между системами и командами;

  • Есть антифрод и антибот-логика;

  • Много продуктовых механик и исключений;

  • Стоимость ошибки в проде очень высокая (нельзя чинить баг дольше, чем идёт распродажа).

Технически распродажу поддерживают несколько сервисов с разной ролью:

  • Core–сервисы, в том числе с высокой нагрузкой до миллионов RPM;

  • Клиентские сервисы, которые отдают информацию о скидках;

  • Сервисы управления распродажей для контент–менеджеров;

  • Сервисы механик (антибот/антифрод).

Тут еще больше контента

Тут еще больше контента

Главный принцип: QA подключается на этапе идеи

Самая важная часть процесса начинается не на этапе тестирования, а раньше — на этапе идеи. Когда продукт только придумал новую задачу, но её не описал. QA подключается сразу: валидирует идею, задаёт вопросы про риски, ограничения и тестопригодность. На этом этапе проще всего срезать лишнее и сфокусировать команду на критическом функционале.

Да, это дополнительная встреча с продуктом, но именно она зачастую срезает основные риски и закладывает в голову мысли, которые продукт будет в состоянии провалидировать выше и принести более детальные требования. Значит, когда команда начнет погружаться в продукт, у QA может быть возможность валидировать решение раньше, где разработчик сможет обстучать идею об QA инженера, а не о продукт, что зачастую также экономит время.

Если делать это после UX/UI–исследований или финализации требований, когда задача уже поставлена, то пространство для манёвра становится значительно меньше. Ранняя же валидация экономит итерации разработки, время продукту, а основные требования становятся прозрачнее и лучше проверяются. Забавно, что все об этом знают, но никто не использует. Мы решили подойти иначе и всё-таки использовать принцип «раннего тестирования».

Это кажется дополнительной нагрузкой на QA, но на длинной дистанции экономит время всей команды. QA-инженер — это про деньги, ведь это не только качественный код, но ещё и экономия ресурсов.

Качество заключается не только в правильных технических решениях или классных автотестах, но и в правильном подходе к разработке, тестированию и требованиям.

QA-инженер — это тот человек, который способен провалидировать не только идею, но и на чём держать фокус команде и подсветить риски, если таковы есть, экономя этим самым ресурсы и помогая тимлидам.

Верификация требований: держим контекст, а не только текст 

Когда требования зафиналены, начинается верификация: нужно убедиться, что документ не расходится с предыдущими договорённостями. Здесь QA выполняет роль хранителя контекста: помнит, о чём договорились на ранних встречах, и помогает команде не терять фокус. Это снижает типичный риск: формально требования написаны, но в реализации всплывают противоречия, которые уже обсуждали, но забыли.

Никто не говорит о том, что QA не может забыть или просыпать. Но чем больше точек контроля, тем меньше вероятность. Помните, тестирование не может гарантировать отсутствие багов, зато оно может доказать и показать, что баги есть. Значит, наша задача состоит не в искоренении проблем, а в минимизации рисков и снижении критичности возможных багов. 

Жми сюда!

Жми сюда!

Разработка и тестирование: снимаем боттлнек

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

Разработчик проходит базовые и критичные кейсы до передачи задачи в тестирование, а также проводит дизайн-ревью вместе с дизайнером до QA-этапа. Это позволяет QA фокусироваться на сложных сценариях, интеграционных рисках и дополнительных кейсах. Также заранее договариваемся о формате приёмки пакетов однотипных задач (например, приёмочные тесты вместо полного цикла).

В результате становится меньше лишних итераций, быстрее обратная связь и более предсказуемый time-to-market. 

Но сразу возникает вопрос: как контролировать то, что разработчик действительно прошёл кейсы? В данном случае очень просто: на этапе приёмочного тестирования. Мы видим, что если «хэпипасс» не работает, это значит, что выше проверка не была произведена. Хоть в чек-листе и стоят все галочки.

Давайте быть честными друг к другу. QA инженер может сделать точно также и сказать, что всё работает. Проставить галочки в чек-листах и кейсах, но в итоге не пройти.  В этом и заключается та самая золотая фраза «ответственна за качество вся команда». Значит, нужен процесс, который заставит команду разработки чувствовать эту ответственность. Это работа не только с конкретными людьми, это работа со всей командой, а также с тимлидами. QA-инженер не только про «клики по кнопкам», «написание автотестов», а ещё про процессы, идею и верификацию. И мы это используем в полной мере.

Почему мы сделали ставку на системные API-flow тесты

В одном из кластеров Авито родилась идея сделать инструмент для написания системных API–тестов. Мы активно подключились к его разработке, потому что нам необходим был уровень ниже e2e, но он не доходил до уровня интеграционных тестов. Если представить эту систему как Авито, то внутри неё тоже будут подсистемы, и интеграции между ними нужно тестировать.

В проекте распродаж много BDUI-экранов, внешних ручек и интеграций. Поэтому полный акцент на e2e нам не подходил: такие тесты часто проигрывают по скорости и стабильности.

Мы сделали основной упор на системный уровень, а именно на сквозные API-flow тесты, потому что они закрывают сквозные сценарии между сервисами, дают быстрый регресс и лучше соответствуют архитектуре данного продукта.

Это не отменяет пирамиду тестирования: unit, интеграционные и ручные проверки остаются. Но именно системный слой даёт нам лучшее соотношение скорость/покрытие для этого домена.

Кликни здесь и узнаешь

Кликни здесь и узнаешь

Где мы применяем ИИ

Искусственный интеллект для нас не волшебная кнопка, а инструмент для снятия рутины. Чтобы сосредоточиться на рискованных и финальных этапах, мы отдаём ИИ черновую и фоновую работу.

Что отдаём ИИ

Что не отдаём ИИ

Генерация и черновая подготовка простых автотестов

Сложные продуктовые решения

Ускорение рутинных операций в QA-процессе

Рискованные интеграционные сценарии

Помощь саппорту через бота, который отвечает по документации, а QA валидирует результат

Финальные решения по критичным кейсам

ИИ ускоряет работу тестировщика там, где цена ошибки низкая и результат легко верифицировать человеком.

Один процесс не подходит всем, поэтому мы логично разделили seller и buyer контуры. Распределение на seller и buyer части требует разных акцентов в процессе.

Seller-часть

В seller-контуре много пользовательских сценариев и ветвлений. Так, для крупных и рискованных задач мы готовим тест-планы, а для быстрых итераций главное не уйти в документацию ради документации. Объём артефактов определяется, учитывая риски и влияние на релиз.

В этой части мы дополнительно используем ИИ в рутинной автоматизации и в поддержке саппорта.

Buyer-часть

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

Подсказки для бизнеса 

Как отдельный слой процесса выделили прозрачность для бизнеса. Кроме стандартной работы с требованиями мы отдельно подсвечиваем, какие риски есть в текущей итерации, какие ограничения платформы или решения нужно принять, как будет вести себя продукт в случае реализации риска.

Всё это вместе сильно снижает сюрпризы на запуске и помогает принимать решения осознанно, а не в режиме пожаротушения.

Итог

В обеспечении качества нам помогла комбинация строгости и гибкости. Строгость важна в ранней валидации идеи и верификации требований. Гибкость оказалась необходима в глубине тестирования и на уровне документации.

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

Практичное применение ИИ возможно на начальных черновых этапах и в рутине.

Для удобства тестирования и поддержки мы разделили и выстроили отдельные процессы для seller и buyer контуров.

Главный вывод в том, что QA приносит максимальную ценность не на этапе тестирования готового продукта, а когда решение ещё только формируется.

Чем раньше мы подключаемся к обсуждению, тем выше шанс выпустить нужный функционал в срок и без критичных инцидентов.

Если вы сейчас в похожей ситуации: высокая нагрузка, жёсткие дедлайны и ограниченные ресурсы QA, то начните с трёх шагов:

1. Подключайте QA к обсуждению идеи до формализации требований.

2. Перенесите часть базовой проверки на разработку и зафиксируйте правило «кто что проверяет».

3. Выберите один тестовый слой, который даст максимальный эффект именно в вашей архитектуре, и сделайте ставку на него.

Этого уже достаточно, чтобы команда перестала жить в режиме постоянного догона и начала управлять качеством системно.

Кстати, если вам интересно не только как в компании выстроены процессы разработки, но и каково в ней работать — сейчас есть возможность высказаться. Хабр совместно с ЭКОПСИ как раз сейчас проводит большое исследование IT-брендов работодателей. В прошлом году в нём поучаствовали 34 000 специалистов уровня middle и выше. Один голос — это уже данные :)