Обучение · Урок 7

Куда смотреть, когда автоматизация не работает?

Проще всего понять, что система сломалась, когда она выдаёт ошибку. Трудный случай, это система, которая работает неверно без ошибки: на экране всё выглядит хорошо, а результат тихо неверен. В этом уроке разбирается, куда и в каком порядке смотреть в такой ситуации.

Чему вы научитесь в этом уроке

Этот урок берётся за момент, когда уже построенная автоматизация перестаёт вести себя как ожидалось. Цель в том, чтобы вы находили неисправность не догадкой, а последовательным сужением, и чтобы найденное исправление держалось. Автоматизация стоит на ногах тогда, когда диагностика перестаёт зависеть от того, кто построил систему, и становится умением самого дела.

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

Цели урока

  • Различать три вида отказа: остановленный, тихий, замедленный
  • Записывать симптом так, чтобы он отделялся от догадки
  • Делать неисправность воспроизводимой
  • Сужать область поиска делением потока пополам
  • Проверять пять частей по порядку: триггер, данные, условие, интеграция, выход
  • Делать одно изменение, проверять его и закреплять исправление

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

Три вида отказа

Фраза «не работает» покрывает сразу три разные ситуации, и каждая диагностируется с другого места. Если в начале разговора отделить, с каким видом вы имеете дело, область поиска сужается сразу.

Остановленный поток

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

Тихая неисправность

Поток идёт, создаёт записи, не подаёт сигнала, но результат неверен. Это самый дорогой вид, потому что ошибка копится неделями, а уборка, когда её замечают, тянется назад.

Замедленный поток

Результат верен, но приходит не вовремя. Обычно дело не в одной поломке, а в накопленной нагрузке или недавно добавленном шаге. Без измерения этот вид остаётся спорным.

Общее у всех трёх такое: пока ожидание не записано, неисправность не определить. Фраза «так быть не должно» не превращается в диагноз без записанного «должно было быть так».

Что такое тихая неисправность?

Автоматизация редко ломается с шумом. Сообщения об ошибке нет, красным ничего не горит, поток выглядит зелёным. И всё же выход неверен: сообщение уходит не тому человеку, поле остаётся пустым, запись открывается дважды, дата пишется в другом виде.

Источник тихой неисправности обычно в том, что вход поменял форму. В форме открылось новое поле, портал начал присылать номер телефона иначе, сотрудник заполнил поле по своему. Правило осталось прежним, вход изменился, и результат тихо съехал.

Признаки тихой неисправности

  • Число записей ниже или выше ожидаемого
  • На одного клиента заведены две записи
  • Одно поле систематически приходит пустым
  • Сообщения уходят, но доля ответов упала
  • Команда начала править выход руками
  • Никто не жалуется, и при этом системе никто не доверяет

Последний пункт важнее прочих. Как только команда начала править выход руками, система уже сломана; поскольку никто не сообщил, неисправность не попала ни в один журнал.

До диагностики: что изменилось?

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

Изменение случается не только в системе. Оно бывает и в процессе, и в людях, и во входе. Сотрудник мог уйти, портал мог переименовать поле, поставщик мог обновить формат файла. Начинайте поиск с этого списка, а не изнутри кода.

Где прощупать вопрос об изменении

  • В системе: новый шаг, обновление, новая интеграция, изменённая настройка
  • Во входе: поле формы, формат файла, имя поля, набор символов
  • В процессе: новое правило, снятое согласование, изменённый порядок
  • В людях: пришедший или ушедший сотрудник, переданная обязанность
  • Снаружи: изменения на стороне портала, банка, доставки или поставщика
  • Во времени: конец периода, праздник, рост нагрузки

Шаг 1: запишите симптом

Диагностика начинается с записи симптома. «Не работает» — это не симптом, а ощущение. Симптом таков: на какой записи, когда, что ожидалось и что случилось вместо этого. Пока эти четыре поля не заполнены, область поиска не сужается.

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

Лист неисправности

  • На какой записи или у какого клиента это увидели?
  • Когда произошло, когда заметили впервые?
  • Какой результат ожидался, какой шаг на карте процесса?
  • Что произошло вместо этого?
  • На скольких записях видно: на одной, на всех или на части?
  • Известно ли, что до этой даты работало?

Последние два вопроса задают направление. Если неисправность на одной записи, дело скорее во входе; если на всех — в правиле; если на части — в условии.

Шаг 2: воспроизведите неисправность

Не чините то, что не можете воспроизвести. Без примера, повторяющего неисправность по вашему желанию, вы не сможете и показать, помогло ли ваше изменение. Многие неисправности, которые считают устранёнными, на деле просто не повторились в тот день.

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

Проба воспроизведения

  • Отложите запись, на которой видели неисправность, вместе с её входом
  • Прогоните поток сначала с тем же входом
  • Если неисправность повторяется, у вас в руках измеримый пример
  • Если не повторяется, меняйте не вход, а время, порядок или нагрузку
  • Если не повторяется совсем, неисправность условная: ищите условие, при котором она выходит

Шаг 3: разделите поток пополам

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

Метод работает независимо от инструмента. Один и тот же вопрос задаётся при взгляде на карточку записи, промежуточную таблицу, отправленное сообщение или журнал системы: дошли ли данные сюда верными?

Вопросы деления

  • Триггер действительно сработал, запись создалась?
  • Данные, входившие в поток, были верны в момент входа?
  • Выход среднего шага имеет ожидаемый вид?
  • В какую сторону ушло условие, туда ли, куда ожидалось?
  • Последний шаг был вызван, какой ответ вернулся?

После каждого деления записывайте результат. Незаписанные деления повторяются, и диагностика тянется из за повторного разбора одних и тех же мест.

Шаг 4: прощупайте пять частей по порядку

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

1 Триггер

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

2 Формат входа

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

3 Условие

Могла появиться новая ситуация, выпавшая из записанных путей. Записи вне условий обычно тихо отпадают, потому что для них не написан путь.

4 Права и доступ

Пароль мог смениться, ключ мог истечь, пользователя могли удалить. Такие неисправности начинаются внезапно в один день и заранее не предупреждают.

5 Порядок и время

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

6 Целевая система

Другая сторона могла не принять: поле стало обязательным, лимит заполнился, формат отклонили. Когда возвращённый ответ не читают, эта неисправность остаётся немой.

Шаг 5: одно изменение, затем проверка

Не меняйте несколько вещей сразу. Сделаете два изменения и результат станет лучше — неизвестно, какое помогло; станет хуже — неизвестно, какое сломало. В этой точке диагностика возвращается к догадке.

После каждого изменения снова прогоняйте пример из второго шага. Проверка охватывает и уход неисправности, и то, что ничего другого не сломалось. Для этого заранее выпишите, какие записи шли верно.

Порядок проверки

  • Снова прогоните пример из листа неисправности, результат ожидаемый?
  • Прогоните два примера, которые раньше шли верно, они верны и теперь?
  • Попробуйте и вторую ветку условия, она могла сломаться
  • Попробуйте путь исключения: подайте заведомо неверный вход
  • Запишите результат с датой, зафиксируйте, кто что изменил

Шаг 6: закрепите исправление

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

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

Шаги закрепления

  • Добавьте сигнал, сообщающий, когда ожидаемый результат не сложился
  • Если обязательное поле пусто, остановите поток и поставьте запись в ожидание
  • Запишите путь исключения: где ждёт запись, кто перехватывает
  • Сохраните лист неисправности и решение как заметку
  • Обновите карту процесса, впишите изменённое правило
  • Прощупайте, нет ли той же неисправности в других потоках

Разобранный пример: письмо с предложением не уходит

Разберём метод на одной неисправности от начала до конца. Пример идёт по потоку продаж, но порядок одинаков в любом потоке.

От симптома к стойкому исправлению

Симптом: клиенты с новыми заявками не получают письмо с предложением. Первым заметил отдел продаж: за прошлую неделю несколько клиентов ждали ответа. Записи, судя по всему, создались.

Что изменилось: за последние две недели в форму добавили новое поле, и на стороне портала было обновление. Два кандидата.

Воспроизведение: одну из затронутых записей прогоняют снова с тем же входом. Неисправность повторяется, значит измеримый пример есть.

Деление пополам: смотрят таблицу в середине потока. Запись там, но поле почтового адреса пусто. Значит неисправность в первой половине, на стороне входа.

Пять частей: смотрят формат входа. Новое поле формы переименовало почтовое поле. Поток ищет старое имя, не находит, передаёт пустое значение, и шаг письма тихо отпадает.

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

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

Упражнение: репетиция диагностики

Диагностика не то умение, которое учат в день появления неисправности. Отрепетированное в спокойный день, оно готово в нужный день. Для этого и упражнение ниже.

Сделать на этой неделе

  • Возьмите один из работающих потоков и держите рядом его карту процесса
  • Подайте заведомо неверный вход: оставьте обязательное поле пустым
  • Посмотрите, что делает поток: остановился или тихо прошёл?
  • Заполните лист неисправности, запишите все четыре поля
  • Разделите поток пополам и найдите, где сломались данные
  • Поставьте в найденной точке сигнал или проверку

Каждый поток, проходящий тихо, — это поток, который позже родит тихую неисправность. Это упражнение поднимает на поверхность хотя бы один такой в большинстве дел.

Скачать контрольный список диагностики (xlsx) · лист неисправности, что изменилось, деление потока пополам, проверка пяти частей и шаги стойкого исправления.

Частые ошибки

Смотреть сразу на правило

Первым смотрят обычно правило, хотя самый частый источник — вход. Если правило со вчера не менялось, изменились скорее данные, доходящие до него.

Менять много всего сразу

Сделать два изменения и посмотреть на результат — не закончить диагностику, а размыть её. Какое изменение что сделало, остаётся неизвестным, и исправление становится неповторимым.

Чинить без воспроизведения

Исправление, сделанное на неповторяемой неисправности, нельзя проверить. Неисправность какое то время не видна, потом возвращается с того же места.

Не читать журналы

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

Не записывать симптом

Симптом, передаваемый на словах, меняется при каждой передаче. Незаписанный симптом превращается в диагностику, где двое ищут две разные неисправности.

Починить и пойти дальше

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

Контрольный список

Прежде чем закрыть неисправность, стоит уметь сказать «да» каждому пункту ниже. Если пункта не хватает, неисправность не закрыта, а отложена.

Список закрытия неисправности

  • Симптом записан с четырьмя полями: запись, время, ожидалось, случилось
  • Вопрос об изменении задан, ответ записан
  • Неисправность удалось воспроизвести
  • Точка неисправности найдена делением потока пополам
  • Сделано одно изменение
  • Исправление проверено, испробованы и ранее работавшие случаи
  • Добавлены сигнал, проверка или путь исключения
  • Карта процесса обновлена, заметка сохранена

Словарь

Термины, звучащие в разговорах о диагностике. Когда у команды общий язык, передача неисправности идёт быстрее.

Что дальше

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

Остальные модули программы готовятся. По мере выхода они занимают свои места в программе и появляются на странице обучения.

Урок 8: Исключения и ведение неисправностей

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

Урок 3: Правильный сбор клиентских данных

Словарь полей и правила вида записи. Большинство неисправностей начинается на этой стороне.

Все уроки

Раздел обучения целиком и добавленные позже модули.

Если подозреваете, что система тихо работает неверно, напишите нам и посмотрим вместе.

Запросить через WhatsApp

Часто задаваемые вопросы

Как понять, что система без ошибок неисправна?
По подсчёту выхода. Регулярно сравнивайте ожидаемое число результатов с полученным. Разрыв между этими числами, это первый признак неисправности, даже если на экране ничего не появляется.
Достаточно ли читать журналы?
Часто нет. Журнал записывает, что система сделала; он не записывает, чего она не сделала. Шаг, который не выполнялся, не оставляет следа. Поэтому подсчёт выхода должен идти рядом с чтением журналов.
Я починил, но не уверен, что делать?
Попробуйте намеренно вернуть неисправность. Если она больше не появляется как прежде, починка, вероятно, удержалась. Если появляется, изменение закрыло признак, а не причину.
Плохо ли менять несколько вещей сразу?
Обычно да. Сделав два изменения вместе, вы не отличите, какое сработало. Менять по одному кажется медленнее во время диагностики, но обычно быстрее приводит к ответу.
К каким инструментам применим этот подход?
Инструмент не имеет значения. Порядок вход, правило, выход годится и для таблицы, и для потока автоматизации. Меняется только название экрана, на который вы смотрите.