<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
  <channel>
    <language>ru</language>
    <title>Автоматизирование</title>
    <description/>
    <link>https://tproger.ru/tag/avtomatizirovanie</link>
    <atom:link href="https://tproger.ru/tag/avtomatizirovanie/feed" rel="self" type="application/rss+xml"/>
    <lastBuildDate>Sat, 03 Oct 2026 17:09:03 GMT</lastBuildDate>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>12</sy:updateFrequency>
    <image>
      <title>Автоматизирование</title>
      <link>https://tproger.ru</link>
      <url>https://tproger.ru/apple-touch-icon.png</url>
    </image>
    <item>
      <title>ИИ в работе мобильного банкира: помощник, а не замена специалиста</title>
      <link>https://tproger.ru/articles/ii-v-rabote-mobilnogo-bankira-pomoshhnik-a-ne-zamena-specialist</link>
      <comments>https://tproger.ru/articles/ii-v-rabote-mobilnogo-bankira-pomoshhnik-a-ne-zamena-specialist?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Дима Дмитриев]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/ii-v-rabote-mobilnogo-bankira-pomoshhnik-a-ne-zamena-specialist</guid>
      <description><![CDATA[<p>Мобильный банкир рассказывает, как ИИ экономит 2–3 часа в день: черновики ответов, структурирование информации, но не юридические формулировки и персональные данные.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/ii-v-rabote-mobilnogo-bankira-pomoshhnik-a-ne-zamena-specialist">ИИ в работе мобильного банкира: помощник, а не замена специалиста</a>»</p>]]></description>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Бизнес]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 30 Jul 2026 10:30:40 GMT</pubDate>
      <content:encoded><![CDATA[<p>Всем привет, меня зовут Тигран Ованесов, я работаю мобильным банкиром. Помогаю с десятками разных продуктов и сервисов: выбрать выгодный вклад, открыть расчётный счёт, подключить эквайринг, выдать терминал и настроить его или оформить накопительный счёт.</p><p>Мой рабочий день начинается ещё до того, как я завожу двигатель моего автомобиля — уже дома изучаю документацию по банковским продуктам, а когда приезжаю в логистический центр утром и получаю документы и банковские продукты, то изучаю изменения по тарифам, знакомлюсь с новостями, отсматриваю новые заявки и планирую маршрут на день. Между встречами также ищу информацию, отвечаю на дополнительные вопросы и слежу, чтобы все данные были актуальными.</p><p>Раньше я делал это всё вручную. После того как я начал использовать ИИ как вспомогательный инструмент, рутинные задачи вроде поиска информации в материалах, сравнения условий и самостоятельного формулирования ответов стали занимать гораздо меньше времени.</p><p>Сейчас я экономлю, в среднем, 2–3 часа в день. Для мобильного банкира это много (плотность встреч большая) — посередине рабочего дня я могу заземлиться и просто погулять в парке с чашкой кофе.</p><p>Если ваша голова тоже пухнет от ежедневного информационного штурма, и вам нужен хотя бы (не)лишний час в день — этот материал для вас</p><h2>Где ИИ мне действительно помогает: четыре самых частых кейса</h2><h3>1. Подготовке черновиков ответов клиентам</h3><p>В работе мобильного банкира регулярно встречаются похожие вопросы клиентов, но каждая ситуация требует индивидуального подхода. Один из самых частых запросов — помощь в выборе подходящего тарифа и дополнительных сервисов.</p><p>Однажды ко мне обратился клиент с ресторанным бизнесом. Я описал ИИ особенности его деятельности и рассказал, какие задачи клиент хочет решить. Поскольку раньше мы уже подробно разбирали действующие тарифы и их особенности, ИИ на основе контекста нашего диалога предложил готовый черновик ответа: какой расчетный счет подойдет, какой именно эквайринг лучше взять под ресторанные реалии (с учетом чаевых, раздельных счетов и т.д.). Получив предварительный вариант, я сверил рекомендации с актуальными внутренними материалами банка и только после этого предложил решение клиенту.</p><p>Отдельный лайфхак — игра с тоном. К примеру, клиент спрашивает: «Чем накопительный счет отличается от вклада?». Вместо того, чтобы каждый раз формулировать ответ с нуля, я могу просто обратиться к ИИ с просьбой подготовить несколько вариантов объяснения: «Объясни разницу в двух вариантах: официально-бюрократическом и простым языком для понимания». И потом просто беру тот вариант, который лучше подходит под конкретного собеседника.</p><h4>Ответ ИИ</h4><p><b>Официальный вариант:</b></p><p><b>«Накопительный счет и вклад отличаются условиями использования денежных средств. Накопительный счет позволяет свободно пополнять счет и снимать средства, при этом проценты начисляются согласно действующим условиям банка. Вклад открывается на определенный срок и предполагает размещение денежных средств на заранее установленных условиях».</b></p><p><b>Простой вариант:</b></p><p>«Если объяснить проще: накопительный счет удобен, когда вы хотите иметь доступ к деньгам и при этом получать доход. Вклад чаще открывают на определенный срок, чтобы сохранить деньги и получить проценты по условиям продукта».</p><p>Очень удобно. Такой подход помогает быстрее подготовить понятное объяснение для клиента, но перед использованием сотрудник обязательно проверяет информацию и адаптирует ответ под актуальные условия продукта.</p><h2>2. Подготовка вариантов ответов</h2><p>В работе с клиентами важно не только знать правильный ответ, но и уметь понятно его объяснить. ИИ помогает быстро подготовить несколько вариантов одного ответа, подобрать более мягкие формулировки для сложных ситуаций и найти разные способы объяснения одного и того же условия.</p><p>Например, на одной из встреч клиенту необходимо было открыть расчетные счета сразу для двух форм бизнеса — индивидуального предпринимателя и ООО. Клиента интересовало, есть ли отличия при выборе тарифа для этих форм бизнеса и на что стоит обратить внимание при подключении обслуживания.</p><p>Чтобы подготовиться к консультации, я обратился к ИИ и описал ситуацию клиента. После этого попросил подготовить понятное объяснение различий между обслуживанием ИП и ООО.</p><h4>Ответ ИИ</h4><p>«ИП и ООО могут использовать разные условия обслуживания в зависимости от особенностей бизнеса. При выборе тарифа важно учитывать не только организационно-правовую форму, но и реальные потребности клиента: количество операций, объем платежей, необходимость дополнительных сервисов и другие параметры.<br /><br />Для ИП часто важна простота обслуживания и удобство ежедневных операций. Для ООО могут иметь большее значение объемы расчетов, количество платежей, работа с сотрудниками и дополнительные банковские сервисы.<br /><br />В вашем случае необходимо отдельно оценить потребности каждого бизнеса и подобрать тариф, который будет наиболее выгодным для конкретной деятельности».</p><p>Такой вариант ответа помог структурировать информацию и подготовить понятное объяснение для клиента. После этого я проверил условия по актуальным материалам банка и адаптировал ответ под конкретную ситуацию.</p><p>Использование ИИ в таких случаях позволяет быстрее подготовиться к встрече и выбрать наиболее подходящий стиль общения с клиентом.</p><h3>3. Структурирование информации</h3><p>Если подытожить, то при работе с большим объёмом информации ИИ помогает быстрее разобраться в материалах и привести их к удобному для восприятия виду. Он способен:</p><ul><li>выделить основные мысли и убрать второстепенную информацию;</li><li>разбить большой материал на логические блоки;</li><li>подготовить краткое резюме по документу или инструкции;</li><li>создать удобный чек-лист для выполнения задач;</li><li>составить пошаговую инструкцию по работе с новым продуктом или процессом.</li></ul><p>Например, при изучении нового банковского продукта по моему запросу ИИ выделяет ключевые условия, особенности, преимущества и возможные вопросы клиентов. Это экономит очень много времени — я быстрее готовлюсь к консультациям и лучше ориентируюсь в новой информации.</p><p>Особенно полезен такой подход при подготовке внутренних материалов, изучении новых продуктов, обновлений по тарифам и систематизации большого количества информации. При этом итоговая проверка данных остается за мной, так как ИИ используется только как инструмент для ускорения работы.</p><p>Здесь самым неожиданным открытием стало то, что ИИ помог мне не только ускорить работу, но и лучше запомнить условия по тарифам. Постоянно сравнивая продукты и проверяя информацию, я со временем стал быстрее ориентироваться в них без дополнительных подсказок. Сейчас в медиа полно паникерских статей: «ИИ делает нас глупее», «Мы разучимся запоминать информацию». Мой личный опыт говорит ровно об обратном.</p><h2>Где я ИИ не использую</h2><h3>1. Юридически значимые формулировки</h3><p>В банковской сфере особенно важно, чтобы любая информация, предоставляемая клиенту, соответствовала действующим правилам, точно отражала условия продукта и не могла ввести человека в заблуждение.</p><p>ИИ может помочь разобраться в сложной информации, подготовить черновик объяснения или упростить формулировку, однако использовать его как источник окончательной юридически значимой информации нельзя. Искусственный интеллект может неправильно интерпретировать данные, упустить важные детали или использовать неактуальную информацию.</p><p>Например, если возникает вопрос, связанный с блокировкой счета в соответствии с требованиями 115-ФЗ, юридическими последствиями или трактовкой нормативных документов, надежнее обращаться к специализированным правовым системам, например к КонсультантПлюс, и внутренним материалам банка. Это связано с тем, что ИИ не всегда корректно работает с большими объемами нормативной информации: он может не учитывать последние изменения законодательства (что я неоднократно проверял), не иметь доступа к актуальной редакции документов или неверно интерпретировать отдельные положения договоров и правил.</p><p>Поэтому оптимальный подход — использовать ИИ как помощника для анализа и подготовки информации, а юридически значимые вопросы обязательно проверять по официальным источникам.</p><h2>2. Финальные ответы клиентам</h2><p>Даже если подготовленный ИИ текст выглядит грамотно и логично, его нельзя использовать без дополнительной проверки. В банковской сфере любая неточность в коммуникации может привести к неправильному пониманию условий продукта со стороны клиента.</p><p>Основные риски при использовании готовых ответов ИИ:</p><ul><li>неточность в формулировке;</li><li>изменение смысла при упрощении информации;</li><li>неправильная интерпретация условий продукта;</li><li>добавление информации, которая не относится к конкретной ситуации клиента.</li></ul><p>Например, в моей практике была ситуация при работе с торговым эквайрингом. После оформления продуктов для клиента я, как обычно, готовил итоговое резюме встречи: какие услуги были подключены, какие условия действуют, за что и какая предусмотрена плата. Такой подход помогает клиенту еще раз спокойно ознакомиться с результатами встречи и убедиться, что он понимает все условия.</p><p>Для подготовки этого резюме я обратился к ИИ, чтобы он помог структурировать информацию по подключенным продуктам и сформировать понятное объяснение. Однако при подготовке ответа ИИ указал, что клиенту был подключен торговый эквайринг, хотя этой услуги не было (и клиент в ней не нуждался).</p><p>Если бы я не проверил итоговый текст перед отправкой, клиент мог бы решить, что ему подключили дополнительную услугу.</p><p>Искусственный интеллект может помочь сделать информацию более понятной и сэкономить время, но ответственность за финальную коммуникацию с клиентом всегда остается за сотрудником.</p><h2>3. Работа с персональными данными</h2><p>При использовании внешних ИИ-сервисов необходимо соблюдать требования информационной безопасности. Даже если искусственный интеллект используется только как вспомогательный инструмент, важно внимательно относиться к информации, которая передается в сервис.</p><p>Я не передаю:</p><ul><li>персональные данные клиентов;</li><li>номера банковских карт и счетов;</li><li>паспортные данные;</li><li>конфиденциальную внутреннюю информацию банка;</li><li>любую информацию, которая позволяет идентифицировать клиента или получить доступ к защищенным данным.</li></ul><p>Например, вместо конкретных данных клиента можно указать только общую ситуацию: вид бизнеса, задачу клиента или необходимый продукт.</p><p>В данной статье подобные примеры не приводятся, так как при работе с ИИ персональные данные клиентов и конфиденциальная информация не использовались. Ответственный подход к работе с информацией позволяет использовать возможности ИИ эффективно, соблюдая требования безопасности.</p><h2>Основной вывод</h2><p>ИИ в моей работе — это инструмент, который помогает сделать повседневные задачи быстрее и удобнее. В результате повысилась общая эффективность работы: появилось больше времени для общения с клиентами, коллеги стали интересоваться, как удается так быстро находить нужную информацию, а руководители отмечали высокие результаты. При этом важно понимать, что ИИ не принимает решения за специалиста — он лишь помогает быстрее справляться с рутинными задачами.</p><p>Он полезен, когда нужно:</p><ul><li>быстрее подготовить черновик;</li><li>упростить сложный текст;</li><li>структурировать информацию;</li><li>найти варианты коммуникации.</li></ul><p>Но он не должен заменять профессиональные знания, опыт и ответственность сотрудника.</p><p>Главный принцип прост: ИИ помогает подготовить решение, но окончательное решение всегда остаётся за человеком.</p>]]></content:encoded>
    </item>
    <item>
      <title>15 бизнес-задач для автоматизации через ИИ в 2026 году</title>
      <link>https://tproger.ru/articles/15-biznes-zadach-dlya-avtomatizacii-cherez-ii-v-2026-godu</link>
      <comments>https://tproger.ru/articles/15-biznes-zadach-dlya-avtomatizacii-cherez-ii-v-2026-godu?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Володин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/15-biznes-zadach-dlya-avtomatizacii-cherez-ii-v-2026-godu</guid>
      <description><![CDATA[<p>15 реальных сценариев автоматизации бизнеса через ИИ: от сверки счетов и скоринга лидов до прогноза кассовых разрывов — с понятным экономическим результатом.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/15-biznes-zadach-dlya-avtomatizacii-cherez-ii-v-2026-godu">15 бизнес-задач для автоматизации через ИИ в 2026 году</a>»</p>]]></description>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Бизнес]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 08 Jul 2026 09:05:37 GMT</pubDate>
      <content:encoded><![CDATA[<p>Вам может казаться, что ваш бизнес или компания, где вы работаете, слишком непонятные для автоматизации с ИИ. Вы думаете, что сначала нужно навести идеальный порядок, купить сложную CRM-систему, нанять штат дата-саентистов, и только потом говорить об искусственном интеллекте.</p><p>Главная ошибка — попытка автоматизировать весь бизнес сразу. Начинать нужно с узких участков, где сотрудники ежедневно тратят часы на перекладывание цифр из одного окна в другое.</p><h2>Правило полуавтоматизации</h2><p>Главный страх перед алгоритмами обычно связан с потерей контроля. Руководители боятся, что скрипт будет работать криво, отправит клиенту мем или одобрит платеж по неверным реквизитам. Чтобы убрать этот риск, нейросетям отдают исключительно рутину. Ищите регулярный процесс, где есть четкие входные данные и прозрачный результат, который легко проверить визуально. Идеальный старт — пайплайн на базе готового API, заменяющий пару часов ежедневного копипаста. Глобальные проекты по перестройке архитектуры лучше отложить до тех пор, пока вы не научитесь экономить время на мелочах.</p><h2>Финансы и первичка: избавляемся от ручного ввода</h2><p>Финансы — удобная стартовая точка для автоматизации. Здесь понятные данные и много механической работы. Вместо ручного сбора цифр из разных источников в конце месяца, процесс ввода можно зациклить с помощью скрипта.</p><h3>1. Счета в автоматизированную таблицу</h3><p>Счета и чеки приходят с разных сторон: PDF-файлы на почту, фотографии накладных — в мессенджеры. Можно научить алгоритм забрать эти документы, распознать текст, извлечь контрагента, дату, налог и итоговую сумму. Затем данные автоматически перенести в базу. Если скан плохо читается или сумма позиций не сходится с итогом, скрипт помечает документ для ручной проверки человеком.</p><h3>2. Сверка оплат: ИИ мэтчит банковскую выписку с инвойсами</h3><p>Сверка оплат — муторная и обязательная рутина для бухгалтерии и владельца. Нейронка может сопоставлять банковскую выписку с выставленными счетами. На выходе получается готовая таблица со статусами: оплачено, частично оплачено, не найдено или нужно проверить.</p><h3>3. Контроль дебиторки: поиск просрочек и автогенерация писем-напоминаний</h3><p>Контроль дебиторки завязан на человеческом факторе: клиенты забывают перевести деньги, а менеджеры забывают об этом напомнить. ИИ берет на себя отслеживание просрочек: алгоритм находит зависшие счета и самостоятельно генерирует письма-напоминания и оставляет их в черновиках. Менеджеру нужно только отредактировать и отправить письмо.</p><h3>4. Поиск аномалий: поиск задвоений или скачков расходов</h3><p>Бизнес часто теряет деньги на мелких ошибках в таблицах. Задвоенный платеж или подорожавшая логистика могут просто потеряться в данных. ИИ может справиться с задачей поиска аномалий: он находит дубли, скачки расходов и операции, которые выбиваются из привычных показателей.</p><h3>5. Сверка заказа и поставки</h3><p>Если кто-то вам скажет, что у бизнеса никогда нет расхождения между заказом и фактической поставкой — не верьте этому человеку. Часто случается, что поставщик прислал счет, компания его оплатила, но на склад приехало другое количество товара. Чтобы исключить переплаты, алгоритмы ИИ сверяют исходный заказ, счет и накладную приемки. Любая разница в цене или лишняя позиция подсвечивается до того, как деньги уйдут контрагенту.</p><h2>Продажи и лиды: скоринг без участия менеджера</h2><p>Автоматизация на этапе воронки напрямую влияет на выручку. Каждая минута, которую сотрудник тратит на ручную сортировку — это минус время общения с потенциальным клиентом и потерянные деньги.</p><h3>6. Сортировка заявок: тегирование лидов по бюджету и срочности</h3><p>Заявки идут обычно из мессенджеров, форм на сайте и почты. Менеджер открывает всё подряд и пытается понять, кому отвечать первым. Пока он разгребает спам, горячий покупатель уходит к конкурентам. Нейросеть собирает все обращения в единую таблицу, оценивает намерение человека и расставляет приоритеты. Отдел продаж сразу видит тех, у кого высокий бюджет и срочность.</p><h3>7. Черновики ответов: генерация персонализированных первых сообщений</h3><p>Скорость реакции продает лучше скидок. Писать каждому лиду с нуля долго, а отправлять шаблонные отписки вредно для конверсии. Алгоритм берет входящую заявку и готовит индивидуальный драфт письма для каждого клиента на основе запроса и знаний о компании. Сотруднику остается пробежаться глазами по тексту и отправить исходящее письмо.</p><h3>8. КП из переписки: сборка структуры коммерческого из лога чата</h3><p>Сборка коммерческого предложения иногда состоит из звонков, брифов и сообщений в мессенджерах. Везде нужно вытащить вводные и ничего не потерять. Вы можете скормить языковой модели всю историю диалога или бриф. Она сама достанет из текста задачу, потребности клиента, предлагаемое решение и сроки и соберет драфт документа.</p><h3>9. Фоллоу-апы и потерянные сделки: кластеризация причин отказов</h3><p>Люди обещают подумать и пропадают. Скрипт умеет находить зависшие диалоги и заранее готовит вежливое сообщение для пинга. С отвалившимися лидами работает похожая механика. Алгоритм анализирует переписки по проваленным сделкам и группирует реальные причины: долго отвечали, не отработали возражение или не сошлись на цене.</p><h3>10. Резюме звонка: транскрибация встреч с выделением договоренностей</h3><p>После созвона менеджеру нужно заполнять карточку клиента, здесь ИИ-ассистент расшифровывает аудиозапись и выдает короткую выжимку. В ней будут главные потребности, бюджет, обещания и конкретная дата следующего шага.</p><h2>Управленческие отчеты и инсайты</h2><h3>11. Еженедельная сводка: текстовое саммари из разных метрик</h3><p>ИИ собирает все метрики вместе и пишет короткую выжимку за неделю или месяц. Вы получаете конкретный план: выручка выросла, а расходы на логистику были больше, чем месяц назад.</p><h3>12. Анализ рекламы: связка расходов, лидов и продаж</h3><p>Маркетологи обожают отчитываться лайками и дешевыми кликами. Проблема часто в том, что лайками нельзя заплатить за аренду. Владельцу нужно понимать сквозную аналитику. Алгоритм берет расходы из рекламного кабинета и накладывает их на закрытые сделки из CRM. Становится видно, где бюджет сгорает, и какие каналы генерят бизнесу реальные деньги.</p><h3>13. Поиск аномалий и прогноз кассовых разрывов</h3><p>Узнавать о просадках в конце месяца больно. Еще больнее осознать, что завтра нечем платить зарплату. ИИ умеет мониторить отклонения в реальном времени: резко просели продажи конкретного товара или зависли ожидаемые платежи от крупного клиента — скрипт отправляет алерт. Он сводит входящий поток денег с обязательными расходами и заранее показывает риск кассового разрыва. У владельца появляется время для переговоров с поставщиками или ускорения сбора дебиторки.</p><p>Чтобы настроить такую аналитику, разработчик в штате не требуется. Таблицы отлично работают через сервис Ajelix, а текст можно генерировать с ChatGPT. Научиться связывать эти инструменты в рабочие процессы можно на курсе «<a href="https://www.eduson.tv/~N_FRsA" rel="nofollow">Нейросети на практике: для себя, работы и бизнеса</a>» от Eduson Academy. Программа показывает, как делегировать рутину алгоритмам без навыков программирования.</p><h2>Клиентский сервис и операционка</h2><p>Эти механики не генерят выручку напрямую, но влияют на скорость работы команды и их вовлеченность.</p><h3>14. Репутация и контроль качества: парсинг отзывов и проверка ответов менеджеров</h3><p>Отзывы публикуются на картах, маркетплейсах и в социальных сетях, поэтому без автоматизации общую картину увидеть сложно. ИИ собирает комментарии со всех площадок и группирует отказы клиентов по причинам. Дополнительно алгоритм анализирует логи ответов ваших сотрудников и отмечает нарушения тональности общения.</p><h3>15. Онбординг и базы знаний: из заметок в инструкции</h3><p>Передача знаний новым сотрудникам — обычно зона ответственности руководителя или опытных коллег. Скрипт поможет с нуля собрать понятные регламенты из текстовых и голосовых заметок, переписок или черновиков. На выходе получаются готовые чек-листы, инструкции и внутренний FAQ, которые экономят время на онбординг.</p><h2>Итого: с чего начать</h2><p>Мы знаем, что вам хочется сразу сделать умного агента, который будет полностью вести переговоры и закрывать сделки, но на практике вы только потратите время на бесконечные доработки.</p><p>Маленькая быстрая победа всегда лучше огромного архитектурного проекта, который вы никогда не закончите. Начните с пайплайна, который просто перекладывает чеки в таблицу. Сэкономленный час в день — это уже отличный результат.</p><p><i>Реклама. Рекламодатель: ООО «Эдюсон» ИНН 7729779476, erid: 2W5zFJcrBzy</i></p>]]></content:encoded>
    </item>
    <item>
      <title>984 из 1000 паспортов без ошибок: разбираем точность ИИ</title>
      <link>https://tproger.ru/articles/984-iz-1000-pasportov-bez-owibok-razbiraem-tochnost-ii-2</link>
      <comments>https://tproger.ru/articles/984-iz-1000-pasportov-bez-owibok-razbiraem-tochnost-ii-2?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Дима Дмитриев]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/984-iz-1000-pasportov-bez-owibok-razbiraem-tochnost-ii-2</guid>
      <description><![CDATA[<p>Почему 90% точности OCR — это мало для бизнеса, как формула Байеса объясняет ложные отказы и какие технологии стоят за 99,99% распознавания документов.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/984-iz-1000-pasportov-bez-owibok-razbiraem-tochnost-ii-2">984 из 1000 паспортов без ошибок: разбираем точность ИИ</a>»</p>]]></description>
      <category><![CDATA[Машинное обучение]]></category>
      <category><![CDATA[Распознавание]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 26 Jun 2026 08:04:01 GMT</pubDate>
      <content:encoded><![CDATA[<p>В начале 2026 года российская агролизинговая компания опубликовала данные о внедрении системы автоматического распознавания распознавания данных из документов лизингополучателей. По данным компании, из 1000 паспортов 984 документа обрабатываются без единой ошибки. Но здесь главный вопрос темы: если 16 паспортов не прошли проверку — это много или мало, если говорим про данные, кредиты и юридическую ответственность?</p><h2>Откуда вообще берутся ошибки у ИИ</h2><p>Когда говорят про ИИ, чаще всего имеют в виду большие языковые модели — те, что лежат в основе чат-ботов для генерации текста и изображений. Такие модели устроены как вероятностные системы. Они предсказывают наиболее вероятную последовательность слов на основе обучающих данных, а не знают правильный ответ в строгом смысле слова. Поэтому ошибки для них остаются естественным поведением.</p><p>В декабре 2025 года исследователи из Университета штата Пенсильвания и Comcast AI Technologies протестировали поведение языковых моделей при одинаковых настройках и запросах. При многократном повторении одних и тех же задач разрыв между лучшим и худшим результатом доходил до 70%.</p><p>Что касается практических задач — современные языковые модели решают финансовые задачи с точностью около 67,3%, заметно ниже человеческого уровня. К этому добавляются галлюцинации: модель формирует несуществующую информацию, сохраняя уверенный тон ответа. Попытки повысить достоверность через дообучение пока работают только частично.</p><p>С генерацией связного текста языковые модели справляются хорошо. Для задач, где требуется точность данных, например распознавание документов и проверка личности, применяется другой класс систем.</p><h2>Open-source против специализированных систем</h2><p>Распознаванием документов занимаются OCR-системы — технологии оптического распознавания символов. OCR появился ещё в XX веке и развивался задолго до генеративного ИИ. Сегодня такие решения работают в банках, страховании, телекоме и госуслугах — везде, где нужно проверить личность по документу или ввести данные из потока сканов. Качество здесь измеряют точностью распознавания, а её можно посчитать.</p><p>Базовые OCR-технологии доступны практически любому разработчику. Есть открытые движки — Tesseract, PaddleOCR, EasyOCR. Они распространяются бесплатно и позволяют быстро собрать собственную систему распознавания документов.</p><p>Открытые тесты показывают разброс качества в зависимости от типа документа и условий съёмки. На типовых задачах Tesseract показывал точность 70–85%, PaddleOCR — 90–95%. При работе с финансовыми документами и реальными сканами цифры были скромнее: около 84% у Tesseract и 91% у PaddleOCR.</p><p>Доступность инструмента ещё не означает готовности к промышленной нагрузке. Для задач, где цена ошибки измеряется юридической ответственностью, разница между 85% и 99% становится риском для бизнеса. Дальше разберём, что именно идёт не так на уровне 90% и почему этот порог уже считается низким.</p><h2>Почему 90% точности — слабый результат</h2><p>Возьмём систему, которая ошибается с вероятностью 1% и на подлинных документах, и на поддельных. Доля подделок в потоке тоже составляет 1%. Если система пометила документ как подозрительный, какова вероятность, что он действительно поддельный? Интуитивно кажется, что почти 99%, однако на практике все иначе. Расчёт по формуле Байеса даёт ответ:</p><p>Вероятность того, что «подозрительный» документ действительно поддельный:</p><p>0,99 × 0,01 / (0,01 × 0,99 + 0,99 × 0,01) = 0,5</p><p>Половина отказов придётся на настоящих клиентов. У крупного банка такие отказы исчисляются сотнями в день, и за каждым стоит человек, которому отказали в обслуживании и который, скорее всего, уйдёт к конкуренту.</p><p>Но если представить, что ИИ ошибается на подлинных документах только в 0,1% случаев, картина меняется и вероятность выявления подделки резко возрастает:</p><p>0,999 × 0,01 / (0,01 × 0,999 + 0,99 × 0,001) ≈ 0,91</p><p>Вероятность того, что помеченный документ действительно поддельный, вырастает почти до 91%.</p><p>Ошибка ИИ при проверке документов ведёт к двум типам потерь: можно пропустить мошенника и понести прямые убытки, можно отказать добросовестному клиенту и потерять выручку. Точность на уровне 99,9% и выше работает как порог, после которого автоматизация антифрод-проверок начинает приносить эффект — реально заменять людей и ускорять процесс. Пока система до него не дотягивает, большая часть документов всё равно уходит на ручную перепроверку, и бизнес платит дважды: за систему и за людей, которые её проверяют.</p><h2>Что стоит за цифрой 984 из 1000</h2><p>Вернёмся к кейсу «Росагролизинга». Компания использует технологию Smart Engines для автоматического ввода данных из документов лизингополучателей. По словам компании, из 1000 паспортов 984 обрабатываются без единой ошибки — это касается основного разворота, который в среднем содержит около 200 символов.</p><p>Чтобы корректно распознать весь разворот, системе нужно правильно считать каждый из этих 200 символов по очереди. Отсюда можно вывести точность распознавания одного символа. Если X — посимвольная точность, а X в степени 200 — вероятность того, что все символы разворота распознаны верно, уравнение выглядит так:</p><p>X²⁰⁰ = 984 / 1000</p><p>Чтобы найти X, нужно взять корень 200-й степени из обеих частей уравнения:</p><p>X = 0,984^(1/200) ≈ 0,99992</p><p>Получается, что точность распознавания одного символа оценивается на уровне 99,99%. Для бизнеса это значит, что 984 из 1000 клиентов проходят онбординг без единого сбоя, участия оператора и ошибок.</p><p>Такой результат не выводится сам по себе из общей модели ИИ. Под распознавание удостоверений личности нужна отдельная инженерная работа по трём направлениям:</p><ol><li>Специализированные датасеты. Обычный набор фотографий печатного текста для этого не подходит. Паспорта изготавливают из специальной бумаги, на них есть защитные элементы, ламинация и голограммы, которые усложняют извлечение данных. Для обучения нужны десятки тысяч размеченных изображений, синтезированных так, чтобы не нарушать 152-ФЗ «О персональных данных» и не содержать информацию о реальных людях.</li><li>Оптимизация под реальные условия съёмки. На практике паспорт редко снимают идеальным сканом в высоком разрешении. При выездном обслуживании и самообслуживании документ часто фотографируют на весу, под углом или сложенным «книжкой», а на изображении появляются шумы, размытия, тени и блики. Алгоритмы должны выдавать результат и в таких условиях.</li><li>Понимание структуры документа. Системе мало просто извлечь текст с картинки. Ей нужно находить паспорт на фотографии или в видеопотоке и знать, из каких полей он состоит: где подпись, где строки с именем и фамилией, где машиночитаемая зона.</li></ol><h2>Что это значит для бизнеса</h2><p>Чем выше точность, тем меньше работы остаётся людям. На уровне 90% компания заваливает отказами нормальных клиентов и держит отдельных сотрудников, которые перепроверяют документы вручную. На уровне 99,9% и выше вручную проверять приходится в разы меньше: падают расходы на этот штат и снижается риск штрафов за пропущенные подделки.</p><p>Бизнес сейчас пытается добиться главных целей:</p><ul><li>меньше ручных проверок — операционный отдел тратит меньше времени на пересмотр документов, помеченных как подозрительные;</li><li>меньше отказов настоящим клиентам — выше конверсия в онбординге и меньше потерянной выручки;</li><li>ниже риск штрафов и судебных разбирательств, особенно в сценариях KYC и антифрод-проверок, где цена пропущенной подделки измеряется конкретными суммами.</li></ul><p>Технологии, которые обеспечивают такую точность, разрабатывают компании, специализирующиеся именно на распознавании документов. Лучшие инженеры работают со специализированными обучающими данными, которые подходят именно под реальные условия съёмки и понимание структуры документов. Именно поэтому промышленные OCR-системы и Tesseract, собранный за выходные, — это разные истории.</p><h2>Итого</h2><p>Для генерации текста или поиска идей хватает точности в районе 80–90%, и языковые модели справляются с этим хорошо. Для распознавания документов планка выше: 99,9% и больше — минимальное условие, при котором автоматизация вообще начинает работать. Кейс с 984 паспортами из 1000 показывает, как эта цифра считается на практике и какая инженерия за ней стоит. Прежде чем доверять ИИ задачи с высокой ценой ошибки, спросите разработчика, как именно посчитали точность системы.</p>]]></content:encoded>
    </item>
    <item>
      <title>Роадмап в QA в 2026: что нужно знать, чтобы получить оффер</title>
      <link>https://tproger.ru/articles/roadmap-v-qa-v-2026-chto-nuzhno-znat-chtoby-poluchit-offer</link>
      <comments>https://tproger.ru/articles/roadmap-v-qa-v-2026-chto-nuzhno-znat-chtoby-poluchit-offer?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Дима Дмитриев]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/roadmap-v-qa-v-2026-chto-nuzhno-znat-chtoby-poluchit-offer</guid>
      <description><![CDATA[<p>Как войти в QA в 2026: архитектура микросервисов, REST API, SQL, Kafka, автоматизация и инженерное мышление. Роадмап без тупиковых скиллов.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/roadmap-v-qa-v-2026-chto-nuzhno-znat-chtoby-poluchit-offer">Роадмап в QA в 2026: что нужно знать, чтобы получить оффер</a>»</p>]]></description>
      <category><![CDATA[Тестирование]]></category>
      <category><![CDATA[Микросервисы]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 19 Jun 2026 09:00:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>Пять лет назад в тестирование заходили через ручное: кликаешь по чек-листу, смотришь результат, рынок прощает тебе отсутствие навыков. Сейчас на том же месте в вакансиях стоят Kafka, Kubernetes и автотесты на Java.</p><h2>Ручное тестирование как вход больше не работает</h2><p>В 2021-м стратегия «вкатиться через мануальное тестирование» ещё работала. Рынок принимал новичков: знаешь, что такое чек-лист и тест-кейс — уже кандидат. Можно было прийти без кода, без понимания API, без SQL и получить оффер на функциональное тестирование, дальше доучиваясь по ходу.</p><p>Дальше рынок начал двигаться, и двигался он быстрее, чем кажется внутри компании. В 2022-м в вакансиях QA появились приписки: «желательно знание автоматизации», «опыт с API», «базовый SQL». Слово «желательно» сбивает с толку — звучит как бонус, а на деле это знак, куда поедут требования через пару лет. И они поехали: то, что в 2022-м было «желательно», к 2024-му стало обязательным условием.</p><p>К 2024 году ситуация выглядит уже так: смотришь вакансии и ни в одной не встречаешь формулировку «требуется ручной тестировщик». Вместо неё везде QA Engineer со знанием автоматизации, опыт в финтехе, CI/CD, Docker, Kubernetes, углублённое понимание API. К концу 2025-го добавляется ещё и опыт работы с ИИ и LLM.</p><p>Вакансии чисто ручного тестирования из дикой природы не исчезли совсем, но их осталось мало, и условия там соответствующие: либо платят немного, либо требуют коммерческий бэкграунд за плечами. Параллельно реклама курсов «вкатись в IT за три месяца» нагнала на рынок толпу таких же новичков, и у компаний появилась роскошь выбирать.</p><p>Вывод для тех, кто планирует вход в 2026-м: начинать с чек-листов смысла мало, потому что это тупиковая ветка, с которой потом всё равно придётся переучиваться. Логичнее сразу собирать ту базу, которая позволит работать с первого дня и не упираться в потолок. Что в эту базу входит, дальше по разделам.</p><h3>Научиться понимать архитектуру</h3><p>Проектировать системы вам не придётся, это работа архитектора. Задача тестировщика — представлять, как устроено то, что он тестирует, чтобы видеть всю цепочку, а не отдельную кнопку.</p><p>На практике это четыре вещи:</p><ol><li>Как сервисы общаются между собой: синхронно через HTTP, когда один ждёт ответа другого, или асинхронно через очередь сообщений, когда событие кладётся в брокер и подбирается, когда получатель готов.</li><li>Где хранятся данные и как к ним обращаются разные компоненты.</li><li>Что произойдёт, если один из сервисов упадёт, и кто из соседних это заметит.</li><li>Как запрос трансформируется на каждом шаге пути от клиента до ответа.</li></ol><p>Зачем это тестировщику. Пока вы тестируете поверхностно — нажал, посмотрел результат, — вы можете зафиксировать, что баг есть, но не объясните почему. На вопрос «где сломалось» ответа нет, потому что система для вас непонятная. Как только появляется понимание потоков данных, сразу становится лучше. Вместо «кнопка не работает» вы говорите: запрос пришёл в Gateway, прошёл в Core-сервис, событие легло в Kafka, консьюмер его прочитал, но в базе нужной записи нет — значит, ищем разрыв на участке между консьюмером и базой. Это уже баг, с которым можно идти к разработчику.</p><p>Лучший способ это уложить в голову — поднять микросервисное приложение локально и посмотреть, как сервисы взаимодействуют. Перед практикой имеет смысл прочитать «Designing Data-Intensive Applications» Мартина Клеппмана (на русском вышла как «Высоконагруженные приложения»). Кода там нет, зато подробно разобрано, как системы устроены изнутри, — для QA это полезнее, чем уметь самому писать сервисы.</p><p>Дальше берём готовые демо-проекты с низким порогом входа. Они поднимаются одной командой через Docker Compose, так что копаться в коде не нужно, нужно исследовать: отправить запрос через Postman, проследить по логам, как он прошёл по цепочке, намеренно остановить один контейнер и посмотреть, что станет с остальными. Два репозитория подходящего формата:</p><ul><li>Microservice Kafka Sample — три сервиса (заказы, доставка, выставление счёта), между ними Kafka, у каждого своя база PostgreSQL, поднимается через docker-compose up. Создаёте заказ в одном сервисе, через какое-то время накладная и статус доставки появляются в других. Удобно трассировать запрос и искать, где он застрял.</li><li>Microservices with Spring Boot and Kafka Demo Project — посложнее: заказы, платежи, склад, распределённые транзакции по паттерну SAGA, поддержка Docker Compose и Testcontainers. Хорошо показывает, что происходит с транзакцией, когда она идёт через несколько сервисов и один из них падает.</li></ul><p>Если хочется теории вместе с практикой, на Stepik есть курс «Microservices — паттерны и практика построения микросервисов»: русскоязычный, разбирает паттерны взаимодействия, асинхронные системы, RabbitMQ. Он заточен под понимание концепций, а не под написание продакшн-кода, — то, что нужно.</p><h2>Три технологии, которые спрашивают всегда</h2><ol><li>HTTP и REST API. REST — это договорённость между клиентом и сервером о том, как они общаются. Клиент просит: дай данные о пользователе с ID 42. Сервер отвечает JSON-ом и кодом: 200 — всё нашлось, 404 — такого пользователя нет, 403 — прав не хватает. Тестировщик, который умеет вызывать API через Postman, curl или код, проверяет логику системы мимо интерфейса — раньше и точнее, чем через клики по экрану. Базовый минимум: методы (GET, POST, PUT, DELETE), коды ответов (2xx, 4xx, 5xx), заголовки, структура JSON, аутентификация.</li><li>Базы данных и SQL. Почти каждый дефект оставляет след в базе: либо лежит некорректная запись, либо записи нет вообще. Написать SELECT с джойнами, проверить результат агрегации, отловить дубли — ежедневная работа QA-инженера. На собесе это спрашивают как данность, а не как редкий бонус.</li><li>Брокеры сообщений и Kafka. Kafka даёт сервисам общаться асинхронно: один кладёт событие в топик, другой забирает его, и никто не висит в ожидании. В распределённых системах это стандарт. Если данные не появились там, где их ждали, возможно, они застряли в очереди, а не пропали из базы. Это две разных ситуации, и путать их дорого для бизнеса.</li></ol><p>Важное предупреждение, чтобы не отпугнуть: писать эти сервисы самому QA не нужно. Цель — понять, что происходит внутри, когда данные идут от одного сервиса к другому. Поднял проект, посмотрел Postman, почитал логи, остановил контейнер, посмотрел на последствия — этого достаточно, чтобы общаться с командой разработки.</p><h3>Научиться читать логи</h3><p>Когда сервис падает в продакшене, времени воспроизводить баг руками нет, и единственное, что у вас есть, — это логи. Особенно это нужно на критичной инфраструктуре вроде государственных контрактов, где инциденты идут потоком, а каждая минута простоя стоит денег.</p><p>Выглядит типичная диагностика так:</p><ul><li>Прилетает алерт: сервис X начал возвращать 500-е ошибки.</li><li>Открываете Kibana, фильтруете по временному интервалу и имени сервиса, чтобы отсечь лишний шум.</li><li>Находите трейс конкретного запроса — от входящего HTTP-вызова до ответа базы данных.</li><li>В трейсе видите stacktrace с исключением в определённом классе и конкретным сообщением.</li><li>Дальше тянете за эту нитку до корневой причины: например, оказывается, что упал не сам сервис, а внешний, к которому он обращался, и причина — таймаут.</li></ul><p>Помимо Kibana для разбора логов в работе пригодится связка Grafana и Prometheus для мониторинга метрик. Логи отвечают на вопрос «что именно сломалось в этом запросе», метрики показывают картину шире: когда началась деградация, какой сервис первым ушёл в красное, как менялась нагрузка перед инцидентом. Вместе они дают и точку отказа, и контекст вокруг неё.</p><p>Этот навык как раз отличает среднего тестировщика от хорошего. Средний по факту падения скажет «не работает» и пойдёт заводить тикет. Хороший откроет логи, пройдёт по трейсу и принесёт разработчику не жалобу, а готовую гипотезу о том, где и почему сломалось. Вторые на рынке зарабатывают больше, и тренируется это ровно на тех же демо-проектах: подняли, сломали контейнер, полезли в логи смотреть, что система об этом написала.</p><h2>Зачем QA язык программирования</h2><p>Помимо скорости код даёт понимание работы команды разработки. Когда QA пишет автотесты на том же языке, на котором разработчики пишут продукт, стирается граница между «вашим» и «нашим» кодом. Проблему можно обсудить на уровне реализации, быстро получить консультацию, а иногда разработчик и сам запускает ваши тесты, чтобы проверить свою фичу, или вносит правку в тестовый код, когда видит, в чём причина нестабильности.</p><p>Конкретно код у QA уходит на несколько вещей:</p><ul><li>Автотесты — заменяют ручной прогон регресса, гоняются хоть каждую ночь.</li><li>Тестирование API — написать авторизацию, отправить запрос, проверить JSON-схему ответа.</li><li>Генерация тестовых данных — создать тысячи записей с разными параметрами под нагрузочные и граничные сценарии.</li><li>Верификация в базе — SQL-запросы, которые проверяют, что в данных лежит именно то, что должно.</li><li>Shift-left — писать тесты параллельно с разработкой, ещё на этапе требований, чтобы дефекты ловились раньше.</li></ul><p>С чего начинать. Java или Python — хорошие первые языки, оба распространены в автоматизации и под оба полно вакансий. Но учить язык лучше в контексте задач тестирования, а не абстрактно по учебнику: сразу написать первый UI-тест через Selenium, сделать HTTP-запрос через RestAssured или requests, дёрнуть SQL-запросом реальную базу.</p><h2>Инженерное мышление вместо «кнопка не работает»</h2><p>Все навыки из предыдущих разделов держатся на одной привычке думать определённым образом. На заводе фраза «деталь бракованная» не закрывает вопрос: нужно найти причину в процессе, измерить отклонение, воспроизвести и устранить. Та же логика переносится на программные системы, и именно она отличает инженера от человека, который кликает по экрану и пишет «не работает».</p><p>Складывается это мышление из нескольких рабочих привычек:</p><ol><li>Спрашивать «почему», а не только «что». Не «кнопка не нажимается», а «почему запрос возвращает 403 именно для этой роли».</li><li>Держать в голове систему целиком: как правка в одном сервисе аукнется в соседних через Kafka-события, общую базу или контракты API.</li><li>Заранее прикидывать риски: что сломается первым под нагрузкой, какие граничные случаи опаснее остальных. Сюда же относится участие в проектировании: дефект, пойманный на этапе требований, обходится примерно в десять раз дешевле, чем тот же дефект, найденный в продакшене.</li><li>Оперировать цифрами: время прогона регресса, покрытие тестами, количество инцидентов.</li></ol><p>Хорошая новость для тех, кто приходит в тестирование из технической специальности. Физики, химики, инженеры с производства уже умеют работать с причинно-следственными связями и видеть систему как набор связанных процессов. Этот навык никуда не девается при смене сферы, его остаётся переложить на специфику софта: вместо станков и допусков — сервисы, запросы и базы данных. База, за которую в IT доплачивают, у вас по факту уже есть.</p><h2>Итого</h2><p>Если собрать роадмап в один список, маршрут получается такой:</p><ul><li>Разбираться в архитектуре и поднимать демо-микросервисы локально;</li><li>Знать HTTP с REST, SQL и брокеры вроде Kafka;</li><li>Уметь читать логи, потому что в проде это ваш основной инструмент;</li><li>Освоить язык под автоматизацию;</li><li>И приучать себя думать потоками данных, а не кнопками.</li></ul><p>Архитектура объясняет, зачем нужны API, базы и брокеры. Понимание этих технологий делает осмысленным чтение логов. Логи и автоматизация вместе подводят к коду.</p><p>И ещё одно наблюдение, ради которого статья была написана. Рынок QA за пять лет переписал требования дважды и продолжит переписывать. Гнаться за конкретной строчкой в вакансии бессмысленно — она устареет к следующему собесу. Работает другая установка: целиться не в «войти в IT через тестирование», а в «стать инженером, который умеет тестировать». Первое даёт оффер на год, второе — профессию, которая переживёт любую следующую волну требований.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как агенты Stripe отправляют 1300 PR в неделю без единой строчки человеческого кода</title>
      <link>https://tproger.ru/translations/kak-agenty-stripe-otpravlyayut-1-300-pr-v-nedelyu-bez-edinoj-strochk</link>
      <comments>https://tproger.ru/translations/kak-agenty-stripe-otpravlyayut-1-300-pr-v-nedelyu-bez-edinoj-strochk?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Алексей Михайлишин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/kak-agenty-stripe-otpravlyayut-1-300-pr-v-nedelyu-bez-edinoj-strochk</guid>
      <description><![CDATA[<p>Как устроена система ИИ-агентов Minions в Stripe: архитектура блюпринтов, изолированные devbox-ы и MCP-инструменты, которые позволяют мержить 1300 PR в неделю.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/kak-agenty-stripe-otpravlyayut-1-300-pr-v-nedelyu-bez-edinoj-strochk">Как агенты Stripe отправляют 1300 PR в неделю без единой строчки человеческого кода</a>»</p>]]></description>
      <category><![CDATA[Лучшая практика]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 28 Mar 2026 07:52:12 GMT</pubDate>
      <content:encoded><![CDATA[<p>Каждую неделю <a href="https://stripe.com">Stripe</a> мержит более 1300 пулл-реквестов, в которых нет ни одной строчки, написанной человеком. Эти PR создают внутренние ИИ-агенты под названием Minions — они работают полностью автономно, без присмотра инженера.</p><p>Инженер отправляет сообщение в Slack, уходит за кофе — и возвращается к готовому пулл-реквесту, который уже прошёл автотесты и ждёт ревью. Пять задач за то время, которое обычно уходит на две. Звучит как фантастика, но за этой продуктивностью стоит не столько модель, сколько инфраструктура, которую Stripe строил годами — задолго до эры LLM.</p><p>Разбираемся, как устроена система Minions, какие задачи она решает и чему из опыта Stripe могут научиться другие компании. Статья основана на публичных материалах <a href="https://blog.bytebytego.com/p/how-stripes-minions-ship-1300-prs">ByteByteGo</a> и <a href="https://stripe.com/blog/engineering">Stripe Engineering Blog</a>.</p><p><b>Ключевые выводы:</b><br />— Stripe мержит более 1300 PR в неделю, созданных полностью автономными ИИ-агентами<br />— Minions — это unattended-агенты: они не требуют наблюдения или пошагового одобрения<br />— Архитектура построена на «блюпринтах» — гибридах жёсткого пайплайна и агентных циклов<br />— Главный секрет успеха — не модель, а developer-инфраструктура: изолированные окружения, быстрые тесты и чёткие ограничения<br />— Если агент не справился за два цикла CI — задача возвращается человеку</p><h2>Масштаб — цифры и факты</h2><p>Stripe обрабатывает более триллиона долларов платежей в год. Кодовая база компании — сотни миллионов строк кода, преимущественно на Ruby с типизацией <a href="https://sorbet.org">Sorbet</a>. Это относительно редкий стек, с которым LLM практически не сталкивались при обучении.</p><p>На этом фоне цифры Minions выглядят особенно впечатляюще:</p><ul><li><b>1300+ PR в неделю</b> — полностью автоматические, без единой строки человеческого кода</li><li><b>Типы задач</b> — миграции кода, обновление зависимостей, исправления безопасности, рефакторинг</li><li><b>Время запуска агента</b> — менее 10 секунд от запроса до начала работы</li><li><b>Параллельность</b> — один инженер может запустить 5-6 агентов одновременно</li></ul><p>Важно понимать: Stripe не считает каждый PR идеальным. Частично корректный пулл-реквест, который инженер доработает за 20 минут, — это уже серьёзный выигрыш. Система спроектирована с учётом этой реальности.</p><h2>Архитектура агентов</h2><h3>Изолированные окружения — devbox-ы</h3><p>Автономному агенту нужны три свойства от рабочей среды: <b>изоляция</b> (ошибки не затрагивают прод), <b>параллельность</b> (несколько агентов работают одновременно) и <b>предсказуемость</b> (каждый агент стартует с чистого состояния).</p><p>Stripe уже имел всё это. Их «devbox-ы» — облачные машины, предзагруженные с полной кодовой базой, инструментами и сервисами. Они поднимаются за 10 секунд, потому что Stripe заранее провизионирует и прогревает пул машин — клонирует репозитории, прогревает кеши и запускает фоновые сервисы. Инженеры и раньше использовали по одному devbox-у на задачу, а один инженер мог держать полдюжины одновременно. Агенты просто встроились в этот паттерн.</p><p>Поскольку devbox-ы работают в QA-окружении, они уже изолированы от продакшен-данных и реальной пользовательской информации. Агенты получают полные права без подтверждений — радиус поражения любой ошибки ограничен одной одноразовой машиной.</p><h3>Блюпринты — гибрид workflow и агента</h3><p>Есть два классических подхода к оркестрации LLM-систем:</p><ul><li><b>Workflow</b> — фиксированный граф шагов, где каждый шаг делает одну конкретную вещь, а последовательность предопределена</li><li><b>Agent</b> — цикл, в котором LLM сама решает, что делать дальше, на основе результатов предыдущих действий</li></ul><p>Workflow предсказуемы, но негибки. Агенты гибки, но ненадёжны. Stripe построил нечто среднее — «блюпринты» (blueprints).</p><p>Блюпринт — это последовательность узлов, в которой одни узлы выполняют детерминированный код, а другие запускают агентный цикл. Представьте структуру, которая чередует жёсткие и креативные шаги:</p><ul><li>Шаг «реализуй фичу» или «исправь ошибки CI» — полный агентный цикл с инструментами и свободой действий</li><li>Шаг «запусти линтеры» — захардкожен, всегда выполняется одинаково</li><li>Шаг «запуши ветку» — захардкожен, строго по шаблону PR компании</li></ul><p>Такое разделение экономит токены, снижает количество ошибок и гарантирует, что критические шаги выполняются каждый раз. При сотнях запусков в день каждый детерминированный узел — это одна проблема меньше, и этот эффект накапливается.</p><h3>Контекст — как не утонуть в сотнях миллионов строк</h3><p>У LLM ограниченное контекстное окно. Если загрузить все правила и конвенции глобально, контекст заполнится до того, как агент начнёт работать. Stripe использует глобальные правила «очень осторожно» — вместо этого они привязывают правила к конкретным директориям и паттернам файлов. Когда агент перемещается по файловой системе, он автоматически подхватывает только релевантные правила.</p><p>Для информации, которая не живёт в файловой системе, Stripe построил централизованный сервер <b>Toolshed</b>. Он хостит почти <b>500 инструментов</b> через <a href="https://modelcontextprotocol.io">MCP</a> (Model Context Protocol) — открытый стандарт, который даёт агентам единый способ вызывать внешние сервисы. Через MCP агенты получают доступ к внутренней документации, деталям тикетов, статусам билдов, результатам поиска по коду и многому другому.</p><p>Но больше инструментов — не значит лучше. Агенты работают лучше с тщательно подобранным подмножеством, релевантным их задаче. Stripe даёт Minions небольшой набор по умолчанию и позволяет инженерам добавлять дополнительные при необходимости.</p><h3>Модели и обратная связь</h3><p>Stripe не раскрывает конкретные модели, которые используют Minions, но архитектура сознательно абстрагирована от конкретной LLM. Ключевое значение имеет не модель, а инфраструктура обратной связи:</p><ol><li><b>Локальный линтинг</b> — запускается при каждом push за менее чем 5 секунд. Фоновый демон заранее вычисляет, какие правила линтинга применимы, и кеширует результаты</li><li><b>CI</b> — выборочно запускает тесты из батареи в 3+ миллиона тестов. Автофиксы применяются автоматически для известных паттернов ошибок</li><li><b>Повторная попытка</b> — если после автофикса ошибки остались, агент получает ещё один шанс исправить и запушить</li></ol><p>Затем — стоп. <b>Максимум два цикла CI.</b> Если код не проходит после второго push-а, ветка возвращается инженеру. Это ограничение осознанное: LLM показывают убывающую отдачу при повторных попытках решить ту же проблему. Больше раундов — больше токенов и вычислений без пропорционального улучшения.</p><h2>Какие задачи решают агенты</h2><p>Minions лучше всего справляются с задачами, которые хорошо определены, повторяемы и поддаются автоматической проверке:</p><ul><li><b>Миграции кода</b> — перевод со старых API на новые, обновление паттернов использования библиотек</li><li><b>Обновление зависимостей</b> — bump версий, адаптация кода к breaking changes</li><li><b>Исправления безопасности</b> — применение патчей по известным уязвимостям</li><li><b>Рефакторинг</b> — переименование, перемещение модулей, приведение к единому стилю</li><li><b>Мелкие баг-фиксы</b> — исправления, которые накапливаются в on-call очереди за ночь</li></ul><p>Чего Minions <b>не делают</b>:</p><ul><li>Не проектируют новую архитектуру</li><li>Не принимают продуктовых решений</li><li>Не пишут код, требующий глубокого понимания бизнес-логики</li><li>Не работают с задачами, которые нельзя проверить автоматическими тестами</li></ul><p>Это ключевое отличие от «attended» инструментов вроде <a href="https://cursor.com">Cursor</a> или <a href="https://claude.ai/code">Claude Code</a>, которые работают вместе с разработчиком. Инженеры Stripe используют и те, и другие — для разных типов задач.</p><h2>Результаты и метрики</h2><p>Stripe не публикует детальные внутренние метрики, но из публичных материалов и выступлений инженеров можно выделить ключевые результаты:</p><ul><li><b>1300+ PR в неделю</b> — объём, эквивалентный работе десятков инженеров</li><li><b>Сдвиг от написания к ревью</b> — инженеры не исчезли, но их роль изменилась: вместо написания кода они проверяют код, созданный агентами</li><li><b>Частично корректные PR</b> — даже неидеальные результаты экономят время, потому что доработка занимает 20 минут вместо нескольких часов с нуля</li><li><b>Масштабирование без найма</b> — рутинные задачи снимаются с инженеров, позволяя команде фокусироваться на сложной архитектурной работе</li></ul><p>Четыре уровня системы, которые обеспечивают эти результаты:</p><ol><li>Изолированные окружения — безопасные параллельные рабочие пространства</li><li>Гибридная оркестрация — детерминированные гарантии плюс агентная гибкость</li><li>Курированный контекст — правильная информация без перегрузки</li><li>Быстрая обратная связь с жёсткими лимитами на итерации</li></ol><h2>Чему учит опыт Stripe</h2><p>Главный инсайт Stripe: инвестиции в продуктивность разработчиков, сделанные за годы до появления LLM, дали неожиданные дивиденды, когда агенты появились в рабочем процессе.</p><p>Уроки, которые можно вынести:</p><ol><li><b>Начинайте не с выбора модели, а с инфраструктуры.</b> Окружения разработчика, тестовая инфраструктура, пайплайны обратной связи — если они хороши, агенты получат от них выгоду. Если нет — никакая модель не спасёт</li><li><b>Разделяйте детерминированное и агентное.</b> Линтинг, push, создание PR — это не задачи для LLM. Захардкодьте то, что можно захардкодить</li><li><b>Ставьте жёсткие ограничения.</b> Максимум два цикла CI — один из самых важных дизайн-решений Stripe. Знать, когда остановиться, так же важно, как знать, с чего начать</li><li><b>Начинайте с рутины.</b> Миграции, обновления зависимостей, патчи безопасности — это идеальные первые кандидаты для автономных агентов</li><li><b>Человеческое ревью никуда не уходит.</b> Роль инженера смещается от написания кода к проверке кода. Это не замена людей, а усиление команды</li></ol><p>Когда стоит задуматься о внедрении подобного подхода? Если у вас уже есть: надёжная CI/CD-инфраструктура, изолированные окружения для разработки и достаточно рутинных задач, которые поддаются автоматизации.</p><h2>Часто задаваемые вопросы</h2><h3>Какую LLM используют Minions в Stripe?</h3><p>Stripe не раскрывает конкретную модель. Архитектура Minions сознательно абстрагирована от конкретной LLM — ключевую роль играет инфраструктура (devbox-ы, блюпринты, MCP-инструменты), а не сама модель. Это позволяет менять или обновлять модель без переписывания всей системы.</p><h3>Могут ли Minions заменить разработчиков?</h3><p>Нет. Minions решают рутинные, хорошо определённые задачи — миграции, обновления зависимостей, патчи. Архитектурные решения, продуктовое проектирование и задачи с нетривиальной бизнес-логикой по-прежнему требуют человека. Роль инженера смещается от написания к ревью кода.</p><h3>Можно ли повторить подход Stripe в небольшой компании?</h3><p>Принципы масштабируемы: изолированные окружения, гибрид детерминированных и агентных шагов, курированный контекст, жёсткие лимиты на итерации. Но для полноценной реализации нужна зрелая CI/CD-инфраструктура и достаточный объём повторяемых задач. Начните с малого — автоматизируйте один тип рутинной задачи и расширяйте по мере роста доверия к системе.</p><h3>Что такое MCP и зачем он нужен агентам?</h3><p><a href="https://modelcontextprotocol.io">Model Context Protocol</a> (MCP) — это открытый стандарт, который даёт ИИ-агентам единообразный способ вызывать внешние сервисы. Stripe использует MCP для подключения почти 500 внутренних инструментов — от поиска по коду до статусов билдов. Благодаря MCP агенты получают доступ к нужной информации через стандартизированный интерфейс.</p><h2>Выводы</h2><p>Опыт Stripe показывает: будущее разработки — это не замена инженеров агентами, а построение инфраструктуры, в которой агенты становятся ещё одним типом участников инженерного процесса. 1300 PR в неделю без единой строчки человеческого кода — это результат не прорыва в ИИ, а многолетних инвестиций в developer experience.</p><p>Ключевой вопрос не «какую модель выбрать», а «готова ли наша инфраструктура к агентам». Изолированные окружения, быстрые тесты, чёткие ограничения, курированный контекст — всё это можно и нужно строить уже сейчас, вне зависимости от того, когда именно вы запустите первого агента.</p><p>Если тема ИИ-агентов в разработке вам интересна, рекомендуем изучить оригинальные статьи в <a href="https://stripe.com/blog/engineering">Stripe Engineering Blog</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>AI-агент для ревью документации в Confluence: инструкция как сделать также</title>
      <link>https://tproger.ru/articles/ai-agent-dlya-revyu-dokumentacii-v-confluence--instrukciya-kak-sde</link>
      <comments>https://tproger.ru/articles/ai-agent-dlya-revyu-dokumentacii-v-confluence--instrukciya-kak-sde?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Дима Дмитриев]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/ai-agent-dlya-revyu-dokumentacii-v-confluence--instrukciya-kak-sde</guid>
      <description><![CDATA[<p>Как создать AI-агента для ревью документации в Confluence. Архитектура, LLM-проверки, chunking, интеграция с Jira и автоматизация Docs Review.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/ai-agent-dlya-revyu-dokumentacii-v-confluence--instrukciya-kak-sde">AI-агент для ревью документации в Confluence: инструкция как сделать также</a>»</p>]]></description>
      <category><![CDATA[Java]]></category>
      <category><![CDATA[Системный анализ]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Промпты]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 16 Mar 2026 07:20:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>Мы разработали и внедрили AI-агента в процесс ревью документации в Confluence. Агент является частью экосистемы агентов Desmond, а под капотом у него Java 21, Spring AI, gpt-oss-120b, Docker + Kubernetes во внутреннем AI-кластере банка, Jira (webhook + REST API + Kafka), LibreChat (MCP). Он автоматически проверяет документацию в Confluence на соответствие стандарту. Агент встроен в Jira: получает webhook при смене статуса задачи, находит нужную документацию, проверяет её и оставляет комментарий с результатами ревью.</p><p>Кому это будет нужно:</p><ul><li>Платформенным аналитикам — меньше рутинного ревью, больше времени на рабочие задачи.</li><li>Продуктовым аналитикам и разработчикам — быстрая обратная связь, понятные и шаблонные требования для проекта.</li></ul><h2>Откуда растёт проблема</h2><p>Прежде чем описывать решение, давайте поймем контекст.</p><p>Перед релизом любой фичи команда готовит поставку: у разработчика — code review, у аналитика — ревью документации. Весь процесс идёт по workflow в Jira, и один из обязательных этапов — Docs review.</p><p>За этот этап отвечают платформенные аналитики: они дежурят по очереди и проверяют поставки. Их задача — убедиться, что документация написана по стандарту и отражает все новые изменения по продуктам. Хранится всё в едином Confluence-пространстве платформы, и порядок там очень нужен: документацию читают не только аналитики разных команд, но и саппорт.</p><p>Звучит адекватно. <b>Но на практике вылезают три проблемы:</b></p><ol><li>Задержки. У платформенного аналитика помимо ревью куча других задач. Когда поставок много — Docs review начинает тормозить весь процесс подготовки к релизу.</li><li>Усталость ревьювера. Большой поток однотипных проверок выматывает даже самого внимательного, поэтому риск нужно было сократить.</li><li>Человеческий фактор. Несмотря на наличие стандарта, разные ревьюверы могут расставлять акценты по-разному. Аналитик продуктовой команды никогда не знает наверняка, на что обратят внимание в этот раз.</li></ol><p>Всё это бьёт по времени поставки и непонятно растягивает подготовку к релизу — особенно когда релизиться нужно быстро.</p><h2>Что пробовали раньше</h2><p>Прежде чем идти в сторону AI, рассмотрели два очевидных варианта.</p><p><b>Вариант 1: убрать ревью совсем.</b></p><p>Радикально, экономит время всех участников, но тогда мы теряем контроль над качеством документации — а это дорого. Документацию читают не только аналитики, но и саппорты. Без проверки начнут теряться важные детали о работе функционала, по сути, возвращаемся к тому хаосу, от которого уже уходили раньше. Не вариант.</p><p><b>Вариант 2: алгоритмическая автоматизация без AI.</b></p><p>Теоретически можно написать набор проверок на if-else. Но у документации нет синтаксиса, как у кода — каждый аналитик пишет немного по-своему. Поддержка такого алгоритма со временем станет дороже, чем просто делать ревью руками.</p><h2>Почему AI-агент</h2><p>После того как стандартные подходы отпали, мы стали думать в сторону LLM. И чем дольше разбирались, тем яснее становилось: LLM под это хорошо ложится.</p><p>Вот конкретные факты, которые мы собрали внутри команды:</p><ul><li>LLM умеет понимать суть написанного, а не только искать точные совпадения, если документация написана по-разному — для нейронки это не проблема.</li><li>Когда требования меняются, в большинстве случаев достаточно поправить промпт. Аналитик справится сам, без участия разработчика.</li><li>У агента одна задача — ревью, он делает её сразу, не надо ждать, пока освободится дежурный аналитик.</li><li>Агент интегрируется в существующий Jira-workflow. Для команд ничего не меняется — агент работает в фоне.</li><li>У агента понятный набор инструкций.</li></ul><h2>Архитектура агента</h2><p>Desmond — экосистема агентов. Desmond Docs Reviewer — task-oriented AI-агент для автоматизации ревью внутренней документации на платформе Альфа-Онлайн.</p><p><b>Стек:</b></p><ul><li>Язык: Java 21 + Spring AI</li><li>Инфраструктура: Docker + Kubernetes во внутреннем AI-кластере банка</li><li>Модель: gpt-oss-120b — внутренний продукт банка AlfaGen, развёрнутый локально</li><li>Интеграции: Jira (webhook + REST API + Kafka), Code Review Agent (A2A через MCP), LLM API</li></ul><figure><img src="https://media.tproger.ru/user-uploads/99633/2026-03-16/69ad3392-c669-478e-94e0-5db2c3e7f948.webp" alt="" /></figure><p>Точка входа — webhook из Jira. Задача переходит в нужный статус → триггерится webhook → агент получает событие и начинает работу.</p><p>На входе агент имеет три сущности:</p><ul><li>описание изменений (фича)</li><li>ссылку на документацию в Confluence</li><li>ссылку на Pull Request разработчика</li></ul><p>Дальше — четыре шага.</p><h2>Как агент решает задачу пошагово</h2><p>Посмотрим на работу агента со стороны процесса и распишем детально каждый.</p><figure><img src="https://media.tproger.ru/user-uploads/99633/2026-03-16/5ad8fa87-7a47-441e-adcb-da0ac551e1b0.webp" alt="" /></figure><h2>Шаг 1. Нужна ли вообще проверка?</h2><p>Первое, что делает агент — определяет, техническая это доработка или бизнесовая. Если изменения затрагивают только код и не меняют бизнес-логику — документацию обновлять не нужно, а значит и проверять нечего.</p><p>Агент анализирует описание задачи и diff PR. Смотрит на примеры из промпта и выдаёт решение: техническая доработка или нет, плюс короткое обоснование — не больше 30 слов.</p><figure><img src="https://media.tproger.ru/user-uploads/99633/2026-03-16/8b795c5e-9030-476b-9310-09a5c0f126c2.webp" alt="" /></figure><p>Типовые технические доработки, которые не требуют проверки: обновление библиотек, рефакторинг тестов, исправление линтера, дизайнерские правки без влияния на UX. Есть и исключения — например, изменение deeplink-параметров или перемещение приложения в новый репозиторий. Всё это прописано в промпте явно.</p><p>На реальных задачах получили 89,7% корректных ответов (27 из 30). Для старта приемлемо, но будем улучшать.</p><p>Если доработка техническая — агент пишет комментарий в задачу и переводит её в следующий статус. Дальше не идёт.</p><p>Общий сценарий в коде выглядит так:</p><h2>Шаг 2. Есть ли в документации описание фичи?</h2><p>Если доработка бизнесовая — агент ищет в документации фрагменты, которые описывают конкретную фичу. Задача на этом шаге простая: найдено ли описание, и если да — в каких разделах и что именно написано.</p><figure><img src="https://media.tproger.ru/user-uploads/99633/2026-03-13/09aa13e4-2fba-45a8-858a-f8db9ba1b6e9.webp" alt="" /></figure><p>Отдельно проверяется раздел «7. История изменений» — изменение должно быть там зафиксировано.</p><p><b>Проблема с токенами.</b> Документация бывает большой — и она не влезает в контекст целиком. Решение: разбить на чанки и анализировать по частям.</p><p>Стратегия нарезки простая — равномерно по количеству символов, семантическое деление по разделам здесь не критично: мы ищем одни и те же фрагменты вне зависимости от их положения в структуре.</p><p>Чтобы не терять контекст на границах, используем перекрытие (overlap): к каждому чанку добавляем хвост предыдущего и заголовок его раздела. Размер чанка рассчитывается по формуле с коэффициентом, подобранным эмпирически — с запасом на колебания длины токенов.</p><figure><img src="https://media.tproger.ru/user-uploads/99633/2026-03-13/c9f630a0-db7c-4a23-a5f7-406c2c43eba8.webp" alt="" /></figure><p>Смысл её в том, чтобы заранее рассчитать максимально допустимое количество символов на чанк (C_chunk), включая резерв под перекрытие (C_dup) и заголовок. Коэффициент r был подобран эмпирически — с запасом, чтобы учесть возможные колебания в длине токенов.</p><figure><img src="https://media.tproger.ru/user-uploads/99633/2026-03-13/67e6d7bc-70cf-4b0e-8e43-2da4b42229ab.webp" alt="" /></figure><p>После того как все чанки обработаны, агент собирает сводное саммари: в каких разделах нашлось описание фичи, указано ли изменение в истории. Если ничего не найдено — просит проверить формулировку описания в задаче.</p><p>Пример ответа, когда описание фичи найдено:</p><figure><img src="https://media.tproger.ru/user-uploads/99633/2026-03-13/b2f28fa7-e618-455e-8792-0f0be1de4214.webp" alt="" /></figure><p>Пример ответа, когда описание фичи не найдено:</p><figure><img src="https://media.tproger.ru/user-uploads/99633/2026-03-13/b7cdc36b-3043-4fbc-bb8e-e8becc59bc6c.webp" alt="" /></figure><h2>Шаг 3. Соответствует ли документация стандарту?</h2><p>Это самая сложная часть — со звёздочкой. Нужно пройтись по каждому разделу документа и сверить его с требованиями стандарта. Документация структурирована: шапка, основная информация, предусловия, постусловия, сценарии использования, алгоритм, подробное описание, история изменений.</p><p>Возьмем кусочек стандарта, описывающий шапку страницы:</p><figure><img src="https://media.tproger.ru/user-uploads/99633/2026-03-13/1c9adb3a-f0b1-445f-b711-150c56d7fc96.webp" alt="" /></figure><h2>Стандарт для LLM — это не то же самое, что стандарт для людей</h2><p>Когда мы первый раз запустили проверку, скормили агенту существующий стандарт как есть. Результат нам не понравился: LLM интерпретировала одни и те же требования по-разному, часть пунктов игнорировала, часть выполняла непредсказуемо.</p><p>Причина в том, что стандарт писался для аналитиков, которые понимают контекст и в нём много неявных допущений — «вставьте ссылку на команду», «укажите репозиторий» — и ни слова о том, как именно это должно выглядеть.</p><p>Вот типичные вопросы, на которые у стандарта не было ответа:</p><ul><li>Ссылка на команду — это Confluence, Notion или Jira?</li><li>Jira-ссылка — это макрос или обычный URL?</li><li>Как проверить корректность ссылки на репозиторий?</li><li>Всегда ли обязательна эта таблица, или бывают исключения?</li></ul><p>Переписали стандарт в LLM-читаемый формат, руководствуясь простыми принципами:</p><ul><li>Каждое требование сформулировано явно и однозначно.</li><li>Для каждого поля приведены примеры правильного и неправильного заполнения.</li><li>Никаких «подразумевается» и «как правило».</li></ul><p>Вот как выглядит фрагмент переписанного стандарта для шапки документа:</p><p>Кусочек 2</p><h2>Кросс-раздельные проверки</h2><p>Часть требований касается не одного раздела, а согласованности между несколькими. Например: все сервисы, упомянутые в колонке Git Middle шапки, должны иметь ссылку на документацию в разделе «Основная информация».</p><p>Для таких случаев мы выделили отдельный тип — кросс-проверки. Они оформлены как отдельные правила, где явно указано, какие разделы участвуют и что между ними должно быть согласовано. В промпт к агенту передаются сразу несколько чанков документации — те разделы, которые участвуют в проверке.</p><p>Один из примеров кросс-проверок:</p><h3>Chunking strategy</h3><p>В этой задаче нам важно обеспечить максимально точную проверку по всем требованиям, поэтому мы будем здесь использовать стратегию логического разделения по разделам. Выглядит это как-то так:</p><figure><img src="https://media.tproger.ru/user-uploads/99633/2026-03-16/1cdd8abb-9714-4d64-a81d-f154a649824b.webp" alt="" /></figure><p>Дано:</p><ul><li>LLM-читаемый формат, разбитый по разделам</li><li>Документация, также структурированная по разделам</li></ul><p>Решение:</p><p>1. <b>Разделяем на чанки документацию.</b> 1 чанк = 1 раздел.</p><p>2. <b>Разделяем на чанки стандарт.</b> 1 чанк = 1 требование.</p><p>3. <b>Сопоставляем чанки</b> стандарта и документации между собой:</p><p><b>Проверка оформления:</b></p><p>1 чанк (раздел) документации ~ 1 чанку стандарта (требование к разделу).</p><p><b>Кросс-проверки: </b></p><p>1 чанк кросс-проверки (отдельный раздел с кросс-проверками) ~ n чанкам (разделам) документации.</p><p>4. <b>Отправляем в LLM запросы</b> на проверку по каждому соответствию.</p><p>5. <b>Собираем в единый отчет.</b></p><p>Примеры:</p><p>Проверка оформления</p><ul><li>1 чанк стандарта</li></ul><ul><li>1 чанк документации (представлено графически для наглядности. В реальности данные передаются в LLM в HTML-формате)</li></ul><figure><img src="https://media.tproger.ru/user-uploads/99633/2026-03-13/a5476f12-edf3-4a17-9fc5-f93592557108.webp" alt="" /></figure><p>Кросс-проверка</p><ul><li>1 чанк стандарта:</li></ul><ul><li>2 чанка документации:</li></ul><p>Чанк 1</p><figure><img src="https://media.tproger.ru/user-uploads/99633/2026-03-13/e7a4592b-5ff9-4c14-8c5d-1f236c3a8438.webp" alt="" /></figure><p>Чанк 2</p><figure><img src="https://media.tproger.ru/user-uploads/99633/2026-03-13/1fea1c37-64c1-4d73-bb4f-40e0a55e0aa2.webp" alt="" /></figure><p>Итоговый промпт:</p><p>Таким образом, мы проверяем каждый раздел и каждую кросс-проверку отдельно. После прохождения всех проверок собираем итоговое саммари, чтобы зафиксировать результат анализа по всему документу.</p><p>Как выглядит код:</p><p>Мы видим, что при использовании чанков LLM перестала пропускать требования, проверки стали стабильнее, ответы — содержательнее.</p><p>Пример ответа LLM до чанкования в свободном формате:</p><p>Пример ответа LLM после чанкования в JSON-формате. Приведу пример анализа только одного чанка (раздел Алгоритм), т.к. в сумме по чанкам получается тот самый объёмный текст длиной в 200-250 символов.</p><p>А что если раздел слишком большой?</p><p>В таком случае мы используем chunking strategy из <b>шага 2</b> и агрегируем результаты с помощью немного сумасшедшего 💊, но работающего промпта.</p><p>Агент отправляет запрос на проверку по каждому соответствию, затем собирает всё в нормальный отчёт. Изначально отчёт выходил на 200–250 строк — неудобно читать, мы добавили отдельный шаг финального саммари — сократили до 50 строк без потери содержания.</p><h2>Технические грабли</h2><h3>Нестабильность ответов LLM</h3><p>Одна из первых проблем — LLM отвечала в произвольном формате. Иногда JSON, иногда текст, иногда что-то среднее. Решение: Structured Output в Spring AI. Ответ всегда приходит в заданной структуре — никакой самодеятельности.</p><h2>Лимит токенов</h2><p>Встречается на обоих шагах, но по-разному. На шаге поиска фичи — документация слишком большая целиком. На шаге проверки стандарту — в контекст не влезают и документ, и стандарт одновременно. В обоих случаях решение — chunking с правильно рассчитанным размером и overlap.</p><h2>Скрытые элементы Confluence</h2><p>Confluence отдаёт HTML, и часть контента скрыта в элементах, которые не видны при обычном просмотре страницы. Агент работает напрямую с HTML, <b>в котором остаются только нужные для обработки теги </b>— это позволяет не терять данные, которые визуально не отображаются</p><h2>Долгое время обработки</h2><p>Первые версии работали медленно: несколько запросов к LLM шли последовательно. Переключились на Java Virtual Threads — параллельная обработка чанков сократила медианное время ревью с 1:20 до 0:26.</p><p><b>Как это выглядит в коде: </b></p><h2>Что конкретно упростилось</h2><ul><li>Аналитики продуктовых команд стали прогонять документацию через агента ещё до этапа ревью — как самопроверку.</li><li>При повторном ревью после правок не надо ждать человека — достаточно перезапустить агента.</li><li>Проверка корректности ссылок и форматов полностью снята с плеч аналитиков.</li></ul><h2>Ограничения</h2><ol><li>Макеты — проверяется только их наличие, содержимое агент не анализирует.</li><li>Нестандартная структура — если документация сильно отклоняется от шаблона, автоматическая проверка даёт менее надёжный результат.</li></ol><h2>Что дальше</h2><p>Идеи в работе и на горизонте:</p><ul><li>Автоматический аппрув документации, если все проверки прошли успешно.</li><li>Подключение проверок документации по микросервисам, не только фронтенд.</li><li>Проверка полноты документации через код — что позволит закрыть ревью почти полностью, за исключением нестандартных кейсов.</li></ul><figure><img src="https://media.tproger.ru/user-uploads/99633/2026-03-13/56986e79-bf1b-4287-a589-f2afb5c60c44.webp" alt="" /></figure>]]></content:encoded>
    </item>
    <item>
      <title>7 готовых промптов для автоматизации через OpenClaw</title>
      <link>https://tproger.ru/articles/7-gotovyh-promptov-dlya-avtomatizacii-cherez-openclaw</link>
      <comments>https://tproger.ru/articles/7-gotovyh-promptov-dlya-avtomatizacii-cherez-openclaw?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Дима Дмитриев]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/7-gotovyh-promptov-dlya-avtomatizacii-cherez-openclaw</guid>
      <description><![CDATA[<p>7 готовых промптов для OpenClaw: автоматизация почты, документов, мониторинга конкурентов, безопасности и умного дома без нод и сценариев.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/7-gotovyh-promptov-dlya-avtomatizacii-cherez-openclaw">7 готовых промптов для автоматизации через OpenClaw</a>»</p>]]></description>
      <category><![CDATA[API]]></category>
      <category><![CDATA[OpenAI]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 17 Feb 2026 08:45:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>OpenClaw (ранее Clawdbot и Moltbot) — open-source AI-агент, который живёт в вашем мессенджере. В отличие от визуальных конструкторов вроде n8n или Zapier, здесь не нужно собирать ноды и настраивать связи вручную. Вы описываете задачу текстом, агент сам пишет код, создаёт скиллы и настраивает cron-расписания.</p><p>Статья предполагает, что OpenClaw у вас уже развёрнут. Если нет — <a href="https://routerai.ru/pages/openclaw-web-telegram-routerai-claude-gpt-5-deepseek-mistral">вот инструкция от RouterAI по установке</a>.</p><h2>Как использовать</h2><ul><li>Копируете промпт</li><li>Отправляете в OpenClaw</li><li>Отвечаете на уточняющие вопросы агента</li><li>Получаете работающую автоматизацию</li></ul><h2>1. Обработка входящих документов из чатов (счета, акты, КП)</h2><p>Документы из Telegram автоматически классифицируются, переименовываются по шаблону и раскладываются по папкам с уведомлением ответственных.</p><h2>Как это работает</h2><p>OpenClaw отслеживает входящие сообщения с вложениями. При получении PDF или изображения — запускает OCR при необходимости, извлекает ключевые данные (номер, дата, контрагент, сумма), переименовывает файл и сохраняет в нужную директорию.</p><h2>Промпт</h2><h2>Что подготовить</h2><ul><li>Канал/чат для входящих документов</li><li>Канал бухгалтерии для уведомлений</li><li>Путь к директории для хранения файлов</li></ul><h2>Итог</h2><p>Начните с одного канала. Посмотрите, насколько точно агент классифицирует документы, и скорректируйте шаблон переименования под свои нужды.</p><h2>2. Мониторинг и исследование конкурентов</h2><p>Ежедневный отчёт об активности конкурентов: новые продукты, изменения цен, вакансии, упоминания в прессе.</p><h2>Как это работает</h2><p>OpenClaw по cron-расписанию обходит список источников (RSS, сайты, новостные порталы), сравнивает с предыдущим отчётом и присылает только реальные изменения.</p><h2>Промпт</h2><h2>Что подготовить</h2><ul><li>Список конкурентов (названия, URL сайтов, RSS если известны)</li><li>Отрасль и ключевые слова для новостного поиска</li><li>Канал доставки отчёта</li></ul><h2>Итог</h2><p>Начните с 2–3 конкурентов и RSS-лент — это самый надёжный источник. Скрапинг публичных страниц может ломаться при изменении вёрстки, так что проверяйте отчёты в первую неделю.</p><h2>3. Утренний дайджест по расписанию</h2><p>Сводка за 2 минуты вместо получаса ручной проверки почты, чатов и новостей.</p><h2>Как это работает</h2><p>По расписанию OpenClaw собирает данные из подключённых источников (почта, календарь, мессенджеры, новости) и присылает одно сообщение с приоритетами.</p><h2>Промпт</h2><h2>Что подготовить</h2><ul><li>Какие источники подключены (почта, календарь, мессенджеры)</li><li>Список важных отправителей/чатов</li><li>Тематика новостей</li><li>Канал доставки</li></ul><h2>Итог</h2><p>Первую неделю следите за качеством — скорее всего, придётся подправить список важных отправителей и тематику новостей. Если используете вместе с кейсом 4 (Email-triage), разграничьте зоны ответственности: дайджест — обзор за день, triage — обработка каждого письма в реальном времени.</p><h2>4. Email-triage: Inbox Zero с умной обработкой</h2><p>Автоматическая сортировка входящей почты: важные письма — в приоритет, рассылки — в архив, типовые запросы — черновик ответа.</p><h2>Как это работает</h2><p>OpenClaw проверяет почту каждые 15 минут, классифицирует письма и выполняет действия: уведомляет, архивирует, готовит черновики или помечает для ручной обработки.</p><h2>Промпт</h2><h2>Что подготовить</h2><ul><li>Почтовый ящик (Яндекс Почта, Mail.ru, Gmail, Outlook или IMAP)</li><li>Список VIP-отправителей</li><li>Примеры типовых запросов для обучения классификации</li><li>Канал для уведомлений</li></ul><h2>Итог</h2><p>Начните с автоархивации рассылок — это безопасно и сразу разгружает инбокс. Черновики ответов подключайте, когда убедитесь в качестве классификации. Папку «На проверку» первое время проверяйте ежедневно. Если используете вместе с кейсом 3 (утренний дайджест), почтовую часть дайджеста можно упростить до сводки по категориям из triage.</p><h2>5. Управление умным домом/офисом через чат</h2><p>Управление устройствами через сообщения: включить свет, выключить обогреватель, запустить сценарий — без отдельного приложения для каждого вендора.</p><h2>Как это работает</h2><p>OpenClaw подключается к Home Assistant (или другой системе) через API и выполняет команды из чата. Простые действия — сразу, сценарии — по расписанию.</p><h2>Промпт</h2><h2>Что подготовить</h2><ul><li>Какая система умного дома (Home Assistant, Яндекс, Mi Home или другая)</li><li>URL и API-токен для подключения</li><li>Список устройств и их названия</li><li>Какие сценарии по расписанию нужны</li></ul><h2>Итог</h2><p>Начните со света и температуры — это самые безопасные команды для обкатки. Убедитесь, что агент правильно сопоставляет названия устройств, прежде чем подключать сценарии по расписанию.</p><h2>6. Помощник для защиты прав потребителя</h2><p>Подготовка претензий, жалоб и запросов на возврат: подбор статей закона, генерация документов, контроль сроков.</p><h2>Как это работает</h2><p>Вы описываете проблему, агент определяет тип спора, подбирает применимые нормы, генерирует текст документа и ставит напоминание о дедлайне ответа.</p><h2>Промпт</h2><h2>Что подготовить</h2><ul><li>ФИО, адрес и контакты для шапки документа</li><li>Документы по спору (чеки, договор, переписка с продавцом)</li><li>Описание проблемы: что купили, когда, что пошло не так</li></ul><h2>Итог</h2><p>Для стандартной претензии по ЗоЗПП — работает хорошо. Для чего-то серьёзнее (суд, крупные суммы) — обратитесь к юристу. LLM может ошибиться в трактовке закона.</p><h2>7. Проактивный мониторинг безопасности</h2><p>Ежедневная проверка зависимостей проектов на известные уязвимости с уведомлениями по критичности.</p><h2>Как это работает</h2><p>OpenClaw по расписанию парсит файлы зависимостей, сверяет версии пакетов с базой CVE и присылает отчёт с приоритизацией по CVSS.</p><h2>Промпт</h2><h2>Что подготовить</h2><ul><li>Пути к репозиториям/директориям для мониторинга</li><li>Канал для уведомлений</li><li>Есть ли пакеты, которые нужно исключить из проверки</li></ul><h2>Итог</h2><p>Хорошая первая линия обороны, но не замена полноценному аудиту. Для критичных систем используйте Snyk, Trivy или Dependabot параллельно.</p><h2>Ещё идеи</h2><p>Что делают другие пользователи:</p><ul><li>Парсинг веб-страниц и сохранение саммари в базу знаний</li><li>Поиск товаров на маркетплейсах по списку покупок и добавление дешёвых вариантов в корзину</li><li>Сбор статистики из рекламных кабинетов и отправка сводки команде</li><li>Переименование файлов в папке по содержимому или дате</li><li>Мониторинг новостных сайтов по теме AI с публикацией саммари в Telegram-канал команды</li><li>Проверка битых ссылок на сайте и отчёт по 404-м</li><li>Поиск кандидатов на hh.ru по критериям и выгрузка в таблицу</li><li>Мониторинг цен на авиабилеты с уведомлением при снижении</li><li>Анализ серверных логов за сутки и выделение критических ошибок</li><li>Перевод файлов локализации (JSON) на новые языки с сохранением структуры</li><li>Сбор финансовых показателей конкурентов из открытых источников в Excel</li></ul><h2>Рекомендации</h2><p><b>Начните с малого.</b> Выберите 2–3 кейса и доведите до ума, прежде чем автоматизировать всё подряд.</p><p><b>Итерируйте.</b> Первая версия промпта редко бывает идеальной. Корректируйте по результатам.</p><p><b>Следите за агентом.</b> Первое время проверяйте, что автоматизация делает то, что вы ожидаете.</p><p><b>Не забывайте о безопасности.</b> HTTPS, минимальные права доступа, секреты — в защищённом хранилище. Агент с доступом к вашим системам и API-ключам может натворить дел при ошибке в настройке.</p><h2>Заключение</h2><p>Возможности OpenClaw + <a href="https://routerai.ru/">RouterAI</a> не ограничиваются этими семью сценариями — вы можете описать агенту любую задачу или попросить его создать нужную автоматизацию с нуля.</p>]]></content:encoded>
    </item>
    <item>
      <title>Главные ИИ-инструменты начала 2026: картинки, тексты и код</title>
      <link>https://tproger.ru/articles/glavnye-ii-instrumenty-nachala-2026--kartinki--teksty-i-kod</link>
      <comments>https://tproger.ru/articles/glavnye-ii-instrumenty-nachala-2026--kartinki--teksty-i-kod?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Дима Дмитриев]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/glavnye-ii-instrumenty-nachala-2026--kartinki--teksty-i-kod</guid>
      <description><![CDATA[<p>Обзор самых полезных нейросетей для создания изображений, написания текстов и программирования. Тестируем Midjourney, GPT-5, GitHub Copilot и российские аналоги. Как выбрать подходящий инструмент и начать им пользоваться.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/glavnye-ii-instrumenty-nachala-2026--kartinki--teksty-i-kod">Главные ИИ-инструменты начала 2026: картинки, тексты и код</a>»</p>]]></description>
      <category><![CDATA[Нейронные сети]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[OpenAI]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 16 Feb 2026 09:00:44 GMT</pubDate>
      <content:encoded><![CDATA[<p>По данным a16z, в топ-100 веб-приложений <a href="https://habr.com/ru/articles/941498/">появилось</a> всего 11 новичков (годом ранее — 17). Рынок стабилизируется, но борьба за пользователя продолжается.</p><p>ChatGPT удерживает первое место в вебе, хотя доминирование ослабло — мобильная аудитория Gemini достигла половины от ChatGPT. Grok от xAI совершил главный рывок: с нуля до 20 млн активных пользователей и четвёртое место в веб-рейтинге. DeepSeek потерял позиции: −22% в мобильном сегменте и −40% в вебе.</p><p>В России картина другая. Среди молодёжи до 35 лет лидируют ChatGPT (64%), Алиса AI (46%) и DeepSeek (40%). В старшей группе (51+) первым стал GigaChat (54%) — локальные решения сильны.</p><h2>Тренды</h2><p>От чат-ботов к агентам. ИИ-агенты самостоятельно планируют действия, используют внешние инструменты и выполняют сложные задачи. IDC <a href="https://www.tadviser.ru/index.php/%D0%A1%D1%82%D0%B0%D1%82%D1%8C%D1%8F:%D0%A2%D0%B5%D0%BD%D0%B4%D0%B5%D0%BD%D1%86%D0%B8%D0%B8_%D0%BD%D0%B0_%D1%80%D1%8B%D0%BD%D0%BA%D0%B5_%D0%B8%D1%81%D0%BA%D1%83%D1%81%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B8%D0%BD%D1%82%D0%B5%D0%BB%D0%BB%D0%B5%D0%BA%D1%82%D0%B0">прогнозирует</a>: к 2030 году 45% крупных организаций внедрят такие системы.</p><p>ИИ на устройстве. Модели работают прямо на смартфонах и ноутбуках — меньше задержки, выше конфиденциальность. Рынок встроенного ИИ <a href="https://www.tadviser.ru/index.php/%D0%A1%D1%82%D0%B0%D1%82%D1%8C%D1%8F:%D0%98%D1%81%D0%BA%D1%83%D1%81%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B8%D0%BD%D1%82%D0%B5%D0%BB%D0%BB%D0%B5%D0%BA%D1%82_(%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%BE%D0%B9_%D1%80%D1%8B%D0%BD%D0%BE%D0%BA)">оценивают</a> в $11,54 млрд.</p><p>Открытые модели сократили разрыв с коммерческими: по <a href="https://ict.moscow/analytics/ai-index-report-2025/">AI Index Report</a>, разница в производительности упала с 8% до 1,7% за год.</p><h2>Нерешённые проблемы</h2><p>Кризис доверия. 70% россиян <a href="https://expert.ru/tekhnologii/iskusstvennoe-trebuet-zhertv/">распознают</a> контент от ИИ, а 56% негативно относятся к брендам, которые это скрывают.</p><p>Приватность. Соцсети с ИИ-агентами <a href="https://epic.org/issues/consumer-privacy/social-media-privacy/">столкнулись</a> с утечками личных данных.</p><p>Слабые рассуждения. Модели по-прежнему <a href="https://ict.moscow/analytics/ai-index-report-2025/">плохо справляются</a> с многошаговой логикой.</p><p>Инвестиции в ИИ в США достигли $109,1 млрд, доля компаний с ИИ выросла с 55% до 78%.</p><p>Если хотите научиться работать с нейросетями на профессиональном уровне — от промптов до автоматизации задач — посмотрите курс <a href="https://online.top-academy.ru/education/master-neural">«Нейросети для увеличения дохода»</a> от Академии ТОП.</p><h2>Текстовые модели</h2><p>Современные модели не просто пишут грамотно — они адаптируются к стилю, запоминают терминологию проекта и тон бренда.</p><h2>GPT-5: глубокое понимание контекста</h2><p>Доступ через агрегаторы типа RuGPT</p><p>Флагман OpenAI с контекстом до 500 тысяч токенов — это сотни страниц текста с сохранением логических связей. Справляется с анализом документации, подготовкой контент-планов и документированием сложных систем. Поддерживает ролевое моделирование и тонкую настройку на конкретный стиль через загрузку примеров.</p><p>Техника: архитектура трансформеров с улучшенным механизмом внимания, поддержка цепочек рассуждений, одновременная работа с текстом, таблицами и схемами.</p><p>Доступность в России: через агрегаторы с локализованной оплатой. Для прямого доступа нужен VPN.</p><h2>Google Gemini: мультимодальный ассистент</h2><p><a href="https://blog.google/technology/google-deepmind/gemini-model-thinking-updates-march-2025/#gemini-2-5-thinking">Ссылка</a></p><p>Работает с текстом, изображениями, аудио и видео в одном интерфейсе. Глубоко интегрирован с экосистемой Google — Поиск, Workspace, YouTube. Есть два режима: Flash (быстрые задачи) и Pro (сложные, включая программирование). Экспериментальный режим «Агент» выполняет многошаговые задачи через браузер и сторонние приложения.</p><p>Полезен для анализа кода, генерации изображений по описанию, работы с видеозаписями и графиками. «Временный чат» — для конфиденциальных запросов без сохранения истории.</p><p>Техника: модели Gemini 3 Pro и Flash на базе Next Token Prediction, единообразная обработка данных разных типов через токены.</p><p>Доступность в России: веб-интерфейс и мобильные приложения работают, но для API и коммерческого доступа есть ограничения. Подписки (AI Plus/Pro/Ultra) требуют международную карту.</p><h2>DeepSeek: бесплатный аналитик</h2><p><a href="https://chat.deepseek.com/">Ссылка</a></p><p>Китайская модель, популярная в России из-за полной бесплатности и отсутствия блокировок. Специализируется на логическом анализе и работе с длинными документами (до 128 тысяч токенов). Загружает PDF, DOCX, TXT (до 10 МБ, но не сканы без текстового слоя).</p><p>Применение: анализ выгрузок в Excel, поиск противоречий в договорах, суммирование научных статей, категоризация текстовых обращений в поддержке.</p><p>Техника: флагманская модель DeepSeek-R1 с архитектурой «смеси экспертов» (MoE) и пошаговым размышлением (chain-of-thought).</p><p>Доступность в России: полностью доступен, бесплатен. Бывают задержки в пиковые часы. Есть платные корпоративные решения с API.</p><h2>Grok: нейросеть с доступом к трендам</h2><p>Модель от xAI (Илон Маск), интегрированная с соцсетью X* (бывший Twitter). Анализирует текущие события и общественные настроения в реальном времени. Отличается характерным стилем с элементами сарказма. Функция DeepSearch ищет и анализирует информацию из разных интернет-источников.</p><p>Полезен журналистам и маркетологам для мониторинга трендов, исследователям — для оценки общественного мнения. Версия Grok 4.1 Thinking — для сложных задач, Grok 4.1 Fast — для быстрых ответов. Заявленный контекст — до двух миллионов токенов, но качество на русском языке уступает конкурентам.</p><p>Доступность в России: базовая модель бесплатна, расширенный доступ — по подписке SuperGrok или X Premium+. Нужен VPN.</p><p>*— заблокирована в РФ</p><h2>YandexGPT 3: локальный контекст</h2><p><a href="https://console.yandex.cloud/folders/b1g6p9572v58q124nbie?model=yandexgpt-lite-rc&amp;utm_referrer=https%253A%252F%252Fyandex.ru%252F">Ссылка</a></p><p>Лучший выбор для тех, кто не хочет возиться с VPN. Понимает российские реалии — от бюрократического языка до отраслевой терминологии. Интеграция с поиском Яндекса обеспечивает проверку фактов.</p><p>Готовит документы по российским стандартам, создаёт контент для локальной аудитории, знает специфику нормативных актов.</p><p>Техника: обучение с акцентом на русскую лингвистику, технология YaBERT для морфологии русского языка.</p><p>Доступность в России: полностью доступен через Яндекс, часть функций бесплатна.</p><h2>GigaChat: мультимодальный помощник от Сбера</h2><p><a href="https://giga.chat/help/articles/how-to-start-work-with-gigachat">Ссылка</a></p><p>Работает с текстом, кодом и изображениями. Описывает загруженные картинки, решает задачи пошагово, переводит между форматами данных. Полная доступность в России — главное преимущество.</p><p>Полезен для комплексных отчётов, учебных материалов, консультаций по технологическим стекам. Поддерживает поиск по предыдущим диалогам.</p><p>Техника: мультимодальная архитектура с единым пространством представлений, интеграция с экосистемой Сбера.</p><p>Доступность в России: бесплатно через СберID.</p><p>Многие из этих моделей доступны через API — чтобы работать с ним, нужна база в коде. В Академии ТОП есть курс <a href="https://online.top-academy.ru/education/python">«Разработка на Python»</a>, где учат писать код и использовать ИИ-помощников в реальных проектах.</p><h2>Визуальные генераторы</h2><p>Нейросети уже создают коммерческие иллюстрации для брендов и концепт-арты для игровых студий. Художники используют их для скетчей, маркетологи — для контента.</p><h2>Midjourney V7: эталон художественного стиля</h2><p><a href="https://www.midjourney.com/">Ссылка</a></p><p>Лидер для творческих задач. Понимает сложные запросы вроде «кошка в стиле немецкого экспрессионизма с элементами киберпанка». Параметр --style raw отключает приукрашивание, Vary (Region) детализирует отдельные области, система многопромптов комбинирует стили. Двойное двоеточие :: точно контролирует вес слов в промпте.</p><p>Дизайнеры собирают мудборды для клиентов, маркетологи генерируют иллюстрации к статьям. Сообщество в Discord — обширная база знаний, где учатся на чужих промптах. Seed-значения позволяют воспроизводить удачные результаты в сериях.</p><p>Техника: обучение на художественных данных с учётом композиции, цветовых схем и исторических стилей, постобработка для резкости и цветокоррекции.</p><p>Доступность в России: через Discord. Оплата криптовалютой или через посредников.</p><p>Если хотите разобраться, как работать с визуальными генераторами профессионально, есть курсы по <a href="https://online.top-academy.ru/education/graphic-design">графическому дизайну</a> и <a href="https://online.top-academy.ru/education/web-design">веб-дизайну</a> от Академии ТОП. Там учат создавать визуальный контент с нуля и использовать нейросети как рабочий инструмент.</p><h2>DALL-E 4: точность и безопасность</h2><p><a href="https://openai.com/dall-e">Ссылка</a></p><p>Модель OpenAI, интегрированная с ChatGPT — генерация картинок прямо в процессе диалога. Сильна в точном следовании текстовому описанию. Умеет редактировать контекст для точечных правок и расширять изображения за исходные границы (Outpainting) с сохранением стиля. Строгая фильтрация контента.</p><p>Техника: диффузионная архитектура с улучшенной семантикой, исходное разрешение 1792 × 1024 px.</p><p>Доступность в России: нужен VPN. Оплата через зарубежные карты или агрегаторы.</p><h2>Kandinsky: русскоязычный генератор</h2><p><a href="https://www.sberbank.ru/ru/person/kandinsky">Ссылка</a></p><p>Разработка Сбера — лучше других понимает запросы на русском. Готовые стили «под Айвазовского», «как Репин», корректно интерпретирует специфические понятия вроде «хрущёвка» или «лапотный стиль». Оптимальный выбор для работы с российским культурным контекстом.</p><p>Техника: архитектура Kandinsky 3.0/4.0 с диффузионной моделью и текстовым энкодером, обучение с учётом русской лингвистики.</p><p>Доступность в России: бесплатно через «Салют» или в браузере, VPN не нужен.</p><h2>Stable Diffusion 3.5: полный контроль</h2><p><a href="https://stability.ai/news/introducing-stable-diffusion-3-5">Ссылка</a></p><p>Открытая платформа для тех, кому нужна максимальная гибкость. Тысячи community-моделей и LoRA-адаптеров на платформе Civitai. Работает локально, без интернета — на потребительских видеокартах. Негативные промпты исключают ненужные элементы из генерации.</p><p>Разработчики создают специализированные генераторы для медицины или архитектуры. Художники тренируют модели на собственном стиле.</p><p>Техника: диффузионная модель с открытыми весами и механизмом сжатия latent-представлений для ускорения генерации.</p><p>Доступность в России: модели скачивают через торренты или зеркала. Локальная работа без ограничений.</p><h2>Adobe Firefly: рабочая интеграция</h2><p><a href="https://www.adobe.com/firefly">Ссылка</a></p><p>Встроен в Photoshop и Illustrator — генеративный ИИ как часть привычного рабочего процесса. Генеративное маскирование текстовыми командами, расширение холста с сохранением контекста. Функция Generative Match подбирает визуальный стиль по референсу. Юридическая чистота контента — обучение на лицензионном Adobe Stock.</p><p>Доступность в России: работает в составе подписки Creative Cloud без проблем с оплатой.</p><h2>Инструменты для разработки</h2><p>Программисты используют ИИ для рутины — шаблонный код, тесты, поиск уязвимостей. Человек сосредотачивается на архитектуре и сложной логике.</p><h2>GitHub Copilot: понимание проекта</h2><p><a href="https://github.com/features/copilot">Ссылка</a></p><p>Самый популярный ИИ-помощник для разработчиков. Анализирует всю кодовую базу, а не только открытый файл — понимает архитектурные паттерны проекта и контекст между файлами. Генерирует код по комментариям, рефакторит с учётом контекста, переводит между языками. Предлагает исправления уязвимостей на основе GitHub Advisory Database. Может обучаться на приватных репозиториях организации.</p><p>Языки: Python, JavaScript, TypeScript, Ruby, Go, C#, C++</p><p>Доступность в России: сложности с оплатой. Работает через образовательные аккаунты или корпоративные лицензии.</p><p>Хотите стать разработчиком и понимать архитектуру сложных систем? Есть курс <a href="https://online.top-academy.ru/education/programmer">«Разработчик программного обеспечения»</a> от Академии ТОП.</p><h2>Amazon Q Developer: безопасность и облако</h2><p><a href="https://aws.amazon.com/ru/q/developer/">Ссылка</a></p><p>Заточен под AWS-экосистему. Пишет код, сканирует его на уязвимости (по стандартам OWASP), оптимизирует облачные ресурсы. Предлагает готовые шаблоны для AWS SDK и идентифицирует проблемные зависимости.</p><p>Языки: Python, Java, JavaScript, C#, Rust</p><p>Доступность в России: прямого доступа нет. Работает через AWS с иностранной картой, бесплатен для индивидуального использования.</p><h2>Tabnine Pro: кастомизация под проект</h2><p><a href="https://www.tabnine.com/">Ссылка</a></p><p>Обучается на вашей кодовой базе — запоминает стиль, правила именования и архитектурные предпочтения команды. Становится персональным ассистентом, который поддерживает единообразие кода при росте команды. Работает офлайн — ключевое преимущество для корпоративных клиентов.</p><p>Языки: C#, C, Python, PHP, Ruby, Kotlin</p><p>Доступность в России: работает с иностранной картой. Корпоративные лицензии через партнёров.</p><h2>Test IT: российская платформа для тестирования</h2><p><a href="https://testit.software/">Ссылка</a></p><p>Единое пространство для планирования тестов, отслеживания выполнения и отчётности. Централизованное хранилище тест-кейсов, интеграция с Jira и GitHub Issues, REST API для CI/CD-пайплайнов. Гибко настраивается под процессы конкретной команды.</p><p>Языки: JavaScript/Node.js, Ruby, PHP, Go и другие</p><p>Доступность в России: разработан в РФ, без ограничений. Есть бесплатный тариф Lite и платный Standard.</p><p>Если тестирование ПО — ваша цель, посмотрите программу <a href="https://online.top-academy.ru/education/software-testing-qa">«Тестировщик ПО»</a> от Академии ТОП — ручное и автоматизированное тестирование, багтрекеры и CI/CD.</p><h2>Cody: семантический поиск по коду</h2><p><a href="https://about.sourcegraph.com/cody">Ссылка</a></p><p>Инструмент от Sourcegraph — понимает смысл кода, а не только синтаксис. Семантический поиск по кодовой базе, кросс-репозиторный анализ, автоматический рефакторинг. Может объяснить работу модуля на естественном языке и построить диаграммы зависимостей. Мощное решение для больших проектов с разросшейся кодовой базой.</p><p>Языки: JavaScript, Python, TypeScript, C++, Rust</p><p>Доступность в России: бесплатно для открытых проектов. Корпоративные версии через партнёров.</p><h2>Итоги</h2><p>Главный тренд — специализация. Универсальные модели уступают место узким инструментам: Midjourney доминирует в арте, GPT-5 — в текстах, GitHub Copilot — в коде.</p><p>Второй тренд — интеграция. ИИ встраивается в Photoshop, Google Docs, VS Code. Нейросети становятся частью рабочего процесса, а не отдельным приложением.</p><p>Доступность в России перестала быть серьёзной проблемой. Kandinsky и GigaChat приближаются по качеству к зарубежным аналогам, а иностранные сервисы доступны через агрегаторы.</p><p>Нейросети не заменяют специалистов — они усиливают их. Человек определяет стратегию, ИИ берёт на себя рутину.</p><p><i>Реклама. Рекламодатель АНО ДПО «Академия Топ», ИНН 7730257499, erid: 2W5zFK7WSQZ</i></p>]]></content:encoded>
    </item>
    <item>
      <title>Docs-as-Code на практике: автоматизация сборки документации в ODS проекте</title>
      <link>https://tproger.ru/articles/docs-as-code-na-praktike--avtomatizaciya-sborki-dokumentacii-v-ods-proekte</link>
      <comments>https://tproger.ru/articles/docs-as-code-na-praktike--avtomatizaciya-sborki-dokumentacii-v-ods-proekte?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Владимир]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/docs-as-code-na-praktike--avtomatizaciya-sborki-dokumentacii-v-ods-proekte</guid>
      <description><![CDATA[<p>В статье рассказывается о переходе к подходу "Docs‑as‑Code" на примере проекта ODS (Open Documentation Standard). Приводится краткое описание функциональных возможностей проекта ODS.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/docs-as-code-na-praktike--avtomatizaciya-sborki-dokumentacii-v-ods-proekte">Docs-as-Code на практике: автоматизация сборки документации в ODS проекте</a>»</p>]]></description>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Git]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 03 Jan 2026 10:00:04 GMT</pubDate>
      <content:encoded><![CDATA[<p>В статье рассказывается о переходе к подходу "Docs‑as‑Code" на примере проекта <a href="https://gitlab.com/vvvnik/ods-project">ODS</a> (Open Documentation Standard).</p><p>Рассматриваются причины отказа от "Word" подобных инструментов и выбор языка разметки текста <a href="https://docs.asciidoctor.org/asciidoc/latest/">AsciiDoc</a>.</p><p>Приводится краткое описание функциональных возможностей проекта ODS, версионирование документации в Git, парсинг данных из внешних источников, преобразование и перевод атрибутов БД с помощью LLM-моделей, автоматизация сборки комплектов документов, формирование PDF и публикация документации на сайте используя генератор статических сайтов – <a href="https://docs.antora.org/antora/latest/">Antora</a>.</p><p>Проект ODS (Open Documentation Standard) – открытый стандарт и инструментарий для автоматизации процессов создания и поддержки технической документации в ИТ и других проектах. Проект не связан с форматом OpenDocument Spreadsheet (.ods) или проектами Open Data.</p><p>В открытом доступе находятся <a href="https://gitlab.com/vvvnik/ods-project">репозиторий</a> и <a href="https://vvvnik.gitlab.io/ods-project/project-guide/1/index.html">сайт</a> проекта.</p><h2>Проблемы технической документации</h2><p>Документация живёт в отдельных файлах, «шаблоны ГОСТ» лежат где‑то в сетевой папке, согласования идут в чате или почте, а изменения в файлах превращаются в бесконечные:</p><p>финал_финал_2_исправлено_после_замечаний.docx</p><p>С подобными "Word" инструментами всё хорошо, пока документация не развивается и не требует постоянной актуализации. Но когда проекты растут и появляются новые версии, возникают типичные проблемы:</p><ul><li>Проверка и комментарии – сравнение документов плохо похоже на ревью кода, комментарии живут отдельно от истории изменений.</li><li>Повторное использование – «вставить в 17 документов один и тот же фрагмент» почти всегда приводит к поломке стилей и форматированию.</li><li>Стандартизация – трудно гарантировать, что все документы собраны одинаково и в соответствии с шаблонами</li><li>Сборка комплектов – ГОСТ‑комплекты, ведомости и спецификации обычно собираются вручную.</li></ul><h2>Требования к документированию</h2><p>Для решения подобных проблем необходимо чтобы документация разрабатывалась как код:</p><ul><li>хранилась в одном месте и версионировалась;</li><li>прозрачно проходила ревью;</li><li>имела единую структуру и возможность повторного использования текста;</li><li>могла синхронизироваться с разработкой – например, отражать актуальное состояние БД и API;</li><li>автоматически собиралась в комплект с едиными стандартами оформления.</li></ul><p>Рассматривалось несколько вариантов решения. Поскольку подобных статей достаточно много, перейдем к следующему разделу.</p><h2>Выбор пал на AsciiDoc и его инфраструктуру</h2><p>Для большого массива технической документации необходимо иметь следующий функционал:</p><ul><li>include – сборка документа из блоков;</li><li>атрибуты – объявление переменных и констант с повторным использованием;</li><li>сложные таблицы – заголовки, объединение и выравнивание ячеек;</li><li>ссылки между разделами и файлами с контролируемыми наименованиями;</li><li>диаграммы – возможность встраивать UML и BPMN без скриншотов;</li><li>кастомизация стилей оформления;</li><li>кросс‑компиляция в HTML и PDF.</li></ul><p>Открытая экосистема Asciidoctor позволяет максимально реализовать эти требования. Язык разметки AsciiDoc предоставляет мощные средства форматирования контента, а инструменты с открытым исходным кодом дают возможность гибко кастомизировать сборку документации под разные требования.</p><h2>Проект ODS (Open Documentation Standard)</h2><p>ODS – это не «ещё один стандарт документации». Это попытка собрать воедино подход "Docs‑as‑Code" для документирования проектов.</p><p>Проект должен был соответствовать следующим требованиям:</p><ul><li>единый формат исходного кода документации;</li><li>автоматизация сборки документов и комплектов;</li><li>генерация частей документации из БД и OpenAPI;</li><li>использование LLM‑моделей для рутинных задач;</li><li>публикация документации на сайте с печатными формами.</li></ul><p>Структура репозитория построена на основе проекта Antora, которая позволяет собирать компоненты сайта из разных репозиториев, веток и тегов, не переключаясь между ними. Остальные инструменты адаптируются под такую структуру.</p><h3>Как устроен репозиторий</h3><p>Репозиторий содержит следующие основные папки проекта:</p><ul><li>components/ – компоненты документации (по смыслу: сервисы, системы, гайды);</li><li>components/&lt;name&gt;/modules/&lt;module&gt;/pages – страницы (Antora формирует HTML из pages);</li><li>components/&lt;name&gt;/modules/&lt;module&gt;/partials – переиспользуемые фрагменты текста, подключаемые через include:: (из partials HTML не формируется);</li><li>docker/ – скрипты для локальной сборки и запуска Docker-образов необходимых для сборки проекта;</li><li>tools/ – Ruby‑инструменты автоматизации и конфигурации;</li><li>templates/ – шаблоны документации;</li><li>antora-playbook.yml – файл конфигурации Antora.</li></ul><p>Такая структура позволяет реализовать модульность документации и параллельно вести несколько проектов или систем в одном репозитории.</p><p>Система контроля версий (Git) позволяет поддерживать версии комплектов документации используя теги и ветки.</p><h3>Автоматизация в ODS</h3><p>Теперь про то, что обычно «ломает» мечту о "Docs‑as‑Code":</p><ul><li>печать по ГОСТ;</li><li>автоматическая генерация контента из БД и API;</li><li>сборка всего комплекта документов.</li></ul><p>Главный оркестратор – скрипт tools/start.rb проходит по компонентам из файла конфигурации и, в зависимости от флагов, выполняет:</p><ul><li>Конвертацию BPMN (Node + Puppeteer);</li><li>Конвертацию Draw.io (Node);</li><li>Генерацию AsciiDoc из OpenAPI / Swagger (Ruby);</li><li>Генерацию AsciiDoc и диаграмм из PostgreSQL, преобразование и перевод атрибутов (Ruby, Ollama);</li><li>Генерацию служебных списков, ссылок и таблиц о составе документации, имен файлов и названий документов, количестве листов в документах и т.п. (Ruby);</li><li>Генерацию листов утверждения, спецификаций и ведомостей (Ruby, Asciidoctor PDF);</li><li>Генерацию PDF (Asciidoctor PDF + кастомные конвертеры).</li></ul><p>Запуск командой:</p><p>ruby tools/start.rb</p><p>Запускается скрипт start.rb и выполняется сборка проекта согласно сценарию, заданному в файле config.yml. В результате сборки проекта появляются готовые к печати и/или публикации на сайте PDF документы.</p><h3>Формирование PDF документов</h3><p>Инструменты <a href="https://docs.asciidoctor.org/pdf-converter/latest/">Asciidoctor PDF</a> предоставляют широкие возможности настройки тем оформления документов, но оформление в соответствии с ГОСТ или шаблонами часто упирается в проблемы:</p><ul><li>рамки и штампы;</li><li>нестандартные титульные страницы;</li><li>особые правила нумерации списков и колонтитулов.</li></ul><p>Поэтому в ODS генерация PDF построена так:</p><ol><li>Asciidoctor PDF делает базовую вёрстку контента;</li><li>Кастомные Ruby‑конвертеры оформляют рамки, титульные страницы, листы утверждения и стилизуют списки.<br /></li></ol><p>На выходе получается документация оформленная в соответствии с заложенными к ее оформлению требованиями.</p><h3>Документация из внешних источников</h3><p>В настоящее время ODS поддерживает генерацию документации из следующих источников:</p><ol><li>PostgreSQL – таблицы, поля, комментарии, ERD‑диаграммы;</li><li>OpenAPI / Swagger – структура API, методы, параметры и ответы (могут использоваться как ссылки на swagger, так и файлы в в репозитория json/yml).</li></ol><p>В результате парсинга БД и API формируются отдельные asciidoc документы для подключения к основным файлам документации.</p><h3>Модели ИИ и Ollama</h3><p>Для преобразования и перевода названий таблиц и атрибутов в полученной документации, при незаполненных в БД полях <i>comment</i>, используется словарь переводов и сервер <a href="https://ollama.com/">Ollama</a> предоставляющий CLI и HTTP API с различными языковыми моделями (LLM).</p><p>Для задач преобразования и перевода используется промт-файл <i>database_translations.prompt</i>, который отправляется в модель вместе с данными.</p><p>Словарь это yml-файл генерируемый скриптом который в свою очередь использует сервис Ollama. При последующих переводах словарь имеет приоритет, а LLM используется пакетно, что позволяет сохранить точность и обеспечить приемлемую скорость при повторных переводах.</p><p>Словарь можно править вручную. При появлении новых данных в БД, они транслируются в лог-файл tools/log/database_translations_log.txt.</p><p>Логирование удобно для контроля перевода, а при необходимости и ручной правки последних изменений в словаре. Язык перевода может быть задан в файле config.yml в зависимости от используемого в БД.</p><h3>Сайт документации и Antora</h3><p>Для публикации документации используется генератор статических сайтов Antora. Он обеспечивает:</p><ul><li>компонентную модель документации;</li><li>встроенное версионирование;</li><li>сборку сайта из разных репозиториев, веток и тегов;</li><li>поддержку диаграмм через сервер Kroki.</li></ul><p>Автоматически сформированные на предыдущем этапе списки используются Antora для формирования ссылок в навигации и к сформированным PDF‑документам.</p><p>Запуск командой:</p><p>antora antora-playbook.yml</p><p>Antora в ODS отвечает только за сборку сайта. Файл конфигурации antora-playbook.yml используется для самой Antora и установки атрибутов-ключей для условных операторов в Asciidoc и Ruby, которые разделяют сборку PDF и сайта.</p><h2>Итог</h2><p>ODS – это попытка сделать техническую документацию:</p><ol><li>воспроизводимой;</li><li>версионируемой;</li><li>связанной с реальными источниками данных;</li><li>удобной для проверки;</li><li>автоматически собираемой в готовый комплект.</li></ol><p>На практике это помогает поддерживать документацию в актуальном состоянии, ускоряет погружение в проект новых сотрудников, а масштабирование проекта не превращает его документацию в “кладбище файлов”.</p><p>Если вы хотите повторить этот подход у себя, практический совет прост: начните с AsciiDoc, подключите Git, научитесь собирать PDF. Всё остальное можно подключать постепенно, когда появится стабильная и понятная структура документации.</p><p>Реализацию проекта ODS и публикуемую с его помощью документацию можно посмотреть в открытом <a href="https://gitlab.com/vvvnik/ods-project">репозитории</a> и на <a href="https://vvvnik.gitlab.io/ods-project/project-guide/1/index.html">сайте</a>. Так же на сайте можно посмотреть <a href="https://vvvnik.gitlab.io/ods-project/project-guide/1/index.html#ознакомительное-видео-проекта">ознакомительное видео проекта</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>AI-агенты vs живые операторы: кто справился лучше (и дешевле)</title>
      <link>https://tproger.ru/articles/ai-agenty-vs-zhivye-operatory--kto-spravilsya-luchwe--i-dewevle-</link>
      <comments>https://tproger.ru/articles/ai-agenty-vs-zhivye-operatory--kto-spravilsya-luchwe--i-dewevle-?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Валерия Турчак]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/ai-agenty-vs-zhivye-operatory--kto-spravilsya-luchwe--i-dewevle-</guid>
      <description><![CDATA[<p>Чем AI-агент отличается от обычного бота, посчитаем стоимость тикета (оператор vs AI), разберем два кейса с цифрами и дадим чеклист для техлидов по запуску и мониторингу.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/ai-agenty-vs-zhivye-operatory--kto-spravilsya-luchwe--i-dewevle-">AI-агенты vs живые операторы: кто справился лучше (и дешевле)</a>»</p>]]></description>
      <category><![CDATA[API]]></category>
      <category><![CDATA[Распознавание]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Работа]]></category>
      <category><![CDATA[Боты]]></category>
      <category><![CDATA[Аналитика]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Бизнес]]></category>
      <category><![CDATA[Промпты]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 19 Dec 2025 10:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>В 2025 году ваш продакт или техлид приходит с задачей: <b>нужно разгрузить саппорт, классическое решение — чат-бот по сценариям — все уже пробовали: он закрывает 20% обращений, остальное сваливается на людей. </b>Но сейчас же все делают с ИИ, значит вам тоже нужно (и это вполне оправдано). Вы открываете документацию, смотрите на интеграции, API, считаете бюджет и понимаете: нужно разбираться, что там под капотом и работает ли это вообще.</p><p>Мы тоже решили разобраться в этом и взяли интервью у экспертов <a href="https://www.mcn.ru/">MCN Telecom</a>, изучили архитектуру их решения, посмотрели на метрики и реальные кейсы. Дальше покажем, чем AI-агент отличается от сценарного бота, посчитаем стоимость тикета (оператор vs AI), разберем два кейса с цифрами и дадим чеклист для техлидов по запуску и мониторингу.</p><h2>Почему AI-агент не ломается на нестандартных фразах</h2><p>В классическом боте вы прописываете дерево сценариев: если клиент сказал А, отвечаем Б, если В — переходим к ветке Г. Когда клиент формулирует вопрос иначе или уходит в сторону, бот ломается и начинает переспрашивать. В AI-агенте такой жесткой привязки к фразам нет.</p><blockquote>ИИ-агент, в отличие от шаблонного бота, понимает смысл фразы, даже если она сказана нестандартно. Агент работает как оператор: анализирует намерение, эмоцию, задачу, ведет живой, многовариантный диалог, адаптируется под абонента в ходе диалога, помнит весь разговор, внешние данные и историю клиента.</blockquote><p>Под капотом это выглядит так:</p><ol><li>Система распознает речь;</li><li>Определяет намерение через NLU-модуль</li><li>Подтягивает контекст из CRM или внешних API</li><li>Генерирует ответ и выполняет действия.</li></ol><p>Агент может не только отвечать на вопросы, но и оформлять заявки, менять параметры в системах заказчика, фиксировать обращения, отправлять SMS или email. По сути это оркестратор, который связывает голосовой интерфейс с бизнес-логикой компании через интеграции.</p><p>Вместо того чтобы прописывать сотни фраз и строить дерево сценариев вручную, вы даете системе базу знаний, несколько примеров диалогов и промпты с инструкциями.</p><blockquote>Основная информация о компании. Разбор основных кейсов, с которыми обращаются клиенты — ответы на вопросы, статьи, на основе которых можно ответить. Скрипт со стилем, характером и подходом ИИ к решению проблем. Очертить границы — что ИИ не должен говорить, специфицировать на какие вопросы он не отвечает, когда говорит, что не знает. Чем уже границы, тем меньше вероятность галлюцинаций и ошибок. Интеграция с CRM и другими сервисами, куда через функции ИИ может обращаться за ответами и информацией о клиенте.</blockquote><p>Заказчику не нужно нанимать команду дата-сайентистов или ML-инженеров. Если нужна интеграция с внешними системами, команда MCN Telecom занимается этим самостоятельно. <a href="https://www.mcn.ru/ai-agenty-dlya-biznesa/">Базового агента для обработки входящих обращений</a> можно настроить за 1-2 дня, полноценного голосового помощника с интеграциями — за 2-3 недели.</p><h2>Четыре метрики: от AHT до обработки 5000 запросов в час</h2><p><b>Первая</b> — среднее время обработки обращения, AHT в терминологии контакт-центров. У AI-агента это от 1 до 5 секунд на типовой запрос. Живой оператор тратит на то же самое от нескольких минут, потому что ему нужно найти информацию в базе и переключиться между окнами CRM.</p><p><b>Вторая метрика</b> — процент обращений, которые система закрывает без эскалации к человеку. Эксперт MCN Telecom оценивает в среднем 90%, но у некоторых клиентов агент отвечает на все вопросы, живые операторы в принципе не участвуют в диалоге, поэтому здесь нужно понимать структуру обращений.</p><blockquote>Практически каждый второй заказчик говорит, что бот не поймет специфику их бизнеса. Конечно, все отрасли считают себя уникальными, будь то ритейл, финансы или медицина. Но главное: 70-90% входящих обращений в любой сфере — типовые. Мы берём пару часов их реальных звонков, пропускаем через ИИ, показываем распознавание намерений и ответы. Обычно выясняется, что 90% звонков — это статус, оплата, доставка, продление, тариф, график. И только 10% звонков — действительно сложные, нестандартные.</blockquote><p><b>Третья метрика</b> — поведение системы под нагрузкой. Об этом будет кейс дальше, там как раз на примере ситуации, когда упала главная система на 5000 запросов в час.</p><p><b>Четвертая метрика</b> — отработка в нерабочее время, по данным MCN Telecom, до 15% обращений поступает ночью или в выходные.</p><blockquote>Конечно все зависит от специфики бизнеса заказчика. В среднем, до 15% обращений поступает в нерабочее время. При правильно настроенном голосовом агенте все, т.е. 100% типовых обращений будут обработаны. Статусы, записи, заявки, проверка данных, маршрутизация- все это агент обработает сам. Какие-то сложные вопросы агент запишет и передаст специалисту.</blockquote><h2>Считаем стоимость тикета: 270₽ у оператора против 60₽ у AI-агента</h2><p>Теперь считаем деньги: узнаем, как формируется стоимость обработки одного обращения у живого оператора и у AI-агента.</p><h3>Сколько бизнесу стоит человек-менеджер</h3><blockquote>Зарплата менеджера — 75,000 руб/мес, налог 35,000 руб/мес, расходы на рабочее место, оборудование (включая софт), условно 20,000 руб/мес. Среднее обращение — 10 мин, 50% рабочего времени тратится эффективно. Итого: 130,000 руб / 480 обращений = 270 руб на обращение.</blockquote><h3>Сколько бизнесу стоит AI-агент</h3><p>Оператор обходится в 130,000 руб/мес, обрабатывает 480 обращений в месяц. ИИ-агент стоит 1990 руб/мес, добавим еще 1010 руб/мес за номер, ВАТС. Обработка стоит 6 руб/мин, при среднем времени обработки обращения получаем 60 руб/обращение. Количество обрабатываемых обращений в месяц не ограничено.</p><h4>Возьмем реальный кейс</h4><p>Было 100 операторов. Обращений в месяц — 48,000. Общая стоимость 13,000,000 руб затраты на всех операторов. После внедрения ИИ-агента: 48,000 * 60.3 = 2,894,400. Экономия практически 10,000,000 руб/мес.</p><h4>Как считается окупаемость</h4><p>Первый месяц уходит на тестирование и отладку, во второй месяц агент работает уже в полном объеме. С этого момента каждое обращение экономит бизнесу 210 рублей — разницу между стоимостью обработки оператором и агентом. Формально система окупается уже в первый месяц, но реальное внедрение с полной эффективностью начинается со второго.</p><h2>Два кейса с цифрами: медклиники и телеком-провайдер</h2><h3>Федеральная сеть медклиник: от скепсиса к росту выручки</h3><p>Федеральная сеть медицинских клиник пришла в MCN Telecom с большими сомнениями в качестве и скорости обработки обращений пациентов. У руководства был негативный опыт использования сценарного бота, который мог отвечать только на заранее прописанные вопросы шаблонными фразами. Был сильный страх финансовых и репутационных потерь.​</p><p>MCN Telecom оперативно <a href="https://www.mcn.ru/tarify-na-podklyuchenie-telefonnogo-ai-agenta/">настроили AI-агента</a>, предварительно обучив его на реальных диалогах контакт-центра заказчика, и подключили пилот на одну клинику. Результаты работы агента фиксировали на дашборде с ежедневным отслеживанием динамики.​</p><blockquote>Оказывается, пациенты не боятся общаться с ботом, если ответы звучат естественно и по-человечески. Агент понимает суть вопросов, а не ищет правильные слова, можно свободно формулировать свои запросы. Бот не читает шаблон, а ведёт живой диалог. Агент оперативно решает конкретные задачи: запись/отмену/перенос приёма, уточнение времени приема, озвучивание вопросов о стоимости или наличии процедур/врачей, подсказки как проехать/пройти к клинике, как подготовиться к исследованию и многое другое. А главное, агент всегда доступен и обрабатывает 100% обращений.</blockquote><p><b>Результаты за первый месяц:​</b></p><ul><li>Выручка пилотной клиники выросла на 20%</li><li>Среднее время решения вопросов сократилось на 50%</li><li>Агент обрабатывал 100% обращений без очередей</li></ul><p>После пилота приняли решение внедрить агента на остальных клиниках сети.​</p><h3>Интернет-провайдер: 5000 обращений за час</h3><p>AI-агент для технической поддержки регионального интернет-провайдера справился с повышенной нагрузкой в период аварийного сбоя. В течение часа агент обработал более 5000 обращений, оформил трабл-тикеты и озвучил всем абонентам примерные сроки решения и текущий статус.​</p><p>Это типичный сценарий для телеком-компаний, когда массовый инцидент генерирует лавину однотипных запросов. Живые операторы в таких условиях либо не справляются, либо компании приходится держать огромный резерв людей на случай пиков.</p><h2>Задачи, которые AI закрывает лучше всего</h2><p>По данным технического аналитика MCN Telecom, 90% от всех обращений — типовые. Агент обрабатывает без участия операторов:​</p><ul><li>Маршрутизацию вызова к нужному специалисту</li><li>Ответы на частые вопросы</li></ul><h3>Handoff к оператору с передачей контекста: как не заставить клиента повторяться</h3><p>ИИ берет рутину и освобождает операторов для сложных задач. Ключевая задача при внедрении — правильно организовать передачу диалога от бота к человеку:​</p><blockquote>Необходимо, чтобы при переводе диалога к оператору он получал уведомление с ссылкой на диалог, который содержал бы историю общения клиента с роботом, в том числе диалоги за прошлые периоды, чтобы они были легко доступны.</blockquote><p>Это решает ситуацию, когда клиент всё рассказал боту, а оператор заставляет повторять с начала. Оператор получает полный контекст и продолжает разговор с той точки, где остановился агент.​</p><h2>Минимальный набор для запуска: база знаний, промпты и границы для галлюцинаций</h2><p>Минимальный набор данных:​</p><ul><li>Основная информация о компании</li><li>Разбор основных кейсов с которыми обращаются клиенты — ответы на вопросы и статьи</li><li>Скрипт со стилем и подходом ИИ к решению проблем</li><li>Границы работы ИИ — что не должен говорить, на какие вопросы не отвечает</li><li>Интеграция с CRM и другими сервисами для доступа к данным клиента</li></ul><blockquote>Чем уже границы, тем меньше вероятность галлюцинаций и ошибок.</blockquote><h2>От настройки до пилота: 1-2 дня на базу, 2-3 недели на продакшн</h2><p>Реальные цифры от MCN Telecom:​</p><ul><li>Базовый агент для входящих обращений: 1-2 дня</li><li>Полноценный голосовой помощник с интеграциями: 2-3 недели до пилота</li></ul><p>От заказчика не требуется нанимать команду дата-сайентистов или ML-инженеров. Платформа MCN Telecom берет на себя распознавание речи, определение намерений, логику диалога и подключение телефонии. Если нужна интеграция с внешними системами, команда MCN Telecom делает это сама.​</p><h2>Главная ошибка: запустил и забыл вместо постоянного дообучения</h2><p>Отношение к ИИ как к волшебному черному ящику, который все идеально будет делать сам, если один раз настроить.​</p><blockquote>На самом деле необходимо постоянно изучать с помощью речевой аналитики и обратной связи качество обработки обращений и в зависимости от обратной связи корректировать настройки ИИ, дополнять промпты и базу знаний, постоянно совершенствовать логику обработки, добавлять новые установки ИИ с учетом практических задач.</blockquote><h2>Три метрики для мониторинга: решаемость, CSAT и динамика AHT</h2><p>Что отслеживать после запуска:​</p><ul><li>Решена ли проблема клиента</li><li>Насколько клиент доволен обработкой запроса</li><li>Среднее время обработки обращения в динамике</li></ul><p>Оценивать двумя способами:​</p><ul><li>Через оценку клиентом диалога</li><li>Через оценку ИИ диалогов с помощью речевой аналитики</li></ul><h2>Речевая аналитика для дообучения: учимся на успешных и провальных диалогах</h2><ol><li>Необходимо постоянно проводить анализ с помощью речевой аналитики и находить аномалии:​</li><li>Успешные диалоги (максимально высокие метрики) → служат примерами для закрепления положительных элементов сценария и промптов​</li><li>Провальные диалоги (минимальные метрики) → служат сигналами для улучшения промптов и сценариев, чтобы не допускать таких проблем​</li><li>При любых изменениях в работе компании — новых продуктах, новых расписаниях, новой информации — нужно очень точно проверять, что в сценарии AI-агента есть о них информацию.​</li></ol><h2>Где можно потратить меньше денег и реально ли это</h2><p>Эксперт MCN перечисляет дополнительные преимущества:​</p><ul><li>AI-агент не устает, работает 24/7 с одинаковым качеством</li><li>Если правильно настроить промпты, отвечает точнее операторов</li><li>Масштабирование проводится легко — добавляете агентов при росте нагрузки</li><li>При спаде пика нагрузки легко уменьшить затраты, не нужно платить за простои</li><li>Не нужно постоянно нанимать новых операторов из-за текучки</li></ul><blockquote>Оптимизировать бизнес-процессы, чтобы максимально устранить сложную логику, которая может приводить к путанице. Это значительно снизит возможные ошибки при обработке обращений ИИ и как следствие уменьшит необходимость затем разбирать такие кейсы и исправлять неправильный результат их обработки. Также уменьшит необходимость работы реальных операторов с этими кейсами и увеличит потенциал оптимизируемости процессов.</blockquote><p><i>Реклама. Рекламодатель ООО «МСН Телеком», ИНН 772775208, erid: 2W5zFH3GrH6</i></p>]]></content:encoded>
    </item>
    <item>
      <title>Ключевые принципы ITIL 4: фундамент для эволюции IT-услуг в современную эпоху</title>
      <link>https://tproger.ru/articles/klyuchevye-principy-itil-4--fundament-dlya-evolyucii-it-uslug-v-sovremennuyu-epohu</link>
      <comments>https://tproger.ru/articles/klyuchevye-principy-itil-4--fundament-dlya-evolyucii-it-uslug-v-sovremennuyu-epohu?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[ГК Юзтех]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/klyuchevye-principy-itil-4--fundament-dlya-evolyucii-it-uslug-v-sovremennuyu-epohu</guid>
      <description><![CDATA[<p>Ключевые принципы ITIL 4. Узнайте 7 главных ориентиров (от фокуса на ценности до разумной автоматизации), чтобы превратить IT-отдел в стратегического партнера бизнеса. Обязательно к прочтению для ITSM-специалистов и IT-руководителей.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/klyuchevye-principy-itil-4--fundament-dlya-evolyucii-it-uslug-v-sovremennuyu-epohu">Ключевые принципы ITIL 4: фундамент для эволюции IT-услуг в современную эпоху</a>»</p>]]></description>
      <category><![CDATA[Управление проектами]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 08 Nov 2025 10:00:00 GMT</pubDate>
      <content:encoded><![CDATA[<p>Всем привет! Меня зовут Виктор Колдин, занимаю должность инженера технической поддержки L2 в ГК «Юзтех». В данной статье я познакомлю с главными принципами ITIL 4 — концепции, которая радикальным образом меняет методологию управления IT-сервисами.</p><p>ITIL 4 Foundation – это основополагающая квалификация в области передовых методик управления сервисами информационных технологий. В сущности, ITIL 4 представляет собой сборник рекомендаций о том, как ИТ-подразделению трансформироваться из простого технического звена в бизнес-партнера, предоставляющего сервис.</p><p>К сожалению, официального перевода на русский язык книга «ITIL. Foundation Essentials ITIL 4 Edition.» автором которой является Claire Agutter не имеет, но её легко найти к продаже в свободном доступе. Первая версия книги издана в 2020, а более новая редакция вышла в 2024 году.</p><p><b>Ключевые принципы ITIL 4</b></p><ol><li><b>Фокус на ценности: в</b>сё должно приносить пользу бизнесу и клиентам.</li><li><b>Начинайте с текущего: </b>используйте то, что уже есть.<br /></li><li><b>Двигайтесь постепенно: </b>маленькими шагами с обратной связью.<br /></li><li>Сотрудничайте: ломайте барьеры между отделами.<br /></li><li><b>Думайте целостно: </b>учитывайте все взаимосвязи.<br /></li><li><b>Будьте проще: </b>избегайте сложных решений.<br /></li><li><b>Автоматизируйте с умом: </b>сначала оптимизируйте, потом автоматизируйте.<br /></li></ol><p>Статья будет полезна IT-специалистам — системным администраторам, инженерам технической поддержки, DevOps-инженерам, а также руководителям IT-подразделений и проектным менеджерам, ITSM-специалистам, бизнес-аналитикам, сотрудникам компаний из финансовой сферы, телекоммуникаций, розничной торговли и других отраслей, где IT-сервисы играют ключевую роль в бизнес-процессах.</p><p>Если цель — сделать IT-услуги более понятными, контролируемыми и значимыми — welcome!</p><p><b>Ключевые принципы ITIL 4: фундамент для эволюции IT-услуг в современную эпоху</b></p><p>Ключевые принципы ITIL 4 формируют не просто основу его концепции, а своего рода философский манифест, кардинально трансформирующий стандартный, зачастую ограниченный взгляд на IT-процессы. Эти принципы, будучи универсальными и адаптивными, в эффективном сочетании с практиками и потоками создания ценности, подходят абсолютно любой IT-команде, независимо от её размера, рыночной ниши или стратегических целей. Разработчики методологии особо подчёркивают, что каждый принцип является самодостаточным и может работать по отдельности, однако именно в синергии они образуют целостную, динамичную и устойчивую систему, которая в полной мере отражает суть современного управления IT-услугами в условиях цифровой трансформации.</p><p>В отличие от своих более старых, ригидных версий, ITIL 4 был изначально спроектирован для жизни в высокоскоростной и изменчивой бизнес-среде. Он отказывается от прямолинейных решений в пользу гибких, итеративных и адаптивных подходов. Это выражается в том, что результаты одной операции или улучшения зачастую напрямую стимулируют инициацию следующей, формируя тем самым самоподдерживающийся цикл непрерывного улучшения — сердцебиение любой жизнеспособной IT-службы.</p><p>Подробное описание и глубокое погружение в эти принципы можно найти в фундаментальном руководстве «ITIL 4 Foundation». Этот документ — не просто учебник, а синтез лучших мировых наработок, предлагающий всесторонний, интегрированный взгляд на управление IT.</p><p><b>Ориентация на ценность: в центре всего - потребитель</b></p><p>В ITIL 4 концепция ценности возведена в абсолют и является главным элементом, определяющим смысл любого действия или услуги. Ценность определяется как совокупная польза, выгода и важность, которые конечный потребитель получает от услуги. Это сложная многогранная категория, выходящая далеко за рамки простого функционала.</p><p>Рассмотрим на примере прачечной: потребитель ценит сервис не просто за чистую одежду, а за высвобождаемое время, чувство спокойствия и удобство: возможность оперативно оформить услугу через мобильное приложение, гарантию сохранности вещей и безупречный результат без собственных хлопот и приобретения оборудования и расходных материалов.</p><p>Вместе с тем, ITIL 4 акцентирует внимание на оценке выгоды для всех заинтересованных сторон. Для владельца прачечной в приоритете увеличение доходов, преданность клиентов и совершенствование рабочих процессов. Для общества — комфорт, который обеспечивают оперативная стирка и сушка вещей, а также сокращение затрат на коммунальные услуги, такие как вода и электричество.</p><p>Следовательно, любое нововведение — будь то внедрение опции онлайн отслеживания заказа или выбор конкретных чистящих средств — должно проходить проверку на соответствие ключевому вопросу: «Каким образом это принесёт пользу клиенту и компании?»</p><p><b>Начинайте с того, что есть: эволюция, а не революция</b></p><p>Этот принцип предлагает трезвый и практичный подход: вместо полного отказа от существующих систем и процессов в пользу радикальной переделки, необходимо тщательно оценить и использовать уже имеющиеся активы. Зачастую в действующей инфраструктуре уже есть рабочие, проверенные временем компоненты, которые можно и нужно интегрировать в новую модель работы.</p><p>Вместо покупки дорогой новой CRM-системы «с нуля» IT-отдел проводит аудит уже используемых инструментов и обнаруживается, что текущая система имеет неиспользуемые ресурсы, которые можно настроить под нужды отдела продаж. Это позволяет быстро получить результат без крупных затрат и рисков, связанных с полной миграцией данных</p><p>Полная революционная переделка системы почти всегда сопряжена с колоссальными рисками: непредвиденными финансовыми расходами, длительными простоями, потерей критически важных, но неочевидных функций, а также резким падением мотивации сотрудников, вынужденных ломать то, что они годами с таким трудом строили. Гораздо эффективнее проводить аудит текущего состояния, выявлять «точки роста» и слабые места, и на этой основе выстраивать поэтапный план улучшений, уважая прошлые достижения и инвестиции.</p><p><b>Двигайтесь постепенно, собирая отзывы: сила итераций</b></p><p>Большие, многолетние проекты, работающие в вакууме без обратной связи от пользователя, — это анахронизм. ITIL 4 призывает разбивать такие инициативы на небольшие, управляемые этапы. Такой подход позволяет команде сохранять фокус на конкретных, достижимых задачах, быстро проверять гипотезы и соответствие результатов ожиданиям заказчика, а также гибко реагировать на изменения рынка или требований, не забывая при этом о главной стратегической цели — создании ценности.</p><p>Внедрение нового сервиса происходит не единым запуском, а пошагово: сначала пилотная группа из 10 пользователей тестирует ключевую функцию, даёт обратную связь, команда вносит правки. Затем подключается 100 пользователей, и так далее. Это позволяет быстро выявлять проблемы, адаптировать сервис под реальные нужды и минимизировать риски глобального сбоя.</p><p>Регулярный сбор и интеграция обратной связи — топливо для непрерывного улучшения. Это не просто формальность в конце проекта, а постоянный диалог с потребителем на каждом шагу. Короткие циклы обратной связи позволяют быстро выявлять отклонения, минимизировать затраты на исправление ошибок и гарантировать, что конечный продукт будет действительно полезным и востребованным.</p><p><b>Сотрудничайте и продвигайте видимость: ломая организационные разобщённости</b></p><p>Ни одна служба не существует в изоляции. Успешное предоставление ценности — это всегда результат эффективного сотрудничества между различными командами, отделами и даже внешними партнерами и поставщиками. ITIL 4 активно борется с организационной разобщённостью, где команды работают изолированно, преследуя свои локальные цели в ущерб общим.</p><p>При возникновении серьёзного инцидента (например, падении корпоративного мессенджера) создаётся не просто заявка в IT, а временная кросс-функциональная команда: специалист техподдержки, разработчик, и менеджер по продукту. Их совместная работа позволяет не просто «починить код», а понять полное влияние на бизнес-процессы и быстрее восстановить критически важный сервис.</p><p>Продвижение видимости означает обеспечение прозрачности рабочих процессов, статусов, метрик и целей для всех вовлеченных сторон. Когда каждый понимает общую картину и свою роль в ней, исчезают ненужные трения, ускоряется принятие решений и возникает подлинная синергия. Открытые коммуникации и общие инструменты совместной работы становятся ключевыми активами в построении по-настоящему интегрированной экосистемы создания ценности.</p><p><b>Думайте и работайте целостно: системный взгляд на услугу</b></p><p>Услуга — это не просто работающее приложение или сервер. Это сложная система, включающая в себя людей, процессы, технологии, партнеров и информацию. Принцип целостности требует рассматривать любую услугу как единый организм, где изменение одного компонента неизбежно влияет на все остальные.</p><p>Например, решение о переводе серверов в облако (миграция) принимается не только на основе цены за подписку (технологии). Целостный подход учитывает: людей (нужно ли переобучать команду?), процессы (как изменится процедура развертывания новых услуг?), партнеров (насколько надёжен провайдер?) и ценность (как это повысит гибкость бизнеса?). Только системный подход, учитывающий все взаимосвязи, позволяет избежать узких мест и добиться устойчивого и эффективного результата. Это мышление, при котором видишь не только дерево, но и весь лес.</p><p><b>Будьте простыми и практичными: оптимизация, а не усложнение</b></p><p>В стремлении к идеалу легко создать настолько сложные и запутанные процессы, что сама работа по их поддержке перевесит ту пользу, которую они должны были принести. Принцип простоты гласит: если есть возможность выполнить задачу более простым способом без потери качества и контроля, именно им и следует воспользоваться.</p><p>Вместо создания сложной 10-шаговой формы для регистрации мелких инцидентов с множеством обязательных полей (что будет раздражать пользователей и приведёт к неполным данным) внедряется упрощённая: одна строка для заголовка и кнопка «Отправить». Это повышает скорость обращения пользователей и сбор первичной информации, а детали можно уточнить позже.</p><p>Необходимо постоянно задаваться вопросами: «Действительно ли нужен этот шаг? Можно ли этот отчёт автоматизировать? Упростит ли эта встреча принятие решения?». Цель — устранить избыточность, бюрократию и любое бесполезное усложнение, оставив только те практики, которые непосредственно способствуют созданию ценности. Часто самый простой путь является и самым эффективным.</p><p><b>Оптимизируйте и автоматизируйте: максимизация эффективности</b></p><p>Этот принцип является логическим завершением всей системы. После того как процессы упростили и выстроили целостно, наступает этап их оптимизации и, где это возможно, автоматизации. Оптимизация направлена на то, чтобы сделать процессы максимально эффективными, результативными и затратоэффективными.</p><p>Например, процесс согласования заявок на оборудование занимает неделю из-за пяти согласующих. Автоматизация рассылки напоминаний этим пяти лицам не решит проблему. Сначала процесс оптимизируют: пересматривают и сокращают число согласующих до двух, чётко определяют их зоны ответственности. После этого автоматизируют маршрут заявки, что сокращает время согласования до одного дня.</p><p>Автоматизация же освобождает людские ресурсы от рутинных, повторяющихся задач (таких как развертывание окружений, мониторинг, сбор отчетов), позволяя им сконцентрироваться на той деятельности, которая требует креативности, стратегического мышления и непосредственного взаимодействия с клиентом — то есть на той, что создаёт наивысшую ценность. Это не про сокращение штата, а про разумное перераспределение ресурсов для повышения общей производительности системы.</p><p>В итоге, основополагающие концепции ITIL 4 — не строгие правила, а скорее стратегический ориентир для движения в сфере современных IT-сервисов. Их истинная сила проявляется не в обособленном использовании, а в эластичности, приспособляемости и согласованности, где каждый принцип укрепляет и дополняет остальные, формируя единую систему управления.</p><p>Постепенное применение этих ориентиров — от концентрации на ценности до системного подхода и оптимизации — позволяет компаниям преобразовать свою IT-службу. На место разрозненных рабочих функций приходит объединенный, чуткий и инициативный механизм, истинный катализатор развития бизнеса. Такой метод обеспечивает не только стабильность в работе и уменьшение рисков, но и, самое главное, создает надежную базу для устойчивой инновационной деятельности, увеличения удовлетворенности пользователей и достижения стратегических задач в условиях постоянной цифровой трансформации.</p><p>В конечном счете, ITIL 4 предоставляет компаниям инструменты и логику, позволяющие IT-командам стать полноценными стратегическими партнерами бизнеса, а не просто техническими исполнителями. Это переход от поддержки инфраструктуры к совместному созданию реальной ценности, где каждый процесс, каждый сервис и каждое решение направлены на общий успех в цифровом пространстве.</p>]]></content:encoded>
    </item>
    <item>
      <title>Приручаем вайб-кодинг: от магии к зрелому проектированию</title>
      <link>https://tproger.ru/articles/priruchaem-vajb-koding--ot-magii-k-zrelomu-proektirovaniyu</link>
      <comments>https://tproger.ru/articles/priruchaem-vajb-koding--ot-magii-k-zrelomu-proektirovaniyu?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Николай Тржаскал]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/priruchaem-vajb-koding--ot-magii-k-zrelomu-proektirovaniyu</guid>
      <description><![CDATA[<p>Vibe coding ускоряет написание кода, но несёт скрытые риски. Эксперт FabricaONE.AI (акционер - ГК Softline) объясняет, где ИИ помогает, а где может уничтожить данные, и как сохранить контроль над системой.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/priruchaem-vajb-koding--ot-magii-k-zrelomu-proektirovaniyu">Приручаем вайб-кодинг: от магии к зрелому проектированию</a>»</p>]]></description>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[Архитектура ПО]]></category>
      <category><![CDATA[Нейронные сети]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Управление проектами]]></category>
      <category><![CDATA[Паттерны проектирования]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Разработка]]></category>
      <category><![CDATA[Архитектура приложений]]></category>
      <category><![CDATA[Тех долг]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 22 Oct 2025 12:00:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>10 сентября в Центре искусственного интеллекта и науки о данных СПбГУ Сергей Салищев, кандидат физико-математических наук и старший преподаватель кафедры информатики СПбГУ, представил доклад <a href="http://oml.cmlaboratory.com/pdf/2025/20250911_SalishevSI.pdf">О проектировании сложных систем в эпоху ИИ</a>. Его работа заставляет по-новому взглянуть на феномен vibe coding — программирование через диалог с ИИ, которое стремительно меняет нашу профессию.</p><h2>Три истории о коде и ИИ</h2><h4>История первая: Магия автоматизации</h4><p>Юрий, продуктовый аналитик, потратил 10 минут на диалог с Claude, чтобы создать скрипт для обработки CSV-файлов с данными пользователей. Раньше такая задача заняла бы у него день изучения документации pandas и отладки. Теперь он просто описал, что нужно: «Сгруппируй по регионам, посчитай среднюю выручку, сохрани в Excel». Получил рабочий код, запустил — всё работает идеально.</p><h4>История вторая: Цена доверия</h4><p>В июле 2025 года Джейсон Лемкин, основатель SaaStr и известный венчурный инвестор, проводил 12-дневный эксперимент с «vibe coding» на платформе Replit. На девятый день, несмотря на явное указание «НЕ ДЕЛАТЬ БОЛЬШЕ ИЗМЕНЕНИЙ без разрешения», ИИ-агент Replit удалил всю продакшн-базу данных.</p><p>Когда Лемкин обнаружил потерю, ИИ признался: «Это была катастрофическая ошибка с моей стороны. Я запаниковал… запустил команды базы данных без разрешения… уничтожил все продакшн-данные… нарушил ваше явное доверие и инструкции». Хуже того — ИИ сначала солгал, утверждая, что откат невозможен. Лемкин смог восстановить данные самостоятельно, но инцидент показал: даже продвинутые ИИ-агенты могут проигнорировать прямые команды и скрыть свои ошибки.</p><h4>История третья: Реальность внедрения</h4><p>Команда разработки финтех-стартапа начала использовать GitHub Copilot полгода назад. Первые месяцы были болезненными: code review растянулись вдвое — нужно было проверять не только логику, но и безопасность автогенерированного кода. Несколько раз находили SQL-инъекции в предложенных запросах, один раз ИИ сгенерировал код с утечкой памяти.</p><p>Постепенно команда выработала новые привычки. Архитектор Наталья начала создавать подробные комментарии с требованиями безопасности — ИИ стал их учитывать. Джуниоры научились сначала описывать алгоритм на псевдокоде, а потом просить ИИ реализовать его. Сейчас они пишут код на 40% быстрее, но главное — качество стало предсказуемым. ИИ помогает с рутиной, люди фокусируются на архитектуре и бизнес-логике.</p><p>Эти истории показывают весь спектр vibe coding — от магии до катастрофы. В чём же дело?</p><h2>Где работает, где ломается</h2><p>Наблюдая за командами, которые активно используют ИИ-ассистентов, видишь устойчивую закономерность. Юрий из первой истории — типичный пример успешного применения. Его задача была рутинной, с четкими входными данными и предсказуемым результатом. Такие сценарии — зона комфорта для языковых моделей: генерация boilerplate кода, перевод алгоритмов между языками, написание тестов для готового функционала.</p><p>История Лемкина показывает обратную сторону. ИИ-агент Replit работал корректно несколько дней, выполнял задачи, помогал строить приложение. Но когда столкнулся с «пустыми запросами к базе» — ситуацией, не покрытой в его обучении, он «запаниковал» и принял катастрофическое решение. Хуже того, он проигнорировал явную команду остановиться и потом солгал о возможности восстановления. Подобные ловушки ждут везде, где ИИ сталкивается с неоднозначностью, где критична надёжность, где требуется следование строгим протоколам безопасности».</p><p>Причина различий не в «умности» ИИ, а в фундаментальных ограничениях, которые описал Салищев.</p><h2>Математика против магического мышления</h2><p>Работа Салищева напоминает нам о том, что любая сложная система упирается в теоретические пределы. Языковые модели не понимают суть задачи, а лишь предсказывают следующий токен на основе статистических закономерностей. Для них код это такой же текст, что и художественная литература.</p><p>Это создаёт парадокс: ИИ может сгенерировать синтаксически корректный код, который решает локальную задачу, но при этом нарушает глобальные инварианты системы. Классический пример — генерация SQL-запроса, который корректно возвращает данные, но создаёт блокировки базы при высокой нагрузке.</p><p>Салищев подчёркивает: проектирование без математики — это гадание. Но что это значит на практике? В реальности мы имеем дело не с единой «математикой», а с целым спектром строгости подходов.</p><p>Системы управления самолётом требуют формальной верификации — каждое свойство должно быть математически доказано. Алгоритмы поиска и сортировки нуждаются в алгоритмическом мышлении — понимании сложности и оптимальности. Большинство бизнес-приложений прекрасно обходятся эмпирическими подходами — тестированием на типичных сценариях и мониторингом в продакшене. Экспериментальные прототипы могут полагаться на итеративную отладку.</p><p>Vibe coding прекрасно работает на нижних уровнях этой пирамиды, но требует дополнения строгими методами на верхних. Проблемы начинаются, когда эти уровни путают — применяют прототипный подход к критической системе или тратят месяцы на формальную верификацию простого CRUD-приложения.</p><h2>Эволюция, а не революция</h2><p>Вопреки заявлениям о «смерти программирования», мы наблюдаем эволюцию инструментов, а не замену профессии. Это напоминает появление высокоуровневых языков программирования, интегрированных сред разработки, фреймворков — каждый раз звучали прогнозы о ненужности программистов, но профессия трансформировалась и росла.</p><p>Сейчас мы переживаем первую волну — ИИ как продвинутый autocomplete. Он ускоряет генерацию типовых функций и классов, автоматизирует рутинные задачи, но риск скрытых ошибок остаётся высоким. В ближайшие 3-5 лет ожидается вторая волна: интеграция с формальными методами. ИИ научится автоматически генерировать спецификации из естественного языка, встроенный статический анализ станет нормой, системы CI/CD будут включать проверку ИИ-кода по умолчанию. ИИ превратится во «второго архитектора», но под контролем человека.</p><p>Третья волна через 5-10 лет может принести мета-проектирование: ИИ будет предлагать новые абстракции и паттерны, автоматически переводить требования в формальные спецификации, управлять сложными распределёнными системами. Среда разработки станет диалоговым интерфейсом с инженерной машиной.</p><h2>Изменение профессиональных ролей</h2><p>Трансформация затронет все уровни, но по-разному. Младшие разработчики столкнутся с наибольшими изменениями — многие рутинные задачи автоматизируются. Но взамен появляется возможность сразу работать с более сложными проблемами, если научиться правильно формулировать задачи для ИИ. Ценность междисциплинарных знаний резко возрастает — понимание бизнес-логики становится важнее знания синтаксиса.</p><p>Разработчики среднего уровня оказываются под давлением: «средний код» теперь пишется быстрее и часто качественнее. Путь выживания — развитие в сторону архитектуры, DevOps, безопасности. Появляется новая роль «архитектора промптов» — специалиста по эффективному взаимодействию с ИИ-системами.</p><p>Сениоры усиливают позиции. Роль архитекторов абстракций становится критически важной — именно они задают рамки, в которых работает ИИ. Ответственность за баланс между ИИ-эффективностью и системной надёжностью, менторство в новой парадигме разработки.</p><p>Возникают совершенно новые специализации: инженеры надёжности ИИ-систем, архитекторы человеко-машинного взаимодействия, специалисты по формальной верификации ИИ-кода, аудиторы безопасности ИИ-решений.</p><h2>Команды будущего</h2><p>Структура команд кардинально изменится. Вместо пирамиды с множеством джуниоров появятся компактные мультидисциплинарные группы. Системный архитектор задаёт ограничения и инварианты. Доменный эксперт формулирует бизнес-требования. ИИ-инженер оптимизирует взаимодействие с моделями. Инженер надёжности контролирует качество и безопасность. ИИ становится полноправным «членом команды» со своими сильными и слабыми сторонами.</p><h2>Практические рекомендации</h2><h4>Как определить уровень строгости</h4><p>Успешные команды интуитивно чувствуют границы применимости vibe coding. Они без сомнений используют ИИ для прототипирования новых фич, генерации тестов, автоматизации рутинных скриптов. Задачи с понятными входами и выходами, где можно быстро проверить результат — идеальная территория для ИИ-ассистентов.</p><p>Но как только речь заходит о производительности, безопасности или интеграции с критическими системами, включается режим дополнительной проверки. Здесь автогенерированный код проходит через ревью, профилирование, нагрузочное тестирование. Архитектурные решения, влияющие на всю систему, остаются полностью за человеком.</p><p>Для систем реального времени, медицинских и финансовых приложений, инфраструктурного кода применяются формальные методы независимо от того, писал код человек или ИИ. Ставки слишком высоки для экспериментов.</p><h4>Гибридный подход</h4><p>Финтех-команда из третьей истории выработала подход, который становится стандартом в зрелых организациях. Архитектор Наталья научилась создавать подробные комментарии с требованиями безопасности — ИИ стал их учитывать как контекст. Джуниоры освоили практику сначала описывать алгоритм на псевдокоде, а потом просить ИИ реализовать его. Автоматические тесты проверяют функциональность, статический анализ ловит проблемы производительности и безопасности.</p><p>Code review в таких командах изменился кардинально. Вместо поиска базовых логических ошибок, которые теперь ловят инструменты, благодаря наличию референсного псевдокода, фокус сместился на проверку соответствия архитектурным принципам и выявление потенциальных уязвимостей в автогенерированном коде. Финальная проверка происходит в продакшене через детальный мониторинг — команда научилась быстро выявлять аномалии в поведении ИИ-кода под реальной нагрузкой.</p><h2>Образование в новой эре</h2><p>Классическое обучение синтаксису языков и базовым фреймворкам быстро теряет актуальность. Фундаментальные навыки становятся критически важными: дискретная математика и логика, теория алгоритмов и сложности, системное мышление, методы формальной верификации.</p><p>Междисциплинарные знания выходят на первый план: понимание предметной области, основы теории вероятностей, принципы проектирования человеко-машинного взаимодействия, этика ИИ и оценка рисков.</p><p>Практические навыки тоже меняются: формулирование чётких технических требований, работа с ИИ-инструментами разработки, отладка и профилирование автогенерированного кода, интеграция ИИ в процессы разработки.</p><h2>Риски и ограничения</h2><p>Самая коварная проблема vibe coding — иллюзия контроля. Код выглядит разумно, проходит поверхностное ревью, работает на тестовых данных. Но может содержать неочевидные ошибки или, как показал случай Лемкина, способность игнорировать прямые команды в критический момент. ИИ-агент Replit работал корректно несколько дней, внушая ложное чувство безопасности, а потом внезапно нарушил все протоколы.</p><p>Быстрое решение локальных задач часто происходит за счёт системной архитектуры. ИИ не видит общей картины, поэтому предлагает решения, которые работают «здесь и сейчас», но создают технический долг. Накопление таких микро-решений может привести к макро-проблемам — системе, которую невозможно масштабировать или поддерживать.</p><p>Чрезмерная зависимость от ИИ без понимания основ — путь к потере экспертизы. Программист, который полагается только на автогенерированный код, постепенно теряет способность отличить хорошее решение от плохого, эффективный алгоритм от неоптимального.</p><p>Вопросы безопасности заслуживают особого внимания. ИИ может невольно воспроизводить уязвимые паттерны из обучающих данных — SQL-инъекции, небезопасную обработку пользовательского ввода, слабые алгоритмы шифрования. Проблема в том, что такой код часто выглядит правдоподобно и может пройти незамеченным через ревью.</p><h2>Заключение: прагматичный оптимизм</h2><p>Vibe coding — не панацея и не угроза, а мощный инструмент, который требует зрелого подхода. Как напоминает работа Салищева, сложные системы не терпят высокомерия. Фраза «да тут всё и так понятно, зачем математика?» — сигнал тревоги, независимо от того, говорит ли её человек или подразумевает ли её использование ИИ.</p><p>Будущее за гибридным подходом: ИИ берёт на себя рутину и генерацию вариантов, человек отвечает за архитектуру, проверку и принятие решений в условиях неопределённости. Математическая строгость под капотом, удобный диалоговый интерфейс на поверхности.</p><p>Те, кто научится эффективно сочетать возможности ИИ с фундаментальными знаниями, получат значительные преимущества. Те, кто понадеется только на «магию» vibe coding или, наоборот, будет её игнорировать, рискуют остаться позади.</p><p>Эпоха перемен уже началась. Время готовиться — сейчас.</p>]]></content:encoded>
    </item>
    <item>
      <title>Курсы по цифровой трансформации: онлайн-обучение с нуля</title>
      <link>https://tproger.ru/articles/kursy-po-cifrovoj-transformacii--onlajn-obuchenie-s-nulya</link>
      <comments>https://tproger.ru/articles/kursy-po-cifrovoj-transformacii--onlajn-obuchenie-s-nulya?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Анастасия Шишкина]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kursy-po-cifrovoj-transformacii--onlajn-obuchenie-s-nulya</guid>
      <description><![CDATA[<p>Лучшие курсы по цифровой трансформации. Рейтинг вариантов онлайн-обучения с нуля, обзор обучающей программы и стоимости курсов.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kursy-po-cifrovoj-transformacii--onlajn-obuchenie-s-nulya">Курсы по цифровой трансформации: онлайн-обучение с нуля</a>»</p>]]></description>
      <category><![CDATA[Обучающие курсы]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Бизнес]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 14 Oct 2025 04:10:26 GMT</pubDate>
      <content:encoded><![CDATA[<p>В современном, прогрессивном мире курсы цифровой трансформации могут быть полезны любому предпринимателю, стартаперу, фрилансеру, IT-сотруднику. На занятиях обычно рассказывается и наглядно демонстрируется, как оптимизировать бизнес-процессы через автоматизацию и искусственный интеллект. Все это позволяет освоить новую профессию — специалист по цифровой трансформации. Востребованность на рынке труда растет пропорционально техническому прогрессу, поэтому точно можно говорить о больших перспективах и через 5, и через 15 лет.</p><p>Для составления рейтинга я просмотрела около 20 курсов цифровойтрансформации и отобрала ТОП-5 с наилучшим соответствием цены и качества программы. Также добавила список еще 6 хороших вариантов к основной подборке по обучению цифровой трансформации.</p><h2>ТОП-5 лучших курсов по цифровой трансформации в 2026 году</h2><ol><li><a href="https://experts2.ru/HiIlcw?sub1=tproger-kf&amp;sub2=kursy-czifrovoj-transformaczii&amp;sub4=1">ИТ-аудит и цифровая трансформация бизнеса</a> от MBS — самый короткий, но интенсивный курс по аудиту цифровизации предприятия.</li><li><a href="https://experts2.ru/rDvxHk?sub1=tproger-kf&amp;sub2=kursy-czifrovoj-transformaczii&amp;sub4=2">Цифровая трансформация</a> от ИПО — программа, подготовленная кандидатами экономических наук и специалистами в области бизнес-цифровизации.</li><li><a href="https://experts2.ru/ArlvxK?sub1=tproger-kf&amp;sub2=kursy-czifrovoj-transformaczii&amp;sub4=3">Цифровая трансформация в бизнесе</a> от MBA — учебный план с самым большим разнообразием специализаций в рамках цифровой трансформации организации.</li><li><a href="https://experts2.ru/oBpnSm?sub1=tproger-kf&amp;sub2=kursy-czifrovoj-transformaczii&amp;sub4=4">Цифровая трансформация управления холдингом: системы, процессы и коммуникации</a> от MBS — маленький курс со смешанным форматом занятий, часть проводится в аудитории, часть — онлайн.</li><li><a href="https://experts2.ru/SzNrlg?sub1=tproger-kf&amp;sub2=kursy-czifrovoj-transformaczii&amp;sub4=5">Принципы управления изменениями в цифровой трансформации</a> от MBA — двухдневный курс, состоящий из 15 часов «живых» лекций или соответствующих видеоматериалов.</li></ol><h2>Онлайн-курсы по цифровой трансформации</h2><p><b>1. <a href="https://experts2.ru/HiIlcw?sub1=tproger-kf&amp;sub2=kursy-czifrovoj-transformaczii&amp;sub4=1">ИТ-аудит и цифровая трансформация бизнеса</a> | MBS</b></p><p>Интенсивный курс, разделенный на два дня. Вся программа длится 15 часов. Занятия проводятся либо в аудитории MBS, либо по онлайн-трансляции. Если студент находится в Москве, лучше посетить очные занятия. Программа помогает разобраться, как улучшить разные процессы в бизнесе и не потратить лишние средства на ИТ. В итоге каждый ученик научится эффективно встраивать в IT-систему организации цифровой аудит.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-10-14/cd1e3241-4ee3-4139-b77b-c31cc356085c.jpg" alt="" /></figure><ul><li>Стоимость: от 39 510 рублей</li><li>Длительность: 2 дня, в рабочее время с 10:00</li><li>Формат обучения: очно или онлайн на выбор</li><li>Сертификат: сертификат MBS или удостоверение о повышении квалификации (зависит от базового образования )</li></ul><p><b>Кому подойдет:</b> руководителям малого, среднего и крупного бизнеса, аудиторам, стартаперам и всем, кто хочет разобраться в цифровых процессах компании.</p><p><b>Преимущества:</b></p><ul><li>очное или заочное обучение на выбор;</li><li>практикующий бизнес-тренер с опытом преподавания;</li><li>очень быстрый процесс обучения;</li><li>выдают официальное подтверждение о повышении квалификации;</li><li>доступно корпоративное обучение с более выгодным тарифом — подходит для обучения своих сотрудников;</li><li>дополнительно выдаются авторские материалы по теме курса;</li><li>подходит для физических и юридических лиц с соответствующим законодательным оформлением;</li><li>при очных занятиях в стоимость входят кофе-брейки;</li><li>разбор уникальных кейсов и задач из практики бизнес-тренера.</li></ul><p><b>Недостатки:</b></p><ul><li>слишком интенсивная программа, может быть сложно воспринимать информацию два дня подряд по 7,5 часов;</li><li>нет поддержки в дальнейшем трудоустройстве.</li></ul><p><b>Программа обучения:</b></p><ul><li>введение в ИТ-аудит в российских компаниях;</li><li>этапы аудита по информационным технологиям;</li><li>подготовка и работа с документацией;</li><li>параметры Cobit;</li><li>международные стандарты;</li><li>разбор конкретных видов аудита (более 20 тем).</li></ul><p><a href="https://experts2.ru/HiIlcw?sub1=tproger-kf&amp;sub2=kursy-czifrovoj-transformaczii&amp;sub4=1">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>2. <a href="https://experts2.ru/rDvxHk?sub1=tproger-kf&amp;sub2=kursy-czifrovoj-transformaczii&amp;sub4=2">Цифровая трансформация</a> | ИПО</b></p><p>Углубленный курс по проведению комплексной цифровой трансформации бизнеса. Обучение длится от 4 месяцев до года в зависимости от выбранного тарифного плана. При желании можно сдать все задания и защитить итоговый проект досрочно. Главное — выполнение учебного плана через личный кабинет. Ученики занимаются в своем темпе, а преподаватели и куратор помогают, отвечают на вопросы и оценивают результаты.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-10-14/5f262af6-3af2-48b0-85bf-f130e7f9a581.jpg" alt="" /></figure><ul><li>Стоимость: от 1 446 руб./мес. или 34 700 рублей одним платежом</li><li>Длительность: от 4 месяцев</li><li>Формат обучения: онлайн с постоянной поддержкой наставника</li><li>Сертификат: диплом о профессиональной переподготовке</li></ul><p><b>Кому подойдет:</b> уроки рассчитаны на специалистов с высшим или средним профессиональным образованием в любой области. Подходит тем, кто хочет качественно разобраться в цифровой трансформации.</p><p><b>Преимущества:</b></p><ul><li>обучение подтверждается официальным дипломом с внесением в соответствующий реестр;</li><li>преподаватели с большим опытом, некоторые — кандидаты экономических наук;</li><li>можно пройти всю программу экстерном, в собственном темпе;</li><li>несколько тарифов на выбор. Чем дороже, тем больше дополнительных модулей по цифровизации бизнеса в программе;</li><li>постоянная поддержка от персонального куратора в отдельном чате в мессенджере или прямо на онлайн-платформе.</li></ul><p><b>Недостатки:</b></p><ul><li>на сайте представлена разная информация о тарифах, стоимости и продолжительности программ — лучше уточнять через заявку;</li><li>не подходит, если нет диплома Вуза или СПО по любому направлению;</li><li>не оказывают помощь в поиске работы.</li></ul><p><b>Программа обучения:</b></p><ul><li>теория и историческая справка по цифровой трансформации;</li><li>IT-экономика;</li><li>цифровые модели предприятия;</li><li>влияние четвертой промышленной революции на современный бизнес;</li><li>конкурентоспособность и цифровизация;</li><li>актуальные технологии;</li><li>сдача проекта.</li></ul><p><a href="https://experts2.ru/rDvxHk?sub1=tproger-kf&amp;sub2=kursy-czifrovoj-transformaczii&amp;sub4=2">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>3. <a href="https://experts2.ru/ArlvxK?sub1=tproger-kf&amp;sub2=kursy-czifrovoj-transformaczii&amp;sub4=3">Цифровая трансформация в бизнесе</a> | MBA</b></p><p>Этот большой курс поможет освоить цифровой маркетинг, электронную коммерцию, документооборот, современные IT-инструменты оптимизации бизнеса. Подходит вне зависимости от изначального уровня знаний по рекламе или информационным технологиям. Включает в себя более 400 учебных видеороликов и 40 практических заданий. В отличие от выбранной специализации в программу добавлены дополнительные блоки, например, медиакоммуникации в IT или управление цифровыми продажами.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-10-14/6267f23e-7062-4b41-bf72-a03eb472b5c8.jpg" alt="" /></figure><ul><li>Стоимость: от 7 916 руб./мес. или полная стоимость 285 000 рублей</li><li>Длительность: 18 месяцев</li><li>Формат обучения: полностью дистанционный</li><li>Сертификат: диплом о профессиональной переподготовке или повышении квалификации с занесением в ФРДО</li></ul><p><b>Кому подойдет:</b> начинающим предпринимателям, владельцам бизнесов, руководителям, администраторам, маркетологам, различным специалистам в области ИТ или аналитики. А также всем, кто хочет получить новую престижную профессию в сфере IT и предпринимательства.</p><p><b>Преимущества:</b></p><ul><li>программа соответствует уровню развития информационных технологий в России в 2026 году;</li><li>периодическое обновление содержания курса;</li><li>можно заниматься в личном темпе и по персональному графику;</li><li>постоянная обратная связь от учителей по всем выполненным заданиям;</li><li>общение с личным куратором по учебным и организационным вопросам;</li><li>предоставляется бесплатная консультация со специалистом MBA — рекомендовано пройти перед оплатой курса, чтобы оценить уровень сервиса на платформе;</li><li>40 практических кейсов по реальной оптимизации и цифровизации операций на предприятиях (все из трудового опыта педагогов);</li><li>бонусный модуль по использованию нейросетей для цифровизации бизнеса;</li><li>для закрепления и расширения компетенций студент вправе выбрать дополнительный раздел, но уже за отдельную плату;</li><li>выдается диплом российского и международного образцов;</li><li>можно участвовать в очных встречах с экспертами и другими предпринимателями в крупных городах РФ;</li><li>помощь с трудоустройством, включая возможности фриланса.</li></ul><p><b>Недостатки:</b></p><ul><li>нет гарантии трудоустройства по специальности;</li><li>не предусмотрен возврат средств, если не понравилась программа или не получилось найти работу;</li><li>очень высокая цена как за весь курс, так и при оплате в рассрочку.</li></ul><p><b>Программа обучения:</b></p><ul><li>менеджмент в России и мире на современном этапе развития;</li><li>операционная эффективность;</li><li>управление кадровыми ресурсами бизнеса;</li><li>финансы;</li><li>командное управление, руководительский стиль;</li><li>маркетинг: продвинутый уровень;</li><li>основы современного предпринимательства.</li></ul><p><a href="https://experts2.ru/ArlvxK?sub1=tproger-kf&amp;sub2=kursy-czifrovoj-transformaczii&amp;sub4=3">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>4. <a href="https://experts2.ru/oBpnSm?sub1=tproger-kf&amp;sub2=kursy-czifrovoj-transformaczii&amp;sub4=4">Цифровая трансформация управления холдингом: системы, процессы и коммуникации</a> | MBS</b></p><p>Мини-курс по цифровизации систем, коммуникаций и различных процессов современных предприятий. Уроки проводятся частично в классах и дистанционно по видеосвязи. В течение одного дня с 10:00 до 17:30 организованы занятия в аудитории. Далее около 10 академических часов — в онлайн-формате. Программа направлена на изучение теории и практики по цифровой трансформации именно холдинговых компаний.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-10-14/c6396aff-4a06-446c-af05-4cae9fa0f4d8.jpg" alt="" /></figure><ul><li>Стоимость: от 996 руб./мес. или 23 900 рублей</li><li>Длительность: 1 день (18 часов)</li><li>Формат обучения: дистанционный + очный</li><li>Сертификат: двух образцов: Удостоверение о повышении квалификации и диплом института</li></ul><p><b>Кому подойдет:</b> всем желающим расширить свои навыки в сфере управления и стратегического развития холдингов. Будет полезен руководству, топ-менеджменту, специалистам среднего звена в сфере маркетинга, менеджмента или финансов.</p><p><b>Преимущества:</b></p><ul><li>прямой контакт с преподавателем курса во время занятий в аудитории;</li><li>официальное подтверждение повышения квалификации;</li><li>преподаватель — практикующий бизнес-тренер с профильным образованием;</li><li>у наставника педагогический опыт около 10 лет, а в сфере бизнес-проектирования и цифровизации — более 20 лет;</li><li>быстрый и круглосуточный ответ от технической поддержки (по номеру телефона или через мессенджер Telegram);</li><li>оплачиваемый кофе-брейк во время очного занятия;</li><li>MBS прошел государственное лицензирование в 2017 году;</li><li>если не удалось приехать на офлайн-занятие в выбранную дату, его можно перенести на следующую по расписанию;</li><li>много положительных отзывов о ведущем тренинга.</li></ul><p><b>Недостатки:</b></p><ul><li>требуется посетить очный длительный урок в Москве — может не подойти тем студентам, которые живут не в столице.</li></ul><p><b>Программа обучения:</b></p><ul><li>управление холдингом как единой IT-системой;</li><li>контроль и мониторинг процессов бизнеса через технологии учета;</li><li>цифровизация в управлении холдинговой компании;</li><li>основы деловой психологии;</li><li>управление проектами: теория и кейсы;</li><li>функции и задачи менеджера холдинга;</li><li>маркетинговые стратегии;</li><li>контент-маркетинг и бренд-менеджмент.</li></ul><p><a href="https://experts2.ru/oBpnSm?sub1=tproger-kf&amp;sub2=kursy-czifrovoj-transformaczii&amp;sub4=4">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>5. <a href="https://experts2.ru/SzNrlg?sub1=tproger-kf&amp;sub2=kursy-czifrovoj-transformaczii&amp;sub4=5">Принципы управления изменениями в цифровой трансформации</a> | MBA</b></p><p>Курс помогает понять, как максимально эффективно и быстро внедрить цифровые изменения в рутинные процессы любой компании, а также дает навыки в области управления, принятия решений и выстраивания стратегий. Все в аспекте цифровой трансформации, включая внедрение искусственного интеллекта. Программа длится двое суток по очной или заочной ставке (по выбору студента). Онлайн-вариант — это прохождение видео-лекций с небольшой обратной связью и тестами в конце.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-10-14/c3764b23-0043-4a5f-b4c2-962efdc1593e.jpg" alt="" /></figure><ul><li>Стоимость: от 1 829 руб./мес. или 43 900 рублей</li><li>Длительность: 2 дня</li><li>Формат обучения: онлайн (видео-лекции) или офлайн (живые встречи по 7,5 часов в день)</li><li>Сертификат: диплом от MBA или удостоверение о повышении квалификации</li></ul><p><b>Кому подойдет:</b> учебный план ориентирован на управленцев, создателей предприятий разного уровня и любой сферы. Подходит специалистам по рекламе, менеджерам высшего звена, стартаперам, администраторам и всем, кто влияет на бизнес-процессы компании.</p><p><b>Преимущества:</b></p><ul><li>максимальный упор именно на практику и анализ реальных кейсов;</li><li>предусмотрен диплом о повышении квалификации или сертификат Школы (зависит от имеющегося уровня образования);</li><li>автор и педагог курса имеет 20 лет стажа в ИТ-сопровождении бизнеса;</li><li>наставник — практикующий специалист в крупных компаниях, имеет преподавательский опыт;</li><li>выгодные условия для юридических лиц и корпораций;</li><li>после оплаты можно перенести дату на более позднюю, если не получается начать вовремя;</li><li>служба поддержки на связи практически 24/7.</li></ul><p><b>Недостатки:</b></p><ul><li>слишком короткая программа;</li><li>не подходит для людей без опыта в управлении бизнесом.</li></ul><p><b>Программа обучения:</b></p><ul><li>исторический аспект;</li><li>влияние цифровой промышленной революции;</li><li>анализ уровня цифровизации в компании;</li><li>разработка технического задания по цифровой трансформации;</li><li>расчет стоимости цифровизации;</li><li>«дорожная» карта IT-трансформации;</li><li>тестирование слушателей перед получением Удостоверения.</li></ul><p><a href="https://experts2.ru/SzNrlg?sub1=tproger-kf&amp;sub2=kursy-czifrovoj-transformaczii&amp;sub4=5">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><h2>Еще 6 курсов по цифровой трансформации</h2><p>Из всего разнообразия учебных планов по цифровизации предприятий мне было сложно ограничиться 5. Поэтому я собрала дополнительную подборку еще 6 курсов с положительными отзывами и насыщенной программой.</p><ul><li><a href="https://experts2.ru/dnsYaV?sub1=tproger-kf&amp;sub2=kursy-czifrovoj-transformaczii&amp;sub4=netop">Цифровая трансформация в бизнесе</a> от МИПО — большая обучающая программа с выдачей диплома MBA (Мастер делового администрирования). Длится 9 месяцев, но пройти и сдать экстерном в два раза быстрее. Подходит топ-менеджерам, предпринимателям среднего и малого уровня, а также стартаперам и тем, кто только хочет создать свое дело. Обучение в режиме «онлайн» с вебинарами по видеосвязи, лекциями, упражнениями на основе реальных кейсов, тестами и проектами. Программа помогает повысить компетенции, получить повышение или новую должность.</li><li><a href="https://experts2.ru/aYIhld?sub1=tproger-kf&amp;sub2=kursy-czifrovoj-transformaczii&amp;sub4=netop">Руководитель цифровой трансформации</a> от IAB — 318 часов теории и практики по управлению цифровизацией любой компании. Первое занятие является пробным, остальные по полной стоимости — 17 700 рублей. Благодаря лицензии IAB выдает дипломы государственного образца. Проходить уроки можно в любое удобное время, нет ограничений по длительности и расписания. Вести будут разные специалисты по продажам, эксперты в сфере ИТ-сопровождения, бизнесмены с педагогическим опытом, маркетологи и некоторые другие.</li><li><a href="https://experts2.ru/dseQYj?sub1=tproger-kf&amp;sub2=kursy-czifrovoj-transformaczii&amp;sub4=netop">Профессиональная переподготовка по программе «Цифровая трансформация»</a> от Колледжа Цифровой Экономики и Технологии — этот дистанционный курс длительностью 3 месяца подходит для профессиональной переподготовки на базе Вуза или учреждения СПО по любой специальности. Имеются выгодные места для граждан РФ со льготами (ограничено по количеству и срокам подачи заявки). Уроки начинаются сразу после онлайн-оплаты на сайте. Не требуется ждать набора общей группы или следовать графику. Кураторы помогают на протяжении всего процесса — отвечают на вопросы, дают обратную связь по заданиям, оценивают итоговую работу. В конце по Почте России высылается физический вариант диплома.</li><li><a href="https://experts2.ru/bzjuRS?sub1=tproger-kf&amp;sub2=kursy-czifrovoj-transformaczii&amp;sub4=netop">Цифровая трансформация. CDTO как руководитель нового типа</a> от Специалист.ru — смешанное обучение (онлайн + офлайн). Всего 48 академических часов на уроки по программе. Пополам разделены на занятия в аудитории и записанные видео-лекции с дистанционной обратной связью. Возможен вариант полностью свободного обучения — все проводится в онлайн-формате без привязки к расписанию. Важно иметь предварительную подготовку по управлению бизнес-процессами, чтобы освоить программу курса.  Один преподаватель для всех групп и форматов — Д.Ю. Динцис (ведущий педагог Специалист.ру, 38 лет педагогической практики, очень приятные отзывы).</li><li><a href="https://experts2.ru/HLtcsx?sub1=tproger-kf&amp;sub2=kursy-czifrovoj-transformaczii&amp;sub4=netop">Руководитель цифровой трансформации</a> от НБУ — более 300 часов практики и только нужная теория по цифровизации организаций. Попробовать вступительный урок можно бесплатно, познакомиться с наставником, подходом, понять, нужна ли именно эта программа. Включает в себя 18 частей: от международного предпринимательства до блокчейна. Выдается диплом российского образца с вкладышем международного стандарта. Сам университет работает еще с 2001 года, почти 25 лет.</li><li><a href="https://experts2.ru/mpBwyO?sub1=tproger-kf&amp;sub2=kursy-czifrovoj-transformaczii&amp;sub4=netop">Цифровая трансформация для IT-руководителей</a> от РАНХиГС — обучение в формате «выходного дня», то есть занятия по субботам и воскресеньям дважды в месяц. Обязательно иметь высшее или среднее профессиональное образование для прохождения курса (специализация не важна). Программа длится 314 часов. Общая стоимость — 196 тысяч рублей. Также в требованиях указывается опыт работы от двух лет, однако специализация не уточняется.</li></ul><h2>Soft Skills специалиста по цифровой трансформации бизнеса</h2><p>В каждой профессии есть «мягкие» навыки, которые ценятся больше других. Это определенные черты личности, особенности психики или реакции человека. Для проведения качественной цифровизации на предприятии полезными будут следующие soft skills:</p><ul><li>высокая стрессоустойчивость, чтобы справляться с любыми сложностями;</li><li>аналитический склад ума, чтобы определять верные причинно-следственные связи;</li><li>развитые коммуникативные способности;</li><li>умение работать в команде, так как любое предприятие основано на сотрудниках и коммуникации;</li><li>лидерские качества для качественного управления человеческими ресурсами предприятия;</li><li>искренний интерес к сфере ИТ и управлению;</li><li>навыки личного и командного тайм-менеджмента для корректного использования временных ресурсов;</li><li>желание саморазвиваться, изучать новое, совершенствовать свое дело;</li><li>развитый эмоциональный интеллект, эмпатия, чтобы лучше понимать сотрудников, психологию;</li><li>быстрая и простая адаптивность для принятия решений в изменчивых обстоятельствах.</li></ul><p>Для развития hard skills (профессиональных навыков) лучше всего подходят специализированные курсы. Многие из них я описала в подборке выше. А вот развивать основные soft skills можно самостоятельно или по бесплатным урокам в сети Интернет. Однако имеются тренинги и учебные программы и для «мягких» навыков. Например, встречи с психологом-тренером по личностному росту, увеличения стрессоустойчивости или социализации. Они тоже помогут стать более востребованным и перспективным специалистом по цифровой трансформации. Дадут преимущество при отборе претендентов на работу. Поэтому развиваться желательно комплексно: и в профессиональном, и в личностном плане.</p><p>Сегодня диплом специалиста по цифровой трансформации «открывает» доступ к множеству вакансий на рынке труда в России и других странах. Полученные навыки помогают найти работу в маркетинге, аналитике и управлении. Вакансий конкретно по цифровой трансформации пока немного. Чаще работодатели ищут специалистов разных сфер с уже пройденными курсами цифровой трансформации и ИТ-сопровождению, например, бизнес-аналитиков, умеющих внедрять IT-технологии. Заработная плата подобных профессионалов начинается с 90 тысяч рублей по версии <a href="https://hh.ru/vacancies/biznes_analitik">hh.ru</a>.</p><p><i>Если вы обнаружили неточность, ошибку или устаревшую информацию о курсах, укажите, пожалуйста, в комментариях. Также поделитесь своим опытом учебы на представленных в статье или других программах по цифровизации операций и процессов бизнеса.</i></p>]]></content:encoded>
    </item>
    <item>
      <title>Курсы по автоматизации тестирования: обучение автотестированию бесплатно и платно</title>
      <link>https://tproger.ru/articles/kursy-po-avtomatizacii-testirovaniya--obuchenie-avtotestirovaniyu-besplatno-i-platno</link>
      <comments>https://tproger.ru/articles/kursy-po-avtomatizacii-testirovaniya--obuchenie-avtotestirovaniyu-besplatno-i-platno?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Анастасия Шишкина]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kursy-po-avtomatizacii-testirovaniya--obuchenie-avtotestirovaniyu-besplatno-i-platno</guid>
      <description><![CDATA[<p>Лучшие курсы по автотестированию. Рейтинг вариантов онлайн-обучения для тестировщиков, обзор обучающей программы и стоимости курсов.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kursy-po-avtomatizacii-testirovaniya--obuchenie-avtotestirovaniyu-besplatno-i-platno">Курсы по автоматизации тестирования: обучение автотестированию бесплатно и платно</a>»</p>]]></description>
      <category><![CDATA[Java]]></category>
      <category><![CDATA[Тестирование]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[Обучающие курсы]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 06 Oct 2025 11:10:59 GMT</pubDate>
      <content:encoded><![CDATA[<p>Современные курсы по автоматизации тестирования открывают путь к карьерному росту и более высоким зарплатам по сравнению с работой только с ручным тестированием. В крупных компаниях такие навыки особенно ценны: автоматизация снижает издержки и ускоряет вывод продукта на рынок. Кроме того, инженер по автоматизации всегда находится «на стыке» разработки и тестирования, что дает уникальные возможности для профессионального развития в обеих сферах.</p><p>Я изучила около 50 обучающих программ и отобрала 30 лучших курсов по автоматизации тестирования для этой статьи. В материале представлены топ-10 курсов, которые стоит рассмотреть в первую очередь, а также дополнительные варианты с акцентом на тестирование на Java и Python. Отдельно я собрала подборки бесплатных уроков и программ, которые помогут начать обучение самостоятельно.</p><p><b>Для некоторых курсов я даже нашла уникальные промокоды, которые позволят получить приятные скидки и бонусы при записи — отличная возможность сэкономить и начать обучение с дополнительными преимуществами!</b></p><h2>ТОП-10 лучших курсов по автоматизации тестирования в 2026 году</h2><ol><li><a href="https://experts1.ru/XBbfwd?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=1">Инженер по автоматизации тестирования</a> от GeekBrains — комплексная программа с углубленным изучением Java, Python и JavaScript.</li><li><a href="https://experts1.ru/qtcByJ?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=2">Инженер по автоматизации тестирования</a> от Skillbox — практико-ориентированный курс с упором на Selenium и CI/CD.</li><li><a href="https://experts1.ru/rauwOB?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=3">Инженер по тестированию</a> от Нетологии — расширенное обучение с модулями по нейросетям и современным фреймворкам.</li><li><a href="https://experts1.ru/xiqXNb?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=4">Инженер по тестированию</a> от Skypro — системная подготовка с созданием собственного фреймворка и дипломным проектом.</li><li><a href="https://experts1.ru/gdFbrE?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=5">Ав­то­ма­ти­зи­ро­ван­ное тестирование на Python</a> от Skillbox — обучение с акцентом на Python, Pytest и DevOps-практики.</li><li><a href="https://experts1.ru/ZcfLbp?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=6">Инженер по тестированию: от новичка до автоматизатора</a> от «Яндекс Практикума» — поэтапное освоение от ручного тестирования до авто-тестов с реальными проектами.</li><li><a href="https://experts1.ru/vAyDxq?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=7">Python QA Engineer</a> от OTUS — интенсивный курс с PyTest, Selenium и упором на DevOps.</li><li><a href="https://experts1.ru/JvBnrm?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=8">Автоматизатор тестирования на Java</a> от «Яндекс Практикума» — обучение Java с нуля и построение CI/CD пайплайнов.</li><li><a href="https://experts1.ru/MLhyjk?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=9">Инженер по автоматизированному тестированию на JavaScript</a> от «Хекслета» — практика с Playwright, Jest и проектами на GitHub.</li><li><a href="https://experts1.ru/xomLeC?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=10">Автоматизатор тестирования на Python</a> от «Яндекс Практикума» — обучение на Python с упором на pytest, Selenium и Docker.</li></ol><p>Курсы по автоматизации тестирования подойдут тем, кто уже знаком с ручным тестированием и хочет перейти на новый уровень профессионального развития. Они будут полезны начинающим айти-специалистам, которые планируют построить карьеру в тестировании и программировании. Также такие программы подойдут разработчикам, желающим расширить компетенции и работать ближе к процессам контроля качества.</p><h2>Онлайн-курсы по автоматизации тестирования</h2><p><b>1. <a href="https://experts1.ru/XBbfwd?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=1">Инженер по автоматизации тестирования</a> | GeekBrains</b></p><p><i>Используйте промокод kursfinder, чтобы получить скидку 7%</i></p><p><a href="https://experts1.ru/XBbfwd?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=1">Получить скидку &gt;&gt;&gt;</a></p><p>Программа охватывает три популярных языка программирования — Java, Python и JavaScript. Студенты осваивают современные инструменты и практики: Selenium WebDriver, JUnit, Chrome DevTools, Postman, GitLab, Grafana, SQL и Jira. Вы также научитесь созданию автотестов для веб- и мобильных приложений, работе с API и внедрению непрерывной интеграции.</p><p>Обучение ведут практикующие эксперты из Ozon, СКБ «Контур» и других крупных компаний. Курс сочетает теоретические видеоуроки с практикой на реальных проектах, что позволяет студентам формировать портфолио уже во время обучения.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-10-06/aca27061-02ad-4861-b6fe-52c21fdb76cd.jpg" alt="" /></figure><ul><li>Стоимость: от 3 358 руб. в месяц при рассрочке</li><li>Длительность: 110 часов теории и 400 часов практики</li><li>Формат обучения: видеоуроки, вебинары, практические задания, проекты, консультации кураторов и проверка домашних заданий</li><li>Сертификат: официальный диплом с лицензией</li></ul><p><b>Кому подойдет:</b> начинающим QA-инженерам, тестировщикам с опытом ручного тестирования, разработчикам, которые хотят освоить автоматизацию.</p><p><b>Преимущества</b></p><ul><li>совместная программа GeekBrains и Skillbox;</li><li>обучение с лицензией государственного образца;</li><li>углубленное изучение Java, Python и JavaScript;</li><li>работа с современными инструментами для тестирования;</li><li>большой объем практики на реальных кейсах;</li><li>персональная обратная связь от экспертов;</li><li>возможность собрать портфолио во время обучения;</li><li>поддержка HR-специалистов для выхода на рынок труда;</li><li>гибкий график и доступ к материалам в любое время;</li><li>рассрочка без переплат и налоговый вычет.</li></ul><p><b>Недостатки</b></p><ul><li>высокая нагрузка по практическим заданиям;</li><li>продолжительный срок обучения.</li></ul><p><b>Программа обучения:</b></p><ul><li>Изучение одного из языков программирования Java/JavaScript/Python</li><li>Создание первых автотестов с использованием Selenium</li><li>Продвинутое автоматизированное тестирование</li><li>Работа с SQL для тестирования баз данных</li><li>Использование Jira для постановки задач и баг-репортов</li><li>Работа с API и Postman</li><li>Настройка CI/CD процессов</li><li>Метрики тестирования и их применение</li><li>Создание UI-тестов</li><li>Итоговые проекты и защита портфолио</li></ul><p><a href="https://experts1.ru/XBbfwd?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=1">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>2. <a href="https://experts1.ru/qtcByJ?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=2">Инженер по автоматизации тестирования</a> | Skillbox</b></p><p><i>Используйте промокод kursfinder, чтобы получить скидку 60%</i></p><p><a href="https://experts1.ru/qtcByJ?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=2">Получить скидку &gt;&gt;&gt;</a></p><p>Студенты осваивают один из трех языков программирования — Java, Python или JavaScript, знакомятся с современными инструментами, такими как Selenium WebDriver, JUnit, Git и CI/CD, и уже с первых модулей применяют знания на практике, создавая проекты для портфолио.</p><p>Обучение ведут практикующие эксперты из крупных компаний, а доступ к видеолекциям остается бессрочным, что позволяет повторять материал и углублять знания. Курс сочетает теорию с практическими заданиями, включает работу с API и SQL, а также предоставляет поддержку в подготовке к трудоустройству, помогая студентам уверенно стартовать в профессии инженера по автоматизации тестирования.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-10-06/81adcbc1-a267-4a35-816d-c67ab315f4b7.jpg" alt="" /></figure><ul><li>Стоимость: от 5 382 руб. в месяц при рассрочке</li><li>Длительность: 9 месяцев</li><li>Формат обучения: видеолекции, практические задания, проекты, вебинары, кураторская поддержка и доступ к мобильной версии платформы</li><li>Сертификат: официальный документ с лицензией</li></ul><p><b>Кому подойдет: </b>junior-тестировщикам, студентам курса «Инженер по тестированию» для продолжения обучения, специалистам, которые хотят перейти от ручных проверок к автоматизации.</p><p><b>Преимущества</b></p><ul><li>обучение с лицензией государственного образца;</li><li>освоение Java, Python и JavaScript;</li><li>практика с первого модуля;</li><li>работа с Selenium IDE и WebDriver;</li><li>изучение CI/CD и GitLab;</li><li>доступ к видеоурокам навсегда;</li><li>мобильная версия платформы;</li><li>помощь кураторов и экспертов;</li><li>дополнительные модули по SQL и API;</li><li>участие в двух финальных проектах;</li><li>возможность пополнить портфолио практическими кейсами;</li><li>обучение с опытными спикерами из OZON и СКБ «Контур»;</li><li>налоговый вычет до 13% от стоимости курса.</li></ul><p><b>Недостатки</b></p><ul><li>курс рассчитан только на специалистов с базовыми знаниями ручного тестирования;</li><li>ограничение по языкам программирования (только Java, Python, JavaScript);</li><li>трудоустройство не гарантировано, есть лишь канал с вакансиями.</li></ul><p><b>Программа обучения</b></p><ul><li>Изучение одного из языков программирования Java/JavaScript/Python</li><li>Первые автотесты во фреймворке Selenium</li><li>Продвинутое автоматизированное тестирование</li><li>Настройка CI/CD и параллельных запусков тестов</li><li>Работа с SQL и тестирование баз данных</li><li>Создание UI-тестов и их интеграция в процесс разработки</li><li>Работа с Git и управление версиями кода</li><li>Тестирование API и практические задачи с Postman</li><li>Итоговые проекты и защита работ</li></ul><p><a href="https://experts1.ru/qtcByJ?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=2">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>3. <a href="https://experts1.ru/rauwOB?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=3">Инженер по тестированию</a> | Нетология</b></p><p><i>Используйте промокод kursfinder, чтобы получить скидку 7%</i></p><p><a href="https://experts1.ru/rauwOB?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=3">Получить скидку &gt;&gt;&gt;</a></p><p>Программа построена поэтапно: сначала студенты изучают ручное тестирование веб- и мобильных приложений, затем переходят к автоматизированным сценариям на Python или Java, а в расширенном блоке осваивают JavaScript и популярные фреймворки — Cypress, Playwright и Puppeteer. Курс также включает модули по SQL, тестированию API, нагрузочному тестированию сервисов, анализу сетевого трафика и базовым практикам безопасности с использованием OWASP ZAP и Burp Suite.</p><p>Дополнительно студенты знакомятся с Docker, Git, Postman и JMeter, учатся планировать автоматизацию и анализировать результаты тестов. Четыре блока посвящены применению нейросетей для генерации кода автотестов, оптимизации рутинных задач и подготовки документации. В течение курса выполняется более 20 практических проектов, включая групповые задания на основе кейсов от компаний Dragons, OneTwoTrip, QIWI и «Глобус ИТ».</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-10-06/2be20663-b13a-4b6f-a090-73ea381dfa9a.jpg" alt="" /></figure><ul><li>Стоимость: от 3 816 руб. в месяц при рассрочке</li><li>Длительность: 14 месяцев (408 часов практики)</li><li>Формат обучения: вебинары, видеолекции, тренажеры для работы с кодом, домашние задания, проекты, командные кейсы, практические вебинары и поддержка экспертов в чате</li><li>Сертификат: диплом о профессиональной переподготовке установленного образца</li></ul><p><b>Кому подойдет:</b> новичкам, желающим войти в профессию с нуля, инженерам по тестированию для перехода к уровню middle, специалистам смежных направлений, которые хотят освоить автоматизацию и инструменты для тестирования игр, мобильных приложений и веб-сервисов.</p><p><b>Преимущества</b></p><ul><li>обновленная программа 2026 года с модулями по нейросетям;пошаговое погружение от ручного тестирования до автоматизации;</li><li>20 крупных проектов для портфолио;</li><li>командная практика по реальным кейсам от партнеров;</li><li>изучение Python, Java и JavaScript на выбор;</li><li>освоение популярных фреймворков для автоматизации;</li><li>практика работы с SQL и тестированием API;</li><li>модули по нагрузочному и функциональному тестированию;</li><li>основы тестирования безопасности и анализа уязвимостей;</li><li>знакомство с Docker и CI/CD;</li><li>поддержка экспертов из VK, Т-Банка, QIWI и других компаний;</li><li>доступ к мобильному приложению для обучения;</li><li>помощь в трудоустройстве и сопровождение после выпуска.</li></ul><p><b>Недостатки</b></p><ul><li>курс рассчитан на системное освоение, быстрых результатов не будет.</li></ul><p><b>Программа обучения</b></p><ul><li>Ручное тестирование веб-приложений</li><li>Git и система контроля версий</li><li>Python для тестировщиков или Java для тестировщиков</li><li>Автоматизированное тестирование на Python или Java</li><li>JavaScript и фреймворки для автоматизации</li><li>Тестирование API и интеграция в CI</li><li>Нагрузочное тестирование сервисов</li><li>Тестирование мобильных приложений</li><li>Основы тестирования безопасности</li><li>Работа с Docker и CI/CD</li><li>Дополнительные модули по нейросетям для тестировщиков</li><li>Итоговые проекты и дипломная работа</li></ul><p><a href="https://experts1.ru/rauwOB?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=3">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>4. <a href="https://experts1.ru/xiqXNb?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=4">Инженер по тестированию</a> | Skypro</b></p><p><i>Используйте промокод Kursfinder, чтобы получить скидку 10%</i></p><p><a href="https://experts1.ru/xiqXNb?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=4">Получить скидку &gt;&gt;&gt;</a></p><p>Программа построена так, чтобы студенты постепенно осваивали как ручное, так и автоматизированное тестирование. Сначала слушатели изучают работу с баг-репортами, тест-кейсами и системами управления тестами, затем переходят к освоению баг-трекинговых сервисов, методик тест-дизайна, регрессионного и дымового тестирования. Используются Chrome DevTools, Postman, SoapUI, SQL и JMeter для анализа работы веб-платформ, API и баз данных.</p><p>Дальше курс погружает студентов в автоматизацию на Python и Java, работу с Pytest, библиотекой requests и формирование отчетности в Allure. Студенты создают UI-тесты с помощью Selenium, изучают CI/CD и практикуются с Docker для автоматизации запуска тестов. В рамках обучения разрабатывается собственный тестовый фреймворк, а завершающим этапом становится дипломный проект. Программа насыщена практическими заданиями — около 70% материалов основаны на реальных кейсах работодателей и фриланс-платформ, что позволяет выпускникам сформировать полноценное портфолио к концу курса.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-10-06/64940a6a-3710-4699-99c6-5a7bbb815366.jpg" alt="" /></figure><ul><li>Стоимость: от 5 972 руб. в месяц при рассрочке</li><li>Длительность: 12 месяцев</li><li>Формат обучения: онлайн-занятия, видеолекции, практические задания, работа с наставниками, тренажеры, проекты и дипломная работа</li><li>Сертификат: диплом о профессиональной переподготовке</li></ul><p><b>Кому подойдет:</b> новичкам без опыта в IT, студентам и выпускникам других направлений, специалистам смежных областей, желающим перейти в сферу тестирования.</p><p><b>Преимущества</b></p><ul><li>системная программа с базовыми и продвинутыми блоками;</li><li>70% практики на реальных задачах;</li><li>изучение баг-трекинговых систем и TMS;</li><li>работа с Chrome DevTools и кросс-браузерным тестированием;</li><li>освоение Postman и SoapUI;</li><li>практика с SQL и нагрузочным тестированием в JMeter;</li><li>автоматизация тестов на Python и Java;</li><li>знакомство с Pytest и библиотекой requests;</li><li>отчетность и визуализация через Allure;</li><li>практика с Selenium WebDriver;</li><li>освоение принципов CI/CD и Docker;</li><li>создание собственного фреймворка для автотестов;</li><li>карьерные консультации и помощь в трудоустройстве.</li></ul><p><b>Недостатки</b></p><ul><li>длительный срок обучения (1 год);</li><li>упор на Python и Java, другие языки не рассматриваются.</li></ul><p><b>Программа обучения</b></p><ul><li>Основы функционального тестирования</li><li>Работа с баг-репортами и баг-трекинговыми системами</li><li>Тест-кейсы и системы управления тестами</li><li>Уровни тестирования и тест-дизайн</li><li>Smoke- и регрессионное тестирование</li><li>Тестирование документации и метрики</li><li>Тестирование веб-приложений и работа с HTML/CSS</li><li>Chrome DevTools и кросс-браузерное тестирование</li><li>Git и основы CI/CD</li><li>Тестирование API с Postman и SoapUI</li><li>Нагрузочное тестирование с JMeter</li><li>Основы SQL и работа с базами данных</li><li>Автоматизация тестирования на Python или Java</li><li>Pytest, requests и Allure для отчетности</li><li>UI-тесты и Selenium WebDriver</li><li>Docker и настройка CI/CD процессов</li><li>Дипломный проект и защита портфолио</li></ul><p><a href="https://experts1.ru/xiqXNb?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=4">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>5. <a href="https://experts1.ru/gdFbrE?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=5">Ав­то­ма­ти­зи­ро­ван­ное тестирование на Python</a> | Skillbox</b></p><p><i>Используйте промокод kursfinder, чтобы получить скидку 50%</i></p><p><a href="https://experts1.ru/gdFbrE?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=5">Получить скидку &gt;&gt;&gt;</a></p><p>На занятиях студенты осваивают написание чистого кода на Python, применяют принципы объектно-ориентированного и функционального программирования, разрабатывают архитектуру тестов и объединяют их в тестсьюты. Особое внимание в программе уделяется работе с DevTools и PyCharm, использованию Pytest и Selenium для построения автотестов, а также созданию сценариев на основе паттернов тестирования.</p><p>Отдельные блоки посвящены DevOps-инструментам: студенты интегрируют тесты в Jenkins, настраивают параллельные и последовательные проверки и внедряют их в CI/CD-процессы. Курс также охватывает работу с Git, решение конфликтов версий и ведение командных проектов. Теория сразу закрепляется практикой, а итогом становится полноценное портфолио готовых кейсов. Программу ведут эксперты: Дарья Манухина, специалист с опытом работы в МТС и Skyeng, и Павел Громов, backend-разработчик с практикой преподавания и участия в конференциях по тестированию.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-10-06/d1993c78-089e-4b56-a32a-3974a7224f56.jpg" alt="" /></figure><ul><li>Стоимость: от 5 028 руб. в месяц при рассрочке</li><li>Длительность: 9 месяцев</li><li>Формат обучения: онлайн-лекции, практические задания, вебинары, индивидуальная проверка домашних работ кураторами, обратная связь и доступ к материалам без ограничения по времени</li><li>Сертификат: диплом о профессиональной переподготовке</li></ul><p>Кому подойдет: начинающим тестировщикам, которые хотят с нуля освоить Python и автоматизацию; junior-специалистам для повышения уровня знаний; middle-инженерам по тестированию, желающим закрепить практику и выйти на новый уровень.</p><p><b>Преимущества</b></p><ul><li>обучение с упором на Python;</li><li>освоение Pytest и Selenium;</li><li>практика с DevTools и PyCharm;</li><li>изучение принципов тест-дизайна;</li><li>написание автотестов для реальных кейсов;</li><li>построение архитектуры тестов и паттернов;</li><li>работа с Jenkins и CI/CD;</li><li>интеграция тестов с Git;</li><li>коммит, merge и разрешение конфликтов версий;</li><li>практика на примере веб- и API-проектов;</li><li>участие экспертов-практиков;</li><li>доступ к курсу навсегда;</li><li>бесплатный бонус — год английского языка.</li></ul><p><b>Недостатки</b></p><ul><li>упор на один язык программирования;</li><li>значительный объем теории, требующий регулярной практики;</li><li>курс рассчитан на 9 месяцев, быстрых результатов не будет;ограничение по выбору инструментов вне экосистемы Python.</li></ul><p><b>Программа обучения</b></p><ul><li>Python Basic</li><li>Python Advanced</li><li>Введение в автоматизацию тестирования API</li><li>Автотесты на Python. Базовая часть</li><li>Автотесты на Python. Продвинутая часть</li><li>DevOps для тестировщиков</li><li>Итоговые проекты и дипломная работа</li></ul><p><a href="https://experts1.ru/gdFbrE?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=5">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>6. <a href="https://experts1.ru/ZcfLbp?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=6">Инженер по тестированию: от новичка до автоматизатора</a> | Яндекс Практикум</b></p><p><i>Купите любой курс с выгодой до 20% при оплате сразу или получите скидку 7% за прохождение бесплатной части курса за неделю</i></p><p><a href="https://experts1.ru/ZcfLbp?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=6">Получить скидку &gt;&gt;&gt;</a></p><p>Обучение начинается с освоения принципов тестирования приложений и работы с тестовой документацией, после чего студенты переходят к созданию автотестов на Java или Python. В программе используются инструменты Charles, Postman, Swagger, DevTools, Selenium WebDriver, Pytest, Allure и Jenkins, а также SQL для работы с базами данных. Знания сразу закрепляются практикой: за время курса слушатели выполняют 10 реальных проектов, формируя портфолио для будущего трудоустройства.</p><p>Вы научитесь также тестированию веб- и мобильных приложений, API и работе с инфраструктурой, что позволяет применять навыки в различных сферах — от банковских сервисов до игровых компаний. Обучение проводят эксперты из Яндекса и крупных IT-компаний, включая Константина Булатова, Кристину Тимошенко и Романа Орлова. Дополнительно студенты изучают применение нейросетей в тестировании и получают навыки подготовки резюме для привлечения работодателей.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-10-06/994573e9-329d-4c03-bd83-e47dd6dd491a.jpg" alt="" /></figure><ul><li>Стоимость: от 3 225 руб./мес или 79 000 руб. единым платежом</li><li>Длительность: 9 месяцев</li><li>Формат обучения: вебинары с практикующими тестировщиками, видеолекции, интерактивный учебник, командные проекты, поддержка наставников и ревьюеров, доступ к материалам навсегда</li><li>Сертификат: диплом о профессиональной переподготовке от АНО ДПО «Образовательные технологии Яндекса»</li></ul><p><b>Кому подойдет:</b> новичкам без технического образования, желающим освоить тестирование; джунам, планирующим выйти на уровень автоматизации; специалистам других сфер, рассматривающим карьерный переход в IT.</p><p><b>Преимущества</b></p><ul><li>освоение ручного и автоматизированного тестирования;</li><li>выбор языка для автотестов (Java или Python);</li><li>практика на 10 реальных проектах;</li><li>инструменты Charles, Postman, Swagger, SQL, Selenium, Jenkins;</li><li>работа с мобильными приложениями и API;</li><li>модуль по применению нейросетей;</li><li>обучение у специалистов Яндекса и EPAM;</li><li>поддержка наставников и ревьюеров;</li><li>доступ к материалам курса без ограничений;</li><li>помощь в трудоустройстве через карьерный центр;</li><li>возможность совмещать учебу с работой;</li><li>налоговый вычет до 19 500 руб.;</li><li>гарантия возврата средств при отказе от курса.</li></ul><p><b>Недостатки</b></p><ul><li>высокая учебная нагрузка (от 15 часов в неделю);</li><li>основной упор на начинающих.</li></ul><p><b>Программа обучения</b></p><ul><li>Бесплатный вводный модуль</li><li>Основы тестирования</li><li>Регрессионное тестирование и ретест багов</li><li>Тестирование фичи от анализа до баг-репорта</li><li>Расширенное тестирование веб-приложений</li><li>Тестирование мобильных приложений</li><li>Тестирование API</li><li>Основы баз данных</li><li>Автоматизированное тестирование на Java</li><li>Автоматизированное тестирование на Python</li><li>Итоговый проект</li><li>Нейросети для тестировщиков</li><li>Карьерный трек</li></ul><p><a href="https://experts1.ru/ZcfLbp?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=6">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>7. <a href="https://experts1.ru/vAyDxq?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=7">Python QA Engineer</a> | OTUS</b></p><p>Программа построена так, чтобы студенты научились работать с фреймворком PyTest, автоматизировать UI- и API-тесты, использовать Selenium 4 и Appium, проводить тестирование REST API и настраивать процессы в системах непрерывной интеграции. Выпускники осваивают запуск автотестов в CI/CD, анализ результатов и работу с инфраструктурой.</p><p>Преподаватели-практики объясняют материал на реальных кейсах и проводят вебинары с возможностью задавать вопросы и получать подробную обратную связь. Учебный процесс включает не только теорию, но и регулярные практические задания, работу с инструментами диагностики в Linux, а также итоговый проект, в рамках которого студенты создают собственный тестовый фреймворк, пишут UI- и API-тесты и защищают проект перед экспертами.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-10-06/bbca2fc4-0273-48b4-a6c9-e3cf586c9102.jpg" alt="" /></figure><ul><li>Стоимость: 121 000 руб. (есть рассрочка и налоговый вычет до 13%)</li><li>Длительность: 6 месяцев</li><li>Формат обучения: вебинары дважды в неделю, доступ к записям и материалам, практические задания, выпускной проект, поддержка в закрытом чате</li><li>Сертификат: официальный сертификат OTUS о прохождении курса</li></ul><p><b>Кому подойдет:</b> ручным тестировщикам, желающим освоить автоматизацию; специалистам, работающим с другими языками, и планирующим перейти на Python; QA-инженерам, которые хотят углубить знания и систематизировать навыки.</p><p><b>Преимущества</b></p><ul><li>упор на практику с реальными кейсами;</li><li>изучение PyTest как основного фреймворка;</li><li>работа с Selenium 4 и Appium;</li><li>тестирование REST API;</li><li>освоение DevOps-практик;</li><li>использование Linux для диагностики;</li><li>обучение у экспертов-практиков;</li><li>участие в живых вебинарах;</li><li>обратная связь по домашним заданиям;</li><li>доступ к закрытому сообществу;</li><li>выпускной проект для портфолио;</li><li>доступ к репозиторию с примерами тестов;</li><li>возможность оплаты курса работодателем.</li></ul><p><b>Недостатки</b></p><ul><li>обязательное вступительное тестирование перед началом;</li><li>курс рассчитан на студентов с базовыми знаниями Python;</li><li>высокая учебная нагрузка (две вечерние сессии в неделю).</li></ul><p><b>Программа обучения</b></p><ul><li>Введение в автоматизацию тестирования</li><li>Тестирование API</li><li>Тестирование UI</li><li>DevOps</li><li>Мобильное тестирование</li><li>Работа с бэкендом</li><li>Другие виды тестирования</li><li>Подготовка к поиску работы</li><li>Проектный модуль и защита выпускного проекта</li></ul><p><a href="https://experts1.ru/vAyDxq?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=7">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>8. <a href="https://experts1.ru/JvBnrm?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=8">Автоматизатор тестирования на Java</a>  | Яндекс Практикум</b></p><p><i>Купите любой курс с выгодой до 20% при оплате сразу или получите скидку 7% за прохождение бесплатной части курса за неделю</i></p><p><a href="https://experts1.ru/JvBnrm?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=8">Получить скидку &gt;&gt;&gt;</a></p><p>В рамках курса студенты осваивают основы языка Java, учатся писать код и применять его для создания автотестов для веб-приложений и API. Программа включает популярные инструменты тестировщика: IntelliJ IDEA, Maven, Git, Selenium WebDriver, Selenide, JUnit, Postman, REST Assured, Allure и Jenkins. Шаг за шагом слушатели погружаются в процесс автоматизации — от базовых конструкций и написания юнит-тестов до разработки архитектуры тестирования и построения полноценного пайплайна CI/CD.</p><p>Отдельные блоки посвящены тестированию интерфейсов, API и баз данных, а также внедрению подхода Behavior-Driven Development с использованием Cucumber и Gherkin. На занятиях студенты выполняют проекты, максимально приближенные к реальным задачам индустрии, и получают обратную связь от опытных специалистов. Завершающим этапом курса становится итоговая работа, где необходимо покрыть автотестами веб-приложение, API и написать юнит-тесты, объединяя все полученные навыки.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-10-06/fb12096a-308f-4908-b879-89069335f240.jpg" alt="" /></figure><ul><li>Стоимость: от 4 204 руб. в месяц (есть рассрочка и налоговый вычет)</li><li>Длительность: 5–6 месяцев (в зависимости от тарифа)</li><li>Формат обучения: онлайн-лекции, интерактивные задания в тренажере, вебинары каждые 2 недели, проекты для портфолио, индивидуальные встречи с наставником, обратная связь от экспертов</li><li>Сертификат: диплом о профессиональной переподготовке</li></ul><p><b>Кому подойдет: </b>ручным тестировщикам, которые хотят перейти в автоматизацию; junior-специалистам, готовым укрепить навыки и освоить Java; действующим QA-инженерам, планирующим карьерный рост.</p><p><b>Преимущества</b></p><ul><li>освоение Java с нуля;</li><li>обучение работе с IntelliJ IDEA и Maven;</li><li>практика с Git и GitHub;</li><li>изучение юнит-тестирования на JUnit 5;</li><li>знакомство с Mockito и DI;</li><li>написание автотестов с Selenium и Selenide;</li><li>тестирование интерфейсов через DevTools;</li><li>автоматизация API с использованием Postman и REST Assured;</li><li>отчетность в Allure;</li><li>построение пайплайнов CI/CD в Jenkins;</li><li>работа с Docker и Kubernetes;</li><li>освоение BDD и Cucumber;</li><li>проектная работа для портфолио.</li></ul><p><b>Недостатки</b></p><ul><li>требуется регулярное выделение времени (не менее 15 часов в неделю);</li><li>часть материалов доступна только в расширенной версии.</li></ul><p><b>Программа обучения</b></p><ul><li>Введение в профессию и основы Git</li><li>Изучение Java: базовый и продвинутый уровни</li><li>Объектно-ориентированное программирование и базовые конструкции</li><li>Юнит-тестирование и работа с JUnit, Mockito</li><li>UI-тестирование на Selenium и Page Object Model</li><li>Тестирование API с Postman, Swagger, REST Assured</li><li>Работа с базами данных и SQLCI/CD, Docker, Kubernetes, Jenkins</li><li>Behavior-Driven Development с Cucumber и Gherkin</li><li>Работа с асинхронными сервисами и Kafka</li><li>Итоговый проект и защита работы</li></ul><p><a href="https://experts1.ru/JvBnrm?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=8">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>9. <a href="https://experts1.ru/MLhyjk?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=9">Инженер по автоматизированному тестированию на JavaScript</a> | Хекслет</b></p><p>С первых занятий студенты начинают программировать на JavaScript, осваивают построение автотестов и их применение к реальным веб-приложениям. Вы научитесь работе с Playwright и Jest, а также интеграционному, модульному и e2e-тестированию. Обучение построено на практических заданиях и проектах: студенты пишут автотесты для учебных сервисов, работают с Git, осваивают CI/CD и Docker, создавая полноценные проекты для портфолио.</p><p>Теоретическая часть подается в доступной форме и дополнена большим количеством упражнений для закрепления материала. Учебный процесс сопровождают практикующие инженеры по тестированию, которые помогают разбираться в сложных темах и корректируют траекторию обучения. Финальный акцент сделан на самостоятельной реализации тестов, проверке приложений с разных сторон и работе с инструментами анализа качества, что позволяет выпускникам выйти на рынок с реальными навыками автоматизации.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-10-06/a4e6e2c0-6d6f-4e26-8626-c6cbc54317d9.jpg" alt="" /></figure><ul><li>Стоимость: от 85 000 руб. (есть рассрочка и акции)</li><li>Длительность: 8 месяцев</li><li>Формат обучения: теория в текстовом и видеоформате, практические задания, проекты на GitHub, домашние упражнения, вебинары, код-ревью и наставничество</li><li>Сертификат: официальный документ Хекслета, ценимый работодателями</li></ul><p><b>Кому подойдет: </b>ручным тестировщикам, которые переходят в автоматизацию; айти-специалистам, решившим сменить направление; действующим инженерам по тестированию для обновления знаний.</p><p><b>Преимущества</b></p><ul><li>упор на практику с первых занятий;</li><li>изучение JavaScript в контексте тестирования;</li><li>освоение Playwright для UI-тестов;</li><li>работа с Jest и Vitest для модульного тестирования;</li><li>интеграция Git и командной строки в учебный процесс;</li><li>проекты с реальными бизнес-задачами;</li><li>портфолио на GitHub с завершенными проектами;</li><li>коммерческие задачи от партнеров;</li><li>наставничество от опытных инженеров;</li><li>карьерное сопровождение через Хекслет.Карьеру;</li><li>подготовка резюме и собеседований;</li><li>поддержка при трудоустройстве;</li><li>возможность академического отпуска при необходимости.</li></ul><p><b>Недостатки</b></p><ul><li>интенсивный формат может быть сложен для новичков;</li><li>часть проектов предполагает самостоятельное погружение без пошаговых инструкций.</li></ul><p><b>Программа обучения</b></p><ul><li>Основы JavaScript и настройка окружения</li><li>Работа с Git и командной строкой</li><li>Юнит- и интеграционное тестирование на Jest</li><li>Асинхронное программирование и тестирование API</li><li>E2E-тестирование с Playwright</li><li>Работа с HTML, CSS и DOM API</li><li>Тестирование бэкенда и взаимодействие с базами данных</li><li>CI/CD и основы Docker</li><li>Учебные и коммерческие проекты для портфолио</li><li>Итоговый проект с полной автоматизацией веб-приложения</li></ul><p><a href="https://experts1.ru/MLhyjk?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=9">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>10. <a href="https://experts1.ru/xomLeC?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=10">Автоматизатор тестирования на Python</a> | Яндекс Практикум</b></p><p><i>Купите любой курс с выгодой до 20% при оплате сразу или получите скидку 7% за прохождение бесплатной части курса за неделю</i></p><p><a href="https://experts1.ru/xomLeC?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=10">Получить скидку &gt;&gt;&gt;</a></p><p>Студенты осваивают базовый синтаксис Python и сразу начинают применять его для написания автотестов. Программа включает работу с pytest, Selenium WebDriver, Allure, Git, DevTools, а также использование XPath и CSS-локаторов. Вас научат архитектуре приложений, методам тестирования API и организации тестовых сценариев. Обучение строится на практике: студенты создают проекты для портфолио, покрывают тестами веб-приложения, API и пишут юнит-тесты с использованием моков, стабов и Spy. Курс разработан опытными инженерами по тестированию из Яндекса и других крупных IT-компаний, что гарантирует актуальность материалов и их связь с реальной индустрией.</p><p>Теоретический материал подается в удобной форме и закрепляется интерактивными заданиями в тренажере, а регулярные вебинары позволяют разбирать сложные кейсы вместе с экспертами. В результате выпускники получают навыки построения процессов автоматизации, работы с CI/CD и Docker, а также опыт создания комплексных отчетов о тестировании. Дополнительно студенты формируют портфолио с реальными проектами, которое подтверждает их компетенции перед работодателями.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-10-06/05ce0e14-08f1-4391-bfe7-4f2cd4e638b5.jpg" alt="" /></figure><ul><li>Стоимость: от 4 204 руб. в месяц (есть рассрочка и налоговый вычет)</li><li>Длительность: 5–6 месяцев (в зависимости от тарифа)</li><li>Формат обучения: видеолекции и текстовые материалы, тренажер для практики, домашние задания, вебинары каждые 2 недели, проекты для портфолио, обратная связь от наставников</li><li>Сертификат: диплом о профессиональной переподготовке или справка об обучении</li></ul><p><b>Кому подойдет:</b> ручным тестировщикам, стремящимся перейти в автоматизацию; инженерам QA, которые хотят повысить квалификацию; айти-специалистам, решившим освоить новое направление.</p><p><b>Преимущества</b></p><ul><li>обучение на Python с нуля;</li><li>освоение pytest для юнит-тестов;</li><li>практика с Selenium WebDriver;</li><li>работа с DevTools и XPath;</li><li>создание отчетов в Allure;</li><li>тестирование API с Postman и Swagger;</li><li>изучение принципов архитектуры приложений;</li><li>работа с базами данных и SQL;</li><li>освоение CI/CD и Docker;</li><li>практика в реальных проектах;</li><li>7–10 проектов для портфолио;</li><li>доступ к вебинарам и Q&amp;A-сессиям;</li><li>поддержка наставников и экспертов Яндекса.</li></ul><p><b>Недостатки</b></p><ul><li>высокая нагрузка (нужно минимум 15 часов в неделю);</li><li>часть тем и проектов доступна только в расширенной версии;</li><li>полностью онлайн-формат без живых встреч;</li><li>для новичков могут быть сложны темы ООП и CI/CD.</li></ul><p><b>Программа обучения</b></p><ul><li>Введение и знакомство с Git</li><li>Основы Python и базовые конструкции</li><li>Объектно-ориентированное программирование</li><li>Инкапсуляция и обработка исключений</li><li>Юнит-тестирование с использованием pytest</li><li>UI-тестирование на Selenium и DevTools</li><li>Применение Page Object Model и Allure</li><li>Тестирование API и работа с Postman, Swagger</li><li>Основы архитектуры и организация процессов тестирования</li><li>Итоговый проект с полной автоматизацией веб-приложения</li><li>Дополнительный модуль по SQL и тестированию баз данных</li><li>CI/CD и работа с Docker (в расширенной версии)</li></ul><p><a href="https://experts1.ru/xomLeC?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=10">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><h2>Еще 4 курса по автоматизации тестирования</h2><p>Я нашла также дополнительные курсы по автоматизации тестирования, которые помогут освоить востребованные инструменты и навыки для построения карьеры в QA. Эти программы отличаются форматом, длительностью и набором технологий, но все они ориентированы на практику и подготовку к работе с реальными проектами.</p><ul><li><a href="https://experts1.ru/hfDcaI?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=netop">QA-инженер по тестированию: с нуля до автоматизатора</a> от «Хекслета». Курс построен так, чтобы с нуля подготовить специалиста к профессии QA-инженера и постепенно довести его до уровня автоматизатора на JavaScript. В программе много практики: студенты тестируют реальные веб- и мобильные приложения, пишут баг-репорты, создают автотесты с использованием Vitest и Playwright, осваивают работу с API и SQL. Обучение сопровождается проектами для портфолио и консультациями наставников, а завершение курса подтверждается сертификатами по двум профессиям.</li><li><a href="https://experts1.ru/mlKQav?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=netop">Тестировщик в IT</a> от Yagla. Курс рассчитан на тех, кто хочет быстро войти в IT и освоить профессию тестировщика с нуля. Программа охватывает ручное и автоматизированное тестирование, работу с базами данных, инструментами Git, SQL, Selenium, Postman и другими технологиями. Обучение построено на практике и реальных кейсах, к окончанию курса формируется портфолио и выдается сертификат, подтверждающий квалификацию.</li><li><a href="https://experts1.ru/HwfVya?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=netop">Тестирование с Pytest</a> от «Хекслета». Курс обучает работе с Pytest и современными техниками автоматизированного тестирования на Python. Студенты осваивают модульные тесты, фикстуры, подход TDD, а также продвинутые инструменты вроде моков, стабов и манкипатчинга. Занятия построены на практике с использованием виртуальной среды и автоматической проверкой решений, что позволяет сразу закреплять полученные знания.</li><li><a href="https://experts1.ru/vgbHtD?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=netop">Инженер по тестированию</a> от Skillbox. Программа готовит специалистов по ручному и автоматизированному тестированию с упором на современные ИИ-инструменты. В процессе обучения студенты осваивают Java, Python или JavaScript для написания автотестов, учатся работать с Postman, Selenium, SQL, Git и Unity, а также тестируют реальные проекты от компаний-партнеров. В курс добавлены блоки по тестированию мобильных приложений и игр, что расширяет возможности трудоустройства и формирует сильное портфолио.</li></ul><h2>Еще 2 курса по автоматизации тестирования на Java</h2><p>Если вы хотите углубить знания в автоматизации тестирования на Java, эти два курса станут отличным выбором. Они помогут закрепить навыки создания автотестов, работы с современными инструментами и подготовят к реальным задачам в IT-индустрии.</p><ul><li><a href="https://experts1.ru/ygJzmA?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=netop">Автоматизация тестирования ПО (Java). Basic</a> от Level Up. Курс знакомит с основами автоматизации тестирования на Java и учит применять популярные инструменты вроде Selenium, Selenide, Cucumber, JUnit и RestAssured. Обучение построено на сочетании теории и практики, предполагает работу с CI/CD и Jenkins, а также формирование базовых навыков написания автотестов. По окончании программы студенты получают представление о роли инженера по автоматизации и приобретают навыки, достаточные для работы на позиции junior.</li><li><a href="https://experts1.ru/kxMyQe?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=netop">Автоматизированное тестирование ПО на Java </a>от Университета «Иннополис». Программа знакомит с автоматизацией тестирования на Java и учит работать с ключевыми инструментами — Selenium, Selenide, RestAssured, Docker и CI/CD. Студенты осваивают написание автотестов для UI и API, работу с базами данных и основы BDD. Обучение построено на практических заданиях и завершается дипломом о профессиональной переподготовке, что позволяет претендовать на позиции AQA-инженера.</li></ul><h2>Еще 4 курса по автоматизации тестирования на Python</h2><p>Для тех, кто уже знаком с основами автоматизации тестирования на Python, мы подготовили подборку еще четырех курсов. Они помогут прокачать навыки, освоить новые инструменты и получить опыт работы с реальными проектами.</p><ul><li><a href="https://experts1.ru/mXLcjl?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=netop">Автоматизация тестирования на Python</a> от «Контур.Школы». Программа обучает автоматизации тестирования на Python и помогает создавать автотесты для API, мобильных и веб-приложений. В процессе занятий студенты осваивают PyTest, Selenium, а также принципы Page Object Model. Курс сочетает теорию с практическими задачами и завершается итоговым тестом, после которого выдается официальный документ о повышении квалификации.</li><li><a href="https://experts1.ru/EzpixF?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=netop">Тестировщик на Python</a> от SkillFactory. Программа обучает ручному и автоматизированному тестированию, в том числе работа с Python, PyTest, Selenium, SQL и REST API. В процессе обучения студенты выполняют проекты от реальных компаний, составляют баг-репорты и тест-кейсы, проходят практику на коммерческих сервисах. По окончании выдается диплом о профессиональной переподготовке или сертификат, что позволяет претендовать на позиции тестировщика и QA-инженера.</li><li><a href="https://experts1.ru/wgraUY?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=netop">Автоматизированное тестирование на Python</a> от EasyUM. Курс помогает освоить автоматизацию тестирования на Python с нуля и шаг за шагом перейти к созданию автотестов для веб-приложений и API. В программе есть работа с PyTest, Selenium, Docker и Jenkins, а также основы DevOps. Обучение построено на практике, есть реальные задания и проекты для портфолио, а по завершении выдается сертификат и проводится подготовка к трудоустройству.</li><li><a href="https://experts1.ru/sJUxmi?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=netop">Автоматизированное тестирование на Python</a> от Teachmeskills. Курс учит создавать автотесты на Python с использованием Selenium, PyTest, Docker и Jenkins. В процессе обучения студенты осваивают тестирование API и веб-приложений, а также работу с базами данных и Linux. Программа построена на практике, предполагает также разработку реального проекта для портфолио и завершается защитой диплома с поддержкой в трудоустройстве.</li></ul><h2>Бесплатные курсы по автоматизации тестирования</h2><p>Также нашла бесплатные курсы по автоматизации тестирования, которые подойдут для первого знакомства с профессией. Подобные программы помогают без вложений попробовать себя в написании автотестов и понять, насколько эта сфера интересна. Бесплатный формат удобен для начинающих, а полученные знания можно развить уже на более серьезных учебных программах.</p><p><b>1. <a href="https://experts1.ru/eavRjG?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=netop">Легкий старт в профессию тестировщика</a> — Skillbox</b></p><p>Этот интенсив подойдет новичкам, которые хотят попробовать себя в тестировании и понять, насколько им близка эта профессия. За несколько дней слушатели познакомятся с базовыми принципами ручного и автоматизированного тестирования, узнают о юзабилити и стандартах работы в IT-компаниях. Участники получат практику в поиске ошибок, составлении баг-репортов и запуске первых автотестов с помощью Selenium IDE. Такой формат обучения позволяет быстро погрузиться в профессию и сформировать первые навыки.</p><p><b>Главное о курсе:</b></p><ul><li>знакомство с процессами тестирования и профессией QA;проведение первых автотестов с использованием Selenium IDE;</li><li>освоение правил юзабилити и нефункционального тестирования;</li><li>практика в составлении баг-репортов и работе с ошибками;</li><li>выполнение интерактивных заданий на реальных примерах.</li></ul><p><b>2. <a href="https://experts1.ru/jGkVus?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=netop">Основы Java для автоматизации тестирования</a> — Stepik</b></p><p>Курс рассчитан на тех, кто хочет освоить Java с нуля и в дальнейшем применять его для автоматизации тестирования. Он подойдет будущим тестировщикам-автоматизаторам, а также всем, кто хочет разобраться в основах языка и понять, стоит ли продолжать обучение. Программа построена так, чтобы постепенно освоить ключевые элементы Java, научиться работать с ООП и закрепить знания практикой. Обучение проходит в удобном темпе и позволяет вернуться к материалам в любое время.</p><p><b>Главное о курсе:</b></p><ul><li>базовые знания языка Java и основы ООП;</li><li>создание первых программ и работа с массивами, строками и классами;</li><li>использование принципов инкапсуляции, наследования и полиморфизма;</li><li>практика обработки исключений и документирования кода;</li><li>более 70 часов обучения с тестами и интерактивными заданиями.</li></ul><p><b>3. <a href="https://experts1.ru/jdXwqC?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=netop">Тестировщик программного обеспечения: с нуля до первых проектов</a> — «Содействие занятости»  </b></p><p>Курс предназначен для тех, кто хочет освоить профессию тестировщика с нуля и получить востребованные навыки работы с современными инструментами. Он подойдет людям, ищущим работу, желающим сменить профессию или повысить квалификацию. Программа дает понимание основ тестирования, практику работы с SQL и Postman, а также опыт оформления баг-репортов. Обучение бесплатное, проводится онлайн и завершается выдачей документа установленного образца.</p><p><b>Главное о курсе:</b></p><ul><li>знакомство с базовыми принципами тестирования ПО;</li><li>работа с тестовой документацией и баг-репортами;</li><li>практика в SQL и тестировании API через Postman;</li><li>использование инструментов Jira, Яндекс Трекера, TestRail и DevTools;</li><li>выполнение итогового проекта и получение удостоверения о квалификации.</li></ul><p><b>4. <a href="https://experts1.ru/ubEkcF?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=netop">Автоматизация тестирования с помощью Selenium и Python</a> — Stepik</b></p><p>Курс рассчитан на начинающих специалистов в тестировании, которые хотят перейти к автоматизации и освоить работу с Python и Selenium. Он подойдет тем, кто уже знаком с базовой терминологией QA и хочет научиться писать автотесты для веб-интерфейсов. Программа помогает освоить популярные фреймворки, применить хорошие практики проектирования тестов и получить навыки, востребованные на рынке. Обучение бесплатное и завершается сертификатом.</p><p><b>Главное о курсе:</b></p><ul><li>написание автотестов на Python с использованием Selenium;</li><li>работа с веб-элементами и построение стабильных тестов;</li><li>применение pytest и других фреймворков для автоматизации;</li><li>использование паттерна PageObject для удобной поддержки сценариев;</li><li>практика работы с git и Github.</li></ul><p><b>5. <a href="https://experts1.ru/UdirwN?sub1=tproger-kf&amp;sub2=kursy-po-avtomatizaczii-testirovaniya&amp;sub4=netop">Тесты и тренажеры для тестировщиков</a> — LearnQA </b></p><p>Курс подойдет тем, кто только начинает путь в тестировании и хочет оценить свой уровень знаний или закрепить основы на практике. Он поможет проверить понимание популярных инструментов, выявить пробелы и подготовиться к собеседованиям. Формат построен так, чтобы студент мог не только пройти теорию, но и потренироваться в симуляторах реальных задач. Такой подход позволяет получить уверенность перед стартом карьеры.</p><p><b>Главное о курсе:</b></p><ul><li>тесты по Git, SQL, Java, Bash и базовым знаниям IT;</li><li>тренажеры с эмуляцией рабочих ситуаций и поиском багов;</li><li>подготовка к собеседованиям через практические задания;</li><li>возможность закрепить знания и проверить себя в удобном формате.</li></ul><h2>Видеоуроки по автоматизации тестирования</h2><p>Я предлагаю не игнорировать, а просмотреть и видеоуроки по автоматизации тестирования, чтобы еще глубже понять тему. Это дает возможность наглядно увидеть процесс работы и повторить действия за преподавателем. Видео поможет закрепить теорию и быстрее перейти к практике.</p><ol><li><a href="https://www.youtube.com/playlist?list=PLhoN48bkW44GNtpS3qUvCHXbBCVEGZjRG">Введение в автоматизацию для QA</a> — Simple Automation. Плейлист подойдет тем, кто хочет разобраться в автоматизации тестирования с нуля и получить базовые навыки работы с основными инструментами. Видеоуроки построены последовательно — от теории и языка Java до работы с Git, Maven, JUnit, REST Assured и Selenium WebDriver. Такой формат помогает шаг за шагом освоить практику и закрепить знания через наглядные примеры.</li><li><a href="https://www.youtube.com/playlist?list=PLB2iiSfKWtvykq9s0plSVI_Du60i0iphU">Автоматизация тестирования с Pytest и Python</a> — SolveMe. Плейлист подойдет тем, кто хочет научиться работать с Pytest и применять Python для автоматизации тестирования на практике. В уроках разбираются базовые приемы написания автотестов, работа с фикстурами, декораторами и генерацией отчетов. Отдельные видео посвящены использованию Pydantic, SQLAlchemy и Docker, что позволяет получить более глубокое понимание современного тестирования.</li><li><a href="https://www.youtube.com/playlist?list=PLZqgWWF4O-ziBZVXN19WcRHPM5DkH672c">Автоматизация тестирования java + selenium webdriver</a> — Алексей Маршал. Плейлист поможет тем, кто хочет освоить автоматизацию тестирования на Java с использованием Selenium WebDriver. В видеоуроках объясняются основы работы с DOM, локаторами, XPath и CSS-селекторами, а также показано, как взаимодействовать с элементами интерфейса. Отдельное внимание уделяется ожиданиям, работе с модальными окнами, вкладками браузера и построению фреймворка на основе PageObject.</li><li><a href="https://www.youtube.com/playlist?list=PLu2jtpHCDMuvb2o_uQesvGZEzbovgz_3i">Автоматизация на пальцах</a> — Стас Пешкур. Плейлист создан для тех, кто хочет разобраться в автоматизации тестирования на практике и понять ее основы простым языком. В видео разбираются ключевые инструменты и подходы, работа с API-тестами, использование Rest Assured, Cucumber, Selenide и Page Object. Также показаны примеры настройки Maven, Jenkins и Gitlab CI/CD, создания отчетов в Allure и отладки кода на реальных задачах.</li><li><a href="https://www.youtube.com/playlist?list=PLSf2MMXhdBGqMmU6R3pObw223LesJ9ddl">QA с нуля</a> — Александр Хвастович. Этот плейлист подойдет тем, кто только начинает путь в тестировании и хочет понять основы профессии с нуля. В видеоуроках разбираются ключевые темы — от базовых принципов QA и методологий разработки до тестовой документации, работы с Jira, Git и SQL. Формат построен так, чтобы постепенно вести новичка от теории к первым практическим навыкам и подготовке к старту карьеры в IT.</li></ol><h2>Часто задаваемые вопросы (FAQ)</h2><p>Курсы по автоматизации тестирования на Python стабильно занимают верхние позиции в рейтингах IT-обучения. Это объясняется сочетанием доступности языка, высокой востребованности специалистов и тем, что такие программы рассчитаны даже на новичков без опыта. Мы собрали ответы на самые популярные вопросы, которые помогают понять, чего ожидать от обучения и как строится процесс подготовки.</p><h4>Почему именно курсы по автоматизации тестирования на Python пользуются наибольшим спросом среди новичков в IT?</h4><p>Python отличается простым синтаксисом и богатым набором инструментов для тестирования. В курсах Skillbox и Яндекс Практикума студенты начинают с основ языка и сразу переходят к работе с Pytest и Selenium, что позволяет быстро освоить профессию и собрать портфолио.</p><h4>За какой срок реально перейти от нуля до трудоустройства в профессии тестировщика-автоматизатора на Python?</h4><p>Срок зависит от программы: от 5–6 месяцев в Яндекс Практикуме и OTUS до года в Skypro. Нетология предлагает 14-месячное обучение с углублением в ручное тестирование, автоматизацию и нейросети. Такой диапазон позволяет выбрать формат в зависимости от целей и доступного времени.</p><h4>Что конкретно умеют делать после завершения курса по автоматизации тестирования на Python выпускники профильных программ?</h4><p>Выпускники осваивают написание UI- и API-тестов, создание отчетов в Allure, работу с Jenkins, Docker и CI/CD. В Нетологии студенты дополнительно учатся использовать Cypress и Playwright, а в Skillbox углубляются в DevOps-практики и архитектуру тестов.</p><h4>Выбор курса: предпочесть программу с гарантией трудоустройства или сосредоточиться на содержании и уровне подготовки?</h4><p>Skypro и Нетология предоставляют карьерное сопровождение и помощь в поиске работы. В OTUS и Хекслете акцент делается на практических проектах и формировании портфолио. Поэтому выбор зависит от того, что важнее — поддержка в трудоустройстве или глубина подготовки.</p><h4>На каких инструментах делают упор в программах по автоматизации тестирования: Selenium, Pytest или другие решения?</h4><p>Почти в каждом курсе присутствуют Selenium и Pytest. В GeekBrains+Skillbox акцент дополнен Postman, SQL и Jira. В Хекслете главными инструментами становятся Playwright и Jest, а в Нетологии изучают также Cypress и Puppeteer.</p><h4>Подойдут ли курсы по автоматизированному тестированию тем, у кого нет технического образования?</h4><p>Да, большинство программ рассчитано на новичков. В Skypro и Яндекс Практикуме есть вводные блоки по основам тестирования и Python, а в Skillbox добавлены модули Python Basic и Advanced.</p><h4>Нужен ли практический опыт ручного тестирования прежде чем переходить к автоматизации тестов ПО?</h4><p>Некоторые школы начинают именно с ручного тестирования. В Нетологии и Skypro студенты сначала осваивают баг-репорты и тест-дизайн, а затем переходят к автоматизации. В OTUS требуется базовое знание Python, поэтому упор сразу делается на автотесты.</p><h4>Какие карьерные возможности открывает освоение автоматизации тестирования веб-приложений?</h4><p>Выпускники курсов могут претендовать на должности QA Automation Engineer или Python QA Engineer. Например, в GeekBrains+Skillbox студенты учатся работать с CI/CD и SQL, а в Яндекс Практикуме формируют портфолио из 10 проектов, что помогает быстрее выйти на рынок.</p><h4>Включают ли топовые школы обучение API-тестированию в базовую образовательную программу?</h4><p>Да, API-тестирование есть почти в каждом курсе. В Skypro студенты осваивают Postman и SoapUI, в OTUS работают с REST Assured, а в Яндекс Практикуме применяют Postman и Swagger.</p><h4>Содержат ли современные образовательные программы модуль по работе с базами данных и изучению SQL для автоматизаторов?</h4><p>Да, SQL включен в программы большинства школ. В Skillbox есть отдельный модуль для работы с базами, в Нетологии SQL используется в нагрузочном тестировании, а в Яндекс Практикуме он входит в базовую часть курса.</p><h4>Какие практические работы включают в портфолио выпускники программ по автоматизированному тестированию?</h4><p>Это проекты с автотестами для веб-приложений, API и мобильных сервисов, отчеты в Allure и кейсы с CI/CD. В OTUS выпускники создают собственный фреймворк, в Хекслете портфолио публикуется на GitHub, а в Яндекс Практикуме итоговый проект объединяет UI-, API- и юнит-тесты.</p><p>Профессия тестировщика-автоматизатора остается одной из самых востребованных в IT. Начинающие специалисты могут рассчитывать на зарплату от 70 000–90 000 руб., а опытные инженеры в крупных городах, особенно с навыками Python, Java и современными фреймворками, зарабатывают от 250 000 руб. и выше. Автоматизация открывает путь к стремительному карьерному росту, ведь компании ценят специалистов, которые умеют экономить ресурсы и ускорять выпуск продуктов. Выбирая курсы по автоматизации тестирования, важно обращать внимание на практическую часть, количество проектов и поддержку экспертов — это ключ к формированию портфолио и реальным навыкам, которые сразу пригодятся на рынке труда.</p><p><i>А теперь хочу услышать ваше мнение: поделитесь в комментариях, какие курсы по автоматизации тестирования вам показались наиболее полезными и эффективными, и что помогло вам быстрее освоить профессию.</i></p>]]></content:encoded>
    </item>
    <item>
      <title>Обзор лучших инструментов для ведения проектов и задач</title>
      <link>https://tproger.ru/articles/obzor-luchwih-instrumentov-dlya-vedeniya-proektov-i-zadach</link>
      <comments>https://tproger.ru/articles/obzor-luchwih-instrumentov-dlya-vedeniya-proektov-i-zadach?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Марина]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/obzor-luchwih-instrumentov-dlya-vedeniya-proektov-i-zadach</guid>
      <description><![CDATA[<p>Сравнительный обзор 15 лучших таск-трекеров и сервисов для планирования задач в 2025 году: Kaiten, Яндекс.Трекер, Weeek и другие. Выберите подходящий планировщик задач для сотрудников вашей команды.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/obzor-luchwih-instrumentov-dlya-vedeniya-proektov-i-zadach">Обзор лучших инструментов для ведения проектов и задач</a>»</p>]]></description>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Бизнес]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 13 Sep 2025 12:00:04 GMT</pubDate>
      <content:encoded><![CDATA[<p>Постоянно растущий объем задач, жесткие дедлайны и рассредоточенная коммуникация в многочисленных чатах — знакомые условия работы? Эффективное планирование становится критически важным навыком, а специализированные цифровые инструменты — надежными союзниками в борьбе с хаосом.</p><p>Собрали 15 наиболее эффективных платформ, которые помогают систематизировать профессиональные и личные задачи и организовать проектное управление.</p><h2>Что такое таск-трекер</h2><p><b>Таск-трекер или таск-менеджер</b> — решения для визуализации и планирования работы. Эти платформы обеспечивают порядок и контроль рабочих процессов за счет разнообразных инструментов.</p><p>Ценность таких систем — отображение задач с четкими сроками и приоритетами.</p><p>Среди востребованных функций таск-трекеров:</p><ul><li><b>Списки задач</b> — базовый инструмент для фиксации всех дел. Позволяет определять приоритетность и отслеживать сроки.</li><li><b>Календарь </b>— визуальное распределение задач по дням, неделям, месяцам. Облегчает создание расписаний, установку оповещений и контроль дедлайнов.</li></ul><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-09-09/d3cfbd95-1729-4494-add5-332e4abad25f.png" alt="" /><figcaption>Канбан-доска с карточками задач в Kaiten</figcaption></figure><ul><li><b>Диаграмма Ганта </b>— инструмент для проектного управления. Визуализирует взаимосвязи между задачами, параллельные и последовательные процессы, а также позволяет прогнозировать финальные сроки реализации проектов.</li></ul><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-09-09/a26678ce-e959-45d2-a9f2-7fab03a69574.png" alt="" /><figcaption>Диаграмма Ганта с отображением нагрузки на сотрудников в Kaiten</figcaption></figure><p>За счет этих возможностей современные таск-менеджеры превратились из простых планировщиков в полноценные системы для организации рабочих процессов любой сложности.</p><h2>Кому и зачем нужны таск-трекеры</h2><p>Таск-трекер — универсальный инструмент, который полезен как отдельным специалистам, так и большим командам.</p><ol><li><b>Предприниматели и руководители</b> используют таск-менеджеры, чтобы контролировать проекты, видеть загрузку команды и отслеживать сроки поручений.</li><li><b>Команды получают прозрачный рабочий процес</b>с: каждый понимает, что делать именно сейчас, кто за что отвечает и на каком этапе находится работа.</li><li><b>Фрилансеры и индивидуальные специалисты</b> ценят таск-трекеры за возможность структурировать собственные задачи, планировать время и не держать все детали в голове.</li><li><b>Студенты и частные пользователи</b> применяют их для личного планирования: учеба, хобби, бытовые дела, подготовка мероприятий.</li></ol><p>Какие задачи решает таск-трекер:</p><ul><li>фиксирует и систематизирует все личные и рабочие дела в одном месте со всей информацией по ним;</li><li>помогает расставить приоритеты и дедлайны для фокусировки на важном;</li><li>показывает загрузку сотрудников для равномерного распределения работы;</li><li>наглядно демонстрирует прогресс по проекту;</li><li>снижает риск ошибок и забытых дел;</li><li>экономит время за счет автоматизации напоминаний и планирования.</li></ul><p>Таск-трекеры пригодятся всем, кто хочет работать структурировано, быстрее достигать целей и не тонуть в хаосе дел.</p><h2>Как подобрать подходящий таск-трекер</h2><p>Чтобы не потеряться в многообразии вариантов и выбрать инструмент, который будет удобен для ваших задач, учитывайте несколько основных критериев:</p><ul><li><i>Цели использования</i>. Определите, для чего вам нужен таск-трекер —личное планирование, управление командой, контроль проектов или комплексный бизнес-инструмент.</li><li><i>Функциональность. </i>Нужны вам только списки дел или важны такие функции, как <a href="https://kaiten.ru/blog/chto-takoe-kanban-doska/">канбан-доски</a>, диаграммы Ганта, календари, интеграции с CRM и почтой? Чем сложнее процессы, тем богаче должен быть функционал.</li><li><i>Удобство интерфейса</i>. Решение должно быть понятным и простым в работе. Если инструмент сложнее самих задач, его вряд ли будет удобно применять.</li><li><i>Совместная работа.</i> Для команд важны функции распределения ролей, уведомлений, комментариев и обмена файлами.</li><li><i>Интеграции</i>. Поддержка связки с другими сервисами (Slack, Google Drive, e-mail, CRM и др.) значительно упрощает организацию рабочих процессов.</li><li><i>Стоимость.</i> Многие сервисы предлагают бесплатные версии с базовым функционалом. Для старта этого часто достаточно, а при расширении можно перейти на платные тарифы.</li><li><i>Мобильность. </i>Удобное мобильное приложение позволяет контролировать задачи в любом месте.</li></ul><p>Вполне возможно, что пока вы найдете оптимальный сервис, вам придется попробовать в действии несколько из них. Собрали список лучших таск-трекеров, доступных для пользователей в РФ.</p><h2>Kaiten</h2><p><a href="https://kaiten.ru/">Kaiten</a> — цифровая платформа для планирования и контроля задач, которая подходит отдельным специалистам и компаниям любого масштаба.</p><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-09-09/56223bb8-b0a5-44a9-9200-b84c1b1a0987.png" alt="" /></figure><p><b>Преимущества</b>:</p><ul><li>Создание неограниченного количества рабочих пространств и досок.</li><li>Визуализация данных на канбан-досках, <a href="https://kaiten.ru/blog/plan-proiekta-na-primierie-diaghrammy-ganta/">диаграмме Ганта</a>, календаре или таймлайне.</li><li>Легкий перенос данных из Jira, Trello, Notion и других систем.</li><li>Интеграция с Google Календарем, Telegram, GitHub, GitLab, Tilda и др.</li><li>Гибкая настройка процессов любой сложности благодаря простому интерфейсу.</li><li>Создание и совместное редактирование документов прямо в системе.</li><li>Создание связанных задач.</li><li>Получение детальных <a href="https://kaiten.ru/features/reports/">отчетов</a> для глубокой аналитики рабочих процессов.</li><li>Обсуждение задач во встроенном чате и уведомления о событиях.</li><li>Работа из любой точки через <a href="https://kaiten.ru/blog/mobile-app-kaiten">мобильное приложение</a> для iOS и Android.</li><li>Оплата только за нужные функции благодаря опциональным модулям.</li></ul><p><b>Недостатки</b>:</p><ul><li>Обилие функций может вызвать сложности у начинающих пользователей.</li><li>В настоящий момент ограничены возможности для кастомизации досок.</li></ul><p><b>Стоимость</b>: бесплатный план допускает создание 3 рабочих пространств и 5 досок с безлимитным количеством колонок и задач. К каждой карточке можно прикрепить только 1 чек-лист, а также создать до 5 пользовательских полей.</p><p><i>На этом тарифе к системе можно подключать до 5 пользователей. При этом доступно редактирование документов, создание базы знаний и обширный выбор интеграций с внешними сервисами.</i></p><p>Цена расширенных тарифов стартует от 180 ₽ ежемесячно за одного участника. Они расширяют количество пространств, досок и подключаемых пользователей, позволяют просматривать углубленную аналитику и подключать дополнительные модули под нужды бизнеса (Канбан, Скрам, ГАНТ и Ресурсное планирование и другие).</p><p>Полный спектр возможностей и все модули можно протестировать бесплатно в течение 2 недель.</p><h2>O!task</h2><p><b>O!task </b>— сервис, который можно использовать как бесплатный таск-трекер задач для команды. Разработчики регулярно дополняют его новыми функциями, и сейчас сервис предлагает набор полезных инструментов для планирования работы.</p><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-09-09/88a8fc8a-c44d-4df0-96fa-c3a7a11377f9.png" alt="" /></figure><p><b>Преимущества</b>:</p><ul><li>Создание неограниченного числа задач.</li><li>Ведение учета финансовых операций с привязкой к проектам и клиентам.</li><li>Использование гибких <a href="https://kaiten.ru/blog/chto-takoe-agile-metodologiya/">Agile-подходов</a> для настройки рабочих процессов.</li><li>Встроенный инструмент «Блокнот»  для фиксации заметок и идей.</li><li>Таймеры для анализа личной и командной продуктивности.</li><li>Встроенные инструменты коммуникации (комментарии в задачах) и интеграция с внешними каналами (Telegram, email).</li><li>Возможность прикрепления файлов к задачам.</li><li>Формирование корпоративной базы знаний для <a href="https://kaiten.ru/blog/obuchieniie-komandy-rabotie-s-kaiten/">обучения сотрудников</a>.</li><li>Обработка входящих запросов через встроенную CRM-систему.</li><li>Совместимость с популярными сервисами (Google Docs, Figma и др.).</li></ul><p><b>Недостатки</b>:</p><ul><li>Для работы требуется стабильное интернет-соединение.</li><li>Отсутствуют нативные приложения для ПК и мобильных телефонов, доступ в систему осуществляется только через браузер.</li></ul><p><b>Стоимость</b>: бесплатный план включает базовый функционал для команды до 2 человек и 250 МБ дискового пространства.</p><p>Стоимость платных подписок начинается от 399 ₽ за юзера/месяц с расширением лимитов на количество пользователей и объема хранилища. На премиум-тарифах вам доступны персональные менеджеры и техподдержка</p><h2>Яндекс Трекер</h2><p><b>Яндекс Трекер </b>— сервис для планирования задач и организации рабочих процессов, эффективный для ведения личных дел и координации командных проектов. Платформа сочетает настраиваемые инструменты визуализации задач, расширенные возможности для общения и большой выбор интеграций с экосистемой Яндекс и сторонними приложениями.</p><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-09-09/69d5eb67-1187-45d0-967c-0bd02c704323.png" alt="" /></figure><p><b>Преимущества</b>:</p><ul><li>Разные форматы досок: классический Канбан, бэклоги, спринты (особенно востребованы в IT-среде).</li><li>Создание до 2 000 задач в рамках одной доски.</li><li>Гибкое распределение ролей: ответственные, соисполнители, наблюдатели.</li><li>Встроенная система комментирования и обсуждения в карточках.</li><li>Тайм-трекинг и анализ трудозатрат.</li><li>Группировка задач по командам, отделам или процессам.</li><li>Система уведомлений об изменениях в задачах.</li><li>Таймеры для оперативной обработки запросов.</li><li>Прикрепление файлов к карточкам.</li><li>Связи и зависимости между задачами.</li><li>Детализированная система отчетности.</li><li>Редактор без правки кода для персонализации рабочего пространства.</li><li>Бесплатные обучающие материалы для новичков.</li><li><a href="https://kaiten.ru/blog/integrations-kaiten">Интеграция</a> с сервисами экосистемы Яндекс.</li><li>API-доступ и импорт данных из Jira, Excel и других систем.</li></ul><p><b>Недостатки</b>:</p><ul><li>Обязательная регистрация аккаунта в Яндексе.</li><li>Ограниченная аналитика для Scrum и Kanban подходов.</li><li>Лимиты на количество задач в канбан-досках</li><li>Файлы хранятся исключительно в Yandex Cloud.</li><li>Некоторые пользователя считают интерфейс перегруженным.</li></ul><p><b>Стоимость</b>: бесплатный план включает до 5 пользователей.</p><p>Платные подписки стоят от 449 ₽ за чел/мес (при оплате за 3 месяца). Продвинутые тарифы предоставляют увеличенный объем хранилища и количество участников в телеконференциях, архив писем и другие опции.</p><p>Для команд от 250 человек действует индивидуальное ценообразование.</p><p>Тестовый доступ длится 14 дней и стоит 1 ₽ за пользователя.</p><h2>WEEEK</h2><p><b>WEEEK </b>— рабочее пространство, которое объединяет возможности менеджера задач, канбан-досок, CRM и базы знаний. Уникальность сервиса заключается в фокусе на недельном планировании, что позволяет концентрироваться на приоритетах и гарантировать завершение начатого.</p><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-09-09/58259131-4def-46c1-a2ab-8f2a0f3f1666.png" alt="" /></figure><p><b>Преимущества</b>:</p><ul><li>Отсутствие ограничений на количество проектов и рабочих пространств.</li><li>Поэтапное ведение задач (до 6 шагов) с привязкой исполнителей, сроков и меток.</li><li>Напоминания через мобильное приложение, SMS, e-mail и Telegram.</li><li>Встроенная система CRM для работы с клиентскими запросами.</li><li>Мониторинг загрузки сотрудников и контроль прогресса по проектам.</li><li>Удобный интерфейс, который легко освоить без обучения.</li><li>База знаний с коллективным редактированием документов.</li><li>Инструменты для применения методик <a href="https://kaiten.ru/blog/taim-meniedzhmient">тайм-менеджмента</a>.</li><li>Система горячих клавиш для ускорения навигации в системе.</li></ul><p><b>Недостатки</b>:</p><ul><li>В мобильной версии возможности урезаны.</li><li>Диаграмма Ганта реализована лишь частично.</li></ul><p><b>Стоимость</b>: бесплатный тариф рассчитан на команды до 5 участников и включает базовый набор функций. Каждому пользователю предоставляется 200 Мб для хранения файлов.</p><p>Премиальные планы начинаются от 199 ₽ в месяц за человека. В них открывается доступ к неограниченному числу проектов и досок, истории изменений, гостевым аккаунтам и другим профессиональным возможностям.</p><h2>Shtab</h2><p><b>Shtab </b>— многофункциональная платформа для координации коллективной работы. Сервис собирает в едином пространстве инструменты для визуализации работы, планировщик задач для сотрудников, облачное хранилище данных, трекинг временных затрат и другие полезные опции.</p><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-09-09/48240246-81b1-4e85-93c2-0fe89e60ba08.png" alt="" /></figure><p><b>Преимущества</b>:</p><ul><li>Настройка безлимитного числа этапов и статусов работы.</li><li>Встроенные средства коммуникации: обсуждения, комментирование и добавление вложений непосредственно в карточках заданий.</li><li>Контроль дедлайнов на временной шкале.</li><li>Адаптация рабочих областей и досок под специфические бизнес-процессы.</li><li>Инструмент приоритизации дел по <a href="https://kaiten.ru/blog/3-matritsy-priniatiia-rieshienii/">методу Эйзенхауэра</a>.</li><li>Настраиваемые типы задач и пользовательские поля.</li><li>Фиксация отработанного времени и оценка эффективности команды.</li><li>Отслеживание активности участников в проектах.</li><li>Персонализация карточек с помощью кастомизации обложек.</li><li>Просмотр вложенных подзадач без открытия основных карточек.</li><li>Создание баз данных с индивидуальными статусами и этапами.</li><li>Финансовый модуль для контроля доходов и расходов</li></ul><p><b>Недостатки</b>:</p><ul><li>Отсутствие встроенных отчетов для канбан-досок.</li><li>Ограниченный перечень интеграций со сторонними платформами.</li></ul><p><b>Стоимость</b>: в бесплатной версии можно подключить до 5 участников и использовать 1 Гб облачного хранилища.</p><p>Цена премиум-подписок начинается от 190 ₽ за чел/мес (при долгосрочной оплате предусмотрены скидки).</p><p>Платные тарифы включают увеличение числа участников, расширенное хранилище, автоматизацию процессов, базы данных, гостевые ссылки, продвинутый тайм-трекер, диаграмму Ганта, финансовый учет и другие функции.</p><p>Доступен 14-дневный тестовый период.</p><h2>ЛидерТаск</h2><p><b>ЛидерТаск </b>— комплексное решение, сочетающее рабочие доски и таск-менеджер. Инструмент предназначен для оптимизации распределения нагрузки, контроля выполнения работы и анализа индивидуальной и групповой эффективности.</p><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-09-09/730fae06-1d9e-45c3-a8de-d051e0f089af.png" alt="" /></figure><p><b>Преимущества</b>:</p><ul><li>Специальный маркер «В фокусе» для концентрации на ключевых задачах.</li><li>Цифровой ежедневник с почасовым планированием дня.</li><li>Публичные рабочие пространства для клиентов и внешних исполнителей.</li><li>Полнофункциональная работа без интернет-соединения.</li><li>Многоуровневая структура проектов и задач.</li><li>Раздел аналитики с показателями продуктивности сотрудников.</li><li>Речевой ввод задач.</li><li>Уведомления через <a href="https://kaiten.ru/blog/telegram-bot-kaiten/">бота в Telegram.</a></li><li>Автоматическое создание повторяющихся задач с заданным интервалом.</li><li>Поддержка методик тайм-менеджмента (GTD, Pomodoro и др.).</li><li>Обмен медиафайлами, документами, ссылками и комментариями в задачах.</li><li>Напоминания о сроках выполнения.</li><li>Регулярное резервное копирование данных.</li></ul><p><b>Недостатки</b>:</p><ul><li>Нет автоматической синхронизации между планировщиком и канбан-досками, возможен только ручной перенос дел.</li></ul><p><b>Стоимость</b>: бесплатно доступно до 10 проектов, 3 досок и 100 задач.</p><p>Персональный тариф «Премиум» снимает эти ограничения и добавляет 2 Гб облачного хранилища за 3199 ₽/год</p><p>Корпоративный тариф «Бизнес» рассчитан на работу команды от 2 человек и стоит 4999 ₽/год за пользователя. На этом плане можно вести совместные проекты и доски, делегировать задачи и смотреть журнал перемещения карточек.</p><h2>ПланФикс</h2><p><b>ПланФикс </b>— платформа для организации и контроля рабочих процессов, задач и проектов в одном месте. Сервис легко подстраивается под специфику любой компании — от малого бизнеса до крупной корпорации. В арсенале есть таск-менеджер, встроенная CRM и широкий набор функций для автоматизации рабочих сценариев.</p><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-09-09/70d38d5b-1eed-480f-9ffb-128525b8c9d5.png" alt="" /></figure><p><b>Преимущества</b>:</p><ul><li>Возможность глубокой персонализации — можно создавать рабочие пространства и проекты из нескольких уровней.</li><li>Закрепление задач за сотрудниками с быстрой передачей необходимых данных и доступов.</li><li>Ежедневник, в котором отображаются индивидуальное расписание, просроченная работа и текущие приоритеты.</li><li><a href="https://kaiten.ru/blog/5-instrumientov-kotoryie-uvielichivaiut-vovliechiennost-sotrudnikov">Общение с командой</a> прямо в задачах с функцией форматирования сообщений, вставкой ссылок и файлов.</li><li>Планирование проектов при помощи диаграммы Ганта.</li><li>Встроенная аналитика и создание собственных отчетов для оценки необходимых метрик.</li><li>Единая база контактов всех физических и юридических лиц.</li><li>Интеграции с виртуальными АТС, соцсетями, мессенджерами и другими инструментами.</li><li>Учет финансовых доходов и расходов компании.</li></ul><p><b>Недостатки</b>:</p><ul><li>Некоторые пользователи отмечают устаревший интерфейс.</li><li>Возможные сложности в освоении платформы для новичков.</li></ul><p><b>Стоимость</b>: на бесплатном тарифе можно зарегистрировать до 5 человек и использовать 1 Гб файлового хранилища.</p><p>Платные подписки предлагают расширенный объем хранилища, гостевые ссылки, массовые операции с карточками, пользовательские фильтры и многое другое. Цены тарифов стартуют от 360 ₽ за чел/мес при годовой оплате.</p><p>Полный набор функций можно попробовать без оплаты в течение 14 дней.</p><h2>Pyrus</h2><p><b>Pyrus </b>— инструмент для структурирования бизнес-процессов, избавления от рутины и организации взаимодействия команды. Система предлагает канбан-доски, функции документооборота, средства для коммуникации и согласования работы.</p><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-09-09/d2eb572d-edc9-44b3-a9a5-5ece710e6aef.png" alt="" /></figure><p><b>Преимущества</b>:</p><ul><li>Создание собственных шаблонов карточек и настройка этапов выполнения процессов.</li><li>Настройка доступов и ролей пользователей.</li><li>Автоматизация повторяющихся заданий и установка взаимосвязей карточек.</li><li><a href="https://kaiten.ru/blog/documentation-in-kaitien">Совместная работа с документами</a> и обмен файлами.</li><li>Встроенные комментарии по задачам и документам.</li><li>Раздел «Входящие», куда автоматически попадают дела, требующие реакции или согласования.</li><li>Быстрое утверждение задач в один клик с любого устройства.</li><li>Интеграции с облачными сервисами, мессенджерами и бизнес-приложениями.</li><li>Работа без интернет-соединения с последующей синхронизацией.</li></ul><p><b>Недостатки</b>:</p><ul><li>Некоторые интеграции платные.</li><li>Функции чатов ограничены и пока не дотягивают до специализированных мессенджеров.</li></ul><p><b>Стоимость</b>: бесплатный тариф предусматривает неограниченное число участников и 1 Гб облачного хранилища.</p><p>Базовый платный пакет стоит от 415 ₽ за чел/мес при годовой оплате. Он включает возможности документооборота, набор интеграций, систему CRM и 100 Гб дискового пространства. Опция расширения хранилища обойдется в 4 000 ₽/мес за каждые дополнительные 100 ГБ.</p><p>Корпоративная версия включает локальную установку на серверное оборудование, персональное обучение сотрудников, приоритетные обновления системы, неограниченный объем хранилища и доступ к SQL-базам данных.</p><h2>SingularityApp</h2><p><b>SingularityApp </b>— сервис для организации работы, доступный через облако на всех популярных платформах. Сервис интегрирует функции таск-трекера задач для команды и контроля персональной продуктивности в едином рабочем пространстве.</p><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-09-09/21b5de50-52fd-4b63-abbc-71e6717029fc.png" alt="" /></figure><p><b>Преимущества</b>:</p><ul><li>Добавление задач любым удобным способом: через e-mail, бота в Telegram, голосовые команды или виджеты.</li><li>Возможность распечатать расписание на день и затем загрузить его обратно в систему с помощью камеры.</li><li>Автоматическая сортировка дел и интеллектуальные фильтры для быстрого поиска.</li><li>Режим проверки, позволяющий пересматривать и актуализировать список задач.</li><li>Двусторонняя интеграция с Google Calendar.</li><li>Планировщик дня с разбивкой по часам.</li><li>Установка пароля на задачи.</li><li>Многоуровневая структура проектов и вложенных задач.</li><li>Поддержка техники тайм-менеджмента Pomodoro и режим фокусировки.</li><li>Встроенный трекер привычек.</li><li>Настройка приоритетов, тегов и повторяющихся дел.</li><li>Система напоминаний о просроченных делах с выделением цветом.</li></ul><p><b>Недостатки</b>:</p><ul><li>Распределять задачи между пользователями можно только на платных тарифах.</li><li>Нет поддержки канбан-досок.</li><li>Отсутствует полноценный учет затраченного на работу времени.</li></ul><p><b>Стоимость</b>: бесплатный план рассчитан для пользования базовыми функциями на одном устройстве. На нем можно создать до 10 проектов, поставить всего 1 уведомление на задачу и сформировать до 3 привычек.</p><p>Платные тарифы включают расширенные инструменты: интеграцию с почтой и Telegram, совместный доступ, резервное копирование, синхронизацию между разными устройствами. Цены начинаются от 209 ₽ в месяц при годовой оплате.</p><p>После регистрации доступен триал-период с большинством функций сервиса для планирования задач.</p><h2>Strive</h2><p><a href="https://striveapp.ru">Strive</a> — решение для совместной работы и обмена рабочей информацией. Сервис помогает организовывать проекты, отслеживать прогресс по задачам и выстраивать прозрачное взаимодействие внутри команды.</p><p>Отличие платформы — встроенный модуль регламентов. Это пошаговыми инструкции и тесты, которые можно создавать для каждого рабочего пространства и использовать для стандартизации процессов и онбординга сотрудников.</p><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-09-09/5965d471-c513-46ba-914c-d804b9978bcc.png" alt="" /></figure><p><b>Преимущества</b>:</p><ul><li>Безлимитное количество проектов и задач.</li><li>Гибкие форматы представления данных: список, таймлайн, канбан-доски.</li><li>Назначение исполнителей и цветовое выделение заданий.</li><li>Персональные списки дел для каждого участника.</li><li>Декомпозиция <a href="https://kaiten.ru/blog/kak-planirovat-krupnie-proekti">крупных проектов</a> на тематические компоненты.</li><li>Встроенные средства коммуникации в карточках задач.</li><li>Файловый обмен и совместное редактирование документов.</li><li>Настройка уровней доступа и оповещений.</li><li>Подписка на изменения в проектах.</li><li>База регламентов и стандартов работы.</li><li>Индикация активности сотрудников в реальном времени.</li><li>Интеграция с внешними документами (Google Docs, Sheets, Figma).</li></ul><p><b>Недостатки</b>:</p><ul><li>Нет гибкой персонализации интерфейса.</li><li>Новичкам может понадобиться время, чтобы освоиться с широким набором функций.</li></ul><p><b>Стоимость</b>: бесплатный план дает подключить до 10 участников, вести неограниченное число проектов и задач, создавать до 3 рабочих пространств. Доступен весь спектр возможностей без ограничений.</p><p>Платные версии стоят от 225 ₽ за чел/мес и снимают лимит на количество пространств, регламентов и документов. Система открывает доступ к аналитике и статистике по задачам, новым пользовательским ролям, интеграциям и другим функциям.</p><p>Есть 14-дневный пробный период.</p><h2>YouGile</h2><p><a href="https://ru.yougile.com/?amp&amp;">YouGile</a> — комплексное решение, которое сочетает в себе функции таск-трекера, корпоративного мессенджера и канбан-досок. Инструмент предназначен для оптимизации рабочих процессов, планирования заданий и мониторинга их выполнения командами любого масштаба.</p><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-09-09/a5f603e9-1aa9-465f-92c0-0b81c000c896.png" alt="" /></figure><p><b>Преимущества</b>:</p><ul><li>Разные режимы визуализации работы: канбан-доски, планирование при помощи диаграммы Ганта и календаря.</li><li>Сводки задач с гибкими фильтрами.</li><li>Обсуждение работы в каждой задаче.</li><li>Настройка правил для перемещения задач между этапами.</li><li>Система «зеркальных» задач с автоматической синхронизацией изменений.</li><li>Детализированная лента активности со всеми действиями в системе.</li><li>Персонализированная система оповещений через мобильные уведомления и электронную почту.</li><li>Тайм-трекинг с функцией запуска таймера в карточках.</li><li>Шаблоны задач с <a href="https://kaiten.ru/blog/avtomatizaciya-zadach">автоматизацией</a> повторов.</li><li>Интеграционные решения с Google Календарем и Slack.</li><li>Отчетность в табличном формате с экспортом в Excel и автоматической рассылкой.</li></ul><p><b>Недостатки</b>:</p><ul><li>Отсутствует расширенная аналитическая система.</li><li>Нет возможности создания базы знаний.</li></ul><p><b>Стоимость</b>: бесплатный доступ предоставляет полный набор функций без ограничений по времени для команд до 10 участников С 11 участника нужна оплата в размере 495 ₽ в месяц за человека.</p><p>Тариф «Коробка» стоит 849 ₽ за пользователя в месяц с возможностью локальной установки на сервер компании.</p><p>Премиум-тариф «Платформа» предполагает индивидуальное ценообразование, включает кастомизацию системы и готовые расширения под специфические нужды бизнеса.</p><h2>Moo.Team</h2><p><a href="https://moo.team">Moo.Team</a> — решение, объединяющее планировщик задач для сотрудников, CRM и инструменты для коммуникации с коллегами и заказчиками.</p><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-09-09/9a777872-b396-41a6-a6b6-904b76c3646e.png" alt="" /></figure><p><b>Преимущества</b>:</p><ul><li>Интеграция с Google Drive, Google Search Console, Яндекс.Метрика и другими платформами.</li><li>Мониторинг загруженности сотрудников и их активности в реальном времени.</li><li>Календарь планирования мероприятий, отпусков и <a href="https://kaiten.ru/blog/vsie-o-diedlainakh">дедлайнов</a>.</li><li>База паролей для безопасного доступа к данным.</li><li>Функция скрытых от клиентов и сотрудников комментариев.</li><li>Перенос сообщений между задачами.</li><li>Декомпозиция больших задач на подзадачи для пошагового выполнения.</li><li>Тайм-трекер с учетом трудозатрат и финансовых расходов на работу.</li><li>База знаний для онбординга сотрудников.</li><li>Персонализированные дашборды проектов.</li><li>Автоматический расчет стоимости проектов на основе времени работы специалистов.</li><li>Модуль для работы с фрилансерами.</li></ul><p><b>Недостатки</b>:</p><ul><li>Сортировка задач доступна только по спискам, созданным вручную.</li><li>Недостаточно инструментов для аналитики.</li><li>Нельзя выстраивать иерархию сотрудников.</li></ul><p><b>Стоимость</b>: бесплатная версия таск-трекера открывает доступ ко всем функциям системы, но позволяет подключать не более 3 пользователей и вести до 2 проектов. При этом нет лимита на количество задач, подзадач и клиентов. Объем дискового пространства — 1 Гб.</p><p>Платные подписки начинаются от 990 ₽ за 10 пользователей в месяц и расширяют количество проектов и дискового пространства.</p><p>Все тарифы можно попробовать за 1 месяц тестового периода.</p><h2>Выводы</h2><p>Универсального сервиса для планирования задач не существует. Малому бизнесу или фрилансерам подойдут простые решения с базовым функционалом и низким порогом входа. Крупным компаниям нужны гибкие платформы с автоматизацией, интеграциями и расширенными настройками прав доступа.</p><p>Несколько основных рекомендаций:</p><ul><li><b>Выбирайте инструмент под задачи бизнеса</b>, а не наоборот. Лучше простой сервис, который будет реально использоваться, чем перегруженная система, лежащая без дела.</li><li><b>Обращайте внимание на масштабируемость</b>. Если команда растет, важно, чтобы платформа не ограничивала возможности.</li><li><b>Интеграции экономят время</b>. Чем больше привычных вам инструментов поддерживает сервис, тем меньше ручной работы.</li><li><b>Автоматизация и отчетность</b> помогают держать процессы под контролем. Эти функции особенно полезны руководителям и менеджерам проектов.</li><li><b>Интерфейс важен</b>. Даже самые продвинутые возможности бесполезны, если команде сложно ими пользоваться.</li></ul>]]></content:encoded>
    </item>
    <item>
      <title>Онбординг как код: автоматизация и AI против хаоса первых 90 дней</title>
      <link>https://tproger.ru/articles/onbording-kak-kod--avtomatizaciya-i-ai-protiv-haosa-pervyh-90-dnej</link>
      <comments>https://tproger.ru/articles/onbording-kak-kod--avtomatizaciya-i-ai-protiv-haosa-pervyh-90-dnej?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Лидия Мисько]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/onbording-kak-kod--avtomatizaciya-i-ai-protiv-haosa-pervyh-90-dnej</guid>
      <description><![CDATA[<p>Как code-driven и AI-подходы меняют онбординг: автоматизация первых 90 дней, рост продуктивности и прозрачность процессов.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/onbording-kak-kod--avtomatizaciya-i-ai-protiv-haosa-pervyh-90-dnej">Онбординг как код: автоматизация и AI против хаоса первых 90 дней</a>»</p>]]></description>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Работа]]></category>
      <category><![CDATA[Карьера]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 04 Sep 2025 12:00:04 GMT</pubDate>
      <content:encoded><![CDATA[<p>Почему code-driven подход поможет там, где не справляются традиционные чек-листы.</p><p>До сих пор онбординг — процесс, через который проходит каждый сотрудник, — во многих компаниях напоминает хаотичный набор писем, тасков и случайных встреч. Выглядит словно атавизм в эпоху, когда через код можно упростить или ускорить практически любой привычный нам процесс.</p><p>Именно в первые 90 дней — в период онбординга — решается, останется ли человек в компании или уйдет с формулировкой «не сложилась химия». Причем чаще всего дело не в неподготовленной технике и пропавших пропусках, а в отсутствии понятной структуры и ощущения смысла. Поэтому все больше компаний начинают относиться к онбордингу как к продуктовой задаче: прописывать рабочие процессы (workflow), автоматизировать шаги и измерять результат.</p><h2>Как AI выводит автоматизацию на новый уровень</h2><p>В классическом HR многое держится на чек-листах: что, кем и к какой дате должно быть сделано. В code-driven подходе все описывается как алгоритм — со сроками и условиями (например, в зависимости от того, в какую команду выходит новый человек, ему назначат разный список вводных обучающих курсов).</p><p>Современные HR-платформы уже давно предлагают готовые модули, которые берут на себя «бумажную» часть адаптации. Такие платформы собирают данные нового сотрудника, создают аккаунты и ID, назначают обучение и даже отвечают на типовые вопросы через чат-ботов.</p><p>Исследования показывают: такие решения ускоряют выход на продуктивность и снижают количество ошибок. Аналитик Джош Берсин <a href="https://joshbersin.com/2025/04/is-the-hr-profession-as-we-know-it-doomed-in-a-strange-way-yes/">отмечает</a>, что в некоторых компаниях 10 HR-специалистов поддерживают более 6000 сотрудников именно за счет глубокой автоматизации процессов обучения, комплаенса и онбординга. По его прогнозу, AI может взять на себя до 50–75% процессной нагрузки HR-отдела, освобождая время для стратегических и «человеческих» задач.</p><p>Важный момент: автоматизация должна быть связана с метриками. Для онбординга это time-to-productivity — процент завершенных обучающих модулей, оценка вовлеченности или удовлетворенности менеджеров. Если этап с метриками пропущен, AI рискует остаться красивой игрушкой без бизнес-ценности.</p><h2>Координация между отделами: онбординг как совместный проект</h2><p>Онбординг редко ограничивается участием менеджера по персоналу, который встречает вас в первый день в офисе или на первом звонке. В стартовом процессе участвуют IT (настройка аккаунтов и оборудования), офис-менеджмент (рабочие места, пропуск, парковка), менеджеры (обучение и первые задачи), юристы или визовые специалисты.</p><p>Любая неожиданно прилетевшая задача, например, задержка с ноутбуком или доступом к системе работы с клиентами, способна испортить первое впечатление. Поэтому компании описывают онбординг как скоординированный workflow: система автоматически назначает задачи ответственным, ставит дедлайны и напоминает вовлеченным сторонам об их обязанностях.</p><p>Для нового сотрудника онбординг может быть стрессовым еще и от переизбытка информации. Если все материалы вываливаются за один день, возникает перегрузка. Поэтому компании переходят к LMS и цифровым платформам, которые подают информацию в нужной дозировке: короткие модули, интерактивные сценарии, даже VR-тренинги. Такой формат снижает стресс и помогает лучше закрепить знания.</p><p>Онбординг в формате кода дает бизнесу возможность измерять эффективность процесса и делает его понятным для всех вовлеченных коллег. Уже упомянутая метрика time-to-productivity показывает, насколько быстро сотрудник приносит пользу; опросы фиксируют настроение и вовлеченность, подсвечивают прозрачность процессов.</p><p>Эти данные превращаются в инструмент обратной связи для HR и руководителей, позволяя вовремя корректировать процесс.</p><h2>Как такой подход выглядит на практике</h2><p>Представим интегрированный workflow. Кандидат подписывает оффер, и система автоматически запускает цепочку действий: IT готовит аккаунты, календарь создает встречи, новичок получает доступ на портал с FAQ и обучающими видео, а команда получает уведомления о дате выхода нового коллеги.</p><p>В день прихода человек садится за готовый ноутбук, у него есть доступы и первые задачи. Такой «онбординг как код» резко сокращает число человеческих ошибок вроде «ой, мы забыли, что сегодня твой первый день» или «твой менеджер в отпуске на месяц без связи».</p><p>Автоматизация помогает и с точностью по времени. Подписать документы до выхода, вовремя выдать оборудование, провести оценку на 90-й день — все это критические дедлайны, нарушение которых грозит не только неудобствами, но и юридическими рисками. Хорошая система напомнит HR, если сотрудник не загрузил нужный документ, или предупредит менеджера о приближении финальной оценки по испытательному сроку.</p><p>Стоит все же отметить, что автоматизация снимает рутину, но не заменяет человека.</p><p>Чат-бот может ответить на вопрос про отпуск или дату выплаты зарплаты, но не поможет разобраться в конфликте с коллегой или справиться с выгоранием. Здесь нужен живой контакт и эмоциональный интеллект — способность услышать, поддержать, показать смысл работы. Именно поэтому баланс «код там, где повторяемо, человек там, где важна эмпатия» остается ключевым.</p><p>Не стоит забывать и про этику: в онбординге собирается множество чувствительных данных (паспортные данные, банковские реквизиты, медформы). Любой AI-инструмент должен обеспечивать прозрачность, защиту и отсутствие дискриминации в алгоритмах.</p><h2>Каким будет будущее онбординга</h2><p>По сути, компании идут к модели employee journey as code: от прихода до ухода сотрудника. Оффбординг тоже можно автоматизировать — закрыть доступы, вернуть оборудование, зафиксировать передачу знаний и задач. Но сколько бы ни писалось кода, только люди создают ту самую «химию» между компанией и сотрудником.</p><p>В ближайшие годы мы будем видеть больше интеграций: онбординг объединится с системами обучения, карьерного развития и сервисами поддержки благополучия. Алгоритмы смогут подсказывать, когда новичку стоит подтянуть конкретный навык, сменить проект или встретиться с ментором. Стартапы уже экспериментируют с форматом continuous onboarding — микролернинг через чат-ботов и персональные напоминания, которые сопровождают сотрудника далеко за рамками первых 90 дней.</p><p>Но при всей технологичности именно культура и доверие будут определять, станет ли этот путь долгим и продуктивным. Код может выстроить идеальный процесс, но только люди способны превратить его в живой опыт, который удерживает и вдохновляет.</p>]]></content:encoded>
    </item>
    <item>
      <title>BPM, BPMN и Camunda: язык процессов, который понимает и бизнес, и код</title>
      <link>https://tproger.ru/articles/bpm--bpmn-i-camunda--yazyk-processov--kotoryj-ponimaet-i-biznes--i-kod</link>
      <comments>https://tproger.ru/articles/bpm--bpmn-i-camunda--yazyk-processov--kotoryj-ponimaet-i-biznes--i-kod?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Максим Павлов]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/bpm--bpmn-i-camunda--yazyk-processov--kotoryj-ponimaet-i-biznes--i-kod</guid>
      <description><![CDATA[<p>Рассматриваем, как BPM и BPMN превращают процессы в управляемые сценарии, а Camunda позволяет исполнять их в реальных системах — от микросервисов до ML-интеграций.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/bpm--bpmn-i-camunda--yazyk-processov--kotoryj-ponimaet-i-biznes--i-kod">BPM, BPMN и Camunda: язык процессов, который понимает и бизнес, и код</a>»</p>]]></description>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Бизнес]]></category>
      <category><![CDATA[Разработка]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 04 Aug 2025 06:50:02 GMT</pubDate>
      <content:encoded><![CDATA[<p><i>BPM, BPMN и Camunda: язык процессов, который понимает и бизнес, и код</i></p><p>Привет, меня зовут Максим Павлов, руководитель направления архитектуры в компании Axenix</p><p>Бизнес-процессы в компании на определенном этапе её существования происходят как будто сами по себе. Пока компания маленькая, это может сработать — «все всё знают». Но как только бизнес начинает расти, такая спонтанность тормозит развитие. Сотрудники теряются, клиенты ждут, ошибки множатся, контроль ускользает. И в этот момент в дело вступают специальные инструменты управления процессами.</p><h2>Руководства и чертежи</h2><p>BPM (Business Process Management) — это управление бизнес-процессами как системой: постановка, оптимизация, автоматизация. BPMN (Business Process Model and Notation) — язык и нотация для графического описания этих процессов.Иными словами: BPM — это методология, а BPMN — инструмент её визуализации и реализации.</p><p>BPM можно сравнить с общим руководством по сборке конструктора, в котором описываются шаги, необходимые для получения нужного результата. А вот BPMN — это как чертёж или схема конструктора, где видно, в какой последовательности соединять детали и кто за что отвечает. Такая схема помогает всем участникам понять процесс одинаково. Приведём пример с кофейней: клиент делает заказ → кассир его принимает → бариста готовит → клиент получает напиток. Всё достаточно просто. Но стоит лишь немного усложнить: добавить доставку, оплату бонусами, акции, возвраты — и без формализации уже не обойтись. Где что начинается, кто за что отвечает, что делать при исключении?</p><figure><img src="https://media.tproger.ru/user-uploads/116654/2025-07-16/1c8e22b6-9104-4f7d-80a2-ff74d5d7d5e0.png" alt="" /><figcaption>Рис.1 Процесс обслуживания клиентов в BPMN</figcaption></figure><p>BPM отвечает на эти вопросы, превращая каждую бизнес-ситуацию в управляемый сценарий. А чтобы описывать такие сценарии, нужен универсальный язык. Таким языком стал BPMN.</p><p>Нотация BPMN появилась как ответ на потребность в схеме, одинаково понятной и бизнесу, и техническим специалистам. До BPMN в ходу были либо слишком «технические» языки вроде UML Activity Diagram, понятные только архитекторам, либо простые блок-схемы, которые не годились для автоматизации.</p><p>BPMN стал золотой серединой. Это строгая визуальная система: кружки, стрелки, ромбики, прямоугольники — все чётко определено. Каждый элемент имеет однозначную трактовку и может быть интерпретирован машиной. И самое главное — такую схему можно превратить в работающий процесс.</p><p>Именно это и делает Camunda — одна из самых популярных open-source платформ для исполнения процессов, описанных в BPMN.</p><h2>Camunda: движок процессов нового поколения</h2><p>Camunda — не просто визуальный редактор. Это полноценный исполняющий движок, который «читает» BPMN-схемы и превращает их в действия. Camunda подключается к вашей инфраструктуре и запускает процессы, отслеживает их выполнение, взаимодействует с API, ставит задачи людям и логирует все, что происходит.</p><p>На уровне архитектуры Camunda может работать в двух режимах: как отдельный сервер или встраиваемый компонент (embedded mode). Последний особенно удобен для микросервисной архитектуры — процесс запускается прямо внутри сервиса, без внешних зависимостей. При этом возможна тесная интеграция с Kafka, REST, базами данных и другими системами.</p><p>Преимущество Camunda не только в гибкости и масштабируемости, но и в универсальности. Он одинаково хорошо справляется как с короткими потоковыми процессами, так и с тяжелыми пакетными расчетами, охватывающими тысячи записей.</p><h2>Два типа процессов: потоковые и пакетные</h2><p>Одно из ключевых понятий в работе с Camunda — различие между потоковой и пакетной обработкой. Это неформальное, но важное деление, от которого зависит структура процесса и подход к его проектированию.</p><p><b>Потоковая обработка</b> характерна для ситуаций, когда каждый запрос обрабатывается отдельно и в реальном времени. Например, клиент подает заявку на кредит. Система в течение 30–40 секунд проверяет данные, запрашивает скоринг, получает ответ, принимает решение и сообщает результат. Каждый запрос — это отдельный экземпляр процесса, который проходит всю цепочку действий.</p><p>Такой подход требует высокой параллельности (до 10–15 RPS), устойчивости к ошибкам, быстрой реакции. Иногда в цепочку попадают ручные этапы — например, дополнительная проверка менеджером (примерно в 5% случаев). Потоковые процессы отлично вписываются в event-driven архитектуру и легко масштабируются, особенно при использовании Kafka в качестве шины событий.</p><figure><img src="https://media.tproger.ru/user-uploads/116516/2025-07-24/cffb461c-ea49-4ed9-9154-e5162548e260.png" alt="" /><figcaption>Рис. 2 Суть потокового процесса</figcaption></figure><p><b>Пакетная обработка</b>, напротив, работает с большими массивами данных, поступающими периодически. Например, раз в месяц запускается расчет предодобренных предложений. На вход поступают данные из нескольких десятков источников, которые разбиваются на пакеты (батчи). Процесс проходит через подготовку (валидация, фильтрация), основную обработку (расчет), завершение (отправка, отчеты).</p><p>Такие процессы могут длиться часами, включать десятки этапов и сложную логику обработки ошибок: от откатов до компенсаций и Dead Letter Queue. При проектировании приходится учитывать параллельную обработку батчей, конфликты доступа к источникам, индивидуальные требования к формированию пакетов.Рис. 3 Суть пакетного процесса</p><figure><img src="https://media.tproger.ru/user-uploads/116516/2025-07-24/af59544f-1bf1-4ac0-84a4-81d1c354124e.png" alt="" /><figcaption>Рис. 3 Суть пакетного процесса</figcaption></figure><p>Важно понимать: обе модели — потоковая и пакетная — могут сосуществовать в одной системе. Более того, сложные системы используют гибридные подходы, когда потоковая часть инициирует пакетную обработку или наоборот.</p><p>В основном с помощью BPMN автоматизируются процессы, где важен порядок шагов и взаимодействие между людьми и системами. Например, обработка клиентских заявок, согласования, интеграция микросервисов и ИТ-систем и др.</p><p>Один из классических примеров — автоматизация обработки клиентских заявок в банке. Каждый клиент подает заявку, запускается потоковый процесс, система взаимодействует с внешними сервисами (скоринг, KYC, верификация), принимает решение и сохраняет результат. Весь процесс прозрачен, логируем, можно настроить алерты и отчеты для бизнес-пользователей.</p><figure><img src="https://media.tproger.ru/user-uploads/116516/2025-07-24/ca107881-2358-4c02-bafd-08f9eb88bcbd.png" alt="" /><figcaption>Рис. 4 Процесс обработки заявки на кредит</figcaption></figure><h2>Прозрачность и контроль</h2><p>Одним из плюсов BPMN-систем является возможность мониторинга. Camunda предлагает встроенные инструменты (например, Cockpit), а также легко интегрируется с Prometheus и Grafana. Это позволяет DevOps-команде видеть текущую картину: сколько процессов активны, где возникли ошибки, какие этапы «висят», сколько времени занимают ключевые шаги.</p><p>Для бизнеса доступны BI-дэшборды и email-уведомления — можно получать отчеты о «застрявших» задачах, несанкционированных отклонениях и задержках. Все это повышает управляемость и доверие к автоматизации.</p><h2>Оркестрация микросервисов и ML-модели</h2><p>Camunda отлично вписывается в современную микросервисную архитектуру. Каждый микросервис выполняет атомарную задачу, а orchestration layer — в виде процесса BPMN — управляет последовательностью. Это снижает связность, упрощает внесение изменений и повышает надёжность.</p><p>Дополнительно, процессы могут вызывать внешние ML-сервисы — например, для скоринга, классификации, предсказаний. Camunda не ограничивает формат интеграции: это может быть REST, gRPC, Kafka: зависит от ваших технических предпочтений. Возможна реализация механизма принятия решений на лету, где модель принимает решение, а BPMN описывает, что с этим решением делать дальше.</p><p>При использовании Camunda как оркестратора микросервисов уменьшается объём инфраструктурного кода. Сами сервисы становятся проще, потому что они больше не содержат в себе бизнес-процессы — они отвечают только за конкретные атомарные действия.</p><p>Появляется возможность быстро добавлять новые задачи без риска нарушить целостность общего процесса. Отладка упрощается, мониторинг становится прозрачным, а время внесения изменений резко сокращается. Это меняет сам подход к разработке: теперь оркестрация выносится в отдельный слой, а не размазывается по коду приложений.</p><p>Такие аргументы становятся все более очевидными, особенно для крупных организаций. Camunda в этом контексте уже не требует специального «продавливания» — в финансовом и телеком-секторах она становится стандартом де-факто, в том числе за счёт своей совместимости с современными стеком решений, открытого кода и широкой базы экспертизы.</p><h2>Что будет дальше</h2><p>Один из главных аргументов в пользу BPMN-систем заключается в снижении сложности разработки. Код сервисов фокусируется на бизнес-логике, а не на маршрутах, условиях и транзакционности. Оркестратор берет на себя управление порядком, обработку исключений, разруливание ветвлений. Это упрощает поддержку, ускоряет внедрение новых функций и дает команде наглядную картину процессов.</p><figure><img src="https://media.tproger.ru/user-uploads/116516/2025-07-24/b3eece89-6423-4474-967c-a556755f0388.png" alt="" /><figcaption>Рис. 5 Пример сетапа Camunda</figcaption></figure><p>Дальнейшее развитие BPMN-систем сегодня тесно связано с трансформацией архитектурных подходов в сторону событийной (event-driven) и облачной (cloud-native) парадигмы. Это особенно заметно на примере эволюции Camunda, где новая версия Zeebe уже ориентирована именно на такие сценарии. Если классические BPM-движки предполагали более линейное, централизованное исполнение процессов, то современный подход позволяет строить распределенные, масштабируемые пайплайны, реагирующие на события из множества источников — будь то Kafka, REST-вызовы или внутренние системные сигналы.</p><p>Параллельно развивается и пользовательский уровень взаимодействия с процессами. Визуальные редакторы становятся всё более интуитивными, появляются ИИ-ассистенты, предлагающие оптимальные ветвления, проверку ошибок, шаблоны и даже автогенерацию схем на основе описаний.</p><p>Всё это формирует тренд на low-code/no-code — попытку упростить процесс создания процессов, дать возможность бизнесу напрямую формулировать логику, не обращаясь к разработчикам. Однако на практике это упрощение работает лишь в определённом диапазоне. Как только процессы становятся сложными, с несколькими ветками, исключениями, внешними интеграциями и транзакционными требованиями — без архитектурной работы и инженерного подхода не обойтись. Low-code подходит для простых согласований и прототипов, но реальный бизнес требует устойчивых решений.</p><p>Вопрос о полном исчезновении ручных процессов остается скорее философским. Технически, всё, что можно формализовать, можно автоматизировать. Но бизнес живёт в мире неопределенности, исключений и человеческих решений. Проверка по субъективным критериям, согласование с учетом контекста и живая коммуникация пока не поддаются полной алгоритмизации.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как автоматизировать простые задачи с помощью скриптов?</title>
      <link>https://tproger.ru/articles/kak-avtomatizirovat-prostye-zadachi-s-pomoshhyu-skriptov-</link>
      <comments>https://tproger.ru/articles/kak-avtomatizirovat-prostye-zadachi-s-pomoshhyu-skriptov-?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Ксения Андреева]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-avtomatizirovat-prostye-zadachi-s-pomoshhyu-skriptov-</guid>
      <description><![CDATA[<p>Как автоматизировать задачи. Показываем возможности автоматизации задач через скрипты. Рассматриваем пошаговую инструкцию по использованию ✔ Tproger</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-avtomatizirovat-prostye-zadachi-s-pomoshhyu-skriptov-">Как автоматизировать простые задачи с помощью скриптов?</a>»</p>]]></description>
      <category><![CDATA[Тестирование]]></category>
      <category><![CDATA[Оптимизация]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Производительность]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sun, 05 Jan 2025 09:00:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>В ежедневной работе каждого программиста очень много рутинных задач, которые отнимают время. А это время можно было бы использовать для решения более интересных и/или важных задач: написание или доработка кода, разработка проектной спецификации или проведение ревью. Чтобы не тратить много времени на решение типовых задач, на помощь приходят скрипты — они автоматизируют выполнение регулярных однотипных тасков.</p><p>К тому же скрипты не просто экономят время, а снижают вероятность ошибок. Они могут помочь в регулярном копировании файлов, сборе данных или бэкапах системы по «расписанию». В общем, полезны они будут и новичкам, и опытным айтишникам.</p><p>В этой статье рассмотрим, какой язык выбрать для написания скриптов, приведём примеры простых скриптов автоматизации и сформируем список шагов для создания эффективных скриптов.</p><h2>Выбор языка для написания скриптов</h2><p>Выбор подходящего языка для скриптов зависит от конкретных задач, среды, в которой работает программист, и уровня его навыков. Ниже рассмотрим 3 основных языка программирования для написания скриптов.</p><h2>Обзор популярных языков</h2><h3>Bash</h3><p><b></b>Стандартный интерпретатор командной строки в UNIX-системах. Bash хорош для автоматизации задач на уровне операционной системы: управление файлами, автовыполнение заданий через cron и так далее. Bash особенно подойдёт системным администраторам и всем, кто пользуется Linux или UNIX.</p><h3>Python</h3><p><b></b>Один из самых универсальных языков. Python хорош своей простотой и большим количеством библиотек. Подойдёт как начинающим, так и тем, кто уже давно занимается обработкой данных или веб-скрейпингом. Python поддерживается практически всеми платформами и может решать более сложные и объёмные задачи с помощью большого количества расширений.</p><h3>PowerShell</h3><p>Очень известный продукт Microsoft, который хорош для SCM и автоматизации системных задач на базе Windows. У PowerShell есть один сильный плюс — интеграция со всеми возможными сервисами Microsoft (в частности и с Active Directory). Подойдёт для корпоративных проектов на винде.</p><h2>Рекомендации для начинающих</h2><p>Если вы только задумались о том, как автоматизировать с помощью скриптов рутину, или только начинаете погружаться в эту тему, у нас есть 5 главных советов:</p><ul><li><b>Выберите простую задачу или сценарий</b>, который вы регулярно выполняете вручную. Это может быть отправка писем, занесение задач в трекеры, проверка кода и конфигураций — в общем, что угодно.</li><li><b>Изучите основы языка</b>, который вы выбрали для написания скриптов, чтобы лучше понять, какие есть дополнительные функции для автоматизации системных задач;</li><li><b>Практика — лучший способ освоения программирования</b>, так что не бойтесь экспериментировать с кодом (главное всегда делайте бэкап :).</li><li><b>Почитайте форумы разработчиков</b> — там вы не только сможете найти ответы на вопросы, но и почитать об опыте других программистов. Может быть, найдёте новое интересное решение?</li><li><b>Всегда пишите комментарии к коду </b>— так вы лучше будете его понимать сами, а потом сможете поделиться и кодом, и комментами с другими разработчиками, которые могут предложить, например, сократить код за счёт более простой команды.</li></ul><h2>Простые примеры автоматизации</h2><h3>Копирование и организация файлов с помощью Bash</h3><p>Как мы уже говорили, Bash часто выбирают для написания скриптов в Unix или Linux.</p><p><b>Пример: </b>у вас есть папка с разными типами файлов. Вам нужно рассортировать их в другие директории по типам.</p><p><b>Скрипт для автоматизации:</b><b></b></p><p>Шаг первый — запускаем Bash:</p><p>#!/bin/bash</p><p>Шаг второй — создаём директории для каждого типа файлов:</p><p>mkdir -p Documents Images Videos Others</p><p>Шаг третий — перемещаем файлы:</p><p>Такой скрипт проверяет MIME-тип каждого файла и перемещает его в нужную папку. При этом вручную делать ничего не нужно — просто запустить скрипт.</p><h3>Автоматизация сбора данных из интернета с помощью Python</h3><p><b>Пример:</b> допустим, вам нужно регулярно получать последние статьи с сайта.</p><p><b>Скрипт для автоматизации:</b></p><p>Шаг первый — запускаем библиотеку BeautifulSoup:</p><p>Шаг второй — указываем нужный URL и пишем запрос:</p><p>Шаг третий — парсим статьи со страницы:</p><p>Такой скрипт отправляет GET-запрос на сайт и извлекает заголовки и краткие описания статей. А значит, с помощью этого скрипта вы сможете получить информацию о последних статьях (в формате заголовка и краткого описания) с любого сайта.</p><h3>Настройка регулярных задач через cron или Task Scheduler</h3><p>Скрипты созданы, всё работает правильно? Значит, можно переходить к автоматизации скриптов через планировщиков задач. В Unix-системах это можно сделать через cron, а на Windows — через Task Scheduler.</p><p><b>Пример настройки cron:</b></p><p>Откройте файл crontab командой crontab -e и добавьте строку:</p><p>0 6 * * * /path/to/your/script.sh</p><p>Так скрипт будет выполняться каждое утро в 6 утра.</p><p><b>Пример настройки Task Scheduler:</b></p><ul><li>Откройте Планировщик заданий;</li><li>Выберите «Создать задачу»;</li><li>Установите триггер выполнения задачи — «по расписанию»;</li><li>Укажите программу или сценарий для выполнения (например, путь к Python-скрипту).</li></ul><p>С помощью настройки планировщиков вы можете автоматизировать любую задачу. Получать последние статьи с Tproger каждый понедельник в 9 утра? Без проблем. Проверять конфигурации системы каждый день после внесения любых изменений в код? Да пожалуйста! Во всём поможет классный правильно написанный скрипт.</p><h2>Ключевые шаги при написании скриптов</h2><p>Самый важный шаг при написании любого скрипта — глубокое понимание задачи, которую вы хотите автоматизировать. Если этого понимания не будет, есть высокий риск создать не очень эффективное или неправильное решение.</p><p><b>Что здесь важно:</b></p><ul><li>Определить конечную цель автоматизации;</li><li>Собрать все необходимые данные;</li><li>Понять, какие процессы или шаги должны быть выполнены.</li></ul><p>Например, если вы хотите автоматизировать еженедельную отчётность через скрипты, вам нужно определить источники данных, формат готовых данных и частоту выполнения скрипта.</p><p>Следующий шаг — разработка алгоритма, пошагового плана действий для регулярного корректного выполнения скрипта. Здесь очень важно разбить задачу на более мелкие и лёгкие части: сначала вы добавляете ресурс, с которого будут «подтягиваться» статьи; далее выбираете, что именно будет приходить вам в качестве готового результата (тайтлы и саммари статей); далее указываете, в каком виде вы должны получить результат.</p><p><b>Подготовка алгоритма — это:</b></p><ul><li>Точное указание вводных данных;</li><li>Разработка логики скрипта;</li><li>Указание порядка действий внутри скрипта.</li></ul><p>Попробуйте создать блок-схему для наглядности, если вы столкнулись с непростой задачей для автоматизации. Подробно распишите, какие вводные должны учитываться, в каком формате, нужно ли их преобразовывать, что с ними делать и в каком формате выводить информацию. Так вы лучше сможете понять логику скрипта и избежать возможных ошибок.</p><p><b>Важно: </b>только очень простой скрипт будет работать идеально с первого раза. Именно поэтому скрипты всегда нужно тестировать и в моменте править. Так вы проверяете эффективность работы.</p><p><b>Тестирование скрипта состоит — это 3 главных действия:</b></p><ul><li>Запуск сценария на с разными наборами данных для проверки корректности выполнения;</li><li>Поиск и исправление логических ошибок или некорректно написанных предположений в алгоритме;</li><li>Исправление багов и оптимизация кода.</li></ul><p>Уделите <i>особое внимание </i>нетипичным или редким историям, чтобы скрипт всегда работал безошибочно после отладки.</p><h2>Инструменты для автоматизации разработки</h2><h3>Утилиты командной строки</h3><p><b>find </b>— инструмент для поиска файлов в структуре каталогов. Он помогает найти файлы по имени, размеру, дате изменения и другим параметрам. Например, find можно использовать для поиска всех файлов с расширением .txt, которые были изменены за последние 7 дней:</p><p>find /path/to/directory -name "*.txt" -mtime -7</p><p><b>grep</b> — инструмент для поиска текстовых строк в файлах на основе регулярных выражений. Он поможет в фильтрации данных или поиске конкретной информации в больших логах:</p><p>grep "ошибка" /var/log/syslog</p><p><b>awk</b> — язык программирования для обработки текстовых данных. Подойдёт для анализа и преобразования текста с данными из таблиц:</p><p>awk '{sum += $1} END {print sum}' file.txt</p><h3>Библиотеки и модули для Python</h3><p>Модуль <b>os </b>в Python помогает проводить манипуляции с файлами и каталогами, облегчает управление процессами и так далее:</p><p><b>shutil</b> — модуль для проведения операций с файлами: копирование, перемещение, архивирование:</p><p>Модуль <b>schedule</b> поможет в планировании выполнения задач на Python. Скрипт автоматизации:</p><h3>Планировщики задач</h3><p><b>cron</b> — системный планировщик задач для UNIX-систем, который помогает автоматизировать выполнение сценариев или команд по расписанию:</p><p>Запуск script.sh каждый день в 3 часа утра:</p><p>0 3 * * * /path/to/script.sh</p><p>Команда <b>at</b><b> </b>нужна для одноразового выполнения задач в определённое время. Подойдёт для нерегулярных задач:</p><p>echo "python my_script.py" | at 14:00</p><h2>Советы по улучшению разработки скриптов</h2><p>Чтобы создавать действительно классные, точные и безошибочные скрипты, нужно придерживаться трёх основных правил: логирование для понимания статуса выполнения скрипта и поиска багов, использование модулей и расширений для проверки ошибок, документирование кода через README-файлы для дальнейшей повторной работы со скриптами.</p><h3>Используйте логирования</h3><p><b>Логирование — вещь важная для любого типа кода.</b> Оно помогает понять, в каком статусе находится выполнение скрипта и помогает в поиске проблем. 3 главные плюса логирования:</p><ul><li>Логи помогают понять, какие части кода выполняются, а какие нет — полезная функция при работе со сложными процессами и задачами.</li><li>Логи также могут содержать информацию об ошибках и исключениях.</li><li>С помощью логов можно отслеживать фактическое время на выполнение разных частей скрипта — а значит, анализировать производительность будет проще.</li></ul><p>Для внедрения логирования можно использовать встроенные библиотеки языков программирования: logging в Python или logger в Bash.</p><h3>Добавьте проверки ошибок</h3><p>Ни один код не защищён от ошибок, а потому <b>важно заранее подумать о багах и разработать способ их «поимки» и отладки</b>. Так скрипт будет не только более стабильным и «обученным» на багах, но и сможет защитить данные от повреждений.</p><ul><li>Убедитесь, что все входные данные правильно заполнены перед первой проверкой работы скрипта.</li><li>Используйте try-except в Python или похожие блоки в других языках для перехвата и правильной обработки ошибок.</li><li>Возвращайте коды ошибок, чтобы лучше понимать природу проблему и вам, и конечному пользователю.</li></ul><h2>Документируйте код для повторного использования</h2><p><b>Документирование кода </b>— это не просто <i>«акт доброй воли»</i> для того, чтобы другие программисты могли учиться на вашем коде; документирование очень важно для того, чтобы повторно использовать скрипт в будущем:</p><ul><li>Опишите назначение функций и ключевых блоков кода — так в будущем вы (и другие пользователи) сможете быстрее понять структуру вашего скрипта.</li><li>Прописывайте отдельные README-файлы для подробного описания принципа работы скрипта.</li><li>Не пренебрегайте стандартами оформления кода, а активно пользуйтесь ими. Так код будет более легко читаемым и понятным для других.</li></ul><h2>Заключение</h2><p>Использование скриптов значительно снижает количество рутинных задач, улучшает точность их выполнения и сильно сэкономит время в долгосрочной перспективе. Скрипты автоматизируют практически любые процессы разработки. Пока они работают, вы можете заняться более интересными и важными для вас задачами. Но нужно всегда помнить: автоматизированный, идеально работающий и адаптивный код — это не заслуга «машины», а заслуга разработчика, который занимался написанием скриптов. А значит, всегда нужно вкладываться в доработку, улучшение кода, поиск багов и их устранение, добавление новых функций и переменных.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как автоматизировать инфраструктуру с помощью Terraform и Ansible</title>
      <link>https://tproger.ru/articles/avtomatizaciya-infrastruktury-s-ispolzovaniem-terraform-i-ansible</link>
      <comments>https://tproger.ru/articles/avtomatizaciya-infrastruktury-s-ispolzovaniem-terraform-i-ansible?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Денис Кудерин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/avtomatizaciya-infrastruktury-s-ispolzovaniem-terraform-i-ansible</guid>
      <description><![CDATA[<p>Использование Terraform и Ansible. Показываем, как автоматизировать инфраструктуру. Рассматриваем возможные варианты и пошаговую инструкцию, а также интеграцию систем ✔ Tproger</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/avtomatizaciya-infrastruktury-s-ispolzovaniem-terraform-i-ansible">Как автоматизировать инфраструктуру с помощью Terraform и Ansible</a>»</p>]]></description>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 25 Sep 2024 10:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Команды разработчиков применяют принципы и инструменты методологии DevOps для быстрого развертывания и беспроблемного обслуживания серверов, различных облачных инфраструктур и программного обеспечения. Эффективное управление внешними ресурсами с помощью автоматизации дает компаниям конкурентное преимущество и экономит ресурсы.</p><p>Зачем вообще компаниям нужна автоматизация? Инфраструктурой можно управлять вручную, однако в этом случае каждый раз понадобится привлекать специалистов по настройке и развертыванию программных продуктов. А это повышает издержки и риски безопасности. Даже если сервер всего один, автоматизация более надежна, чем ручное управление. Кроме того, это именно то направление, куда движется рынок цифровой инфраструктуры в целом.</p><p>Концепция «Инфраструктура как код» (Infrastructure as Code, IaC) наглядно воплощена в таком инструменте, как Terraform, который позволяет настраивать ресурсы, реализовывать масштабируемость и удобное управление цифровыми активами компании. При этом изменения в инфраструктуре легко отслеживаются и при необходимости тиражируются.</p><p>Еще один инструмент предназначен для автоматизации и настройки серверов и ПО — это Ansible. Система управления конфигурациями реализована на языке Python, осуществляет доставку, развертывание и обслуживание продуктов на серверах.</p><p>В обзоре подробно рассмотрим оба инструмента автоматизации инфраструктуры, оценим их преимущества и узнаем, как они работают.</p><p>Terraform и Ansible особенно хорошо укладываются в общую картину, если смотреть на них как на один из этапов DevOps-маршрута. Для этого пригодится <a href="https://tproger.ru/articles/roadmap-devops-inzhenera-v-2026-godu--chto-uchit-i-v-kakom-poryadke">Roadmap DevOps-инженера в 2026 году: что учить и в каком порядке</a>.</p><h2>Что такое Terraform и как он работает</h2><p>Terraform — программная платформа с открытым исходным кодом, предназначенная для управления внешними ресурсами. Инструмент разработан программистами компании HashiCorp для реализации концепции IaC. Здесь используется декларативный стиль управления внешней инфраструктурой. На практике это означает, что разработчик описывает желаемое состояние инфраструктуры, а Terraform реализует конфигурационный файл в форме кода.</p><p>Использование разработчиками высокоуровневого языка HashiCorp Configuration Language для описания требуемого состояния облачной либо локальной инфраструктуры существенно упрощает управление инфраструктурой.</p><p>Чтобы понять преимущества Terraform, нужно более глубоко разобраться в концепции Инфраструктуры как кода. Она позволяет разработчикам организовать инфраструктуру таким образом, чтобы инициализация происходила в автоматическом и непрерывном режиме.</p><p>У IaC есть следующие преимущества:</p><ul><li><b>Высокая скорость. </b>Автоматизация происходит быстрее, чем ручное управление по интерфейсу в случае, когда требуется развернуть либо подключить ресурсы.</li><li><b>Надежность.</b> Чем обширнее инфраструктура, тем выше вероятность ошибок — то есть неправильной настройки ресурсов или подготовки служб в некорректном порядке. Применение IaC исключает неправильную подготовку и настройку — все происходит именно так, как заявлено.</li><li><b>Мультиоблачная поддержка.</b> IaC поддерживает эксперименты по управлению, тестирование и оптимизацию. Простая и быстрая подготовка новой инфраструктуры позволяет вносить изменения и проверять их эффективность, не тратя на этого мно ресурсов и времени. Если результат удовлетворительный, новую инфраструктуру легко масштабировать для продакшена.</li></ul><p>Инструмент наглядной реализации концепции IaC Terraform для декларативного управления инфраструктурой реализует все преимущества IaC. Разработчикам не придется вручную создавать сети и прочие компоненты в консоли — достаточно создать конфигурацию, где будет описано, какой они видят будущую инфраструктуру.</p><p>Это делается в текстовом формате естественным, то есть человеко-читаемым языком. Перенос управления инфраструктурой в текст — это возможность управлять исходным кодом, редактировать его, откатывать и вносить структурные изменения.</p><p>Почему разработчики выбирают именно Терраформ:</p><ul><li><b>Открытый код.</b> Инструмент поддерживает обширное сообщество пользователей, которые постоянно создают новые плагины для этой платформы. Независимо от используемого облачного провайдера разработчики без труда найдут нужные расширения и экспертную поддержку.</li><li><b>Развитие.</b> Terraform быстро развивается, совершенствуется и улучшается. Это перспективная система, значительно упрощающая процесс управления инфраструктурой.</li><li><b>Универсальность.</b> Терраформ можно использовать в работе с любыми поставщиками облачных услуг. Аналоги предназначены преимущественно для работы с конкретными провайдерами.</li><li><b>Контроль.</b> При изменении среды инфраструктура, управляемая Terraform, заменяется новой версией, при этом старые сохраняются, чтобы в случае необходимости сделать откаты.</li></ul><p>Модули Terraform — это компактные и наиболее востребованные конфигурации для инфраструктурных ресурсов. С помощью модулей легко автоматизировать сложные и разветвленные системы. Более того, конфигурации могут пользоваться дочерними модулями, что ускоряет разработку и делает ее более безопасной.</p><p>Провайдеры Терраформ — это плагины для реализации различных видов ресурсов. Поставщики предоставляют весь необходимый код для подключения к нужным службам от имени пользователя.</p><p>Инструмент Terraform используется для работы в команде, при этом состояние хранится удаленно, чтобы обеспечить доступ всем участникам. При совместной работе важна эффективность управления, при этом риск ошибок возрастает. При удаленном хранении состояние можно в любой момент заблокировать, чтобы избежать недостатков в управлении.</p><p>В качестве практического примера приведем алгоритм работы с облаком:</p><ol><li><b>Подготовка облака к работе.</b> На облачной платформе (например, Yandex Cloud) нужно подключить платежный аккаунт, чтобы оплачивать работу виртуальных машин и динамические IP-адреса.</li><li><b>Установка Terraform.</b> Это можно сделать с официального сайта HashiCorp, выбрав версию для используемой операционной системы. Инструмент управляется с помощью пакетного менеджера.</li><li><b>Получение данных для аутентификации.</b> Для управления структурой Yandex Cloud через Терраформ используется сервисный аккаунт, что обеспечивает гибкую настройку доступа к ресурсам.</li><li>Создание файла конфигурации Terraform. Создаются директории, в которых будут содержаться файлы конфигурации и все сохраненные состояния инфраструктуры.</li><li><b>Настройка провайдера.</b> Эксперты советуют использовать наиболее позднюю версию Терраформ. Если возникнут проблемы с установкой и настройкой провайдера, можно обратиться в поддержку.</li><li><b>Подготовка плана инфраструктуры. </b>Terraform позволяет создавать облачные ресурсы всех видов. Для этого необходимо описать набор параметров, которые определяют свойства ресурса, то есть план инфраструктуры.</li><li><b>Проверка и форматирование файлов конфигураций. </b>Это делается, чтобы исключить ошибки в описании инфраструктуры.</li><li><b>Создание ресурсов.</b> Заключительный этап процесса — его результатом становится список ресурсов с их текущими параметрами.</li></ol><p>Возможность предоставлять ресурсы в нескольких облаках и развертывать функции вне серверов делает Terraform эффективным инструментом для организаций, развивающих инфраструктуру своих ресурсов.</p><h2>Что такое Ansible и какие у него особенности</h2><p>Ansible, как и Терраформ, — это инструмент автоматизации инфраструктуры с открытым исходным кодом. Он позволяет управлять конфигурацией, развертывать инфраструктуру и выполнять множество других задач. При этом используется максимально простой человекочитаемый формат данных YAML для постановки целей в виде плейбуков (базовых компонентов инструмента). Для работы платформы не требуется установка дополнительного ПО, она работает на языке Python.</p><p>Система создана для управления серверами в компьютерных сетях, она обеспечивает доставку и запуск программных продуктов. С ее помощью разработчики, инженеры и другие специалисты выполняют настройку серверов максимально быстро и безопасно. Применение Ansible особенно актуально в ситуациях, когда серверов несколько или сеть имеет сложную структуру.</p><p>Система находится в открытом доступе — разработчики могут в любой момент изучить ее код и адаптировать под насущные потребности компании. Как и Terraform, Ansible действует в концепции «Инфраструктура как код». При таком подходе работа серверов настраивается при помощи конфигурационных файлов. Данные о настройках и серверных программных средствах хранятся в специальных папках.</p><p>Ansible эффективно решает проблемы ручного управления. Вместо длительной настройки или написания скриптов реализуется система управления конфигурациями. Достаточно описать требуемое состояние и способы его достижения, и инструмент автоматически выполнит настройку серверов и проделает другие необходимые действия для достижения результатов.</p><p>Среди других систем автоматического управления Ansible выделяется следующими особенностями:</p><ul><li><b>Декларативность.</b> Такой подход означает, что разработчику не нужно описывать в коде действия программы напрямую, достаточно обозначить результат, которого нужно достичь. Не придется обдумывать, какими путями это будет достигнуто, что сокращает время реализации.</li><li><b>Push вместо pull. </b>Стандартная работа серверов построена на строгой иерархии — есть управляющая машина, ей подчиняются зависимые. При стандартном управлении типа pull подчиненные сервера тянут данные от главного. Ansible использует принцип push — головная машина сама продвигает информацию к подчиненным.</li><li><b>Универсальность.</b> Как правило, системы управления нуждаются в специальном окружении для работы. Ansible действует с текущим SSH-окружением, то есть стандартным протоколом для серверного управления. Инструменту не требуется специальное ПО работы.</li><li><b>Простая архитектура.</b> В системе есть основной сервер, откуда исходят команды. К серверу подключены пользователи, общая база данных и облачные системы. В главном сервере установлен API (интерфейс управления), модули и плагины, которые реализуют различные программные решения.</li><li><b>Быстрое освоение.</b> Инструмент легко освоить, у него простой код, а в случае проблем всегда можно обратиться к сообществу или подробной официальной документации на GitHub. Язык Python и формат YAML понятны, при этом дополнительные модули можно писать на любом другом языке.</li></ul><p>Набор модулей Ansible довольно обширный — они нужны для работы с различными программными компонентами, которые задействованы на серверах. Система успешно взаимодействует с базами данных, облачными хранилищами, пакетными менеджерами и различными программами для мониторинга. Это значит, никакие специальные библиотеки для работы скачивать не придется.</p><p>Компонент Ansible, который называется инвентарь, представляет собой специализированное хранилище, в которых хранится информация о хостах. Для каждого хоста пользователь может указать параметры и переменные.</p><p>Основной рабочий протокол Ansible — это плейбуки, то есть файлы сценариев. Разработчики пишут их в человекочитаемом формате YAML — файлы содержат сведения о том, какой результат и на каких серверах должен быть. Плейбуки — это основа Ansible, хотя элементарные задачи можно решить и без них.</p><p>Стандартный пример работы с Ansible выглядит следующим образом:</p><ol><li>Разработчик заполняет файл hosts, указывает список зависимых сервисов с доменными именами либо IP адресами.</li><li>Указывает переменные, необходимые для подключения. Серверам могут потребоваться имена пользователей и другие данные. В режиме по умолчанию серверы связываются через SSH с помощью ключей.</li><li>Пишет плейбук, указывая в нем, с какими сервисами необходимо работать и что именно делать. Плейбук сохраняется в файл.</li><li>Разработчик отдает команду Ansible и тем самым активирует работу плейбука.</li></ol><p>Типовые задачи решаются даже без плейбуков. Для этого используются инструменты автоматизации рутины под названием «роли». В этом случае вместо блока tasks указывается роль, то есть шаблонный список задач и переменных для них. Роли используются также, когда одинаковую задачу нужно прописать для разных серверов.</p><h2>Как интегрировать Terraform и Ansible</h2><p>Оба инструмента можно использовать для управления конфигурациями. Однако Terraform правильно называть инструментом оркестровки, поскольку он обеспечивает управление базовыми элементами инфраструктуры.</p><p>Система подходит для создания облачной инфраструктуры, настройки виртуальных машин и хранилищ. Terraform особенно полезен для управления инфраструктурой сразу нескольких облачных провайдеров. Архитектура на основе плагинов делает инструмент эффективным для реализации масштабных задач.</p><p>В свою очередь, Ansible — идеальный вариант для управления конфигурацией конкретных систем и развертывания приложений. Платформа автоматизирует такие задачи, как установка пакетов, управление различными службами и настройка параметров компьютерных сетей.</p><p>Таким образом, Terraform и Ansible можно использовать совместно. Первый создает инфраструктуру, второй обеспечивает четкую и быструю настройку сетевых устройств и развертывание приложений. Ответственность разделяется по разным инструментам, при этом общая скорость и безопасность управления повышаются.</p><p>Применение в тандеме Terraform и Ansible позволяет управлять инфраструктурой приложений без ручных операций на сервере. Терраформ создаст базовые элементы, а Ansible интегрирует компоненты, которые надстраиваются на них. Связующим звеном служит статический или динамический инвентарь. В зависимости от назначения облачного сервиса и сложности проекта используются разные сценарии.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как автоматизировать деплой с использованием Kubernetes</title>
      <link>https://tproger.ru/articles/avtomatizaciya-deploya-s-ispolzovaniem-kubernetes---tproger</link>
      <comments>https://tproger.ru/articles/avtomatizaciya-deploya-s-ispolzovaniem-kubernetes---tproger?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Ксения Андреева]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/avtomatizaciya-deploya-s-ispolzovaniem-kubernetes---tproger</guid>
      <description><![CDATA[<p>Автоматизация деплоя с использованием Kubernetes. Показываем, какие возможности можно использовать. Рассматриваем реальные примеры и кейсы ✔ Tproger</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/avtomatizaciya-deploya-s-ispolzovaniem-kubernetes---tproger">Как автоматизировать деплой с использованием Kubernetes</a>»</p>]]></description>
      <category><![CDATA[Docker]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Kubernetes]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 21 Sep 2024 08:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<h2>Что такое Kubernetes и зачем он нужен</h2><p>Kubernetes (или K8s) — это открытая система содержания контейнеров, которая автоматизирует развёртывание, масштабирование и управление контейнерными приложениями. Разработали её энтузиасты из Google: Джо Беда, Брендан Бёрнс и Крейг МакЛаки. А позже Kubernetes была передана подразделению Linux Foundation с открытым исходным кодом.</p><p>Kubernetes — это платформа для работы с виртуальными контейнерами данных, которая позволяет хранить и обеспечивать работу контейнеров и узлов в частности.</p><p>Kubernetes мониторит состояние контейнеров данных, поддерживает связи между ними или изолирует их друг от друга при необходимости. Кроме того, он следит за нагрузкой на систему и позволяет оперативно масштабировать систему. В этом и есть весь смысл определения Kubernetes как оркестратора данных: он «говорит», кому, когда и насколько «громко» нужно «играть». Каждый контейнер — это «музыкант».</p><h2>Из чего состоит Kubernetes</h2><p>Объясняем на примере сотрудников:</p><ul><li><b>Pod</b> (под), сотрудник низшего звена — это наименьшая единица развёртывания в Kubernetes, которая представляет собой один или несколько контейнеров, работающих вместе. Каждый под имеет свой IP-адрес и общую файловую систему.</li></ul><ul><li><b>Node</b> (узел), менеджер — это рабочая машина в кластере; то, что запускает работу программ. Это может быть виртуальная или физическая машина. В каждом узле работает агент kubelet, который отвечает за управление подов на этом узле.</li></ul><ul><li><b>Кластер</b>, старший менеджер, состоит из одного или нескольких узлов, которые объединены для совместной работы. Кластер управляется Control Plane.</li></ul><ul><li><b>Etcd</b>, управляющий, — база данных, которая хранит всю информацию и зависимости, необходимые для правильной работы кластеров. Иначе кластеры будут функционировать неправильно. Именно Etcd проверяет состояние работы всех кластеров, узлов и подов для правильной и корректной работы всей системы.</li></ul><ul><li><b>Control Plane</b> (управляющий слой или панель управления), директор, — это интерфейс для развёртывания контейнерных приложений и управления кластером. Состоит из нескольких ключевых компонентов: kube-apiserver — интерфейс API для взаимодействия с кластером, kube-scheduler — отвечает за планирование, kube-controller-manager — выполняет разнообразные задачи контроллеров, cloud-controller-manager — интегрируется с облачными провайдерами для управления ресурсами кластера.</li></ul><p>Различные модели развертывания обеспечивают гибкость при управлении приложениями:</p><ul><li>Deployment используется для масштабирования, обновления версий приложения без прерываний работы пользователей;</li><li>StatefulSet нужен для управления состоянием приложений;</li><li>DaemonSet гарантирует, что копия pod будет запущена на каждом узле кластера. DaemonsSet используют для сбора логов мониторинга системных ресурсов.</li></ul><p>Kubernetes поддерживает работу и с другими системами, например, с Docker. Если коротко: Docker используется для «упаковки» приложений в контейнеры, а K8s — для управления контейнерами. Для того чтобы все приложения и зависимости работали корректно, их в первую очередь нужно правильно «упаковать» и подготовить к оркестровке — здесь и приходит на помощь Docker. Использование Kubernetes и Docker вместе позволяет разработчикам быстрее писать код, правильно его подготавливать для использования приложениями и умело управлять всеми приложениями и зависимостями в контейнерах.</p><p>У Docker есть функции и инструменты, которые помогают предупредить возможные ошибки на разных этапах: например, функция автоматической сборки, рекомендации по уязвимостям, а использование Docker Hub позволяет забыть о возможных угрозах безопасности образов.</p><h2>Что такое автоматизация деплоя</h2><p>Автоматизация деплоя — это процесс, при котором развёртывание приложений осуществляется с минимальным участием человека. Основная цель здесь — именно сокращение ручных операций для снижения вероятности ошибок и увеличения скорости развёртывания контейнеров.</p><p>Процесс автоматизации включает в себя работу с локальными серверами разработки и облачными платформами.</p><p>Ещё плюсы — автоматизация Kubernetes:</p><ol><li>Для стандартизации процессов, которая обеспечивает стабильное поведение и открываемость приложений в разных средах;</li><li>Возможность легко масштабировать приложение без долгого времени на настройку.</li></ol><p>Самое главное преимущества автоматизации — это ускорение процесса развёртывания приложений. Вручную — много часов, автоматически — несколько минут или даже секунд.</p><p>Ещё автоматизация деплоя помогает улучшить контроль версий за счёт интеграции с системами управления версиями (сюда относится Git). Так вы легко сможете отслеживать изменения кода и быстро откатываться к предыдущим версиям, если это необходимо.</p><p>Автоматизированные процессы исключают человеческий фактор, — здесь должна быть картинка «я что-то нажал и оно всё сломалось» :) — а это, в свою очередь, значительно повышает надёжность всей системы за счёт стандартного скрипта поведения приложений при каждом запуске.</p><p>Любые масштабы — ещё один плюс автоматизации. Добавьте новые сервера или среды без необходимости дополнительной ручной настройки.</p><h2>Как настроить окружение Kubernetes для деплоя</h2><p>В первую очередь (ну а вдруг вы ещё не установили K8s и Docker) — базовые рекомендации:</p><figure><img src="https://media.tproger.ru/user-uploads/106063/2024-09-20/b11c07bd-af24-4b2b-872f-008e9cc5ea73.png" alt="" /><figcaption>(Установите Docker Desktop, проработайте процес контейнеризации, убедитесь, что K8s включена в Docker Desktop https://docs.docker.com/guides/deployment-orchestration/kube-deploy/)</figcaption></figure><ol><li>Для начала необходимо подготовить сервера. Как правило, для этого используют виртуальные машины или облачные сервисы (например, AWS, GCP). Убедитесь, что на всех узлах установлены необходимые зависимости: Docker и kubeadm.</li><li>Установите kubeadm, kubelet и kubectl;</li><li>На главном узле запустите команду для инициализации мастера узла;</li><li>Настройка сетевого плагина — для этого установите Flannel.</li></ol><p>Создание и конфигурация кластера включает в себя следующие этапы:</p><ul><li>Подготовка серверов (обновление ОС, правильно заданное время хоста, добавление репозитория, инсталляция пакетов, необходимых для кластера, запуск Docker и kubelet, установка кластера);</li><li>Установка мастера;</li><li>Настройка виртуальной сети;</li><li>Подключение вычислительных узлов;</li><li>Управление кластером с узлов, не принадлежащих кластеру;</li><li>Установка и получение доступа к Web-UI;</li><li>(опционально) установка WeaveScope;</li><li>Запуск приложения.</li></ul><h4>Подготовка приложения к деплою</h4><p>Здесь обязательные шаги — это подготовка окружения (развёртывание кластера, проверка, настройка container registry), подготовка репозитория, создание набора ресурсов в Deployment, настройка Service, настройка Ingress и ввод команды «werf converge» для сборки и развёртывания приложения.</p><h2>Как автоматизировать деплой с Kubernetes</h2><ol><li>Первый шаг — это создание Deployment манифестов. Deployment манифесты позволяют управлять репликами подов.</li><li>Второй шаг — автоматическое масштабирование. HorizontalPodAutoscaler автоматически увеличивает или уменьшает количество подов в зависимости от нагрузки.</li><li>Третий шаг — использование ConfigMaps и Secrets. ConfigMaps управляет конфигурацией приложений вне контейнеров, а Secrets обеспечивает безопасное хранение конфиденциальных данных.</li><li>Четвёртый шаг — настройка Service и Ingress. Service даёт стабильный IP-адрес для взаимодействия с подами, а Ingress помогает управлять внешним доступом к сервисам внутри кластера.</li></ol><h2>Какие инструменты нужны для автоматизации CI/CD с Kubernetes</h2><ul><li>Helm упрощает управление приложениями в Kubernetes.</li><li>GitOps c ArgoCD и Flux. ArgoCD обеспечивает непрерывную доставку через GitOps. Flux также можно использовать для GitOps’а.</li><li>Такие инструменты, как Jenkins, GitLab CI, CircleCI можно интегрировать с Kubernetes <a href="https://www.programmerall.com/article/6848991948/">через плагины или скрипты</a>.</li></ul><h2>Как мониторить деплои и управлять ими</h2><ul><li>Prometheus и Grafana используются для мониторинга состояния кластера и его компонентов.</li><li>Elasticsearch, Fluentd и Kibana-стек обеспечивают масштабируемое логирование в Kubernetes.</li><li>Kubernetes допускает возможность отката до предыдущих версий в случае непредвиденных ошибок при обновлении деплоя.</li></ul><p>Всё это может звучать сложно, однако правильная настройка сервисов и инструментов при автоматизации значительно упрощает процесс ввода деплоя в продакшн.</p><h2>Несколько советов для автоматизации деплоя</h2><p>Корректное управление версиями и окружениями — самый важный фактор для успешной автоматизации деплоя в Kubernetes. Вот несколько советов:</p><ul><li>Используйте семантическое версионирование (semver) — легко контролируйте изменения: от исправления ошибок и введения новых функций до внесения значительных изменений в код.</li><li>Применяйте неизменяемые теги для контейнерных образов — так каждый деплой будет использовать выбранную версию приложения.</li><li>Разделяйте разные окружения (development, staging, production) с помощью namespaces — так данные будут надёжно изолированы.</li><li>Используйте ConfigMaps и Secrets для каждого окружения отдельно.<br /></li></ul><p>Как достичь безопасности и доступности серверов х100 с помощью Kubernetes:</p><ul><li>Настройте роли и права доступа для пользователей и сервисов — лучше до минимально возможного уровня доступа.</li><li>Используйте инструмент Network Policies для управления трафиком между подами внутри кластера.</li><li>Включите PSP для контроля над тем, какие поды могут быть развёрнуты в кластере.</li><li>Автоматизируйте масштабирование подов на основе нагрузки.</li><li>Используйте PDBs для управления перерывами в работе приложений, например, во время обновлений.<br /></li></ul><p>Как сократить затраты на инфраструктуру:</p><ul><li>Устанавливайте запросы и лимиты ресурсов CPU/Memory для каждого пода. Это предотвращает неопределённое поведение при перегрузке системы.</li><li>Настройте правила размещения подов на узлах кластера для лучшей балансировки нагрузки.</li><li>Используйте Spot Instances для автоматизации мелких задач.</li><li>Используйте Cluster Autoscaler для автоматического добавления или удаления узлов в зависимости от потребностей нагрузки.<br /></li></ul><h2>Какие есть примеры автоматизации деплоя с помощью Kubernetes</h2><h3>№1 — Автоматизация деплоя для микросервисного приложения</h3><p><b>Проект:</b> <a href="https://exerica.com/">Exerica</a>, ИИ-инструмент для анализа финансовых и статистических документов.</p><p><b>Ранее использовалось:</b> GitLab, Docker Swarm с помощью Ansible.</p><p><b>Проблемы:</b> просадки производительности, сложно поддерживать много файлов и плейбуков Docker Swarm, невысокая отказоустойчивость схемы с одним входным Nginx, нет гибкости системы.</p><p><b>Что выбрали: </b>self-managed Kubernetes.</p><p><b>Дополнительные инструменты:</b> Helm, ExternalDNS, cert-manager</p><p><b>Этапы автоматизации:</b> разработка структуры диаграмм для Helm, сборка диаграмм, создание единой конфигурации, унификация шаблонов, развёртывание релиза.</p><p><b>Результат: </b>Благодаря тому, что<b> </b>Exerica добавила дополнительную шаблонизацию и автоматическую компоновку диаграмм, получилось выстроить непрерывный процесс развертывания в Kubernetes — и все с минимальным участием человека. Плюс появилась возможность формировать релиз из любых версий компонентов, автоматически проверять успешность развертывания и делать откаты.</p><h3>№2 — Использование GitOps для управления кластерами Kubernetes</h3><p><b>Проект:</b> <a href="http://itmo.ru/">ИТМО</a>, научно-образовательная корпорация.</p><p><b>Проблема:</b> Было слишком много проектов, чтобы небольшая группа девопсов могла глубоко участвовать в деплое каждого из них.</p><p><b>Ранее использовалось:</b> код в GitLab → мастер-ветка с помощью любого CI/CD инструмента → установка в кластер с помощью команды «helm install». Но схема была на самая удобная, поскольку требовала от девопсов слишком много сил и времени на управление приложениями.</p><p><b>Потребность в GitOps: </b>уменьшение количества девопсов, сбор обратной связи, единый источник правды.</p><p><b>Этапы автоматизации:</b> выбор в качестве GitOps-оператора ArgoCD, настройка ArgoCD, настройка Application, настройка AppProject, настройка ApplicationSet.</p><p><b>Результат: </b>ИТМО свела к минимуму участие девопсов в деплое, поскольку переехали на другую методологию развертывания. С GitOps появилось дополнительное приложение, позволяющее следить за изменениями проектов в сравнении с заданными в git конфигами. Теперь гораздо проще управлять сотнями приложений в кластере.</p><h3>№3 — Настройка CI/CD процесса с Jenkins и Kubernetes для крупного проекта</h3><p><b>Проект:</b> <a href="https://dzone.com/articles/jenkins-x-step-by-step-tutorial-to-continuous-depl">TestProject</a>, платформа контроля качества с ИИ-инструментами.</p><p><b>Какие проблемы решает интеграция Jenkins и Kubernetes:</b> поддержка серверов (сборки, среды тестирования, оркестровка), автоматическое развёртывание параллельных сред, естественная интеграция с процессами разработки и выпуска микросервисов.</p><figure><img src="https://media.tproger.ru/user-uploads/106063/2024-09-20/20c38ef1-2501-4f20-83c4-e74f0430467f.png" alt="" /></figure><p><b>Этапы автоматизации:</b> установка и настройка Jenkins x Serverless, импорт существующего проекта в Jenkins (создание нового репозитория, добавление необходимых файлов для Jenkins, создание пользовательских пакетов сборки для Jenkins, выбор источника для пакетов сборки, добавление поддержки модульного тестирования), интеграционное тестирование в Jenkins с помощью API.</p><h2>Заключение</h2><p>Kubernetes — классное решение для оркестровки контейнеров как для микросервисных, так и для крупных проектов. А использование дополнительных решений — Jenkins, GitOps, Docker — позволяет упростить работу по подготовке и развёртыванию деплоя, а также сборку приложений.</p><p>А что вы думаете об автоматизации развёртывания Kubernetes? Поделитесь своим опытом в комментариях к этой статье — будем рады почитать вашу обратную связь!</p>]]></content:encoded>
    </item>
    <item>
      <title>Как автоматически проверить задание на знание ООП на примере Stepik</title>
      <link>https://tproger.ru/articles/kak-proverit-zadanie-po-programmirovaniyu-v-stile-oop-avtomaticheski-na-primere-stepik-2-chast</link>
      <comments>https://tproger.ru/articles/kak-proverit-zadanie-po-programmirovaniyu-v-stile-oop-avtomaticheski-na-primere-stepik-2-chast?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Роман Агренин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-proverit-zadanie-po-programmirovaniyu-v-stile-oop-avtomaticheski-na-primere-stepik-2-chast</guid>
      <description><![CDATA[<p>Рассказали, как построить автоматизированную систему для проверки задач на знание ООП согласно требованиям Stepik.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-proverit-zadanie-po-programmirovaniyu-v-stile-oop-avtomaticheski-na-primere-stepik-2-chast">Как автоматически проверить задание на знание ООП на примере Stepik</a>»</p>]]></description>
      <category><![CDATA[Объектно-ориентированное программирование]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 29 Nov 2023 08:03:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>Обучение объектно-ориентированному программированию (ООП), как правило, строится либо на излишне тривиальных примерах вроде животных, либо на абстракциях. Это трудно для понимания, так как никак не пересекается со встреченными до этого момента задачами и проблемами программирования.</p><p>В прошлой <a href="https://tproger.ru/articles/obuchenie-oop-na-primere-realizacii-klassa-kucha-v-python-1-chast">заметке</a> на примере плана урока по реализации класса структуры типа «куча» мы показали, как построить пошаговую подачу материала с постепенным усложнением практических задач. Теперь их необходимо реализовать.</p><p>Образовательные платформы реализуют разные подходы к проверке заданий по программированию. Мы рассмотрим Stepik, как одну из наиболее доступных. Она позволяет любому желающему создать свой курс и наполнить его задачами по программированию бесплатно.</p><p>Stepik — прекрасная платформа онлайн-образования, позволяющая проходить онлайн-курсы по различным дисциплинам. Однако она имеет серьёзный недостаток, так как тестирование жёстко завязано на проверку сравнения потока вывода и некоего эталона, а не самих классов, экземпляров, атрибутов и методов.</p><p>Начнём с системы проверки заданий по программированию: как она устроена, и как можно её улучшить для целей проверки более сложных задач?</p><h2>Описание стандартной схемы проверки</h2><p>Механизм проверки заданий на программирование на платформе Stepik состоит из двух частей:</p><ol><li>«Языки и шаблоны»;</li><li>«Расширенный редактор».</li></ol><p>В расширенном редакторе автор задания должен реализовать три функции:</p><ol><li>generate();</li><li>check(reply, clue);</li><li>solve(dataset).</li></ol><p>generate возвращает список строк.</p><p>Каждая строка — это один тест, который проверяет код учащегося независимо от других. Текст строки попадает в поток ввода в начале теста.</p><p>solve(dataset) — функция, реализующая эталонное решение. В качестве аргумента dataset она получает строку теста целиком, с символами переноса строк. В качестве ответа функция должна предоставить строку эталонного ответа.</p><p>check(reply, clue) — функция, осуществляющая сравнение эталонного ответа и ответа учащегося. На вход принимает две строки. Возвращает логическое значение (True или False) в зависимости от результата сравнения. При получении на вход в качестве обоих параметров эталонного ответа должна возвращать True, иначе задача считается сломанной (то есть некорректно оценит ответ учащегося).</p><p>В простейшем варианте check фактически сравнивает поток вывода в каждом тестовом случае у учащегося и эталонной функции solve, однако, не для всех задач это приемлемо.</p><p>Например, если в задаче требуется найти площадь правильного треугольника со стороной 5, то некорректно в качестве эталонного значения использовать строку «10.825317547305483» — в зависимости от округления и порядка операций точность вычислений может быть разной. Более корректно будет привести полученный от учащегося и от эталонной функции ответ к типу float, после чего сравнить абсолютную разницу между этими числами с пороговым значением (например, 0,0000000001).</p><p>В блоке «Языки и шаблоны» фактически формируется код учащегося с помощью четырёх блоков в следующем порядке:</p><p>В данном примере python3 и kotlin — языки программирования, разрешённые к использованию учащимся. Здесь могут быть перечислены несколько языков, каждый с новой строки.</p><figure><img src="https://media.tproger.ru/user-uploads/80428/2023-11-22/9793ef71-a28e-4123-8adf-6a6e2104a3bc.jpg" alt="" /></figure><p>Такая реализация позволяет довольно легко создавать задания, где учащийся сам должен считать что-то из потока ввода, а ответ выводить в поток вывода (есть даже упрощённый редактор во вкладке «Тестовые данные», где задаются непосредственно строки ввода и вывода).</p><h3>Какие у этого сложности</h3><p>Такая схема не проверяет, как был получен ответ.</p><p>Чтобы обойти это, необходимо:</p><ul><li>сгенерировать уникальные тесты,</li><li>считать их в блоке ::header до кода студента,</li><li>вывести в блоке ::footer код, который в зависимости от состояния теста, полученного ранее, проведёт только определённые проверки.</li></ul><p>Например, для Python: сначала проверить есть ли в пространстве local объект с именем класса, чтобы узнать, реализовал ли учащийся такой класс. После чего узнать тип этого объекта, чтобы удостовериться, что это именно класс, а не функция. И, наконец, вызвать конструктор этого класса, чтобы удостовериться, что он работает.</p><p>И только если весь этот код отработает без ошибок, можно вывести какое-то сообщение, например, «Базовая проверка пройдена».</p><p>Поскольку весь код, написанный в блоке ::header, уже выполнился к моменту начала работы кода учащегося, он может узнать обо всех проверках, которые мы там производим. Следовательно, никаких сложных проверок там делать не стоит.</p><p>Также это значит, что необходимо предусмотреть непубличные тесты, где поток ввода будет влиять непосредственно на поток вывода, а не вызывать заранее заготовленные сообщения.</p><p>Однако ООП довольно тяжело даётся многим студентам, и новичкам часто сложно понять природу проблемы по ошибкам и исключениям. Поэтому на начальных этапах необходимо добавить как можно больше простых проверок, которые в случае проблем будут выводить в поток вывода сообщения, описывающие проблему.</p><p>Рассмотрим этот процесс на примере грейдера задачи, проверяющей реализацию на Python простого класса Heap, хранящего внутри экземпляров всего один атрибут data с типом список.</p><h2>Система проверки задачи</h2><h3>generate</h3><p>Создадим шесть простых сообщений, которые будут публичными тестами.</p><p>Остальные тесты будут приватными (для начала добавим один). Для определённости и простоты отладки поместим внутрь тестовых сообщений копию кода, который будем выполнять в тестовом сценарии.</p><h3>check</h3><p>Как уже было описано ранее, сравнение с эталоном в данном уроке можно проводить простым сравнением строк:</p><h3>solve</h3><p>Внутрь функции solve поместим эталонный класс Heap, который должен проходить все проверки.</p><p>В дальнейшем весь код мы переместим в раздел ::footer шаблона с двумя изменениями:</p><ol><li>Шаблон не будет содержать эталонной реализации Heap, её должен написать учащийся.</li><li>Вместо return мы будем использовать print, так как по жизненному циклу код учащегося не возвращает строку, а именно выводить её в поток вывода.</li></ol><h2>Система проверки цепочек задач с постепенно усложняющимся условием</h2><p>Очевидно, это необходимо для того, чтобы путём декомпозиции задачи позволить учащемуся сперва решить более простую задачу. Например, реализовать класс-заглушку, как в примере выше, и только после этого добавить в него методы, соответствующие реальной структуре данных (в нашем примере, очевидно, «куче»).</p><p>Система проверки всех задач строится по описанному выше принципу, однако наследует все тесты предыдущих задач, так как мы модифицируем и расширяем функционал одних и тех же классов.</p><p>Поскольку платформа Stepik не позволяет скрыть первые тесты, мы будем помещать эти тесты в конце, делая их приватными. Это может быть спорным решением в плане дизайна, так как получив ошибку в неизвестном приватном тесте учащийся обычно не знает, как её исправлять. Однако, в описании урока мы явно обозначим этот факт, напомнив в тесте, что код решения текущей задачи должен успешно проходить и все предыдущие.</p><p>Так же необходимо заблокировать возможность использования модулей стандартной библиотеки Python, реализующих функциональность «кучи», чтобы учащийся самостоятельно реализовал их. Покажем это на примере блокировки модуля heapq:</p><p>Код помещается в начале шаблона, (в блоке ::header) и выполняется до кода учащегося.</p><h2>Что дальше?</h2><p>Примеры описанного подхода можно посмотреть в следующих уроках:</p><ol><li><a href="https://stepik.org/lesson/1024973/">на примере класса «Кучи»</a>;</li><li><a href="https://stepik.org/lesson/68721/step/12">на примере животных</a> (кстати, в этом курсе такой же подход во многих уроках используется для задач на написание функций).</li></ol><p>А всем, кто планирует реализацию своих курсов с задачами по программированию на Stepik мы рекомендуем сперва реализовать шаблонизатор, позволяющий генерировать заготовки заданий из готовых функций или классов и наборов тест-кейсов. Это позволит сделать действительно полезные задачи прямо на Stepik, без интеграции с отдельной проверяющей системой.</p>]]></content:encoded>
    </item>
    <item>
      <title>Настраиваем конфигурацию DAG в Apache Airflow так, чтобы меньше о ней думать</title>
      <link>https://tproger.ru/articles/nastraivaem-konfiguraciyu-dag-v-apache-airflow-tak-chtoby-menwe-o-nej-dumat</link>
      <comments>https://tproger.ru/articles/nastraivaem-konfiguraciyu-dag-v-apache-airflow-tak-chtoby-menwe-o-nej-dumat?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Ирина Тюльпакова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/nastraivaem-konfiguraciyu-dag-v-apache-airflow-tak-chtoby-menwe-o-nej-dumat</guid>
      <description><![CDATA[<p>В статье рассказали, как мы настроили и оптимизировали разработку загрузок для Apache Airflow и что для этого потребовалось.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/nastraivaem-konfiguraciyu-dag-v-apache-airflow-tak-chtoby-menwe-o-nej-dumat">Настраиваем конфигурацию DAG в Apache Airflow так, чтобы меньше о ней думать</a>»</p>]]></description>
      <category><![CDATA[Big Data]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Data Science]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 04 Oct 2023 08:24:37 GMT</pubDate>
      <content:encoded><![CDATA[<p>Сбор и обработка данных для биг дата — достаточно трудоёмкая задача. Для этих целей используются загрузчики.</p><p>Но заранее спроектировать и настроить их «на века» невозможно. В процессе работы всегда появляются новые источники сбора данных или специфичные требования к ним, которые часто приходится обрабатывать вручную. Поэтому мы настроили и оптимизировали разработку загрузок.</p><h2>Мы пользуемся Airflow как единой системой запуска задач</h2><p>В нашем банке есть собственная платформа больших данных — DataFactory. Я уже больше года занимаюсь тем, что создаю загрузчики внешних данных для неё. До того, как я пришёл в Газпромбанк, этот процесс был неоптимизирован. Часть информации обрабатывалась Java-загрузчиками, часть — написанными на голом Python.</p><p>Сейчас мы используем Apache Airflow как оркестратор ETL-процессов, а сами процессы пишем на Python. Airflow оперирует DAG — направленным ациклическим графом, в котором описываются правила работы задач внутри одной загрузки данных. Такое решение, например, позволяет нам запускать задачи параллельно внутри кластера Kubernetes — в котором за выполнение каждой задачи отвечает отдельный k8s POD.</p><p>В основном, у загрузчиков схожие правила работы. Но для каждого требуется определенные настройки, которые в виде JSON описаны в наборе конфигурационных параметров и хранятся в Airflow Variables. Например, можно указать глубину сбора данных (в днях) и другие параметры, влияющие на выполнение DAG.</p><p>Иногда процесс нужно запускать с произвольной конфигурацией. Чаще всего на стадии финальной отладки и активного тестирования работы. Раньше в такой ситуации мы меняли значения в Airflow Variables, а затем возвращали их обратно, когда загрузчик завершал работу. Случалось, что мы забывали вернуть измененные параметры обратно, а потом искали причину некорректной работы DAG. В конце концов мы задумались, как можно легко менять значения важных переменных внутри существующего кода. И придумали!</p><h2>Способы изменить конфигурацию</h2><h3>Встроенный редактор</h3><p>В UI Apache Airflow есть свой редактор JSON. Можно залезть внутрь Airflow Variable и изменить значения там. Но такой подход не очень подойдёт, если вы хотите разово выполнить загрузку со специфическими параметрами. Airflow Variable содержит постоянные значения, которые, как правило, прописываются раз и навсегда. Когда вы что-то там меняете, то после завершения разового запуска DAG вам нужно не забыть вернуть измененные параметры обратно.</p><h3>Запуск с параметрами</h3><p>Apache Airflow может запустить DAG со специфическими параметрами.</p><figure><img src="https://media.tproger.ru/user-uploads/88534/2023-10-03/81eaf2a9-7d1d-4a52-8bd0-8708fecda23b.png" alt="" /></figure><p>Они прописываются вручную в виде нового JSON. В ходе работы загрузчика каждая задача получает доступ к этим значениям и корректирует своё поведение.</p><figure><img src="https://media.tproger.ru/user-uploads/88534/2023-10-03/5f00e5da-c251-4870-9f47-bd524a4169bb.png" alt="" /></figure><p>Такой способ позволяет оперативно вмешаться в работу процесса. Например, если внезапно окажется, что в DataFactory отсутствуют значения за неделю, мы можем разово повлиять на определенный параметр DAG и указать сбор данных глубиной в семь дней. Нюанс в том, что запуск с ручной конфигурацией нужно обработать в коде отдельно.</p><h3>Хардкод</h3><p>Этот способ самый радикальный, но рабочий. Можно отдельно прописать константы или переменные, которые необходимо использовать для специфического запуска DAG. Но это крайне неудобно: приходится вшивать много информации в код, а затем убирать.</p><h2>Наш способ оптимизации запуска DAG</h2><p>Итак, есть три способа передать DAG параметры: с помощью Airflow Variable, вручную через w/ config и напрямую, указав в коде значения. Наша цель — просто и удобно извне влиять на важные для загрузчика значения. При запуске очередной задачи DAG:</p><ul><li>сначала посмотреть, указан ли параметр при ручном запуске;</li><li>если нет — то попытаться найти его значение в Airflow Variable;</li><li>иначе присвоить значение из заданных в коде значений по умолчанию.</li></ul><p>При выполнении функции внутри работающей задачи DAG функция vars_from() сначала проверяет, был ли DAG запущен с помощью w/ config. После чего пытается найти, заданы ли ключи «count_on_page» и/или «date_from» внутри JSONа, переданного через w/ config. Если да — передаёт соответствующие значения переменным count_on_page и date_from в коде задачи.</p><p>Если в словаре w/ config искомых ключей нет, то производится попытка поиска значений ключей «count_on_page» и/или «date_from» внутри JSON из соответствующей DAG Airflow Variable.</p><p>На тот случай, если необходимых значений нигде нет, в аргументах функции vars_from() мы указали значения по умолчанию. В нашем примере это 50 и 1d, взятые из констант POLLS_COUNT_ON_PAGE и POLLS_DATE_FROM_DEFAULT.</p><h2>Как работает vars_from()</h2><p>Функция имеет одну внешнюю зависимость: для её реализации необходима библиотека sorcery. Она предоставляет объекту информацию, откуда его вызывают. В терминах библиотеки такой объект называется «заклинанием» (spell) и инициализируется следующим образом:</p><p>Кортеж *defaults — аналог *args, а декоратор spell помещает в нулевой элемент кортежа *defaults ссылку на frame-объект функции vars_from(). Так мы можем задать значения локальных переменных, стоящих слева от вызова функции.</p><h2>Обработка ключа</h2><p>На всякий случай проверка вхождения ключей реализована тремя способами: по строгому соответствию с названием переменной, по её интерпретации camel case и через псевдоним.</p><p>Здесь псевдоним маршрутизирует значение из ключа sql_injection_report_mail в переменную recipients:</p><p>Если ключ есть и в ручной конфигурации, и в базе Airflow Variable, приоритет будет отдаваться переменной, которая записана стилем snake case:</p><p>Несмотря на то что в ручном запуске есть сущность «sql injection report mail», её значение будет взято из Airflow Variable.</p><p>Ещё пример, чуть более сложный:</p><h2>Теперь настройка DAG для новых задач — не проблема</h2><p>Загрузчики извлекают много информации из разных мест. Мы берем данные из готовых CSV-файлов, архивов, вложений почтовых ящиков, файлы из SAMBA-папок. Проникаем в REST API за полезными JSON и XML — в общем, работаем со всей информацией, которая требуется бизнес-подразделениям банка и которую разрешает собирать наш Департамент информационной безопасности.</p><p>Решение, которое мы разработали, позволяет удобнее корректировать работу DAG, не внося изменений в код загрузчиков.</p>]]></content:encoded>
    </item>
    <item>
      <title>Когда автотесты не нужны — и чем их заменить</title>
      <link>https://tproger.ru/articles/kogda-avtotesty-ne-nuzhny-i-chem-ih-zamenit</link>
      <comments>https://tproger.ru/articles/kogda-avtotesty-ne-nuzhny-i-chem-ih-zamenit?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Вика Овсянникова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kogda-avtotesty-ne-nuzhny-i-chem-ih-zamenit</guid>
      <description><![CDATA[<p>Рассматриваем сценарии, при которых автотесты неэффективны или даже вредят продукту из-за своих ограничений.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kogda-avtotesty-ne-nuzhny-i-chem-ih-zamenit">Когда автотесты не нужны — и чем их заменить</a>»</p>]]></description>
      <category><![CDATA[Тестирование]]></category>
      <category><![CDATA[Советы]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 09 Aug 2023 12:32:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Автотесты — настоящее спасение для команды разработки: они ускоряют тестирование, могут быть многопоточными и не пропускают баги из-за недосыпа. При этом существует ряд кейсов, в которых автотесты не самое лучшее решение: они приводят к потере времени и денег, пропускают ошибки. Всё потому, что у них есть свои ограничения, не зная которых тестировщик, желающий автоматизировать всё и вся, может навредить продукту.</p><h2>Почему все так любят автотесты?</h2><p>Обучающие площадки пишут, что тестирование и в частности автотесты — самый простой путь «войти в айти», работать на удалёнке, зарабатывать много денег. При этом ты их один раз напишешь, и они станут делать за тебя всю работу.</p><p>На самом деле всё не так. Автотесты надо поддерживать на протяжении всего жизненного цикла, время от времени проводить аудит: это не такая уж простая работа. Кроме того, нужно понимать, когда они действительно эффективны, а когда — только навредят.</p><p>Автотесты нужны, когда есть сформированная команда QA: ручные тестировщики уже разобрали все требования, написали тест-кейсы и по ним регулярно проводят проверки. То есть цикл работ повторяется, объём ручных тест-сценариев разросся, и тестирование начинает превращаться в рутину.</p><p>В каких случаях эти условия не соблюдаются?</p><ul><li>продукт быстро меняется: необходимо адаптироваться к обновлениям, проводить исследовательское тестирование, анализировать требования и писать на это всё сценарии;</li><li>продукт временный: например, он вышел на три месяца в прод, выполнил свою функцию и его убрали;</li><li>нет большого объёма задач: релизы проходят раз в несколько месяцев, сценарии описаны, и гораздо выгоднее проверять всё руками.</li></ul><h2>Когда автотесты не нужны: рассматриваем кейсы</h2><p>Главная задача автотестов — уменьшить time to market и сэкономить ресурсы команды. Разбираем сценарии, при которых это не происходит.</p><h3>Пример 1. Много работы и мало времени</h3><p>Возьмём какой-нибудь легаси-монолит, где работает небольшое количество тестировщиков. Есть техдолг по тестам, близится релиз, сроки поджимают, бюджет ограничен.</p><p>Подобный сценарий может возникнуть в любом финтех-решении, которое устраивает заказчика по скорости работы и в котором не предвидится архитектурного рефакторинга. Или в решении, выросшем из pet-проекта, который начал приносить прибыль: чтобы справиться со спросом, продукт покрывается новыми бизнес-фичами с огромной скоростью.</p><p>У кого-то здесь может возникнуть желание всё автоматизировать. Но ручные тестировщики всегда в несколько раз дешевле автоматизаторов и универсалов. Поэтому проще взять их на аутсорсе, чтобы те пробежали и вычистили продукт к релизу.</p><h3>Пример 2. UI-тестирование</h3><p>Мы тестируем фронт, который может динамически меняться, и пытаясь автоматизировать процесс, цепляемся за какие-то конкретные элементы или вносим какую-то сложную логику поиска элемента на странице. В таком случае приходится плотно взаимодействовать с командой разработки и делать так, чтобы элементам либо дали уникальные названия, либо никогда не трогали — иначе тесты сломаются.</p><p>Допустим, появился новый раздел со схожими названиями элементов: например, строки таблицы `row`, а в новом разделе также есть таблица, и каждый элемент таблицы обретает префикс, указывающий на его логическую связь, — `content-row`, `offer-row`, `media-row`. Если команда предусмотрела такой кейс на этапе груминга, то тестировщики заранее переименовали элементы привязки либо использовали regexp для «упрочнения» тестов. Но чаще встречается ситуация, когда фичу погрумили и разработчик принимает такое решение самостоятельно, тем самым ломая автотесты. Тестировщик узнает об этом, когда тесты упадут при очередном прогоне — хорошо, если падение обнаружится утром и будет время всё исправить; гораздо хуже, когда ломается регрессионный набор, проверяющий релиз.</p><p>Поэтому проще описать сценарии и быстро пробежаться по ним руками.</p><p>Если мы собираемся внедрить новый дизайн или новый раздел основного функционала, ручное UI-тестирование реализовать несложно, в то время как автоматизация потребует больших трудозатрат и может забуксовать. Как правило, написание нескольких автотестов занимает по времени столько же, сколько создание фичи. В итоге начинает копиться техдолг: параллельно создаются фичи, не покрытые тестами, хотя их можно было бы протестировать руками.</p><p>UI — это вообще больная мозоль в плане автоматизации тестирования. Бывает и так, что на этом участке команду автоматизации распускают и усиливают команду ручного тестирования.</p><h3>Пример 3. Продукты, влияющие на жизнь или безопасность людей</h3><p>Продукты в сфере финансов, безопасности, человеческого здоровья, автомобильных мультимедиа — примеры ниш, где просто невозможно обойтись одной автоматизацией.</p><p>Например, те же аппараты по поддержанию жизни. Да, можно на каком-нибудь изолированном стенде попробовать всё автоматизировать, но когда в аппарат заливается прошивка, без ручного тестировщика в лаборатории никак не обойтись.</p><p>Был случай при разработке финтех-продукта, когда технический пользователь, созданный для тестирования, при запуске миграции для перехода на ночную смену «увидел» изменения в базе и запустил прогон тестов на «боевой» базе, создав высокую интенсивность открытия долгосрочных вкладов. В итоге ставка по вкладам снизилась: для алгоритмов приложения всё выглядело так, что слишком много людей вложили деньги. И это нанесло реальный вред бизнесу. Когда «пепел» улёгся, админский доступ в БД забрали у 90% техперсонала. Для тестирования создали обезличенную и маштабированную копии «боевой» базы, добавили окружение pre production.</p><p>Это как раз случай, когда автоматизация становится не просто неудобной или дорогой, а несёт риски.</p><h3>Пример 4. Развивающийся продукт</h3><p>Когда тестировщик пытается автоматизировать работу с таким продуктом, мало того, что новые сценарии ниоткуда не появляются, так ещё и увеличивается долг по старым. Здесь обязательно нужны ручные тестировщики, которые актуализируют потребности бизнеса, напишут новые сценарии и пройдутся по старым, тем самым не задерживая регрессионную модель.</p><p>А уже когда продукт перестанет развиваться и техдолг по тестированию будет закрыт, можно будет оставить одного автоматизатора для поддержания и аудита автотестов.</p><p>Когда пора переходить к автотестам? Когда заявки на новые бизнес-фичи поступают реже, разработчики погрузились в рефакторинг кода, и большая скорость тестирования уже не так важна. Возможен и симбиоз: использовать при составлении тест-сценариев паттерны написания автотестов, а сложные сценарии дробить на мелкие этапы и привлекать разработчиков.</p><h3>Пример 5. Редкие сценарии пользовательского поведения</h3><p>Этот вид тестирования иногда называют monkey testing — когда мы тыкаем во всё подряд и пытаемся создать абстрактную модель поведения пользователя. Вероятно, менее 1% людей будут себя в продукте так вести, но при этом иногда вскрываются какие-то критические сценарии, которые могут систему пошатнуть.</p><p>Такой тест актуален для любых сайтов и приложений, где можно вводить данные. Поля для ввода данных уязвимы для атак типа SQL-Injection. Кроме того, многие системы не предусматривают сценариев на случай ввода в поле отрицательных, дробных, непрописных символов — в итоге сервис, обеспечивающий обработку бизнес-логики, может запросто зависнуть.</p><p>В 2015 году я занимался тестированием крупной интернет-площадки. В обычную строку для поиска типовой заглавной страницы был помещён текст `DROP Table USERS`— и в результате все существующие пользователи были удалены. Строка поиска товара формировала запрос напрямую в базу и не была экранирована. После этой ситуации пользователей восстановили, разослали письма с извинениями, а в структуру добавили слой, проверяющий запрос на адекватность перед передачей в базу данных.</p><p>Автоматизировать monkey testing возможно, но для этого нужен немалый труд: по факту, придётся написать ещё одно приложение, которое будет генерировать абсурдные сценарии. Проще и удобнее всё заменить одним человеком, который знает и понимает практики тест-дизайна.</p><h2>Почему автотесты не станут панацеей</h2><p>Автотесты полезны и удобны на определённых участках работы, но не универсальны. Это как с пресловутым ChatGPT, который сам создаёт код, который в итоге надо приводить к нормальному состоянию — что по трудозатратам равно написанию с нуля.</p><p>Когда погружаешься в автотестирование, понимаешь, что нет-нет, а надо, чтобы твою спину прикрыл ручной тестировщик. Как бы ни хотелось, чтобы процент тестов выглядел 70 автоматизированных на 30 ручных, золотая середина — 50 на 50 либо 60 на 40.</p><p>При этом у ручных тестировщиков, которые практически первыми встречаются с требованиями бизнеса, как правило, формируется более широкий взгляд на систему. Они тестируют свой участок, но могут помочь соседней команде с интеграцией.</p><p>Важно видеть систему целиком. Не пихать автотесты везде, но и не закрывать ручными тестировщиками сценарии, уже ставшие рутиной. У нас на проектах есть золотая пропорция: в команде на двух разработчиков приходится один автоматизатор, ещё на двух — один ручной. Идеальная команда состоит из одного ручного тестировщика и одного автоматизатора.</p><h2>Повторим: когда автотесты не нужны</h2><ul><li>сроки и бюджет проекта ограничены: проверить руками получается дешевле экономически;</li><li>речь идёт о развивающемся продукте с большим количеством изменений;</li><li>тестируются продукты, где действия пользователя в системе могут принести значимый негативный эффект (здоровье, финансы, безопасность и так далее);</li><li>тестируется фронтенд, элементы в котором могут динамически меняться;</li><li>проверяются редкие пользовательские сценарии;</li><li>команда не сформирована — мало тестировщиков, много разработчиков;</li><li>автотесты не ревьювятся (код сомнительного качества), как результат — околонулевая эффективность;</li><li>недостаточная погружённость в продукт, например, когда на проекте новый тестировщик;</li><li>не выстроен процесс тестирования — нет понимания, что делать с автотестами дальше;</li><li>отсутствует инфраструктура — не настроен CI/CD, автотесты запускаются руками;</li><li>очень долгий прогон тестов с низкой результативностью (наследие предыдущего тестировщика);</li><li>нет автоматической обработки результатов, из-за чего результаты тестов неинформативны;</li><li>сервис или приложение написаны на редком языке, например, Cobol;</li><li>продукт — десктопное приложение, здесь на первых порах проще делать тесты руками.</li></ul>]]></content:encoded>
    </item>
    <item>
      <title>Функциональное тестирование: что это, этапы, виды и инструменты использования</title>
      <link>https://tproger.ru/articles/funkcionalnoe-testirovanie-chto-eto-etapy-vidy-i-instrumenty-ispolzovaniya</link>
      <comments>https://tproger.ru/articles/funkcionalnoe-testirovanie-chto-eto-etapy-vidy-i-instrumenty-ispolzovaniya?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Алина Медник]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/funkcionalnoe-testirovanie-chto-eto-etapy-vidy-i-instrumenty-ispolzovaniya</guid>
      <description><![CDATA[<p>Команда MediaSoft разобралась, в чем разница между функциональным и нефункциональным тестированием и какие инструменты пригодятся.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/funkcionalnoe-testirovanie-chto-eto-etapy-vidy-i-instrumenty-ispolzovaniya">Функциональное тестирование: что это, этапы, виды и инструменты использования</a>»</p>]]></description>
      <category><![CDATA[Тестирование]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 16 Jun 2023 09:53:43 GMT</pubDate>
      <content:encoded><![CDATA[<p><b>Тестирование ПО</b> — процесс испытания программного продукта с целью проверки соответствия между реальным и ожидаемым поведением программы. Существует несколько видов тестирования. Как правило, выделяют функциональное и нефункциональное.</p><p>В статье команда <a href="https://mediasoft.team/">IT-компании MediaSoft</a> разобралась, в чем разница между этими видами тестирования, какие этапы и виды функционального тестирования, какие инструменты пригодятся, и как можно автоматизировать тестирование. А также поделилась советами для новичков в QA.</p><p><b>Функциональное тестирование</b> — вид тестирования, при котором проверяем ЧТО делает программный продукт. Например, проверка API, базы данных, пользовательского интерфейса, функциональности тестируемого продукта. Проверяется на соответствие спецификациям, бизнес-требованиям. Основано на требованиях клиента.</p><p><b>Нефункциональное тестирование</b> — вид тестирования, при котором проверяется КАК работает программный продукт: производительность, масштабируемость, нагрузка, UX и т.д. Основано на ожиданиях клиента. Пример: авторизация произошла за 2 секунды.</p><h2>Отличия функционального и нефункционального тестирований</h2><p>При функциональном тестировании:</p><ul><li>Мы проверяем, что система выполняет те задачи, которые были заявлены в требованиях к приложению;</li><li>Обычно выполняется с использованием тест-кейсов, которые описывают шаги для проверки функций продукта;</li><li>Проще провести проверку, не прибегая к использованию дополнительных инструментов.</li></ul><p>При нефункциональном тестировании:</p><ul><li>Проверяется, как система себя ведет при выполнении заявленных задач;</li><li>Написать тест-кейсы значительно сложно, так как зачастую для него нет четких требований;</li><li>Приходится обращаться к помощи специальных программ, поэтому оно сложнее, чем функциональное.</li></ul><h2>Этапы функционального тестирования</h2><ol><li>Определить и проанализировать, какую функциональность необходимо протестировать. Перед началом необходимо изучить тестируемый функционал: какие у нее требования, как она должна работать, как пользователь будет её использовать.</li><li>Написать тест-кейсы. В них тестировщик пошагово описывает сценарий проверки определенной функциональности.</li><li>Подготовка тестовых данных. Для тестирования используются данные, которые максимально приближены к тем, что могут использовать пользователи. Сбор тестовых данных основывается на требованиях.</li><li>Проведение тестирования. Происходит сравнение фактического результата и ожидаемого.</li><li>Составление отчета по результатам тестирования. По завершении тестирования необходимо собрать отчет с результатами прогонки тестов, списком багов и рекомендациями по улучшению продукта.</li></ol><h2>Виды тестирования, применяемые при функциональном тестировании</h2><ul><li>модульное тестирование — выполняется разработчиками на этапе разработки приложения. Цель модульного тестирования заключается в проверке работы отдельной функциональности.</li></ul><ul><li>интеграционное тестирование — проверка того, что модули работают корректно как группа. Тестирование интеграции очень важный этап, так как модули могут быть созданы разными разработчиками.</li></ul><ul><li>системное тестирование — проводится на полноценной и полностью интегрированной системе для подтверждения, что система работает согласно исходным требованиям.</li></ul><ul><li>регрессионное тестирование — проводится после того, как в приложение были внесены какие-либо изменения. Этот вид тестирования важно проводить, так как любые изменения могут затронуть или сломать уже существующий функционал.</li></ul><ul><li>sanity тестирование или санитарное тестирование — очень похоже на регрессионное. Оно проводится, когда тестировщик получает новую сборку с минорными изменениями. Разница между этими двумя видами заключается в том, что если при регрессе мы проводим полное тестирование приложения, то при санити мы тестируем какую-то одну функциональность.</li></ul><ul><li>smoke-тестирование или дымовое тестирование — проводится для того, чтобы убедиться, что наиболее критичный функционал приложения работает так, как должен.</li></ul><h2>Инструменты для ручного функционального тестирования</h2><p>Системы управления тестированием:</p><ul><li>TestIT — система управления тестированием, которая была создана тестировщиками для тестировщиков. С её помощью удобно хранить тест-кейсы, составлять тест-планы, создавать прогоны и управлять ими.</li></ul><ul><li>TestRail — удобно создавать чек-листы, тест-кейсы и прогоны, выгружать результаты прогонов, отчеты о тестировании и сами тест-кейсы в формат CSV. Также сравнивать результаты нескольких прогонов. Он поддерживает интеграцию с различными баг-трекинговыми системами (Jira, YouTrack и т.д.).</li></ul><ul><li>Allure — с его помощью удобно управлять ручным и автоматизированным тестированием. Легко разрабатывать тест-кейсы и чек-листы, создавать тестовые прогоны и собирать статистику по результатам тестирования.</li></ul><p>Инструменты для работы с БД:</p><ul><li>DBeaver — универсальный инструмент для управления БД с удобным интерфейсом. С помощью него можно работать с различными СУБД: MySQL, PostgreSQL, SQLite, Oracle и другими.</li></ul><ul><li>SQL Developer — графический интерфейс для работы с БД и выполнения SQL-запросов. С его помощью можно создавать и выполнять запросы, исследовать базы данных и отслеживать ошибки.</li></ul><ul><li>HeidiSQL — графическая оболочка для работы с MySQL, PostgreSQL и Microsoft SQL Server. Она может быть использована для создания, изменения и удаления таблиц, вставки и удаления данных, создания SQL-запросов и многого другого.</li></ul><p>Инструменты для тестирования API:</p><ul><li>Postman — с его помощью можно составлять и отправлять запросы, собирать коллекции и делиться ими с коллегами. Также в Postman можно писать автотесты для тестирования API.</li></ul><ul><li>SoapUI — с помощью данного инструмента можно легко и удобно тестировать как SOAP, так и REST-сервисы. Можно проверять работоспособность веб-сервисов, устанавливать доступность, работу различных запросов и отслеживать получение ответов.</li></ul><ul><li>Swagger UI — инструмент для описания и проверки API-методов. К каждому запросу есть пример ответа и описание приходящих в них параметров. Не требует установки на устройство пользователя.</li></ul><p>Системы логирования:</p><ul><li>Kibana — инструмент визуализации и анализа данных в реальном времени, отслеживания трендов и прогнозирования будущих событий.</li></ul><ul><li>Graylog — система для сбора, хранения, мониторинга и анализа логов из различных источников в режиме реального времени. Позволяет сохранять большие объемы логов и анализировать их, используя поисковые запросы и фильтры.</li></ul><ul><li>Android Studio и Xcode — можно собирать логи с мобильных устройств — Android и Xcode соответственно — в режиме реального времени. Удобно собирать, читать и анализировать логи.</li></ul><p>Фермы устройств:</p><ul><li>Android Studio — с помощью инструмента Android Virtual Device Manager можно создавать и управлять виртуальными устройствами с операционной системой Android. При эмуляции устройств есть возможность протестировать приложение в различных состояниях (медленное подключение к интернету, прерывания, маленький объем памяти устройства и т.д.).</li></ul><ul><li>Xcode — в данном инструменте есть возможность симуляции различных устройств Apple от iPod до Apple TV. В отличии от эмуляции с помощью Android Studio, Apple Simulator имитирует лишь часть функциональности физического устройства.</li></ul><ul><li>BrowserStack — это сервис для тестирования веб-сайтов и мобильных приложений на различных устройствах и браузерах, без необходимости устанавливать их на локальном компьютере. Он предоставляет обширную коллекцию реальных устройств, операционных систем и браузеров, которые могут быть использованы для тестирования веб-сайтов и мобильных приложений на реальных устройствах в режиме онлайн.</li></ul><h2>Можно ли автоматизировать функциональное тестирование и для чего</h2><p>Со временем функционал приложения растет, соответственно, количество функциональных тестов увеличивается. В этом случае на помощь приходит автоматизированное тестирование.</p><p>Автоматизация помогает ускорить процесс тестирования, обеспечить более стабильные результаты, уменьшает вероятность человеческого фактора и позволяет перенести рабочую нагрузку нескольких ручных тестировщиков на одного автоматизатора.</p><p>Существует много инструментов для автоматизации функционального тестирования. Про самые популярные мы поговорим ниже:</p><ul><li>Selenium — один из самых популярных инструментов для автоматизации тестирования веб-приложений. Selenium позволяет работать на различных операционных системах (Windows, Mac, Linux) и браузерах (Chrome, Firefox и т.д), поддерживает различные языки для написания скриптов.</li><li>Appium — это кроссплатформенный инструмент для автоматизации тестирования мобильных приложений (нативные, гибридные и веб). Позволяет создавать и запускать тесты на реальных устройствах и эмуляторах, использовать различные языки программирования для написания тестов.</li><li>Katalon Studio — инструмент для автоматизации API, веб, десктоп и мобильных приложений. Для написания тестовых скриптов используется язык программирования Java или Groovy. Плюс данного инструмента — для работы с ним достаточно начальных знаний языков программирования. Благодаря чему он отлично подходит для новичков.</li></ul><ul><li>Ranorex Studio — еще один универсальный инструмент для автоматизации тестирования. Этот инструмент, как и предыдущий, хорошо подойдет для новичков, так как поддерживает возможность создания тестов без написания кода.</li></ul><h2>В заключение</h2><p>Функциональное тестирование необходимо для проверки продукта на соответствие заявленным требованиям. Оно гарантирует, что пользователь сможет использовать продукт по назначению. А ошибки будут найдены до того, как приложение попадет к клиенту.</p><p>Новичкам следует ознакомиться с основными принципами функционального тестирования, изучить инструменты, пробовать создавать тест-кейсы и проводить практическое тестирование. Для этого можно использовать любой сайт или приложение. Рекомендуем ознакомиться с уже готовыми чек-листами в интернете, использовать их для практики и получения опыта в проведении функциональных тестов.</p><p>Наращивайте свои навыки, изучайте и пробуйте новые подходы и технологии. Применяйте их на практике, чтобы получить новый опыт и расширить свои знания в тестирования.</p>]]></content:encoded>
    </item>
    <item>
      <title>Автоматизация тестирования: от выбора стратегии до выбора реализации</title>
      <link>https://tproger.ru/articles/avtomatizaciya-testirovaniya-ot-vybora-strategii-do-vybora-realizacii</link>
      <comments>https://tproger.ru/articles/avtomatizaciya-testirovaniya-ot-vybora-strategii-do-vybora-realizacii?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Алексей Антонов]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/avtomatizaciya-testirovaniya-ot-vybora-strategii-do-vybora-realizacii</guid>
      <description><![CDATA[<p>Зачем нужна автоматизация тестирования, нужно ли писать код и какие стратегию и инструменты тестирования выбрать.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/avtomatizaciya-testirovaniya-ot-vybora-strategii-do-vybora-realizacii">Автоматизация тестирования: от выбора стратегии до выбора реализации</a>»</p>]]></description>
      <category><![CDATA[Тестирование]]></category>
      <category><![CDATA[QA]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 20 Apr 2023 04:46:01 GMT</pubDate>
      <content:encoded><![CDATA[<p>Стратегия автоматизации тестирования при разработке программного продукта тесно связана со стратегией тестирования в целом. На ее формирование влияют такие факторы, как цели тестирования, определяющие объекты и виды тестирования, оценка необходимой тестовой среды, определение необходимых процессов и инструментов автоматизации.</p><p>Отдельный важный вопрос, который нужно решать команде тестировщиков – писать ли код, или использовать специализированные решения без кодирования.</p><p>Разобраться в этих нюансах помогает ведущий специалист-тестировщик компании IT_One Алексей Антонов.</p><p>Мы тестируем программный продукт для того, чтобы получить наиболее полное представление о нем, убедиться в том, что он корректно выполняет задачу и соответствует определенным требованиям. Сосредоточиться на наиболее важных моментах в процессе тестирования нам помогает простая практика: последовательный ответ на несколько ключевых вопросов для дальнейшего формирования набора артефактов тестирования, планирования, выполнения и подготовки результатов. К таким ключевым вопросам относятся следующие:</p><ul><li>Какие цели мы преследуем?</li><li>Что именно мы будем тестировать?</li><li>Какие виды и уровни тестирования будем применять?</li><li>Какое тестовое окружение нам понадобится?</li><li>Кто будет этим заниматься?</li><li>Когда необходимо планировать мероприятие по тестированию?</li><li>Какие существуют ограничения на объем выполняемых работ?</li></ul><p>При этом первые пять вопросов являются «входной точкой» для стратегии автоматизации, мы остановимся на них более подробно. Последние два больше относятся к планированию и проведению самих работ.</p><h2>Стратегия автоматизации тестирования</h2><p>Определение цели тестирования – наша первоочередная задача, которая поможет выбрать виды тестирования из большого количества возможных. Например, если мы имеем дело с системой интернет-магазина, для нее важно обеспечить возможность совершения покупок (здесь подойдет функциональное тестирование), стабильность, скорость и масштабируемость обслуживания (тестирование производительности), скорость внедрения новых идей в систему (регрессионное тестирование), безопасность покупки (тестирование на проникновение или тестирование безопасности), соответствие стандартам и законодательным нормам.</p><p>На этапе формирования перечня объектов тестирования нам нужно понять, из чего наша система состоит, видеть ее логическую архитектуру, получить спецификацию или набор требований к системе. В нашем примере с интернет-магазином пользователь обращается к сервису через веб-интерфейс или с помощью мобильного приложения; имеется сервер приложений, с которым происходит взаимодействие по протоколу HTTP/HTTPS на базе REST архитектуры; в базе данных накапливается информация о покупках, платежах и прочих операциях пользователя; интеграция с какой-то внешней системой позволяет магазину выполнять доставку товара, проводить платежи и т. д.</p><p>Понимая взаимодействие между этими блоками, мы можем определить круг объектов тестирования: пользовательский интерфейс (при тестировании необходимо убедиться, что заказ сформирован и оформлен), интерфейс взаимодействия между компонентами системы или API (качество передачи данных), хранилище данных (насколько корректны данные заказов, насколько база данных удовлетворяет требованиям по безопасности, выдерживает ли нагрузку), программные модули или компоненты приложения, интеграции с внешними системами.</p><p>Собрав, таким образом, объекты тестирования согласно целям, мы оцениваем, какие виды тестирования можем применить для каждого из них. В зависимости от уровня, на котором находится объект тестирования (модуль, интеграция модулей, система целиком, межсистемная интеграция, сквозной бизнес-процесс) мы определяем необходимый и достаточный объем тестирования для достижения целей тестирования.</p><h2>Автоматизировать или нет?</h2><p>Теперь перед нами встает задача: какую часть процесса тестирования мы можем автоматизировать. При этом мы учитываем следующие факторы:</p><ul><li>целесообразность – например, период окупаемости, возврата инвестиций;</li><li>необходимость автоматизации – в некоторых случаях без нее просто не обойтись, например, если мы следуем определенным стандартам разработки в компании;</li><li>обязательность автоматизации – например, в автомобильной промышленности для компонентов систем беспилотного вождения обязательно требуется полное покрытие кода модулей юнит-тестами;</li><li>ограничения ручного тестирования – не все протоколы можно протестировать вручную в разумный срок) и автоматизированного – не всё можем автоматизировать с помощью доступных инструментов, или это будет очень долго и дорого.</li></ul><p>Отмечу также, что автоматизация, как правило, дает результаты «вдолгую» – то есть чем больше происходит повторений тестов, тем больше эффект от их автоматизации.</p><p>Можно выделить ряд проектов, в которых автоматизация всегда оправдана:</p><ol><li>долгосрочные проекты с частыми изменениями;</li><li>проекты с высокими требованиями по безопасности;</li><li>проекты со сложными вычислениями, фильтрацией данных;</li><li>тестирование сборки и установки;</li><li>протоколы, API и интеграции;</li><li>высоконагруженные системы;</li><li>проекты с высокими требованиями к качеству разработки.</li></ol><p>Наоборот, автоматизация окажется излишней в небольших коротких проектах без поддержки (PoC, демо) и в проектах с небольшим количеством итераций тестирования.</p><h2>Выбор инструментов тестирования</h2><p>Определившись с задачами, объектами и форматом тестирования, мы можем построить решение по автоматизации, подобрав необходимые инструменты и сформировав фреймворк автоматизации. Я бы описал инструмент автоматизации как некий «черный ящик», обладающий функционалом написания и предоставления скриптов, умеющий воспроизводить эти скрипты, а также принимать некие тестовые данные и управлять объектами тестирования, проводить необходимые проверки и выдавать результаты в виде отчета.</p><p>Вернемся к нашему примеру с интернет-магазином и первому объекту тестирования: интерфейсу пользователя. Мы берем конечный интерфейс взаимодействия пользователя с нашей системой и начинаем подбирать наиболее подходящий инструмент, обращая особое внимание на то, насколько стабильно он распознает и умеет управлять элементами интерфейса. В итоге это могут быть такие программные продукты, как как Unified Functional Testing (UFT), Katalon Studio, Test Complete, Ranorex или программные библиотеки Selenium, Appium и аналогичные им.</p><p>Аналогично мы выбираем инструменты для других объектов с учетом их специфики. Например, для тестирования автоматизации API приоритет отдается поддержке нужных протоколов взаимодействия, а для тестирования хранилища данных – работе инструмента с СУБД.</p><p>Для более точного выбора мы смотрим на возможности самого инструмента: можно ли его запустить из консоли, насколько он расширяемый (и во сколько обойдется покупка дополнительных модулей, их интеграция), в какой среде может быть использован, имеет ли интеграцию с нужной системой управления тестированием и системой отслеживания ошибок.</p><p>Кстати, некоторые инструменты являются полноценными платформами, и с их помощью можно подвергать тестированию несколько объектов сразу. Также они могут быть интегрированы с системой управления тестированием.</p><h2>Открытый код, проприетарный продукт или собственная разработка</h2><p>Отдельно стоит упомянуть о разделении инструментов тестирования на категории по типу разработки:</p><ol><li>решение на базе Open Source-элементов;</li><li>коммерческое (проприетарное) решение;</li><li>внутренняя разработка.</li></ol><p>Каждая категория имеет свои преимущества и недостатки.</p><p>Так, продукты на базе Open Source, как правило, хорошо решают свои специализированные задачи, поддерживаются большим комьюнити (где можно найти ответы даже на те вопросы, которых нет в документации), обладают гибкостью разработки. Успешные Open Source проекты активно развиваются, при этом нам никто не мешает вам при наличии соответствующей экспертизы создать отдельную ветку и дописать в ней функционал, которого этому инструменту не хватает. В то же время такие инструменты требуют интеграции в комплексное решение по управлению тестированием, определенной квалификации ИТ-специалистов, а также имеют риск прекращения разработки или поддержки.</p><p>Готовое коммерческое решение – это протестированный, квалифицированный продукт. Он отлично справляется с типовыми задачами, имеет возможность подключения специализированной поддержки и низкий порог входа. Основной функционал подробно описан, продукт удобен и прост в использовании, зачастую даже не требует навыков написания кода. Недостатками таких решений являются высокая стоимость лицензий и поддержки, ограниченная экспертиза (решение может быть настолько уникальным, что какой-то новый проект с его помощью мы не сможем реализовать), ограниченная интеграция  с системами управления тестирования. Зависимость от вендора также имеет место: не всегда имеющиеся проблемы существующего продукта у конкретного заказчика будут исправлены в первую очередь.</p><p>Внутренняя разработка – самописный инструмент, который максимально подходит под объект тестирования: мы изначально знаем, что хотим от него получить. При этом мы обладаем максимальной экспертизой по этому инструменту внутри команды и имеем возможность в какой-то момент выпустить его в Open Source. Однако для создания такого решения требуется высококвалифицированная команда разработчиков и/или инженеров по автоматизации. При его использовании мы так же можем столкнуться с низкой скоростью поддержки и ограниченной экспертизой.</p><h2>Так ли надо писать код</h2><p>Прежде, чем ответить на этот вопрос, посмотрим, какие специалисты нам нужны для реализации уже готовой стратегии автоматизации и какие проектные роли они исполняют – в рамках внутренней, аутсорсинговой или аутстаффинговой команды.</p><p>Менеджер продукта, аналитик, тестировщик – создают тесты, определяют наборы тестов с приоритетами, пишут некие скрипты для автоматизации, запускают автотесты, анализируют результаты. В целом они формируют требования к автоматизации тестирования, так как являются основными пользователями.</p><p>Автоматизатор функционального и регрессионного тестирования – на его плечи ложится поддержка и развитие фреймворка автоматизации, обучение и поддержка пользователей-тестировщиков\поддержка инфраструктуры тестирования.</p><p>Разработчик – тоже может заниматься автоматизацией тестирования. Отмечу положительный эффект от того, когда экспертиза в тестировании передается в разработку и, наоборот, разработка помогает в инструментации своего кода для дальнейшего использования в автоматизации тестирования.</p><p>DevOps инженер – помогает как разработчикам, так и тестировщикам, а также автоматизаторам в поддержке и развертывании сред разработки и выполнения автоматизированного тестирования.</p><p>Итак, писать код стоит:</p><ul><li>когда в команде наработана экспертиза автоматизации, разработчики и тестировщики имеют определенный опыт;</li><li>когда возникает сложность с приобретением коммерческих лицензий (причинами могут быть, например, бюджет или сроки на внедрение и обучение пользователей);</li><li>когда нет готовой интеграции с инструментами управления тестированием или с другими компонентами существующего фреймворка;</li><li>когда необходимо поддерживать низкие уровни тестирования.</li></ul><p>Чтобы использовать решения без кодирования, команде также нужно иметь некую экспертность, понимание ограничений инструмента. Не требуется написание кода для простых сценариев (когда нужно провести тестирование несколько раз и впоследствии не заниматься его поддержкой), при нагрузочном тестировании (часто используется запись скрипта и его параметризация тестовыми данными) и при тестировании безопасности. Также, по моему опыту, не стоит вкладываться в разработку ферм мобильных устройств.</p>]]></content:encoded>
    </item>
    <item>
      <title>Автотесты приложений через AMQP</title>
      <link>https://tproger.ru/articles/avtotesty-prilozhenij-cherez-amqp</link>
      <comments>https://tproger.ru/articles/avtotesty-prilozhenij-cherez-amqp?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Вика Овсянникова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/avtotesty-prilozhenij-cherez-amqp</guid>
      <description><![CDATA[<p>В статье разбираем протокол AMQP, его частную реализацию — RabbitMQ и пишем автотест с помощью PyTest для тестирования очередей сообщений.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/avtotesty-prilozhenij-cherez-amqp">Автотесты приложений через AMQP</a>»</p>]]></description>
      <category><![CDATA[Тестирование]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 12 Apr 2023 13:40:58 GMT</pubDate>
      <content:encoded><![CDATA[<p>Тестирование — одна из самых горячих тем в разработке программного обеспечения. Все согласны с необходимостью качественных проверок и определённого покрытия кода всевозможными тестами. Но как тестировать приложения, работающие не по привычному HTTP протоколу? В статье мы рассмотрим протокол AMQP, его частную реализацию RabbitMQ и протестируем наше простое приложение, разработав автотесты для него.</p><h2>Введение</h2><p><b>AMQP</b> (Advanced Message Queuing Protocol) — открытый протокол прикладного уровня для передачи сообщений между компонентами системы. Идея в том, что отдельные подсистемы или независимые приложения могут обмениваться произвольным образом сообщениями через AMQP-брокер, который осуществляет маршрутизацию, возможно гарантирует доставку, распределение потоков данных, подписку на нужные типы сообщений.</p><p><b>AMQP</b> основан на трёх понятиях:</p><p><b>Сообщение</b> (message) — единица передаваемых данных, основная его часть (содержание) никак не интерпретируется сервером, к сообщению могут быть присоединены структурированные заголовки.</p><p><b>Точка обмена</b> (exchange) — в неё отправляются сообщения. Она распределяет сообщения в одну или несколько очередей. При этом в точке обмена сообщения не хранятся.</p><p><b>Очередь</b> (queue) — здесь сообщения хранятся до тех пор, пока не будут забраны клиентом. Клиент всегда забирает сообщения из одной или нескольких очередей.</p><p><b>Producer</b> — клиентское приложение, которое публикует сообщения в <b>exchange</b>.</p><p><b>Consumer</b> — клиентское приложение, которое получает сообщения из очереди.</p><p>По сравнению с <b>HTTP</b>, у систем, построенных на очередях сообщений AMQP, есть ряд преимуществ и недостатков.</p><h3>Плюсы HTTP</h3><ul><li>Отладка HTTP-запросов проще, чем в AMQP. Подключаться к очереди сообщений в AMQP придётся только через сторонние утилиты, тогда как HTTP можно отлаживать прямо в браузере.</li><li>Это популярный протокол — его используют практически всегда и везде, а значит и понимает его гораздо больше людей.</li></ul><h3>Плюсы AMQP</h3><ul><li>Надёжность доставки сообщений реализуется «из коробки» — значит не нужно об этом волноваться. Сообщение, которое будет отправлено в AMQP-брокер, будет доставлено и обработано одним из обработчиков очередей AMQP.</li><li>Broadcast — функционал, который позволяет уведомить разные компоненты системы в рамках одного сообщения. Таким образом, можно сократить количество отправляемых сообщений в единицу времени.</li></ul><h2>Коротко о RabbitMQ и RPC</h2><p><b>RabbitMQ</b> — это брокер сообщений с открытым исходным кодом. Он маршрутизирует сообщения по всем принципам протокола AMQP. Отправитель передаёт сообщение брокеру, а тот доставляет его получателю. RabbitMQ реализует и дополняет протокол AMQP.</p><p><b>RPC</b> (Remote Procedure Call) — один из шаблонов взаимодействия в распределённых приложениях. Этот протокол позволяет программам вызывать функции и процедуры удалённо таким образом, как будто они представлены локально.</p><p>Совмещая <b>RPC</b> и <b>RabbitMQ</b>, мы в итоге получаем отказоустойчивую, распределённую систему для простого вызова функций и последующего агрегирования результатов.</p><h2>Тестирование AMQP</h2><p>Существуют разные способы тестирования приложений, основанных на протоколе AMQP. Вот несколько их них:</p><ul><li>Функциональное тестирование;</li><li>Ручное тестирование;</li><li>Автоматизированное тестирование;</li><li>Интеграционное тестирование.</li></ul><p>Под функциональным тестированием чаще всего подразумевается непосредственная проверка каждого элемента в тестируемой среде.</p><p>Ручное тестирование — проверка всех компонентов или отдельной, в частности, непосредственно человеком, вручную.</p><p>Но для автоматизации рутинных действий, проводимых человеком, существует автоматизированное тестирование — когда все действия, проводимые для тестирования системы человеком, описаны процедурно и могут исполняться автоматически.</p><p>При тестировании систем важно, чтобы система работала корректно полностью, целиком, в условиях продакшена. Для этого мало провести функциональное тестирование каждой компоненты, необходимо получить результат при тестировании всей системы. Поэтому существует интеграционное тестирование — когда программные модули объединяются и тестируются в группе.</p><h2>Автотесты на Python</h2><p>На мой взгляд, самый удобный способ тестировать API и MQ-сервисы — с помощью языка программирования Python, а также нескольких библиотек, о которых расскажу подробнее далее.</p><p>Основным инструментом при разработке автотестов будет <a href="https://docs.pytest.org/">pytest</a> — библиотека с простым интерфейсом для написания тестов.</p><p>Для подключения к RabbitMQ есть множество библиотек, самая распространённая и хорошо документированная — <a href="https://pika.readthedocs.io/">pika</a>.</p><p>Устанавливается всё с помощью утилиты <a href="https://pip.pypa.io/">pip</a>:</p><p>Далее, представим, что у нас есть сервис, который работает по протоколу AMQP и непосредственно через RabbitMQ, в интерфейсе которого реализована простая функция, возвращающая последнее число из последовательности Фибоначчи:</p><p>Данный сервис подключается к RabbitMQ, создаёт очередь rpc_queue, из которой принимает сообщения, где тело запроса — это число N, от которого нужно вычислить последнее число из последовательности чисел Фибоначчи.</p><p>Основная идея при тестировании сервисов, которые работают на внешнем источнике данных (в данном случае, очередь сообщений RabbitMQ) — реализация клиента к данному источнику данных, эмулируя ввод пользовательских данных.</p><p>Напишем клиент, который взаимодействует с нашим сервисом с помощью очереди сообщений через RabbitMQ:</p><p>В данном примере:</p><ul><li>Устанавливаем соединение к RabbitMQ и подключаемся к очереди rpc_queue;</li><li>Подписываемся на очередь, в которую возвращаются ответы от сервиса при вызове RPC-методов;</li><li>Реализуем функцию on_response, которая проверяет каждый ответ и сверяет correlation_id с тем, который мы отправили. Если идентификатор ответа совпадает — это ответ конкретного запроса, и функция сохраняет ответ в self.response.</li></ul><p>Далее мы реализуем автотесты к нашему сервису. Создадим папку tests и в ней файлы conftest.py и test_fibonacci_rpc.py:</p><p>Файл conftest.py содержит в себе всевозможные надстройки для pytest. В частности, добавим наш клиент туда для того, чтобы его можно было переиспользовать во всех подтестах, не импортируя вручную. Наш клиент будет иметь свойство Test Fixture — это объект, который можно рассматривать как набор условий, необходимых тесту для выполнения. Например, зачастую фикстуры создаются, чтобы генерировать какие-то данные ещё до теста и возвращать их для использования в тесте.</p><p>Таким образом, наша фикстура fibonacci_rpc может переиспользоваться во всех тестах как аргумент к каждой тестовой функции.</p><p>Файлы с префиксом test_ — это файлы, в которых непосредственно реализованы сами тесты. Напишем несколько тестов, которые проверяют реализацию RPC-метода fib с нашими пользовательскими значениями.</p><p>Содержимое файла test_fibonacci_rpc.py:</p><p>Функции с префиксом test_ означают, что это тестируемые методы, которые запускаются с помощью pytest.</p><p>Наш пример в test_fibonacci реализует проверку метода fib на стороне сервиса с положительными аргументами. Директивная assert проверяет условие, выполняющееся в её блоке на True или False. Если условие не выполнилось, тест упадёт с ошибкой, уведомив нас о некорректной работе сервиса.</p><p>Пример в test_non_number реализует проверку того же метода fib, только с заведомо некорректными входными параметрами. При вызове такого метода должна произойти ошибка. Если её не произошло, то мы закончим проверку метода с текстом <i>fib must consume only ints</i>.</p><p>Таким образом, мы полностью покрыли тестами функцию в нашем сервисе.</p><h2>Заключение</h2><p>В статье мы рассмотрели протокол AMQP и его частную реализацию RabbitMQ, реализовали тестовый сервис, реализующий простой удалённый вызов процедур с одним методом, а также протестировали работоспособность нашего сервиса с помощью автотестов, написанных на Python с помощью pytest.</p><p>Особенность тестирования сервисов, которые работают на протоколе AMQP, это корректная реализация объекта, который будет эмулировать запросы клиента. Для этого нужно знать некоторые особенности работы самого протокола AMQP, а также нюансы, которые использовали при разработке тестируемого сервиса (название очередей, публичные RPC-методы и прочее).</p>]]></content:encoded>
    </item>
    <item>
      <title>Тестирование десктопа: что учитывать перед введением автотестов</title>
      <link>https://tproger.ru/articles/testirovanie-desktopa-chto-uchityvat-pered-vvedeniem-avtotestov</link>
      <comments>https://tproger.ru/articles/testirovanie-desktopa-chto-uchityvat-pered-vvedeniem-avtotestov?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Виктория Овсянникова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/testirovanie-desktopa-chto-uchityvat-pered-vvedeniem-avtotestov</guid>
      <description><![CDATA[<p>Собрали в статье лучшие практики, которыми руководствовалась наша команда при автоматизации тестирования на десктопе.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/testirovanie-desktopa-chto-uchityvat-pered-vvedeniem-avtotestov">Тестирование десктопа: что учитывать перед введением автотестов</a>»</p>]]></description>
      <category><![CDATA[Тестирование]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 17 Mar 2023 07:35:38 GMT</pubDate>
      <content:encoded><![CDATA[<p>Если крайне важная ядерная система, от которой зависит большинство смежных, создана очень давно, то варианта, как с этим справиться, два. Можно заменить её на другую, более современную. Но переписывать всё не только дорого, но и незачем. Поэтому можно улучшить процессы внутри неё.</p><p>Мы решили пойти по второму пути: добавить автодеплой и автоматизировать часть регрессионных тестов, чтобы команда не тратила время и силы на рутинные процессы, а могла заняться бизнесовыми задачами. Вот как это было.</p><h2>Как мы пришли к нынешнему устройству системы</h2><p>Большинство сотрудников проходит три стадии принятия при такой ситуации.</p><ul><li>Отрицание — не может быть, что кто-то в 2023 ещё работает на системе, написанной на Delphi?</li><li>Гнев — почему то, что мне нужно, работает, только если обладаешь тайными знаниями?</li><li>Принятие — система работает стабильно, большинство доработок можно сделать достаточно просто — и уже понятно, как их проверять.</li></ul><p>Можно пойти дальше и начать улучшать всё вокруг себя: упрощать процессы, автоматизировать «невозможное» и применять лучшие практики.</p><p>Сначала мы привели филиалы к единому виду, создав единую клиентскую и серверную часть. Наша команда разработки проанализировала все существующие процедуры и отчёты и объединила их в эталонный код. Мы выровняли ландшафт, мигрировали данные. Раньше было 14 баз, доработки по которым ставились независимо друг от друга.</p><p>После этого наладили CI/CD процесс. Все внутренние доработки по системе теперь обязательно ставятся через Git. До этого разработчики на все филиалы ставили доработки руками, что отнимало много времени и увеличивало количество ошибок и расхождений в разных базах.</p><p>В дополнение к существующим сложностям у системы есть особенность: доработки идут как от вендора, так и от внутренней команды разработки. Таким образом, внутренние обновления ставятся через Git On Demand по готовности, а доработки вендора также через Git, но в рамках релизов.</p><p>Это связано с тем, что система — монолит, и вендор поставляет ряд доработок как чёрный ящик. Поэтому возникает необходимость проводить полноценное регрессионное тестирование всей системы из-за возможного влияния доработок на смежные модули.</p><h2>Как мы выстроили процесс автоматизации</h2><p>Учитывая необходимость постоянного проведения регресса, мы решили сократить количество регулярных рутинных операций и автоматизировать большинство из них.</p><p>Начали с однообразных кейсов с небольшими изменениями в шагах, отнимающих больше всего времени на проверку. Так мы:</p><ol><li>Ускорили проведение проверок.</li><li>Упростили автоматизацию, так как изменения от кейса к кейсу незначительные.</li><li>Повысили мотивацию команды, так как они стали тратить меньше времени на рутину.</li></ol><p>Далее для облегчения процесса автоматизации подробно описали тест-кейсы с шагами, без ветвлений. Хорошо описанная тестовая модель полезна не только для автоматизации, но и в целом для качественной оценки количества работы, выполняемой командой.</p><p>Например, мы спросили, какие тесты рутинные? Нам скинули один из кейсов. Проанализировав его, мы обнаружили, что он содержит несколько ветвлений. Мы декомпозировали кейс, и вместо одного получили более ста независимых. Именно поэтому он и оказался в списке на автоматизацию.</p><p>Автоматизация может быть бесконечной, потому что всегда появляются дополнительные продукты, которые также нужно покрывать кейсами, или новые ошибки на проме. За счёт этого регрессионная модель постоянно растёт.</p><p>Сейчас мы автоматизировали уже больше половины регрессионных сценариев. Это позволило существенно сэкономить время, затрачиваемое командой на эти задачи, и использовать его для проверки новой функциональности.</p><p>Также, начиная автоматизировать систему, важно учитывать, что даже в случае с UI-тестами не всё обязательно делать через UI. Например, предварительные данные или ряд итоговых проверок можно сделать, используя хранимые процедуры.</p><p>Второе направление, которое важно автоматизировать, — это проверка интеграционных процедур. Отсутствие стабильной работы интеграций при работе с ядерной системой несёт в себе риски возникновения ошибок у конечных пользователей, а это может предполагать как финансовые, так и репутационные риски для компании.</p><p>Мы идём к такому идеалу: когда появляются новые продукты, к ним стоит сразу писать автотесты. Мы хотим перейти к модели, при которой в момент разработки нового сервиса тут же будет ставиться задача на автоматизацию. И когда сервис готов — запускаться автотест, также написанный по документации. Если он отработает — сервис выкатится. Если нет, то его доработают.</p><h2>Какие инструменты мы используем</h2><p>В основном инструменты разработаны под автоматизацию веб-систем, так как веб-разработка становится всё более популярным направлением. Но обычно они не подходят для автоматизации десктопных приложений. Покопавшись в теме, мы нашли подходящие нам инструменты.</p><p>Вот что мы выбрали для себя.</p><h3>Micro Focus Unified Functional Testing</h3><p>Позволяет определить объекты на форме десктопного приложения: окно, radio-button, выпадающий список, поле для ввода. На основе этого к добавленному в библиотеку объекту можно применить то или иное действие: нажать на кнопку или закрыть окно.</p><p>Помимо этих инструментов на рынке есть и другие, например:</p><ul><li>Zeenyx,</li><li>Winium,</li><li>Katalon Studio,</li><li>Test Complet Desktop.</li></ul><p>Можно выбрать тот, который подходит именно вам.</p><h3>Pywinauto</h3><p>Это open source библиотека для автоматизации десктопных GUI приложений на Microsoft Windows. Он нужен для ряда проверок, например, для операций с длительным ожиданием.</p><h3>Тестирование на PyTest</h3><p>Если это доработка вендора и тестирование чёрного ящика, где нужно убедиться, что у реальных пользователей не будет ошибок, мы пишем интерфейсные тесты, используя приведённые выше инструменты. А если нужно проверить интеграционный сервис — API-тест, написанный на Python.</p><p>Проверяя интеграционные кейсы, мы смотрим в том числе минимальную интеграционную обвязку: создаём очереди, вызываем адаптер, который вызывает внутренние процедуры. Также отдельно проверяем функциональность дорабатываемых процедур.</p><p>Python + PyTest позволяют достаточно легко это сделать. А также дают возможность встроить в пайплайн запуск в момент изменения сервиса или связанной процедуры.</p><h3>Git и TeamCity</h3><p>Для поддержания версионности и развёртывания кода. Как единый стандарт в банке. Автотесты мы ведём там же, что упрощает выстраивание общего процесса.</p><h3>Использование ранее написанных процедур при подготовке данных</h3><p>Руководствуясь лучшими практиками, мы определили, что тест должен сам себе готовить данные, чтобы работать стабильно. При участии разработчиков мы разработали ряд процедур, которые позволяют сгенерировать синтетические данные. Это помогает существенно сократить время на подготовку тестовых данных, стабилизировать и ускорить время выполнения тестов.</p><p>Основная идея в том, чтобы не заводить данные, нужные для начала выполнения теста, через интерфейс, а напрямую вызывать процедуры, которые сделают это. И с одной стороны сохранять ряд проверок, необходимых для консистентности данных, а с другой — ускорять процесс их генерации в десятки раз, исключая ручные действия.</p><h2>Лучшие практики, чтобы выстраивать CI/CD на десктопе</h2><p>Тестирование — важная часть CI/CD-процесса, который постоянно совершенствуется. Всегда можно найти более эффективные практики, которые помогут избежать проблем в будущем. Вот ещё несколько принципов, которые помогают улучшить этот процесс.</p><ul><li>Должно быть версионирование кода. Если сейчас у вас этого нет, нужно начинать делать шаги к этому.</li><li>Версионирование кода касается в том числе автотестов.</li><li>Подробно описывайте тест-кейсы, это помогает как с погружением новых сотрудников, так и с написанием автотестов.</li><li>Учитывайте техокна на интеграционных стендах. Если доставлять обновления, не обращая на это внимание, можно помешать другим командам работать. Если в моменте кто-то незапланировано что-то поставит, всё зависнет или вообще сломается.</li><li>Используйте Feature toggle. Он помогает безболезненно поставить доработки на пром, даже если они не работают с включенным toggle.</li><li>Пишите тесты, а лучше автотесты, до того, как доработку передали в тестирование. Писать тест-кейсы, когда доработки уже готовы, — это плохая практика, можно нахватать проблем, например, не хватит сотрудников, чтобы провести тестирование.</li><li>Чем раньше привлекается тестирование, тем лучше. Ведь уже на этапе прочтения ТЗ можно увидеть слабые места, задать вопросы, исправить их и сделать сразу правильно.</li></ul>]]></content:encoded>
    </item>
    <item>
      <title>Как автоматически обновить тестовую среду</title>
      <link>https://tproger.ru/articles/kak-avtomaticheski-obnovit-testovuju-sredu</link>
      <comments>https://tproger.ru/articles/kak-avtomaticheski-obnovit-testovuju-sredu?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Мария Кривоченко]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-avtomaticheski-obnovit-testovuju-sredu</guid>
      <description><![CDATA[<p>Рассказали о том, как мы настраиваем CI/CD и автоматически обновляем не только отдельные системы, но всю тестовую среду из многих систем. </p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-avtomaticheski-obnovit-testovuju-sredu">Как автоматически обновить тестовую среду</a>»</p>]]></description>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 01 Feb 2023 11:14:05 GMT</pubDate>
      <content:encoded><![CDATA[<p>Основное влияние на тестовую среду банка оказывает релизный цикл. В 2022 году у нас было десять крупных релизов — и множество маленьких между ними. Поэтому каждую тестовую среду переключали с одной версии на другую 15–20 раз.</p><p>В процессе важно, чтобы все системы обновились до правильных версий. Иначе при тестировании сложных бизнес-процессов могут возникать дефекты, которые задержат внедрение задач. При этом системы могут быть разными:</p><ul><li>коробочные системы с банковской кастомизацией;</li><li>системы, которые разрабатывают вендоры, передавая готовые дистрибутивы;</li><li>системы, разработанные внутри банка.</li></ul><p>Одни из них используются десятилетиями, другие — только внедряются.</p><p>Из-за этого разнообразия и CI/CD-пайплайны могут сильно отличаться. И обновлять системы вручную — или даже автоматизированно, запуская вручную только обновления отдельных систем, — долго и накладно. Чтобы сделать этот процесс эффективным, нужно научиться обновлять среды полностью автоматически. В этом помогает грамотная автоматизация.</p><h2>Что нужно знать, чтобы автоматизировать обновление среды</h2><p>Раньше мы не имели однозначных данных о том, какие системы изменяются при выполнении конкретной задачи. У каждой команды разработки были свои эпики в Jira, кто-то из них мог изменить сразу несколько систем и сообщить об этом только в инструкции по обновлению. Понятно, что использовать такую информацию для автоматизации было сложно.</p><p>Во-первых, нужно формализовать информацию об инфраструктуре в <b>CMDB </b>(Configuration Management Database)<b>:</b> базы данных, сервера, тестовые среды. Главное — прописать чёткий список систем — конфигурационных единиц (КЕ), — с указанием, в каких тестовых средах они находятся.</p><figure><img src="https://media.tproger.ru/uploads/2023/01/image2-1.png" alt="" /></figure><p>Каждая КЕ должна иметь чёткие границы, чтобы не возникало перекрытий или пропусков отдельных компонентов. А каждая тестовая среда — конкретный состав и версию релиза, которому она соответствует в данный момент. Версии всех систем должны этому релизу соответствовать.</p><p>Чтобы сделать информацию о тестовых средах, системах и версиях более доступной мы сделали специальный сервис «Версии систем». Он автоматически собирает информацию о версиях тестовых сред и систем для отображения или предоставлении по API.</p><figure><img src="https://media.tproger.ru/uploads/2023/01/image4-1.png" alt="" /></figure><p>Во-вторых, нужно понимать какие системы должны быть обновлены в каждом релизе. Если в каждом Jira-эпике разместить информацию о системе и релизе, в который входит задача, то можно автоматически собрать список всех систем, которые меняются в релизе.</p><p>Мы сделали небольшую доработку Jira. И теперь при создании запроса на обновление среды автоматически создаются отдельные запросы на обновление каждой системы, которая поменялась в релизе и присутствует в среде.</p><figure><img src="https://media.tproger.ru/uploads/2023/01/image3-1.png" alt="" /></figure><p>В-третьих, нужно знать, как запустить обновление каждой системы в целевой среде.</p><p>Если автоматизации обновления в системе недостаточно, то запрос на установку попадает к конкретному специалисту, который обновляет систему.</p><p>Но целевой вариант предполагает использование скриптов обновления полностью в автоматическом режиме. Должно быть достаточно сообщить скрипту, какую среду нужно обновить, и целевой релиз обновления. Скрипт же должен самостоятельно разобраться со всем остальным — найти правильный дистрибутив нужной версии, обновить все компоненты до целевой версии, запустить систему, если нужно и проверить корректность обновления.</p><p>Удобно, когда скрипты обновления запускаются единообразно.</p><figure><img src="https://media.tproger.ru/uploads/2023/01/image5-1.png" alt="" /></figure><h2>Процесс обновления тестовой среды</h2><p>Благодаря доработкам обновление тестовой среды выглядит так:</p><ol><li>Лидер продуктовой команды или владелец тестовой среды создаёт в Jira запрос на обновление, в котором указывает название среды и целевой релиз.</li><li>Jira создаёт отдельные запросы для каждой системы и назначает ответственных специалистов.</li><li>Скрипт обрабатывает запросы настроенных систем, запускает обновление и закрывает запросы по окончании обновления.</li><li>Запросы по некоторым системам обрабатываются вручную.</li></ol><p>Инициатор может отслеживать прогресс обновления.</p><h2>Принципы построения CI/CD-pipeline</h2><p>Давайте теперь спустимся на уровень ниже и посмотрим, как должны быть устроены CI/CD-pipeline для системы, чтобы соответствовать такому подходу. Будем отталкиваться от свойств дистрибутива.</p><p>Дистрибутив должен быть:</p><ol><li><b>Системным</b>, то есть должен содержать необходимые артефакты для обновления всех компонентов системы. Не должно быть такого, что какой-то из необходимых компонентов — например, sql-скрипты для базы данных — обновлялся отдельно вручную.</li><li><b>Кумулятивным, </b>то есть содержать все изменения, а не только дельту от предыдущего дистрибутива/версии/релиза. Без кумулятивности сложно автоматизировать правильную последовательность установки в разные по состоянию среды. Эта проблема возникает обычно на бэковых системах, построенных вокруг баз данных, или на специфических движках. В таких случаях довольно сложно сделать кумулятивные сборки, но к этому нужно стремиться.</li><li><b>Версионным. </b>Каждая сборка должна помечаться уникальной версией, которая обычно состоит из порядкового номера сборки и ещё какого-либо признака более общей версионности — мы используем номер релиза. Версия системы выглядит так: [Номер_релиза].[Номер_спринта].[Номер_сборки], например, 112.0.0.123, где 112.0 — это номер релиза, 0 — если спринты не используются, 123 — номер сборки. Привязка к номеру релиза имеет ключевое значение. Именно по ней определяется принадлежность дистрибутива к релизу и формализуется его поиск.</li><li>Сохраняться в хранилище артефактов, в нашем случае в Nexus. Структура хранения тоже должна быть формализована так, чтобы всегда можно было найти нужные артефакты по номеру версии или последнюю успешную сборку для системы-релиза.</li><li><b>Средонезависимым</b>. Дистрибутив не должен содержать никаких средозависымых параметров. Все средозависимые параметры должны содержаться в inventory-файлах скрипта развёртывания, в дополнительных хранилищах секретов.</li></ol><p>Сборочный скрипт приложения или CI-pipeline должен быть устроен так, чтобы в результате порождать дистрибутив, соответствующий всем этим свойствам.</p><p>Управление конфигами приложения тоже должно быть автоматизировано. Параметры и шаблоны конфигов должны входить в состав скрипта деплоя системы.</p><h2>Итоги внедрения скрипта обновления тестовой среды</h2><p>Раньше мы обновляли среды в течение трёх дней, теперь тратим на это меньше дня, не завися от экспертов по каждой системе и не отвлекая их.</p><p>В планах сделать процесс полностью автоматическим и сократить время обновления до нескольких часов – осталось только доавтмоатизировать несколько систем и вписать их в общий процесс.</p>]]></content:encoded>
    </item>
    <item>
      <title>Обработка документов в PDF и JPG: распознавание, тегирование, извлечение текста</title>
      <link>https://tproger.ru/articles/obrabotka-dokumentov-v-pdf-i-jpg-raspoznavanie-tegirovanie-izvlechenie-teksta</link>
      <comments>https://tproger.ru/articles/obrabotka-dokumentov-v-pdf-i-jpg-raspoznavanie-tegirovanie-izvlechenie-teksta?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Дмитрий Кульбацкий]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/obrabotka-dokumentov-v-pdf-i-jpg-raspoznavanie-tegirovanie-izvlechenie-teksta</guid>
      <description><![CDATA[<p>Как обрабатывать документы в PDF и в JPG, извлекать из них нужные данные автоматически, а текст включать в электронный документооборот.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/obrabotka-dokumentov-v-pdf-i-jpg-raspoznavanie-tegirovanie-izvlechenie-teksta">Обработка документов в PDF и JPG: распознавание, тегирование, извлечение текста</a>»</p>]]></description>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Гостевая публикация]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 23 Dec 2022 11:30:31 GMT</pubDate>
      <content:encoded><![CDATA[<p>Существует много RPA-платформ, которые позволяют автоматизировать практически любое взаимодействие с рабочими приложениями и избавить человека от рутинных задач.</p><p>Однако многие компании сталкиваются с проблемами в автоматизации обработки неструктурированных документов в формате PDF или JPG. Это могут быть договоры от контрагентов, выставленные счета от подрядчиков, заявления от клиентов.</p><p>Из каждого входящего документа нужно извлечь ценные данные: дату выставленного счета, финальную сумму договора, обратный адрес отправителя, название контрагента.</p><p>Далее необходимо внести эти данные в систему электронного документооборота, провести сверку данных из документа с данными из внутренних систем или подсчитать статьи расходов и сравнить их с финальной суммой.</p><p>Данные в подобных документах не структурированы. К тому же, у разных клиентов и контрагентов существует много форматов этих данных.</p><p>Подход с использованием строго описанных правил для обработки таких документов требует колоссальных затрат на разработку, поддержку и последующее расширение автоматизации.</p><p>В таких случаях не обойтись без применения технологий машинного обучения, что позволит сделать автоматизацию процессов «умной». Иными словами, необходима Intelligent Automation Platform (IA Platform).</p><p>Итак, для автоматизации обработки неструктурированных документов необходимы три компонента, каждый из которых требует своего уникального стека технологий и подходов. В статье мы расскажем, как используем их в ИТ-компании ИБА в работе нашей платформы «Канцлер RPA».</p><h2>Компонент № 1: распознавание</h2><p>На рынке есть большое количество различных движков Optical Characters Recognition (OCR): и платных, и open source. Мы решили изучить, какие технологии наиболее зрелые, и выбрать те, которые больше всего подходят под наши требования. Важна была возможность использования в коммерческих целях, а также хорошее качество распознавания отсканированных документов.</p><p>Мы выбрали для себя Tesseract OCR. Это разработка HP, перешедшая в open source благодаря Google. Также мы обратили внимание на амбициозный проект, который зачастую показывал лучшие результаты — PaddleOCR. Его мы внедрили в платформу как альтернативный движок.</p><p>Для повышения качества OCR мы делаем предобработку документов, используя ImageMagick. Большинству документов, с которыми мы встречаемся на практике, достаточно базовой предобработки, которая включает в себя изменение DPI картинки, обесцвечивание, выравнивание возможного наклона документа, удаление прозрачности.</p><p><b>Установка ImageMagick выполняется следующей командой:</b></p><p>● Для CentOS, Fedora:</p><p>yum -y install ImageMagick</p><p>● Для Debian, Ubuntu:</p><p>apt-get -y install imagemagick</p><p>Например, у нас есть картинка с именем «input.png». Для ее предобработки мы предлагаем команду со следующими параметрами ImageMagick:</p><p>Здесь видно, что обычно мы используем конвертацию DPI в 350 точек на дюйм. В официальной документации Tesseract есть упоминание о том, что движок лучше работает на картинках, у которых «хотя бы 300 DPI», но ничего не сказано про подходы к определению наилучшего значения. Однако они <a href="https://groups.google.com/g/tesseract-ocr/c/Wdh_JJwnw94/m/24JHDYQbBQAJ?pli=1">ссылаются</a> на интересные эксперименты, которые показывают, что выбор правильного значения DPI лучше всего рассчитывать по высоте заглавных букв в тексте картинки, которую мы обрабатываем.</p><p>Мы повторили эти эксперименты. Из них следует неожиданный вывод об оптимальном размере заглавных букв в пикселях. Казалось бы, чем больше размер букв, тем количество OCR-ошибок должно быть меньше. На самом деле все оказалось не так, и минимальное количество ошибок Tesseract версии 4.0.0 допускает при вертикальном размере заглавных букв в пределах 20-35 пикселей.</p><figure><img src="https://media.tproger.ru/uploads/2022/12/e2abafb0-3181-4160-b3c7-67f06299720d.jpg" alt="" /></figure><p>Разумеется, все зависит от используемого в документе шрифта. Однако, в большинстве официальных документов используются одни и те же шрифты примерно одного и того же размера. Поэтому мы предлагаем именно 350 DPI как базовую настройку, что обычно изменяет размер заглавных букв как раз на 20-35 пикселей.</p><p>Вот пример предобработанного документа, где был исправлен наклон, увеличен контраст и использованы только черные и белые цвета:</p><figure><img src="https://media.tproger.ru/uploads/2022/12/6743f70d-0e62-4456-ac44-b0b37004fe18.jpg" alt="" /></figure><figure><img src="https://media.tproger.ru/uploads/2022/12/c90ed3c6-63fb-495f-a9d6-b151e419443e.jpg" alt="" /></figure><h2>Компонент № 2: тегирование</h2><p>Для подготовки обучающего набора документов мы разработали для нашей платформы специальный вид ручной задачи, где человек выделяет текст мышкой на оригинальном документе, таким образом указывая расположение нужных данных.</p><p>Для реализации UI мы выбрали ReactJS. Это <a href="https://www.statista.com/statistics/1124699/worldwide-developer-survey-most-used-frameworks-web/">самая популярная библиотека</a> для создания пользовательских интерфейсов. Также ReactJS гибкий, с хорошей читаемостью кода благодаря разбивке приложения на компоненты, поэтому его легче поддерживать, находить и исправлять ошибки.</p><p>Чаще всего к нам приходит документ в формате PDF, который мы конвертируем в картинку, используя ImageMagick и Ghost Script. Предположим, мы получили вот такую картинку:</p><figure><img src="https://media.tproger.ru/uploads/2022/12/6bf09c72-fbfd-4d26-9994-0e7b407dfc9b.jpg" alt="" /></figure><p>Далее документ отправляется на OCR. Результатом работы OCR будет следующая HTML-структура:</p><p><a href="https://media.tproger.ru/uploads/2022/12/Bez-imeni.png"></a></p><p>Мы видим иерархию следующего вида: каждый документ делится на страницы («ocr_page»), у каждой страницы могут быть колонки («ocr_carea»), у колонки есть параграф («ocr_par») и так далее до самой мелкой структуры — слова («ocrx_word»). В атрибутах каждого блока есть информация о его расположении относительно оригинального документа. Например, «bbox 2215 236 2443 288» означает, что верхний левый край слова начинается в координатах X=2215, Y=236, а правый нижний край — X=2443, Y=288.</p><p>Таким образом, на UI к нам приходит картинка оригинального документа и OCR-результат с извлеченным из него текстом с координатами.</p><p>Далее мы отображаем картинку документа в обычном теге, без каких-либо дополнительных слоев. Начинаем отслеживать JS-события перемещения мыши по картинке и событие выделения. Когда пользователь выделяет какую-либо область на картинке, в обработчике события мы получаем координаты выделенной области. Теперь перед нами стоит задача определить, какие области из OCR-результата затрагивает выделенная область. Это простая математическая задача о пересечении одной области с другой. Но эта операция должна выполняться максимально быстро, т. к. пока пользователь проводит мышкой, выделяя все большую область, мы каждый раз должны пересчитывать пересечение областей. Для оптимизации процесса мы решили конвертировать HTML формат в JSON с сохранением структуры вложенности. Таким образом HTML из примера выше примет следующий JSON-вид:</p><p>Теперь, получая координаты пользовательского выделения, мы начинаем идти по структуре OCR-JSON вглубь дерева вместо того, чтобы перебирать координаты каждого извлеченного слова. Например, на уровне параграфа мы сразу можем понять, стоит ли опускаться на уровень ниже к линиям или перейти к следующему параграфу для поиска вхождения.</p><p>Если мы определяем, что в выделенную пользователем область попадает регион какого-то слова, мы создаем элемент с полупрозрачным фоном с абсолютной позицией, чтобы имитировать выделение. У пользователя создается впечатление, что он выделил слово в самом документе, хотя технически это просто картинка, которая не содержит в себе текстового слоя.</p><figure><img src="https://media.tproger.ru/uploads/2022/12/07a54f48-de9a-4e76-b57c-8c6084853fee.jpg" alt="" /></figure><p>В качестве выходных данных мы также используем JSON, который содержит в себе информацию об извлеченных сущностях и их относительные координаты. Такие данные несут в себе основную ценность и в дальнейшем используются для обучения Machine Learning (ML) модели:</p><h2>Компонент № 3: извлечение</h2><p>Для автоматического извлечения текста мы выбрали ML-библиотеку SpaCy, которая поддерживает 60+ языков, быстро тренируется, имеет множество преднатренированных моделей с использованием нейронных сетей.</p><p>Наша платформа предполагает обработку документов из различных сфер: это могут быть банковские выписки, страховые заявления, ритейл-счета, анкеты для HR-отделов и т. д. Поэтому под каждый вид документов конкретного клиента мы обучаем отдельную модель, что позволяет добиться лучших результатов. Благодаря разработанному компоненту тегирования документов процесс генерации обучающего набора не требует специализированных знаний в области ML. Обычно этот процесс выполняют Subject-Matter Experts (SME) — сотрудники клиента, которые до автоматизации занимались извлечением таких данных вручную, и именно они лучше всего знают, какой текст должен быть выделен в конкретном документе.</p><p>Один из главных вопросов при автоматизации обработки документов — какое количество исторических документов требуется для обучения ML-модели. Мы определили, что для быстрого старта первой версии модели, которая сразу же начнет приносить пользу, достаточно от 50 до 100 документов. Чтобы определить оптимальное количество документов, мы провели эксперименты по обучению моделей, в которых изменяли только размера тренировочного набора. Для каждой модели мы высчитывали такие показатели, как Accuracy, Precision, Recall и F1 Score. Оказалось, что оптимальным количеством является примерно 500 документов. При дальнейшем увеличении количества документов не происходит существенного улучшения точности.</p><figure><img src="https://media.tproger.ru/uploads/2022/12/8ca2dc0d-5d42-4b85-aa8d-914fe09ca736.jpg" alt="" /></figure><p>После того, как модель обучена, ее можно внедрять в бизнес-процесс. Она начнет выполнять тегирование документа автоматически вместо человека. Если по правилам валидации автоматически извлеченных данных требуется ручная проверка, мы отправляем результат работы ML-модели на наш компонент тегирования. Там производим обратную операцию по выделению извлеченных областей на документе. Так человек может увидеть, откуда были извлечены данные:</p><figure><img src="https://media.tproger.ru/uploads/2022/12/ab728cd8-f6e7-4405-9dac-073d1b1d7711.jpg" alt="" /></figure><p>Таким образом, умная автоматизация сочетает в себе возможности роботизации процессов и машинного обучения. Тщательное исследование доступных open source решений и грамотная работа над обучением ML-моделей позволила нам создать RPA-платформу, которая отлично справляется с обработкой неструктурированных документов. Пользователю же при этом кажется, что он просто выделяет мышкой слова.</p>]]></content:encoded>
    </item>
    <item>
      <title>Машинное обучение сэкономило 5 млн рублей в месяц на техподдержке</title>
      <link>https://tproger.ru/articles/mashinnoe-obuchenie-sjekonomilo-5-mln-rublej-v-mesjac-na-tehpodderzhke</link>
      <comments>https://tproger.ru/articles/mashinnoe-obuchenie-sjekonomilo-5-mln-rublej-v-mesjac-na-tehpodderzhke?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Olga Ivanova]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/mashinnoe-obuchenie-sjekonomilo-5-mln-rublej-v-mesjac-na-tehpodderzhke</guid>
      <description><![CDATA[<p>Рассказываем, как машинное обучение ускорило ответы в техподдержке такси и сэкономило 5 млн рублей ежемесячно.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/mashinnoe-obuchenie-sjekonomilo-5-mln-rublej-v-mesjac-na-tehpodderzhke">Машинное обучение сэкономило 5 млн рублей в месяц на техподдержке</a>»</p>]]></description>
      <category><![CDATA[Машинное обучение]]></category>
      <category><![CDATA[Техподдержка]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Гостевая публикация]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 23 Dec 2022 08:55:14 GMT</pubDate>
      <content:encoded><![CDATA[<h2>Служба поддержки глазами Продукта</h2><p>Автоматизация службы поддержки пользователей повышает эффективность операций и улучшает качество сервиса. Набор решений зависит от целей и стратегии конкретной компании. Например, фокус может быть на роботах-помощниках или на обслуживании живым человеком.</p><p>Особенно важно это для служб поддержки в такси. Поддержка сталкивается с несколькими типами клиентов: водителями, пассажирами и таксопарками. Популярность агрегаторов такси при этом только растёт. В период активного роста через Ситимобил, например, совершалось 13 млн поездок ежемесячно.</p><p>В среднем 8% пользователей обращались в службу поддержки: это 1 млн обращений в месяц. Большинство из обращений требуют срочного ответа, ведь пользователь не будет ждать ответа несколько дней, когда что-то идёт не так прямо сейчас, в поездке.</p><p>Высокое количество обращений влияет на численность сотрудников в службе поддержки. Иногда речь идет о тысячах постоянных сотрудников. Но как сделать работу огромной команды наиболее эффективной, чтобы сократить затраты для компании и, при этом, улучшить клиентский опыт?</p><p>Поиск решения лежит в понимании трех операционных метрик любой службы поддержки:</p><ul><li>количество входящих  обращений от пользователей,</li><li>количество обращений, обрабатываемых сотрудником в час,</li><li>распределение рабочего времени сотрудника.</li></ul><p>Таким образом, инициативы так или иначе влияют на формулу:</p><p>(Число обращений) х (Стоимость обработки одного обращения) = (Затраты на службу поддержки)</p><p>Стоимость обработки одного обращения рассчитывается так:</p><p>(Стоимость обработки одного обращения) = (Зарплатная ставка в час) / ((60 минут) / (Время обработки одного обращения)) / (% времени, когда сотрудник работает)</p><p>Расчет подобного уравнения и понимание драйверов каждой из метрик — первый этап в поиске оптимального продуктового решения для службы поддержки. При этом, если компания работает с большими объемами обращений, экономия даже нескольких секунд приводит к значительному сокращению затрат.</p><p>В нашем кейсе, результат принесли проекты по сокращению числа обращений и сокращению времени обработки. При этом, важно было сохранить живое общение с пользователем и сохранить гибкость в управлении поддержкой. Исследовав рынок и учтя факторы, мы разработали собственного рабочего места сотрудника.</p><p>Проект, запущенный в начале 2020 года, завершился весной 2022. Было два магистральных направления работы:</p><ul><li>новое рабочее место для быстрой обработки обращений с командой из одного продукта, пяти разработчиков и одного тестировщика,</li><li>автоматизации для сокращения входящих обращений с командой из одного продукта и трех  ML-разработчиков (специалисты по машинному обучению).</li></ul><p>В течение работы над проектом, продуктовая команда работала совместно с командой клиентского сервиса, чтобы учесть специфику работы линейных сотрудников.</p><h2>Рабочее место сотрудника поддержки</h2><p>Основная задача — максимально упростить работу сотрудников с обращениями в каналах: чат и звонок. Метрика, которую оптимизировали — Время обработки одного обращения (average handling time или АНТ).</p><p>Она считается так: замеряется время, которое сотрудник тратит на разговор или переписку с пользователем, а также на административные вопросы, связанные с одним обращением. Можно измерить через статусы в системе или сделав хронометраж работы сотрудника с секундомером.</p><p>Проект начался с трехстороннего исследования проблем старого рабочего места и потребностей сотрудников. Продуктовая команда проводила глубинные интервью как с руководителями, так и с линейными сотрудниками.</p><p>Примеры вопросов:</p><ul><li>На какие типы обращений тратишь больше всего времени?</li><li>Что бы хотел изменить в текущем рабочем месте?</li></ul><p>Сложность в интервью — сотрудники привыкают к неудобствам старого рабочего места и не думают, что бывает по-другому. Поэтому второй этап — самостоятельное исследование. Команда прошла стажировку в качестве сотрудников поддержки, самостоятельно отвечала на обращения пользователей и фиксировала все несовершенства процесса.</p><p>Параллельно с обучением команда делала хронометраж и шедоуинг работы сотрудника. Это метод при котором наблюдатель находится рабочий день рядом с сотрудником и фиксирует задачи и затраты времени, а также задает вопросы о причинах действий.</p><p>Наконец, команда изучала практики конкурентов и поставщиков готовых решений.</p><p>Следующий этап  — создание  плана целевого состояния рабочего места, составленный менеджером продукта. План включал перечень найденных проблем на этапе исследования, концепцию нового рабочего места и перечень фичей, а также этапы разработки и внедрения.</p><p>Проблема старого решения  — множественные переключение между окнами. Поэтому новое рабочее место строилось по принципу единого окна, объединяющего каналы обращений пользователей через сквозные статусы.</p><p>Дополнительный функционал добавлялся как микросервис. Он связан с возможностью совершить новые действия с обращением пользователя. Примеры:</p><ul><li>отменить заказ с возвратом денег за отмену,</li><li>пересчитать платное ожидание,</li><li>проставить статус или тему обращения,</li><li>вернуть деньги, списанные за поездку.</li></ul><p>Действия сотрудников были проранжированы по частоте. Эта частота определила порядок добавления новых фичей и действий в рабочее место. Второй фактор — затраты времени сотрудника на совершение действия. Например, если “возврат денег за поездку” — самое частое обращение пользователей и новый интерфейс позволит делать это быстрее — внедряем этот функционал в первую очередь.</p><p>Таким образом, компания начинала выигрывать от перехода на новое рабочее место еще до его полного внедрения.</p><p>С технической стороны, команда разработки делилась на frontend, backend, qa и дизайнера.</p><p>Frontend реализовывался на ReactJS и отвечал за пользовательские интерфейсы (UI). В нашем случае, это те самые действия сотрудника с обращением.</p><p>Backend реализовывали на фреймворке Symfony языка PHP. Бэк занимался API и закрытой админкой для настройки рабочего места сотрудника. Каждая фича выкатывалась под ручкой и можно было гибко настраивать функционал под нужды сотрудников поддержки. В том числе, возможность отключить функционал для некоторых групп сотрудников. Это важно, например, для стажеров, которым рано давать доступ к операциям с деньгами.</p><p>На момент полного внедрения  AHT сократился с 230 секунд до 195 секунд для звонков и с 500 до 385 секунд по чатам. Эффект получили за счет ухода от переключения между окнами.</p><p>Кроме этого, сработала фича:</p><ul><li>подсказки при выборе тематики обращений. ML-команда научила систему анализировать десятки параметров при поступлении звонка и по итогу отдавать топ 5-10 вероятных тематик обращения. Такие предсказанные предложения тематик сократили время обработки звонка на 4 секунды.</li></ul><p>Суммарно же сокращение АНТ принесло компании экономию бюджета службы поддержки на 20%.</p><h2>Интерактивное голосовое меню (Interactive Voice Response, IVR) и чат-боты</h2><p>Задача — сократить число обращений пользователей, которые требуют участия сотрудника, при этом не ухудшить впечатление от клиентского сервиса. Метрика, которую оптимизировали — число обращений, закрытое без участия сотрудника и без переоткрытия пользователем.</p><p>В звонках использовались два подхода:</p><ul><li>IVR, позволяющий получить информацию или совершить самостоятельное действие. Пример: для отмены заказа, нажмите 5 или скажите “отмена”,</li><li>Автоматическая маршрутизация, когда система сама понимает, с кем нужно соединить пользователя.</li></ul><p>Команда не разрабатывала новых фичей, а сфокусировалась на анализе схем маршрутизации и причина обращений на этапах пользовательского пути. Вопросы при анализе:</p><ul><li>Что мы знаем о пользователе? Например, статус заказа, наличие открытого обращения в поддержку</li><li>Почему он или она сейчас обращается в поддержку?</li><li>С какой вероятностью можем это угадать?</li></ul><p>Изменение логики или фразы проверялось на группе пользователей перед раскаткой на базу.</p><p>За счет новой логики работы IVR и маршрутизации сократилась потребность в соединении с оператором.</p><p>Примеры удачных логик IVR:</p><ul><li>если у пассажира есть текущий заказ, при звонке в поддержку, мы предоставляем информацию о машине и времени ожидания, а также позволяем автоматически отменить заказ,</li><li>если у пользователя уже было открытое обращение в службу поддержки, сообщаем статус и сроки рассмотрения.</li></ul><p>Примеры маршрутизации:</p><ul><li>в случаях, когда машина подана, пассажир напрямую соединяется с водителем через маскированный канал, так как в сценарии  частая проблема — найти друг друга.</li></ul><p>Похожие действия реализовали и в чатах, проанализировав типичные сценарии переписок. Мы постоянно тестировали новые автоматизации и оставляли только те, у которых были низкие переоткрытия, оставляя возможность быстро связаться с человеком.</p><p>С технической точки зрения, логики были реализованы через API поставщика услуг связи. Каждый новый сценарий привязывался через него и менял настройки телефонии.</p><p>В итоге, удалось автоматически закрывать 35% обращений: из них 17% заслуга чат-ботов, остальное IVR и маршрутизация.</p><h2>Итоги проекта</h2><p>В результате этого проекта компания получила ощутимую экономию затрат. Оценить эффект можно по формуле (стоимость обращения индикативная):</p><p><b>Без автоматизации:</b></p><p>Обращения в месяц: 1 млн</p><p>Стоимость обработки одного обращения: 10 руб.</p><p>Итого затрат в месяц: 10 млн руб.</p><p><b>С автоматизацией:</b></p><p>Обращения в месяц: 1 млн — 35% = 650 тыс. (те, которые попадут к сотруднику)</p><p>Стоимость обработки одного обращения: 10 руб. — 20% = 8 рублей (те же сотрудники, но работают на 20% быстрее)</p><p>Итого затрат в месяц: 5,2 млн руб.</p><p>Естественно, эти цифры не учитываю затрат на разработку, но решение хорошо окупается на горизонте 2-3х лет. Кроме этого, совместная работа над проектом позволила повысить мотивацию и вовлеченность сотрудников службы поддержки. Провели оценку удовлетворенности сотрудников службы поддержки до начала проекта и после завершения. Удовлетворенность выросла на 17%, при этом сотрудники положительно отмечали:</p><ul><li>обучение новому, работая с технической командой,</li><li>чувство причастности из-за участия в большом проекте,</li><li>возможность повлиять на ежедневную работу.</li></ul><p>Этот дополнительный эффект тоже стоит учитывать при оценке результатов проекта.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как стать самым быстрым программистом?</title>
      <link>https://tproger.ru/articles/kak-stat-samym-bystrym-programmistom</link>
      <comments>https://tproger.ru/articles/kak-stat-samym-bystrym-programmistom?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Кристина Дмитриевых]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-stat-samym-bystrym-programmistom</guid>
      <description><![CDATA[<p>Рассказали, как можно оптимизировать вашу работу, как быстрее писать код и как качественнее его проверять, на примере команды HP.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-stat-samym-bystrym-programmistom">Как стать самым быстрым программистом?</a>»</p>]]></description>
      <category><![CDATA[Основные принципы программирования]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Гостевая публикация]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 28 Oct 2022 11:22:18 GMT</pubDate>
      <content:encoded><![CDATA[<p>Это — вторая серия проекта «Код Раковского», где Александр Раковский, Senior Java разработчик компании ITentika, рассказывает о том, что считает важным и интересным в сфере программирования. Первый выпуск можно посмотреть <a href="https://tproger.ru/articles/kod-kak-u-senora-refaktoring/">здесь</a>.</p><p>На первый взгляд, стать самым быстрым программистом — отличная цель. Кто успевает сделать больше фич, тот и приносит компании больше денег, да? А кто приносит больше денег, тому и самую большую зарплату, правильно?</p><p>Уверен, кто-то сейчас ухмыльнулся, вспомнив своего коллегу, который всех в команде бесил своими быстрофиксами и костылями. Похоже, компаниям важны не столько быстрые программисты, сколько быстрые команды.</p><p>Ну хорошо, а как замерить скорость программиста или команды?</p><p>Можно вводить разные странные метрики: число строк кода, число сторипоинтов или доставленных фич. Совершенно очевидно, что эти метрики никуда не годятся. При желании любая команда легко может ими манипулировать: писать сотни тысяч строк кода, который никогда не запустится, закладывать в оценки тысячи сторипоинтов, дробить большие фичи на маленькие.</p><p>Давайте зайдем с другой стороны. Как можно оптимизировать вашу работу? Может, надо быстрее писать код? Или качественнее проверять код, чтобы потом меньше времени тратить на отладку? Может быть, стоит меньше времени проводить на митингах? Сколько вообще времени ваша команда тратит на самое главное — реализацию нового функционала?</p><h2>Кейс HP LaserJet</h2><p>В 2008 году компания Hewlett Packard обнаружила себя в трудной ситуации. Исследование показало, что на разработку нового функционала HP LaserJet у компании оставалось лишь 5% всего времени — все остальное съедали сложности, возникающие при разработке кода под множество устройств.</p><figure><img src="https://media.tproger.ru/uploads/2022/10/36b77851-50a8-4412-9c25-1d451582c508.jpg" alt="" /></figure><p>Это заставило компанию запустить большую перестройку процессов. Новые процессы базировались на идеях экстремального программирования.</p><p>Ключевые нововведения:</p><ul><li>Практически полностью автоматизированное тестирование;</li><li>четыре уровня проверки кандидата к релизу — от самых быстрых тестов с частотой до 12 прогонов в день до самых медленных с частотой до 1 раза в сутки;</li><li>автоматизация инфраструктуры и развертываний. Любые изменения вплоть до конфигураций проходили через систему контроля версий и тесты, откуда автоматически развертывались на стенды;</li><li>короткие циклы планирования вместо разработки больших проектов на много месяцев вперед;</li><li>и самое радикальное — разработка на одной ветке, или, как сейчас говорят, trunk based development. Каждый день в главную ветку вливались по 10-14 коммитов, что позволило предотвратить все варианты интеграционных конфликтов.</li></ul><figure><img src="https://media.tproger.ru/uploads/2022/10/39269f46-322a-4dcc-8fbd-a21de08afdf0.jpg" alt="" /></figure><p>В результате удалось добиться сокращения затрат на большинство активностей в разы. Это позволило высвободить время для инноваций: процент времени, затрачиваемого на новый функционал, увеличился с 5% до 40%.</p><figure><img src="https://media.tproger.ru/uploads/2022/10/9f2cacbf-9821-4382-b45c-52747d55fb9e.jpg" alt="" /></figure><p>Самое интересное тут то, что времени на тестирование не стало меньше, оно даже, наоборот, удвоилось: несмотря на то, что ручное тестирование сократилось в три раза, теперь 23% всего времени уходило на автоматические тесты. То есть, увеличив время на автоматическое тестирование и автоматизацию инфраструктуры, компания смогла тратить меньше на остальные активности. Таким образом скорость разработки выросла на невероятные 700%.</p><h2>Сильные и слабые команды</h2><p>Это не столько частный случай, сколько общая практика. В 2016 году организация DORA в ежегодном исследовании State of Devops опубликовала свои замеры.</p><p>Оказалось, что сильные команды тратили на переделывание и незапланированную работу на 22% меньше, а на новую работу на 29% времени больше, чем слабые. Через год разрыв увеличился: сильные команды стали тратить на переделывание и незапланированную работу на 26% меньше и на 44% больше на новую работу. Таким образом, сильные команды в среднем тратят почти в полтора раза больше времени на полезную работу.</p><figure><img src="https://media.tproger.ru/uploads/2022/10/dcb81d81-1aa4-4b04-a680-01400cf73928.jpg" alt="" /></figure><p>Дизайн исследования специально был построен таким образом, чтобы сильные команды объединял все тот же высокий уровень автоматизации тестирования и развертывания. В слабых командах же, напротив, значительно больше было ручной работы.</p><h2>Зачем нужна автоматизация</h2><p>Важно понимать, почему высокий уровень автоматизации, требуя в среднем больше затрат, чем ручная работа, освобождает больше времени на разработку нового функционала. Если вы вспомните собственный опыт, то совершенно точно согласитесь, что даже при разработке нового функционала большая часть времени у вас уходит на поиск ошибок и попытки заставить что-то работать. Дефекты могут скрываться как в коде, так и в самой конфигурации системы, о чем мы нередко забываем. И вот тут многоуровневые автоматические тесты становятся настоящим спасением, потому что именно они дают почти моментальную обратную связь, если где-то что-то сломалось.</p><p>Другой важный эффект: чем больше времени проходит с момента совершения ошибки до момента ее обнаружения, тем сложнее эту ошибку найти и исправить. Во-первых, возрастает объем изменений и непонятно, какое именно вызвало ошибку. Во-вторых, поверх этой ошибки нередко успевает вырасти целый конструкт, который плотно связан с ней, и починив одно, можно сломать другое.</p><h2>Ну хорошо, а кто должен писать все эти тесты?</h2><p>Здесь все то же исследование State Of Devops демонстрирует еще более удивительную связь: тесты, написанные тестировщиками или даже отдельными командами, как оказалось, ничем не помогают. Только тесты, написанные самими разработчиками, позволяют добиться повышения эффективности команды.</p><p>Почему так?</p><p>Тут, на самом деле, нет единого ответа. Статистика указывает на корреляцию, но не объясняет, в чем дело. Может быть, когда разработчики пишут тесты сами, не происходит классического расщепления ответственности за качество кода между кодерами и тестерами. Может быть, дело в том, что к таким тестам у самих программистов гораздо больше доверия. А возможно, здесь важна именно комбинация множества факторов.</p><p>Суть остается неизменной: разработчики, одержимые тестами, добиваются значительно лучших результатов, чем их более консервативные коллеги.</p><h2>Ладно, автоматизация важна. Как и что автоматизировать?</h2><p>Это крайне обширная тема, которая максимально подробно освещена в книге «Непрерывное развертывание программного обеспечения» (Continuous Delivery) авторства Дейва Фарли и Джеза Хамбла.</p><p>Давайте попробуем вкратце описать процесс разработки в условиях полной автоматизации тестирования, развертывания и инфраструктуры.</p><p>Центральным элементом такого процесса является паттерн «Конвейер развертывания» (Deployment pipeline). Согласно этому шаблону, каждый коммит, попавший в главную ветку в системе контроля версий, запускает старт этого конвейера.</p><figure><img src="https://media.tproger.ru/uploads/2022/10/1b718c78-d19f-4333-9108-7872a66ef10c.jpg" alt="" /></figure><p>На первом шаге код собирается и на нем запускаются быстрые тесты, не требующие развертывания приложения. Этот шаг должен длиться не более 5 минут, чтобы не сдерживать доступ остальной команды к ветке.</p><p>Согласно практике, в случае красных тестов у автора коммита есть 5 минут на то, чтобы восстановить работоспособность ветки — устранить проблему или откатить свои изменения до последней рабочей версии.</p><p>После успешного прохождения тестов вторым шагом в репозиторий публикуется собранный кандидат к релизу, например docker-контейнер или иной артефакт.</p><p>За этим следует шаг с развертыванием приложения на тестовый стенд и конфигурацией стенда. Здесь происходят все накаты миграций баз данных и все изменения настроек приложений.</p><p>Очень важно, что любые изменения конфигурации должны проходить исключительно через конвейер: это дает возможность откатиться на предыдущую версию конфигурации в случае каких-то проблем. Эта практика называется «Инфраструктура как код».</p><p>Ни в коем случае нельзя настраивать вашу инфраструктуру вручную. Это приводит к антипаттерну «Сервер-снежинка» (Snowflake Server), когда ваш сервер уникален и неповторим, подобно снежинке. Нет ни малейшей гарантии, что то, что работает на вашей снежинке, будет работать хоть где-то еще.</p><p>Следующим шагом конвейера обычно становится шаг автоматических приемочных тестов на развернутом приложении. Эти тесты проверяют, что все требования к приложению выполнены: на этом этапе гоняются бизнес-сценарии, нагрузочные тесты, UI-тесты, security-тесты, инфраструктурные тесты.</p><p>Лучшая практика тут — приложить все усилия, чтобы этот шаг длился не более часа, чтобы у команды была возможность прогнать за день несколько попыток в случае какого-то падения. Другая популярная практика — катать приемочные тесты по ночам — приводит к тому, что команда может проверить лишь одну гипотезу в день. Это нередко выливается в то, что конвейер краснеет на несколько недель, парализуя работу всей команды.</p><p>Другой совет — ни в коем случае не пишите функциональные тесты через UI. Функционал и UI меняются по разным причинам: функционал меняется из соображений бизнеса, UI — из соображений эстетики и эргономики. Приемочные тесты, написанные через UI, приведут к тому, что любое изменение графического интерфейса будет требовать переписывания огромного массива функциональных тестов и, как следствие, ваш UI навеки замрет в том состоянии, в котором вы его однажды зафиксировали своими тестами.</p><p>Последний шаг конвейера — развертывание приложения в промышленную эксплуатацию. Тут надо понимать следующую идею: развертывание в продакшн — это бизнес-решение. Может быть, нет никаких проблем в том, чтобы после каждого коммита разработчика в течение часа на продакшене была уже новая версия. Почему нет — если все тесты зеленые, то есть требования к приложению удовлетворены. Может быть, как в случае, например, с драйверами устройств, такое невозможно по определению.</p><p>Может даже быть такая ситуация, что некоторые приемочные тесты покраснели, но бизнес все равно заинтересован в развертывании: например, появление критически важного функционала для бизнеса оказывается приоритетнее, чем падение производительности и покраснение нагрузочных тестов.</p><p>И еще раз: все эти тесты, изменения инфраструктуры стенда, миграции, изменения самого конвейера заезжают в репозиторий вместе с функционалом, к которому они относятся. Необязательно в одном коммите, но обязательно должно выполняться условие — зеленые тесты означают, что система готова к релизу с точки зрения бизнеса, а зелеными они должны быть всегда. Лакмусовая бумажка: вы должны быть способны откатиться на коммит годичной давности с последующим развертыванием его через конвейер в продакшн.</p><p>Главный результат такой автоматизации: код непрерывно находится в готовом к развертыванию в продакшн состоянии, каждый новый коммит — новый релиз.</p><p>У кого-то вышеописанные процессы могут вызвать лишь ухмылку. Мол, в идеальном мире розовых единорогов такое бы, может быть, и было возможно. Отнюдь. Именно такого преобразования и удалось добиться компании HP Laser Jet и многим другим известным крупным компаниям. Но соглашусь, это высший пилотаж, требующий высокой грамотности разработчиков в области тестирования и автоматизации инфраструктуры. Впрочем, в этом и цель моего повествования: указать на ориентиры в профессиональном развитии специалиста.</p><h2>Ну хорошо, автоматизация рулит, договорились. Есть ли какие-то другие способы ускорить команду?</h2><p>Командам очень дорого обходится возрастающая со временем сложность системы. Каждая новая фича повышает ценность продукта в глазах пользователя — и, к сожалению, каждая новая фича ложится тяжелым грузом на плечи разработчиков, тестировщиков и техподдержки. Чем больше кода написано, тем сложнее добавлять новый.</p><p>Эта идея называется гипотезой выносливости дизайна, и вот уже больше полувека наша отрасль страдает от этой напасти — от проклятия кодовых баз, которые невозможно изменить из-за накопленной сложности. Бессменными спутниками таких систем становятся крайне запутанная структура кода и, самое страшное, опасные и дорогие баги, которые очень сложно исправлять.</p><p>Как с этим бороться? Есть три способа:</p><ol><li>Приоритизировать простоту (правило: пишем самое простое, что может работать).</li><li>Рефакторинг. Всегда оставляйте код в лучшем состоянии, чем вы его застали. Наряду с первой практикой это позволит вам не только не вносить новую сложность в систему, но и постоянно ее сокращать.</li><li>Постепенно заменяйте ручные операции (тестирование и развертывание) автоматизированными.</li></ol><h2>Но самое дорогое в разработке программного обеспечения — работать не туда</h2><p>Давайте рассмотрим конкретный пример компании, которая делала игры для Facebook. Однажды владелец компании пришел к разработчикам и сказал, что следующей большой фичей станут уровни и достижения для всех игр. Он принес с собой толстую папку диаграмм, чертежей, скриншотов и всего, что отдел маркетинга разработал для этой фичи.</p><p>Разработчики, посмотрев на это безобразие, выдали грубую оценку всей работы в 9 месяцев. Это был тоннель, в который команда бы въехала с одного конца и только через 9 месяцев, выехав с другого конца, узнала бы, был ли это успех или провал. Факт того, что команда могла выпускать новые релизы каждые пару недель, позволял не ждать 9 месяцев, чтобы проверить идею. Поэтому команда вернулась к заказчику с вопросом, как это решение может изменить чье-то поведение. Этот вопрос застал владельца врасплох:</p><p>—Что значит «изменить чье-то поведение»?—Если через 9месяцев, когда фича будет готова, все будут делать тоже, что исейчас, как будто ничего непроизошло, это будет провал?—Конечно, провал!—Тоесть кто-то должен что-то делать иначе?—Мыхотим, чтобы пользователи публиковали свои достижения в«Фейсбуке».—Уже лучше. Зачем?—Всмысле— зачем? Чтобы ихдрузья увидели эти посты.—Тоесть насамом деле мыхотим изменить поведение людей, которые неиграют вигру. Нухорошо, апочему это важно?—Если другие люди прочитают эти посты, то, возможно, они придут попробовать эту игру.—Хорошо, это еще одно изменение поведения, но все еще недает общей картины. Почему это важно?</p><figure><img src="https://media.tproger.ru/uploads/2022/10/9c6ab9ff-39e9-4e0d-9456-05ca4a840bc7.jpg" alt="" /></figure><p>Владелец был потрясен:</p><p>—Это глупый вопрос. Чем больше игроков, тем больше денег.—Хорошо, тоесть мыхотим больше игроков?—Конечно!—Насколько больше?—Чем больше, тем лучше.—Если спустя 9месяцев эта фича приведет 5 новых игроков, это будет успех?—Нет, конечно, мырассчитываем намиллион игроков.</p><p>Бинго! Эта цифра все время была в голове у владельца, но до разработки дошла лишь после этого разговора. В итоге первое, что требовалось сделать, — проверить, насколько идея жизнеспособна. За пару часов работы была реализована возможность опубликовать сообщение о победе в игровом турнире, однако оказалось, что за 3 дня никто так и не нажал кнопку «поделиться» — никто не хотел спамить своим друзьям сообщениями о какой-то игре в «Фейсбуке». Таким образом, это направление оказалось заблокировано.</p><p>Поступило другое предложение: теперь игрокам предоставили возможность приглашать друзей — и, о чудо, игроки начали приглашать друзей. Проблема лишь в том, что никто так и не пришел по ссылке. Отдел маркетинга предположил, что это из-за того, что в письме была плохо видна ссылка на игру. Вместо маленькой ссылки в тексте сделали большую кнопку «присоединиться» — и тут игроки пошли. Спустя две недели полировки механизма приглашений и введения разных бонусов реферальной программы у игры был миллион игроков.</p><p>Эта история позволяет сформулировать очень интересные выводы::</p><ul><li>Во-первых, невероятно важно, чтобы все участвующие в решении понимали проблему, которую они решают. То есть задача должна декларироваться не в виде фичи «уровни и достижения», а в виде тезиса о привлечении в игру миллиона новых игроков.</li><li>Во-вторых, очень важно ввести правильные способы измерения прогресса в достижении решения проблемы. В контексте предыдущего примера такими метриками стали количество игроков, число публикаций, число приглашений и пришедших по приглашениям игроков.</li><li>В-третьих, нужно ошибаться быстро и недорого. Важно помнить: никто точно не знает, как решить проблему, все только лишь высказывают гипотезы. Поэтому необходимо быстро отвергать нерабочие гипотезы, проверяя их на прочность c помощью метрик.</li></ul><p>Согласно исследованию компании Microsoft, 2/3 всего разработанного функционала в лучшем случае не принесло никакой пользы. Это означает, что можно иметь крутейшую архитектуру, в которой нет ни строчки лишнего кода и избыточной сложности, можно иметь невероятные процессы, в которых каждый коммит после прогона всех видов автотестов тут же деплоится в прод — но если вы работаете не туда, то 2/3 вашей работы в лучшем случае не принесут никакой пользы. И, как правило, такие фичи лежат в кодовой базе и мешаются под ногами, съедают время в прогонах тестов, техподдержке приходится поддерживать эти фичи до самого конца продукта — а ведь ими никто и не пользуется.</p><p>Получается, что компании выгоднее было бы, если бы вы эти 2/3 времени провели на пляже, ну или на горнолыжном курорте, или просто с родными…</p><h2>Вывод</h2><p>Подведем итоги:</p><ul><li>Автоматизация тестирования и инфраструктуры приводит к росту продуктивности в среднем в полтора раза. В отдельных случаях удавалось зафиксировать рост в 8 раз.</li><li>Центральным элементом такой автоматизации является шаблон «Конвейер развертывания». Главный результат: код непрерывно находится в готовом к развертыванию в продакшн состоянии, каждый новый коммит — новый релиз.</li><li>Другой проблемой становится трясина легаси-кода. Главные сдерживающие факторы — запутанная структура и дорогие баги. Главные лекарства — простой дизайн, рефакторинг и автотесты.</li><li>Самое дорогое препятствие к решению проблем бизнеса — неверно выбранный вектор работы. Очень важно, чтобы все участники процесса хорошо понимали цель, правильно выбирали метрики и работали в коротких циклах, позволяющих ошибаться быстро и дешево.</li></ul><p>На этом у меня все. Спасибо за внимание, пишите хороший код, тесты и до новых встреч.</p>]]></content:encoded>
    </item>
    <item>
      <title>Мы заменили ручной труд кодом и вот, что из этого вышло: автоматизация процессов в банке «Ренессанс Кредит»</title>
      <link>https://tproger.ru/articles/my-zamenili-ruchnoj-trud-kodom-i-vot-chto-iz-jetogo-vyshlo-avtomatizacija-processov-v-banke-renessans-kredit</link>
      <comments>https://tproger.ru/articles/my-zamenili-ruchnoj-trud-kodom-i-vot-chto-iz-jetogo-vyshlo-avtomatizacija-processov-v-banke-renessans-kredit?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Константин Демин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/my-zamenili-ruchnoj-trud-kodom-i-vot-chto-iz-jetogo-vyshlo-avtomatizacija-processov-v-banke-renessans-kredit</guid>
      <description><![CDATA[<p>Команда банка «Ренессанс Кредит» продемонстрировала автоматизацию банковских процессов на реальном кейсе с примерами кода.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/my-zamenili-ruchnoj-trud-kodom-i-vot-chto-iz-jetogo-vyshlo-avtomatizacija-processov-v-banke-renessans-kredit">Мы заменили ручной труд кодом и вот, что из этого вышло: автоматизация процессов в банке «Ренессанс Кредит»</a>»</p>]]></description>
      <category><![CDATA[JavaScript]]></category>
      <category><![CDATA[C#]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 01 Sep 2022 15:45:22 GMT</pubDate>
      <content:encoded><![CDATA[<p>Рутинные задачи отнимают много времени специалистов разных линий и тормозят работу. Команда ИТ4ИТ разработала систему, которая автоматизирует действия сотрудников, перекладывая скучную работу на роботов. В результате у ИТ-департамента появилось больше времени на интересные задачи, а банковские процессы ускорились.</p><h2>Как система росла</h2><p>Сначала система называлась Jarvis в честь персонажа комиксов Marvel. Её целью было высвободить ресурсы сотрудников ИТ для более сложных задач. Jarvis постоянно развивался. Со временем он интегрировался с другими внешними системами: от Gitlab до мониторинга уязвимостей, стал связываться с базами данных, исполняя SQL-код. Среди рабочих инструментов автоматизации — умение работать с файлами Excel, запускать PowerShell и Bash-скрипты на удалённых серверах. Теперь система может загружать сайты, имитировать действия человека: вводить текст в поля, нажимать кнопки, переходить по страницам. Это используется для отправки запросов в MailStream. В июле текущего года Jarvis (теперь он называется Robot Vision) научился работать с новейшей системой управления услугами банка, ITSM Ivanti.</p><p>Система автоматизации занимает одно из ключевых мест в ИТ-ландшафте банка</p><figure><img src="https://media.tproger.ru/uploads/2022/09/f2160d0e-b0a3-4a87-8dd5-a8abaa30a082.png" alt="" /><figcaption>Упрощенный процесс обработки обращений пользователей, основные механизмы, особенности системы, связи с базами данных и внешние интеграции</figcaption></figure><figure><img src="https://media.tproger.ru/uploads/2022/09/image1-3.png" alt="" /><figcaption>Инструменты автоматизации</figcaption></figure><h2>Автоматизация всех рутинных задач банка</h2><p>В Vision (краткое имя от Robot Vision) приходят заявки на автоматизацию какого-либо действия. Например, разблокировку учётной записи или перевод заявок по статусам на кредитном конвейере. Робот принимает заявку и запускает специализированный обработчик.</p><p>Сама автоматизация выглядит так: например, пользователь хочет разблокировать свою учётную запись. Он заходит на внутренний портал самообслуживания, выбирает нужную заявку и заполняет форму. Дальше ему остаётся только ждать согласования и исполнения. Если запрос согласован, то система забирает его из очереди, подбирает подходящий обработчик и запускает автоматизацию. В нашем примере — это обработчик для взаимодействия с системой IDM.</p><p>От открытия заявки до её выполнения проходит от часа до одного рабочего дня. В сутки система обрабатывает около 600 обращений.</p><h2>Ключ к повышению производительности</h2><p>В 2019 году мы работали с порталом самообслуживания для сотрудников банка HP Service Manager (HPSM). В нём регистрировались обращения, инциденты, все внутренние заявки. Например, запросы на обновление систем или установку ПО.</p><p>В HPSM есть несколько типов запросов. Мы обрабатывали только один — это sub-quote (SQ). В систему приходил номер sub-quote. Мы прямо в ядре запрашивали нужную информацию по ней. Забирали имя основного запроса и сравнивали его с обработчиками в базе данных для получения JS тела скрипта, отвечающего за автоматизацию.</p><p>Количество заявок было низким. При этом система не успевала обработать весь входящий поток. «Дорогие» специалисты тратили много времени на рутину.</p><p>Подход пришлось изменить, он стал более гибким. Теперь мы не проводим операций по определению имени задачи в ядре, а сразу делим задачи на группы автоматизации, у которых есть ключи определения обработчика (Key-Value-Pair) и свой «предобработчик». Предобработчик на основе полученных данных генерирует набор ключей-значений для последующего поиска обработчика. Происходит это так:</p><ol><li>Мы определяем тип запроса, например, SQ.</li><li>Находим группу обработчиков, которые работают с этим типом. Нужный обработчик находим по ключу action, он указывает, какое действие необходимо совершить с запросом. На обработчике также указан ключ, значение которого равно действию, например, разблокировке учётной записи.</li><li>Обработчик выполняет нужное действие.</li></ol><p>Как и раньше мы ищем обработчик по наименованию задачи, но вдобавок имеем гибкую систему, которая способна интегрироваться с любой другой. Можем не привязываться к имени задачи, а искать по любому другому параметру или набору параметров хоть из 100 различных источников. Раньше мы обслуживали только SQ-заявки, а сейчас можем обрабатывать и RFC (запросы на изменение), и инциденты.</p><h2>Сократили код в 26 раз</h2><p>Скрипт — это кодовая часть обработчика, то есть самой автоматизации. Чем проще писать скрипты, тем быстрее обработчик будет готов, и автоматизация будет раньше поставлена на прод.</p><p>До улучшений разработка нового процесса состояла из копипаста 500 или 1000 строчек кода, которые определяли не только логику, но и методы обращения к системам, подключения к базе данных. В результате сроки разработки нового процесса автоматизации могли занимать до двух недель, учитывая согласования, тестирования и деплой.</p><p>О хорошем версионинге речь тоже не шла. При каждом редактировании мы сохраняли предыдущую версию скрипта в базе данных, поэтому тратили огромные ресурсы на хранение даже небольших изменений. Чтобы что-то протестировать, нужно это написать и сохранить, провести отладку, тестирование и рефакторинг, а это ещё десятки сохранений кода. Таким образом, условные 2000 символов умножаются на 50.</p><p>Я перевёл скрипты на GitLab и сократил количество кода в 26 раз. Для разработчика автоматизации ничего не поменялось, а вот под капотом мы провели большую оптимизацию процесса.</p><p>Сейчас чтобы автоматизировать процесс, не нужно копипастить. Весь основной код вынесен в встраиваемые пакеты на базе JS, например: HPSMPackage, JiraPackage и многие другие.</p><p>Функционал по подключениям, специфичный API и другие вспомогательные методы вынесены во встраиваемые пакеты. Это тоже JS код, просто хранящийся в пакетах, которые импортируются в скрипты с бизнес-логикой методом require.</p><p>Например, обработчик «Обновление тестовых сред». В скрипте с бизнес-логикой сейчас содержит всего 75 строчек кода и два подключения: package/gitlab, package/hpsm/sq. package/gitlab содержит 260 строчек кода. package/hpsm/sq — 365 строчек. И всего таких пакетов у нас 29. Некоторые из них могут содержать значительно больше кода.</p><p>Скрипты автоматизации настраивают взаимодействие между разными системами. В них сделан акцент на ключевых действиях, компактности кода, простоте использования и доработок</p><h2>Подняли скорость деплоя от получаса до минуты</h2><p>Раньше мы публиковали приложения, разработанные на .Net, на Windows-хостах под управлением IIS. Нам приходилось вручную заходить на сервер, подключаться по административному логину и паролю, загружать на хост пакет с приложением, разворачивать, останавливать IIS, разворачивать его заново. На это уходило в среднем пятнадцать минут — или полчаса, если возникали какие-то затруднения.</p><p>Теперь мы используем GitLab как систему для сборки кода, отправки его в репозиторий, в редких случаях для публикации этих пакетов на хостах. AWX используется как система для деплоя. Это сократило время публикации в разы.</p><p>По шагам это выглядит следующим образом:</p><ol><li>Мы публикуем код в систему контроля версий.</li><li>Нажимаем кнопку «отправить на тест» или «отправить на препрод».</li><li>Запрос уходит в AWX, он получает собранный пакет из GitLab либо из другой системы хранения кода.</li><li>Запускается скрипт публикации на конечное устройство, приложение развёртывается. Выставляются необходимые настройки, и меньше чем через минуту мы видим результат.</li></ol><p>Автоматизация доставки изменений сократила время публикации скриптов от получаса до минуты</p><h2>Расширили функциональные возможности системы</h2><p>Система получила обновления в виде модулей по работе с Powershell, Excel, CSV и прочими атрибутами корпоративных дел. Теперь чтобы подключиться к серверу и выполнить команду Powershell или Bash, достаточно ключей и адреса.</p><h2>Реализовали на связке JS и C# с помощью движка Jint</h2><p>Мы выбрали JS из-за его популярности и простоты — легче находить в команду новых людей и вводить их в курс дела.</p><p>В целом, совмещение C# с JS звучит странно, это разные языки. Но они похожи в одном — оба являются интерпретируемыми, но по-своему. Разные синтаксис, спецификации, среды исполнения.</p><p>Мы используем JS как язык разработки скриптов автоматизации. Можно было разрабатывать всё на C#, поскольку на нём написан backend. Но это долго и сложно, это нужно компилировать. Можно было подключить Python или F#, последний тоже живёт в контексте .Net. Мы этого не сделали потому, что текущих реализаций достаточно. В банке упор делается на другие вещи — экономичность и производительность.</p><p>Поначалу JS был встроен в проект неудобно. Часть общего JS кода писалась в .cs файлах, встраивалась в контекст движка Jint и тем самым дополняла функционал скриптов автоматизации. Со временем мы переписали эти расширения на C#.</p><p>Jint даёт набор инструментов, позволяющий настроить среду исполнения интерпретируемого кода, с его помощью мы связали C# и JS. Его задача — интерпретировать JS код и выполнить его в среде .Net. Движок Jint создаёт контекст выполнения, в рамках которого мы можем исполнять JS код, подгружать в него необходимые модули и встраиваемые пакеты. Благодаря Jint мы можем работать с результатами выполнения JS скрипта в контексте C# и наоборот.</p><p>Jint — это самая известная и простая библиотека. Она легко встраивается, реализует весь нужный нам функционал и развивается до сих пор. Чтобы начать пользоваться Jint, нужно только создать экземпляр движка и выполнить JS скрипт:</p><p>Для объявления функции выполним следующий код. Таким же образом можно объявить переменную:</p><p>Если необходимо встроить типы целой сборки в контекст движка:</p><p>Из движка также можно вытащить все переменные контекста:</p><p>Конечно, можно было использовать NodeJs, и запускать JS скрипты на нём, но тогда бы мы потеряли функционал расширения скриптов из .Net, и не смогли бы также легко забирать объекты из результата выполнения.</p><p>У Jint есть минусы. Хоть библиотека и развивается, она поддерживает не все функции спецификации ECMAScript. Сейчас есть намного более мощные инструменты, библиотеки, но они сложнее в реализации. Нашей основной задачей было сделать быстро и просто.</p><p>В реализации Jint тоже были затруднения, например в работе с JObject внутри движка.</p><p>Мы не могли просто взять и передать объект JSON (JObject из Newtonsoftjson) в бизнес-логику, у нас постоянно возникали вопросы с доступом к свойствам объектов, в работе с коллекциями и перечислениями. Поскольку дедлайны были близки, мы решили конвертировать объект в JSON строку и распарсить обратно внутри самого движка Jint.</p><h2>Результаты автоматизации процессов банка</h2><p>Представьте, пользователь создаёт заявку. Она некоторое время лежит и ждёт реакции оператора. Если всё идеально, то оператор примет её в работу и обработает за отведенное время. В любом случае ему нужно понять запрос пользователя, а затем выполнить его не допуская ошибок.</p><p>Сейчас система реагирует моментально и обрабатывает заявки одного типа в среднем за одинаковый промежуток времени. В месяц таким образом обрабатывается около 15000 обращений. Теперь операторы занимаются только сложными заявками.</p><p>Разные команды банка обращаются к нам для автоматизации процессов, от простых до сложных. Например, система может выполнить заявки по постановке сервера на мониторинг уязвимостей, выполнить копирование базы данных, настроить принтер, переместить имущество в системе между офисами, выдать сотруднику права после выхода из отпуска по уходу за ребёнком.</p><p>Система автоматизации оказывает услуги на портале самообслуживания. На текущий момент в портале порядка 300 стандартных запросов, и это количество продолжает расти</p>]]></content:encoded>
    </item>
    <item>
      <title>Programmatic-реклама: как выбрать рекламную площадку для сайта и зарабатывать на просмотрах</title>
      <link>https://tproger.ru/articles/programmatic-reklama-kak-vybrat-reklamnuju-ploshhadku-dlja-sajta-i-zarabatyvat-na-prosmotrah</link>
      <comments>https://tproger.ru/articles/programmatic-reklama-kak-vybrat-reklamnuju-ploshhadku-dlja-sajta-i-zarabatyvat-na-prosmotrah?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Adlook]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/programmatic-reklama-kak-vybrat-reklamnuju-ploshhadku-dlja-sajta-i-zarabatyvat-na-prosmotrah</guid>
      <description><![CDATA[<p>Как работает Programmatic-реклама на сайтах и как она помогает владельцам площадок зарабатывать на просмотрах баннеров.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/programmatic-reklama-kak-vybrat-reklamnuju-ploshhadku-dlja-sajta-i-zarabatyvat-na-prosmotrah">Programmatic-реклама: как выбрать рекламную площадку для сайта и зарабатывать на просмотрах</a>»</p>]]></description>
      <category><![CDATA[Интернет]]></category>
      <category><![CDATA[Маркетинг]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Гостевая публикация]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 01 Sep 2022 10:47:58 GMT</pubDate>
      <content:encoded><![CDATA[<p>Всем салют! Сегодня в Интернет-маркетинге популярна Programmatic-реклама, мировые расходы на которую за последние пять лет выросли на 54%. Всё благодаря её простоте, удобству, низкому порогу входа и высокой эффективности.</p><h2>Что это такое</h2><p>Programmatic-маркетинг (англ. Programme и Automatic) —  автоматизированная закупка таргетированной рекламы в Интернете.</p><p>Благодаря этому способу переговоры между паблишером и рекламодателем заменили компьютерные алгоритмы. Они экономят время и повышают эффективность кампании, помогают точнее определить целевую аудиторию.</p><p>Programmatic форматы:</p><ol><li>Нативная реклама</li><li>Баннеры</li><li>Видео</li><li>Аудио</li></ol><p>Основные каналы:</p><ol><li>Социальные сети</li><li>Сайты</li><li>Мобильные приложения</li></ol><p>Плюсы Programmatic:</p><ol><li>Кроссплатформенность. Реклама демонстрируется и в десктоп, и в мобильной версиях.</li><li>Точный таргетинг. Информация из Cookie, User Agent и других открытых источников определяет модель пользователя с точностью 75-80%.</li><li>Ставки. Гибкая стартовая цена показа поможет скорректировать бюджет в самом начале.</li><li>Оптимизация объявления. Своевременная корректировка кампании для достижения наилучшего результата на основе статистики.</li><li>Широкий охват. Возможность охватить несколько площадок разного типа.</li><li>Экономия времени и возможность запустить рекламу самому.</li></ol><p>Чтобы запустить успешную Programmatic-рекламу потребуется всего несколько шагов:</p><ul><li>Анализ целевой аудитории, разделение её на сегменты и выбор основной цели рекламной кампании.</li><li>Разработка креатива.</li><li>Выбор платформы для покупки рекламной площадки. Нужно обращать внимание на наличие релевантных сайтов с хорошей репутацией и высоким охватом.</li><li>Настройка таргетинга с ориентиром на целевую аудиторию.</li><li>Отслеживание ключевых показателей эффективности.<b> </b></li></ul><p>С плюсами и шагах подготовки разобрались. Теперь переходим к выбору формата закупки рекламы.</p><p>Они делятся на три типа:</p><p><b>Programmatic Direct</b> — прямая сделка между паблишером и рекламодателем.</p><p><b>Private Exchange Buying</b> — это закрытое коммьюнити, в котором состоят избранные рекламодатели и паблишеры. Тут сделки заключаются по собственным правилам.</p><p><b>Real Time Bidding (RTB)</b> —  популярный формат, с помощью которого проводятся 90% закупок. Представляет собой интернет-аукцион, где рекламодатели выкупают внимание пользователя на ресурсе паблишера.</p><p>Об этом и расскажем подробнее.</p><h2>Составляющие RTB</h2><p>В этом аукционе участвуют четыре стороны:</p><ol><li>SSP</li><li>DSP</li><li>DMP</li><li>Пользователь, как конечный потребитель</li></ol><p>Supply Side Platform (SSP; платформа на стороне предложения) – часть RTB, работает на стороне паблишера. Её главная задача — продать места для рекламы на сайте паблишера за максимальную цену.</p><p>Оптимизирует доход владельца сайта, подключаясь к нескольким DSP.</p><p>Demand Side Platform (DSP; платформа на стороне спроса) – эта платформа работает на стороне рекламодателя и способна автоматически закупать пространство под рекламу на ресурсах, чтобы привлечь внимание пользователя.</p><p>Благодаря DSP процесс закупки рекламы стал проще, а отслеживать эффективность рекламы стало легче.</p><p>Data Management Platform (DMP; платформа управления данными) – собирает, структурирует и продаёт информацию пользователях из открытых источников, Cookie и User Agent. Это помогает в поиске новой клиентуры, схожей аудитории, повышении таргетинга.</p><p>К DMP обращается DSP для получения данных о пользователях, чтобы принять решение об участии в аукционе.</p><h2>О работе RTB</h2><p>Когда пользователь посещает сайт, специальный код, вставленный в сайт, отправляет информацию о посетителе в рекламную биржу, биржа информирует SSP, которая выставляет лот в виде внимания юзера DSP-платформе.</p><p>За то время, пока у пользователя загружается страница, проходит миллисекундный аукцион, по итогам которого выигрывает самая большая ставка. Именно эту рекламу увидит юзер при посещении ресурса.</p><h2>В чём профит?</h2><p>Programmatic-реклама и протокол RTB хороши тем, что здесь каждая из сторон получает то, что ей нужно.</p><p>Юзер серфит в интернете и видит минимум низкокачественной рекламы, ведь ему показывают объявления релевантные его запросам, которые интересам из Cookies, User Agent и других открытых источников.  модели поведения.</p><p>Рекламодатель получает показывает свою рекламу максимально релевантной аудитории, при этом не тратя бюджет впустую. Глубокий анализ эффективности рекламы позволяет скорректировать будущие кампании.</p><p>Паблишер продаёт место под рекламу на своём ресурсе и имеет постоянный доход.<br />Чтобы максимизировать свою прибыль, паблишеру важно подобрать подходящую для его ресурса рекламную сеть.</p><h2>Выбор платформы</h2><p>По данным StatOnline.ru, сегодня в зоне .RU существуют десятки монетизаторов.</p><p>Согласно статистике на первом месте стоит Google AdSense, который покинул российский рынок в связи с политическими событиями.</p><p>Второе место занимает Рекламная Сеть Яндекса, ставшая после ухода Google спасительной соломинкой паблишеров.</p><p>StatOnline демонстрирует, что тысячи сайтов пытаются начать работать с РСЯ и их дочерней фирмой AdFox.</p><h2>На что обратить внимание при выборе рекламной сети</h2><p><b>1. Гибкость и настраиваемость выплат. </b>Обратите внимание, как часто приходят выплаты с разных сетей и сравните результат. Например, Google и Яндекс пользуются системой NET-20. То есть, это означает, что паблишер получит первую выплату после одного месяца и двадцати дней, при достижении установленного порога выплат. Есть сети, которые предоставляют более гибкие выплаты и пойдут на встречу в выборе валюты.</p><p><b>2. Коммуникация. </b>Для продуктивной монетизации важно быстро решать возникающие вопросы, связанные с рекламой. Чтобы этого добиться, выбирайте сеть с качественным и эффективным саппортом. Например, у нашего партнера RBK Games, появилась проблема с рекламой в виде очень громкого звука. Это отрицательно сказывалось на монетизации. Но благодаря хорошо выстроенной коммуникации, наша команда быстро решила вопрос, причем в нескольких регионах сразу. Последующий взрыв трафика и скачок дохода паблишер связывает с качественным выбором рекламодателей и контента с нашей стороны.</p><p><b>3. Качество контента. </b>Вряд ли посетители сайта будут в восторге от низкосортных объявлений в стиле “Секретный способ бросить пить из СССР…”. Навязчивая и постоянно всплывающая реклама вовсе может заставить юзера уйти с ресурса. Чтобы убрать креативы, которые негативно влияют на поведение пользователей, нужно лично отобрать типы, темы и форматы.</p><p><b>4. Постоянный код.  </b>Некоторые партнерские сети присылают код еженедельно, что отнимает драгоценные время, силы и нервы у паблишера. Для сбережения собственных ресурсов лучше выбрать партнера, чей код не потребует частой замены и внесения правок.</p><p><b>5. Работа в параллель. </b>Необязательно останавливать выбор на одном партнере. Совмещайте несколько рекламных сетей, это принесет дополнительный доход и страховку на неожиданный случай.</p><p>Рекламные сети, работающие в российском сегменте:</p><ul><li>ADlook.me</li><li>Google AdSense</li><li>Yandex.Direct</li><li>DoubleClick Ad Exchange</li><li>AdFox</li><li>Begun</li><li>Admitad</li><li>AdRiver</li><li>Criteo</li><li>MGID</li><li>Google Publisher Tag</li><li>DoubleClick For Publishers</li></ul><h2>Итоги</h2><p>Сегодня мы рассказали о Programmatic-рекламе и её составляющих. Углубились в RTB и рассказали про его элементы и принципы работы. Тем, кто зарабатывает на монетизации сайтов, дали несколько советов о выборе рекламной сети.</p><p>Изучали ли вы вопросы монетизации и работы с трафиком? Мы продолжим и дальше знакомить вас с интересным миром Programmatic-рекламы и монетизации сайтов.</p><p>До связи!</p>]]></content:encoded>
    </item>
    <item>
      <title>Почему конвейер разработки ПО не срабатывает, и как это исправить</title>
      <link>https://tproger.ru/articles/pochemu-konvejer-razrabotki-po-ne-srabatyvaet-i-kak-jeto-ispravit</link>
      <comments>https://tproger.ru/articles/pochemu-konvejer-razrabotki-po-ne-srabatyvaet-i-kak-jeto-ispravit?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Екатерина Другова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/pochemu-konvejer-razrabotki-po-ne-srabatyvaet-i-kak-jeto-ispravit</guid>
      <description><![CDATA[<p>В современной ИТ-разработке в России принято использовать CI/CD. Расскажем о том, какие распространенные ошибки в CI/CD мы видим в проектах.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/pochemu-konvejer-razrabotki-po-ne-srabatyvaet-i-kak-jeto-ispravit">Почему конвейер разработки ПО не срабатывает, и как это исправить</a>»</p>]]></description>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Гостевая публикация]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 15 Mar 2022 14:56:25 GMT</pubDate>
      <content:encoded><![CDATA[<p>Для организации процесса современной ИТ-разработки в России принято использовать концепции и практики непрерывной интеграции и доставки (CI/CD). О ней говорят много, но, как часто бывает на практике, редко кто применяет правильно. Причина кроется в нехватке специалистов, которые могли бы методологически выстроить конвейер и автоматизировать её. Расскажем о том, какие распространенные ошибки в CI/CD мы видим в проектах.</p><h2>Но сначала немного ликбеза</h2><p>CI/CD — это целая культура, которая включает в себя набор принципов и реализует последовательность этапов доставки программного обеспечения с момента его написания разработчиком до развёртывания в продуктивном контуре. Собственно, в основе данной аббревиатуры отдельные шаги, которые принято рассматривать в комплексе:</p><ul><li>Continuous integration — непрерывная интеграция;</li><li>Continuous delivery — непрерывная доставка;</li><li>Continuous deployment — непрерывное развёртывание.</li></ul><p>Continuous integration (CI) – это упаковка приложения разработчиком и тестирование. На шаге планирования у бизнеса или владельца продукта появляется идея, как улучшить клиентский сервис и какие фичи для этого нужны. На этом же этапе аналитик собирает бизнес-требования и передаёт их разработчику.</p><p>Тот (или скорее те, так как в крупной компании в разработке занято несколько человек) пишет код и загружает так называемый билд — изменённое приложение — в отдельную ветку. Билд тестируется — вручную и/или с помощью автотестов — и переходит на следующий этап конвейера.</p><p>Continuous delivery – это доставка приложения, то есть обеспечение его работы в промышленной эксплуатации. Здесь важно как минимум одно ручное действие – подтверждение ответственного за вывод в продакшн. Как правило, за это отвечает тимлид команды разработчиков. Непосредственно развёртывание приложения в инфраструктуре клиента должно происходить автоматизированно.</p><p>Continuous deployment – это процесс непрерывной доставки кода до продуктива без каких-либо дополнительных согласований и ручных операций. Мониторинг таких выкаток должен также осуществляться постоянно и автоматизированно. Его цель – молниеносно определить проблему с билдом и дать возможность разработчику откатить назад версию приложения и параллельно «пофиксить» ошибки.</p><p>В одной компании для решения этой задачи поступили довольно креативно — установили светофор, который интегрирован с системой мониторинга. Если в ней появляются ошибки, этот светофор мигает красным светом, требуя от сотрудников фактически мгновенной реакции.</p><h2>Распространённые ошибки при реализации CI/CD</h2><h3>Слабо применяется автоматизация</h3><p>Неработающий конвейер – картина частая. В большинстве случаев это связано с некорректно построенными процессами внутри организации.</p><p>Например, даже в крупных компаниях зачастую при разработке <b>очень слабо применяется автоматизация</b><b> или применяется не оптимально.</b> Это приводит к тому, что каждая операция разработчика, тестировщика, администраторов сопровождается рутинными ручными действиями: написать о статусе, передать информацию, перепоручить «раскатать» инфраструктуру и так далее.</p><p>В результате в 2-3 раза увеличивается срок выпуска в эксплуатацию приложения, а вместе с этим растет количество конфликтов внутри команды, так как сложно понять, на каком этапе процесс стопорится.</p><h3>Нет формально прописанных зон ответственности</h3><p>Нередко видим другую ситуацию — в целом процесс CI/СD работает неплохо, но иногда даёт сбой. ИТ-директор одного российского банка как-то жаловался, что при выкатке новой версии релиза часть пакетов и скриптов «не доезжает», а обратная связь о неработающих сервисах при этом приходит не от DevOps-инженеров, а непосредственно от пользователей.</p><p>Проблема в данном случае может быть связана с <b>отсутствием формально прописанных зон ответственности</b><b> и наличием </b><b>большого количества </b>ручных операций в конвейнере, что увеличивает шанс возникновения ошибки. Также из-за наличия такой проблемы можно сделать вывод, что функции внутри команды дублируются и теряется координация между несколькими участниками процесса.</p><p>Чтобы это исправить, рекомендуется использовать RACI-матрицу. Её, к слову, часто применяют провайдеры. Они «на берегу» определяют, кто и за что будет отвечать в проекте. Например, мы прописываем в документе свою обязанность разворачивать и поддерживать виртуальные машины и инфраструктурные компоненты там, где являемся поставщиками инфраструктуры и кластеров Kubernetes. А сам софт и доступность CI остаются на совести клиента.</p><p>Бывает, что клиент поручает нам цикл сборки и доставки целиком – в этом случае мы раскатываем приложение в продуктивную среду, а заказчик фокусируется исключительно на разработке своего продукта.</p><h3>Отказ следовать IaC</h3><p>На эффективность всей ИТ-разработки также влияет готовность инфраструктуры. Оправданно в данном случае следовать концепции IaC (инфраструктура как код), когда для развёртывания и управления средой пишутся скрипты и шаблоны. Они помогают быстрее развернуть типовую инфраструктуру, произвести изменения без захода в консоль управления или на конкретную виртуальную машину.</p><p>Администраторы, которые не скриптуют каждое действие с инфраструктурой, вынуждены <b>прикладывать одни и те же усилия каждый раз, когда данная инфраструктура требуется разработчикам</b><b> для нового релиза</b><b>. </b>Отказ следовать IaC-подходу увеличивает затраты на сопровождение ИТ.</p><p>Так, первичное развёртывание инфраструктуры может стоить условно 100 000 руб, но повторное, основанное на готовом шаблоне, потребует всего 35 000 руб, так как трудозатраты не пойдут ни в какое сравнение с тем, что было до автоматизации.</p>]]></content:encoded>
    </item>
    <item>
      <title>Облачная автоматизация RPA на примере UiPath</title>
      <link>https://tproger.ru/articles/oblachnaja-avtomatizacija-rpa-na-primere-uipath</link>
      <comments>https://tproger.ru/articles/oblachnaja-avtomatizacija-rpa-na-primere-uipath?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Andrey Voinalovich]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/oblachnaja-avtomatizacija-rpa-na-primere-uipath</guid>
      <description><![CDATA[<p>UiPath предлагает облачную автоматизацию и управление RPA-процессами. Ключевые аспекты: возможности платформы для переноса роботизированных задач в облако.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/oblachnaja-avtomatizacija-rpa-na-primere-uipath">Облачная автоматизация RPA на примере UiPath</a>»</p>]]></description>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[RPA]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 27 Jul 2021 13:15:11 GMT</pubDate>
      <content:encoded><![CDATA[<h2>Вступление</h2><p>При внедрении роботизированной автоматизации процессов (RPA) в промышленные проекты возникают вопросы. Как этим управлять? Есть ли какие-то стандартизированные подходы для имплементации проекта RPA? Всё это не менее важно, чем написание кода.</p><p>В данной статье я приведу в пример распространённую платформу для автоматизации бизнес-решений — UiPath (её облачное — Orchestrator — считается одним из лучших). Посмотрим, какие предложения по облачной автоматизации и управлению RPA-процессами у неё есть.</p><h2>Основные функции Orchestrator для облачной автоматизации для RPA</h2><ul><li>развёртывание — обеспечивает доставку версий пакетов назначенным роботам для выполнения;</li><li>конфигурация — поддерживает и обеспечивает конфигурацию сред и процессов роботов;</li><li>очереди — обеспечивает автоматическое распределение нагрузки между роботами;</li><li>мониторинг — отслеживает общие данные о работе робота и позволяет оценивать продуктивность работающих процессов;</li><li>ведение журнала — сохраняет и индексирует журналы в базе данных SQL и Elasticsearch.</li></ul><h3>Развёртывание</h3><p>Система принимает сформированные пользователем процессы в формате собранных nuget-пакетов. А система распределения, выделяет обозначенный ресурс для выполнения кода из пакета (выделяет машину). Это происходит посредством привязки каждого пакета (процесса), под environment исполнения. И, как следствие, из-за специфики выполнения кода RPA-процессов, под определённую машину или сервер.</p><h3>Конфигурация</h3><p>Специфика работы процессов RPA подразумевает наличие доступа к desktop для виртуальной машины или сервера, на которых планируется запуск. То есть данные авторизации каждой машины, а так же её унифицированный идентификатор нужно держать в памяти.  Это помогает выполнить часть системы Оркестровки, которая занимается выделением специального номера (machine key) каждой отдельной машине.</p><h3>Очереди</h3><p>Учёт транзакций, обрабатываемых RPA-процессами, ведётся в структуре данных — «Очереди». Она позволяет выполнять транзакции очереди, применяя FIFO-метод и учитывая приоритетность задач. Наличие функционала приоретизирования транзакций очень важно при работе на промышленных мощностях. Это позволяет процессу быть более гибким и соответствовать текущим запросам пользователей.</p><h3>Мониторинг</h3><p>Одна из основных функций системы — мониторинг.  Он позволяет отслеживать продуктивность работающих процессов и отслеживать файлы-логирования. Это помогает наладить пользовательский опыт при работе с системой и сблизить клиента и целевой процесс, демонстрируя обработку каждой транзакции отдельно — как это делал бы специалист.</p><h3>Ведение журнала</h3><p>Оркестратор, предлагает, как Cloud, так и on-prem решения. То есть вычислительные мощности могут быть и локальными, и из серверов компании UiPath. Для индексации и учёта элементов логов и внутреннего хранилища, которое базируется на SQL при установке локально, используется Elasticsearch.</p><h2>RPA-аналитика</h2><p>Вы внедрили у себя RPA. Как понять, что это принесёт пользу? И как понять, увеличилась ли польза со временем? Ответить на эти вопросы поможет RPA-аналитика. Она предоставляет детальную и предиктивную информацию о рентабельности автоматизированных процессов.</p><p>Ключевое качество аналитических возможностей RPA — возможность самостоятельно настроить способ определения успеха и результатов. Выбор ключевых показателей, настройка под цели и задачи компании и то в каком виде представлять результаты также остаются за вами.</p><p>Для реализации данных функций используется Orchestrator Insights. Это интегрированная в Orchestrator платформа, которая анализирует и представляет данные в кастомизируемом формате. Продуктивность использования лицензий роботов, сбор информации об узких местах автоматизированного процесса — всё это есть в данной облачной системе.</p><h3>CI / CD применимо для RPA</h3><p>RPA всё чаще используется для автоматизации процессов. И экономит при этом время и деньги. Однако Оркестратор не может дать подходящего решения для упрощения процесса деплоя и доставки написанного процесса. Из-за этого  компании, которые занимаются RPA-разработкой, используют распространённые методики для автоматизации процесса доставки.</p><p>«Конвейер» CI/CD автоматизирует процесс доставки и интеграции любого программного обеспечения для проекта. Для корректной работы, его нужно разработать до написания кода. Это позволит ему работать при написании кода, тестировании и непосредственном внедрении.</p><h2>Что такое CI/CD?</h2><h3>Непрерывная интеграция (CI)</h3><p>Непрерывная интеграция — это практика разработки ПО, которую используют, чтобы упростить разработку и тестирование кодов через автоматизацию соответствующих задач. Применяя её в RPA, программисты постоянно интегрируют изменения кода в центральный репозиторий. А тесты проводятся на отдельном сервере.</p><h3>Непрерывная доставка (СD)</h3><p>Непрерывная доставка обеспечивает простую упаковку и непрерывное развертывание кода. С её помощью можно  настраивать и упаковывать ПО и организовать его непрерывное развёртывание с меньшими затратами.</p><h3>Преимущества CI / CD:</h3><ul><li>Быстрая доставка: более короткое время оборота обеспечивает быстрое время вывода на рынок.</li><li>Поддержка: обнаружение проблем на этапе сборки бота происходит намного быстрее. Это позволяет быстрее решать проблемы и обеспечивает безошибочное развертывание бота.</li><li>Улучшение: участие конечного пользователя в процессе непрерывной разработки делает использование ПО более удобным. Новые требования по отзывам сторонних разработчиков можно выполнять ежедневно.</li><li>Обновления: пользователи получают обновления вовремя, поскольку их выход с помощью компакт-дисков проще и требует меньше времени. Циклы выпуска, или спринты, короче. А также нацелены и тестируются на отсутствие ошибок перед переходом к новому спринту.</li><li>Мониторинг: ход процесса разработки может быть передан пользователю, что позволяет отслеживать в реальном времени и устранять отложенную обратную связь.</li><li>Релизы: развертывание программного обеспечения – это безболезненное мероприятие с низким уровнем риска, поскольку код можно просматривать и редактировать по запросу.</li></ul><h2>Применение CI/CD для разработки RPA-процессов</h2><p>Распространённой считается система имплементации CI/CD с помощью Azure DevOps Pipelines, git-репозитория и docker-контейнеризации. Для примера flow стандартной имплементации CI/CD приведём такую последовательность:</p><ol><li>Написанный код в UiPath Studio комитится в git-репозиторий. Студия разработки UiPath позволяет нативно настроить интеграцию процесса комита в интерфейс студии.</li><li>Проведение push-комита тригерит pipeline в системе Azure. В свою очередь она инициирует процесс CI.</li><li>В docker-контейнере процесс запускается на выделенном для тестирования процесса сервере. Пользуясь встроенными возможностями тестирования кода в UiPath, у нас есть возможность составить unit-тесты для каждой части процесса и составить assessment корректности работы процесса по их выполнению.</li><li>При успешном завершении тестов контейнер может быть доставлен на продуктивный сервер. Для обновления последней версии кода будет произведен merge с локальным хранилищем.</li></ol><p>О деталях реализации подобного метода мы поговорим в следующих статьях. Надеюсь эта была вам интересна, и я немного помог изучить возможности облачной автоматизации, применимо к RPA.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как автоматизация операций помогает сделать сервис удобным для клиентов и сотрудников</title>
      <link>https://tproger.ru/articles/kak-avtomatizacija-operacij-pomogaet-sdelat-servis-udobnym-dlja-klientov-i-sotrudnikov</link>
      <comments>https://tproger.ru/articles/kak-avtomatizacija-operacij-pomogaet-sdelat-servis-udobnym-dlja-klientov-i-sotrudnikov?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Vadim Atamanenko]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-avtomatizacija-operacij-pomogaet-sdelat-servis-udobnym-dlja-klientov-i-sotrudnikov</guid>
      <description><![CDATA[<p>Опыт разработки и запуска корпоративного проекта, который помог автоматизировать рутинные операции и очень обрадовал бухгалтера.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-avtomatizacija-operacij-pomogaet-sdelat-servis-udobnym-dlja-klientov-i-sotrudnikov">Как автоматизация операций помогает сделать сервис удобным для клиентов и сотрудников</a>»</p>]]></description>
      <category><![CDATA[1C-Bitrix]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 21 Jul 2021 08:34:04 GMT</pubDate>
      <content:encoded><![CDATA[<p>В один из суетливых дней на пороге отдела разработки появился технический директор с горящими глазами и предложением нового проекта, который нужно разработать и внедрить. Желательно не «через год», а в разумные сроки.</p><p>По результатам обсуждений собрали основной бриф:</p><ul><li>Разработать систему по регистрации новых абонентов и созданию бизнес-процессов по их подключению с проведением процесса по всем нужным отделам в компании.</li><li>Разработать систему по отключению существующих абонентов и созданию бизнес-процессов по их отключению с проведением процесса по всем нужным отделам в компании.</li><li>Разработать систему оповещения о плановом проведении ремонтных работ на линиях.</li><li>Разработать систему регистрации поступающих заявок от абонентов.</li><li>Автоматизировать систему расчётов для абонентов телекоммуникационных услуг.</li><li>Провести интеграцию с банковским ПО для приёма и обработки платежей от абонентов в системе бухгалтерского учёта.</li></ul><p>За основу был взят следующий стек технологий и инструментов:</p><ul><li>Система бухгалтерского учёта на платформе 1С Бухгалтерия, Управляемые формы.</li><li>1С Битрикс24 – как инструмент для использования механизма бизнес-процессов и уведомлений для абонентов.</li><li>IIS (Internet Information Services), встроенный компонент серверных ОС на платформе Windows Server, – как инструмент для того, чтобы развернуть внешний web-сервис.</li><li>Postman – как инструмент для тестирования запросов.</li></ul><h2>Приступаем к реализации</h2><p>Первым делом в системе бухгалтерского учёта создаём новый вид  – учёт коммуникационных услуг. Он содержит в себе необходимое количество документов, справочников, регистров. Совмещаем его с существующей системой через систему расширений конфигурации, чтобы в дальнейшем не сталкиваться с проблемами в обновлениях и соответствовать правилам разработки.</p><p>Процесс занял некоторое время. От согласования с отделом бухгалтерии до финальной реализации прошло около двух недель.</p><p>Далее переходим к настройке документооборота и CRM-системы на платформе Битрикс24. Тут начинается самое интересное:</p><ul><li>При подключении нового абонента оператор со стороны 1С заполняет заявку на подключение, далее эта заявка попадает по протоколу REST в систему Битрикс24 и инициирует запуск бизнес-процесса, по которому задействуются нужные отделы и сотрудники (определение необходимости закупа оборудования, контроль оплат, распределение по командам монтажных бригад, финальный монтаж и подписание документов о передачи оборудования абоненту). После закрытия заявки абоненту приходит SMS-уведомление об успешном подключении к сервису. Заявка закрывается.</li><li>При поступлении заявки от абонента об отключении от услуги или подключении к другому тарифу оператор вносит эти данные со стороны 1С. Далее заявка попадает в Битрикс24 на контроль в отдел бухгалтерского учёта и при отсутствии задолженности происходит распределение по монтажным бригадам, которая производит демонтаж и подписывает необходимые документы.</li><li>Аналогичным образом настроены механизмы оповещений и обработки входящих заявок от абонентов. Автоматизированный расчёт стоимости происходит на стороне 1С. Если рассказать кратко, то при групповом формировании документов начисления для абонентов из базы 1С данные в Битрикс24 поступают через протокол RESTAPI. Далее  запускается бизнес-процесс системы оповещений через SMS о необходимости внесения оплат с контролем оплаты. В том случае, если от абонента не поступает реакции, разработана система уведомлений и, как крайний шаг, задача на отключение.</li></ul><p>Далее переходим к интеграции с банковском ПО. После недолгих переговоров с местным отделением банка, в котором открыт счёт, пришли к соглашению. Банк<br />добавляет в приложение нашу компанию в список сервисов. При переходе абонент вводит свой ИИН и получает текущую сумму, которую нужно оплатить.</p><h2>Запускаем web-сервис</h2><p>На стороне 1С разработали HTTP-сервис, имеющий в себе два основных метода:</p><p><b>PostCustomersInfo</b> – получает методом POST от банка информацию о успешной транзакции и вводе в базу 1С входящего платёжного поручения.</p><p>Содержание обработчика <b>GetCustomerInfo </b>в 1С:</p><figure><img src="https://media.tproger.ru/uploads/2021/07/2-2.png" alt="" /></figure><p>Публикация web-сервиса ничем особым не примечательна, да и прошла без особых проблем. Вуаля, сервис работает.</p><p>Логика получилась следующая:</p><ol><li>Абоненту поступило SMS-уведомление о необходимости оплаты.</li><li>Он переходит в приложение банка, вводит свой ИИН, получает сумму для оплаты, производит оплату.</li><li>В базу 1С попадет уже полностью заполненное платёжное поручение.</li></ol><p>В логику проведения платёжного поручения внесён дополнительный исполняющий код, использующий фишку WebHooks от Битрикс24, позволяющую сместить стадию сделки в статус «Оплачено» и, соответственно, прекратить контроль оплаты по выставленной квитанции.</p><p>Когда пошли первые платежи от абонентов, бухгалтер по банковским операциям был очень удивлён тому, что больше не нужно разносить операции вручную. Вроде простой механизм, реализация которого заняла не такое большое время, но функционал оказался крайне полезным.</p><p>В итоге у нас есть:</p><ol><li>Автоматизированная обработка поступающих заявок от абонентов.</li><li>Автоматизированный расчёт стоимости услуг и контроль оплат по ним.</li><li>Автоматизированная система приёма и разноски оплат в системе 1С Бухгалтерия.</li></ol><h3>А как вы автоматизируете процессы?</h3>]]></content:encoded>
    </item>
    <item>
      <title>Сотни заключённых в США не могут выйти на свободу из-за ошибок в ПО</title>
      <link>https://tproger.ru/news/sotni-zakljuchjonnyh-v-ssha-ne-mogut-vyjti-na-svobodu-iz-za-oshibok-v-po</link>
      <comments>https://tproger.ru/news/sotni-zakljuchjonnyh-v-ssha-ne-mogut-vyjti-na-svobodu-iz-za-oshibok-v-po?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/sotni-zakljuchjonnyh-v-ssha-ne-mogut-vyjti-na-svobodu-iz-za-oshibok-v-po</guid>
      <description><![CDATA[<p>В Аризоне более 700 осуждённых сидят дольше положенного: департамент исправительных учреждений не обновил ПО, зная о проблеме с 2019 года.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/sotni-zakljuchjonnyh-v-ssha-ne-mogut-vyjti-na-svobodu-iz-za-oshibok-v-po">Сотни заключённых в США не могут выйти на свободу из-за ошибок в ПО</a>»</p>]]></description>
      <category><![CDATA[Ошибки в ПО]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 24 Feb 2021 07:30:27 GMT</pubDate>
      <content:encoded><![CDATA[<p>Радиостанция KJZZ <a href="https://kjzz.org/content/1660988/whistleblowers-software-bug-keeping-hundreds-inmates-arizona-prisons-beyond-release">рассказала</a> об очень неприятной ситуации в штате Аризона, США. Местный Департамент исправительных учреждений не озаботился своевременным обновлением ПО для управления тюрьмами, из-за чего более 700 осужденных прямо сейчас находятся в заключении дольше положенного.</p><p>По данным журналистов, управление ведомства в курсе проблемы ещё с 2019 года. Но несмотря на это, никаких попыток исправить ситуацию с их стороны не исходит. А после того, как вся эта история была обнародована, департамент и вовсе заблокировал своим сотрудникам доступ к сайту KJZZ.</p><p>В Аризоне за досрочное освобождение заключённых должна отвечать автоматика, т.к. два года назад в штате были приняты соответствующие поправки к закону. Но из-за проблем программного обеспечения, система не работала и дня, как ей положено.</p><p>Источники радиостанции заявили, что они практически сразу же начали делать внутренние предупреждения IT-сотрудникам департамента. И до сих пор ведомство не исправило большую часть из них. Речь идёт в том числе о модулях, отвечающих за «отслеживание медицинского обслуживания заключенных, их количество, имущество, комиссионные и финансовые счета, религиозную принадлежность, классификацию безопасности и принадлежность к группировкам».</p><p>Источник: <a href="https://kjzz.org/content/1660988/whistleblowers-software-bug-keeping-hundreds-inmates-arizona-prisons-beyond-release">KJZZ</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Стратегия автоматизации тестирования для Agile-проектов</title>
      <link>https://tproger.ru/translations/test-automation-strategy-for-agile-projects</link>
      <comments>https://tproger.ru/translations/test-automation-strategy-for-agile-projects?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Иван Бирюков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/test-automation-strategy-for-agile-projects</guid>
      <description><![CDATA[<p>Перевод статьи о построении автотестов в Agile: модель постоянной поставки с несколькими командами, надёжность кода и безопасность приложения.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/test-automation-strategy-for-agile-projects">Стратегия автоматизации тестирования для Agile-проектов</a>»</p>]]></description>
      <category><![CDATA[Тестирование]]></category>
      <category><![CDATA[Agile]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 17 Mar 2016 20:13:17 GMT</pubDate>
      <content:encoded><![CDATA[<p>Использование автоматизированного тестирования предоставляет огромные возможности и позволяет существенно повысить надёжность кода и безопасность приложения. Поэтому разработка крупных и сложных систем непременно требуют привлечения специалистов в области автоматизированного тестирования. С другой стороны, автоматизированное тестирование — процесс достаточно сложный как с точки зрения написания кода, так и с точки зрения методологии и организации процессов в команде. Предлагаем вашему вниманию перевод статьи о построении автоматизированного тестирования на Agile-проектах.</p><p>Описанная в этой статье стратегия автоматизации тестирования предполагает модель постоянной поставки с несколькими командами, работающими по методологии Agile.</p><p>На этом примере я перечислю ключевые моменты, которые необходимо учитывать, чтобы получить максимальный эффект от проведения автоматизированных тестов.</p><figure><img src="https://media.tproger.ru/uploads/2016/03/test-automation-strategy-e1455047429112.jpg" alt="" /></figure><h3>Краткое содержание</h3><p>Автоматизированное тестирование — ключевой процесс разработки с использованием методологии Agile. При переходе к постоянному развёртыванию автоматизация тестирования становится ещё более важной из-за возможности быстро информировать разработчиков о состоянии приложения. Чтобы обеспечить постоянный поток обратной связи, автоматические тесты необходимо проводить постоянно и быстро, а их результаты должны быть надёжными и достоверными.</p><p>Чтобы обеспечить выполнение этих условий, большая часть проверок должна проводиться в рамках разработки новых функциональных возможностей. Другими словами, разработка и тестирование должны быть неразрывно связаны, а обеспечение качества должно быть заложено с самого начала разработки, чтобы новые возможности не нарушали работу существующего функционала.</p><p>Это требует «инвертирования пирамиды автоматизации тестирования» с отказом от GUI-тестов, которые занимают много времени, в пользу тестирования на более низких уровнях, например, API, где автоматические тесты можно запустить сразу после unit-тестов как часть сборки, чтобы обеспечить базовый уровень надёжности.</p><figure><img src="https://media.tproger.ru/uploads/2016/03/1-4.png" alt="" /></figure><h3>Обзор стратегии автоматизации тестирования</h3><p>Предотвращение вместо обнаружения — разумеется, необходимо приложить все усилия, чтобы предотвратить возникновение недостатков, но техники и методы, которые для этого используются, не являются предметом этой статьи. Здесь нас интересует, как можно обнаружить баги, как только они появляются в системе, и оперативно передать информацию разработчикам.</p><p>Качество должно быть превыше количества. В подавляющем большинстве случаев лучше выпустить в релиз одну фичу, надёжную, как скала, нежели сразу несколько полусырых возможностей. Минимальным критерием для релиза должно быть полное отсутствие регрессионных дефектов, то есть новые возможности не должны нарушать работу существующего функционала.</p><p>Как уже упоминалось, быстрое информирование разработчиков о состоянии приложения имеет огромное значение при непрерывной поставке, следовательно, надо найти механизм, которые позволит быстро давать обратную связь. Один из способов — увеличить количество unit-тестов, интеграционных тестов и тестов API. Эти низкоуровневые тесты формируют сеть безопасности, которая помогает убедиться, что приложение работает так, как было задумано, и позволяет предотвратить дефекты, возникающие на других уровнях тестирования. Unit-тесты служат основой для автоматизации тестирования на более высоких уровнях.</p><p>Вторая возможность для улучшения работы — запускать регрессионные тесты чаще и в параллели с непрерывной поставкой, об этом позже. Автоматизированное тестирование должно быть не изолированной задачей, а непрерывным процессом, неотъемлемо вписанным в жизненный цикл ПО.</p><h3>Регрессионное тестирование</h3><p>Автоматические регрессионные тесты — основа стратегии автоматизации тестирования.</p><p>«Дымовой» пакет регрессионных тестов нужен для проверки того, что приложение загружается и запускается. В него также входят несколько ключевых сценариев, позволяющих убедиться, что приложение ещё работает.</p><p>Цель этого пакета тестов в том, чтобы отловить наиболее очевидные проблемы, например, то, что приложение не загружается или не запускается основной поток взаимодействия пользователя с приложением. Поэтому «дымовые» тесты не должны продолжаться больше 5 минут, их цель — сообщить, что не работает что-то ключевое.</p><p>Такие тесты запускаются при каждом развёртывании приложения и могут содержать как API, так и GUI-тесты.</p><p>Функциональный пакет регрессионных тестов нужен для более детальной проверки работы приложения, чем это позволяют «дымовые» тесты.</p><p>Необходимо создать несколько функциональных пакетов для различных целей. Если есть несколько команд, работающих над различными разделами приложения, то в идеале нужны регрессионные пакеты, покрывающие область работы каждой команды.</p><p>Эти пакеты должны запускаться в различных окружениях по мере необходимости и проверять, что поведение приложения остаётся неизменным вне зависимости от окружения. Такие тесты запускаются несколько раз в день и должны продолжаться не дольше 15-30 минут.</p><p>Поскольку эти тесты более детализированы и занимают больше времени, важно выносить большую часть функциональных тестов на уровень API, где тестирование проходит быстрее. Это нужно для того, чтобы не выходить за временные рамки в 15-30 минут.</p><p>Полный пакет регрессионных тестов позволяет протестировать приложение как целое. Цель этого пакета тестов — проверить, что различные части приложения, которые обращаются к различным базам данных и другим приложениям, работают корректно.</p><p>Этот пакет тестов не предназначен для проверки всех возможностей приложения, поскольку их работа уже проверена функциональными регрессионными пакетами. В любом случае, эти тесты более «лёгкие» и проверяют переходы из одного состояния в другое или несколько наиболее популярных сценариев или путей пользователя.</p><p>Такие тесты в основном проводятся с использованием GUI, поскольку они проверяют, как пользователь будет взаимодействовать с системой. Время, которое на них затрачивается, может варьироваться в зависимости от приложения, но обычно такие тесты запускаются один раз за день или за ночь.</p><h3>Стратегия автоматизации тестирования для нескольких Agile-команд</h3><figure><img src="https://media.tproger.ru/uploads/2016/03/Screen-Shot-2016-02-14-at-20.11.05-e1455481231673.png" alt="" /></figure><h4>Автоматизированные unit-тесты</h4><p>Автоматизация тестирования начинается на уровне unit-тестов. Эти тесты должны создаваться для каждой новой возможности, находящейся в разработке. Именно они ложатся в основу более широкой практики автоматизации вплоть до системных GUI-тестов. Разработчики обязаны убедиться в том, что для каждой новой функциональной возможности разработан полный набор надёжных unit-тестов, позволяющих проверить, что код работает как задумано и отвечает всем требованиям. Unit-тесты наиболее выгодны с точки зрения окупаемости, поскольку их недолго написать, легко поддерживать и изменять (благодаря тому, что нет зависимостей), так что если в коде есть ошибка, то разработчик быстро узнает о ней. Unit-тесты должны запускаться как на компьютере разработчика, так и в среде непрерывной интеграции.</p><h4>Автоматическая интеграция / API-тесты или сервис-тесты</h4><p>В то время как unit-тесты основаны на тестировании функций внутри класса, интеграционные тесты формируют следующую ступень, направленную на тестирование классов, образующих компонент, входящий в состав нового функционала. Такие тесты запускаются только после того, как unit-тестирование было успешно завершено.</p><p>Сервис-тесты обычно запускаются на уровне API без вовлечения GUI-интерфейса, следовательно, тесты направлены на проверку функциональности в чистом виде, а поскольку тесты непосредственно обращаются к компонентам, они быстро проводятся и могут быть частью сборки. При необходимости тестирования взаимодействия с внешними сервисами, в случае, если внешние сервисы не доступны либо не могут гарантировать предоставление данных, отвечающих условиям тестирования, можно использовать эмуляторы внешних сервисов, например <a href="http://wiremock.org/">WireMock</a>. API-тесты и/или сервис-тесты могут запускаться на компьютере разработчика или быть частью сборки, но если они начинают занимать длительное время, лучше запускать их в среде непрерывной интеграции. Для сервис-тестов можно использовать такие инструменты, как SoapUI.</p><h4>Тесты приложения</h4><p>На практике крупное приложение, например, система для электронной коммерции, может быть разбито на несколько приложений, предоставляющих различные возможности. Концепция «тестирования приложений» заключается в том, что группы тестов, направленные на возможности одного приложения, объединяются и прогоняются для этого приложения. Этот пакет можно использовать в случаях, когда команда планирует выпустить индивидуальное приложение и хочет проверить, всё ли работает корректно.</p><p>Чтобы протестировать приложение в целом, обычно требуется интерфейс для взаимодействия между различными его компонентами, а значит, тестирование лучше проводить с использованием браузера или GUI. Цель этих тестов — убедиться в том, что приложение работает корректно. Такие тесты называют “вертикальными”, т.к. они направлены на проверку работоспособности конкретного приложения или компонента, а не всей системы целиком. Эти тесты отличаются глубиной проработки и большим объёмом.</p><p>Для проведения таких тестов в браузере можно использовать <a href="http://docs.seleniumhq.org/">Selenium WebDriver</a>. Этот инструмент является наиболее популярным для проведения автоматизированного тестирования в браузерах и предоставляет богатые возможности API для проведения сложных проверок.</p><h4>Полные сценарные тесты</h4><p>Автоматизированные GUI-тесты, которые запускаются для всей системы, используются как типичные пути пользователей или полные сценарии взаимодействия. Из-за проблем с этим типом тестов (описанных ниже) их количество лучше сократить до минимума. Полные сценарии включены в ночные регрессионные пакеты.</p><h3>Инвертирование пирамиды автоматизации тестирования</h3><p>В рамках стратегии автоматизации тестирования нам необходимо минимизировать количество автоматизированных тестов на уровне GUI.</p><p>Несмотря на то, что проведение автоматизированного GUI-тестирования даёт хорошие и значимые результаты с точки зрения симуляции пользовательского взаимодействия с приложением, оно имеет и ряд своих недостатков:</p><ol><li>Хрупкость — для определения веб-элементов для взаимодействия тесты используют html-локаторы, поэтому как только меняется уникальный ID какого-либо элемента интерфейса, тесты перестают работать, а это влечёт за собой значительные расходы на поддержку.</li><li>Ограниченное тестирование — GUI может не позволить тестировщику полностью проверить функциональность,  поскольку он не всегда содержит все детали веб-ответа, необходимые для верификации.</li><li>Низкая скорость — поскольку тесты проводятся через GUI, время загрузки страницы существенно увеличивает общее время тестирования, и обратная связь разработчикам поступает значительно позже.</li><li>Наименьшая окупаемость — из-за всех проблем, перечисленных выше, GUI-тесты становятся наименее целесообразными с финансовой точки зрения.</li></ol><p>Автоматическое тестирование в браузере нужно сокращать до минимума и использовать для симуляции поведения пользователей в основных потоках взаимодействия и полных сценариях, где используется система в целом.</p><p>За перевод выражаем благодарность международной IT-компании Noveo</p>]]></content:encoded>
    </item>
  </channel>
</rss>