JuniorPython Developer > Основы Python > Тестирование кода
Короткий ответ Нужно использовать контекстный менеджер pytest.raises(ИсключениеТип), внутри которого вызывается код, и pytest проверит, что исключение действительно возникло и имеет нужный тип. Как это работает подробнее pytest.raises перехватывает исключение внутри блока with; если исключение заданного типа не возникло вообще или возник другой тип, тест падает с ошибкой, явно сигнализируя, что ожидаемого поведения не произошло. Через атрибут .value можно получить сам объект исключения и проверить его сообщение или дополнительные атрибуты. Пример кода Что использовать на практике Практика. Такой тест важен для проверки валидации входных данных и граничных условий — например, что деление на ноль или передача отрицательного возраста действительно приводит к понятной, явной ошибке, а не к тихому неверному результату или падению в неожиданном месте кода позже. Подводные камни Риск. Проверять только факт исключения, но не его тип или сообщение, из-за чего тест пройдёт даже при неправильном, не относящемся к делу и
assertionsexceptions
JuniorData Analyst > SQL и данные > SQL
Короткий ответ Нужно сгруппировать таблицу по этим двум столбцам, посчитать количество строк в каждой группе через COUNT(*) и отобрать группы с HAVING COUNT(*) > 1 — это и есть дубликаты. Как это работает подробнее GROUP BY email, order_date объединяет все строки с одинаковой комбинацией этих значений в одну группу; COUNT(*) в каждой группе показывает, сколько исходных строк туда попало, а HAVING отфильтровывает только те группы, где это число больше 1. Пример кода Что использовать на практике На практике: перед любой агрегацией метрик (суммы, средние) полезно сначала явно проверить данные на дубликаты именно таким запросом — это быстрый и наглядный способ понять масштаб проблемы до того, как строить отчёт. Дубликаты могут появляться из-за повторной выгрузки данных, сбоя в ETL или неправильного JOIN на предыдущем шаге. Результат: Если результат пустой — дубликатов по этой комбинации нет. Проверка: для одной найденной пары email+дата вручную просмотреть все строки через SELECT * FROM orders WHERE email = ... A
data-qualityduplicates
JuniorSMM Manager > Общее > Брендбук и Tone of Voice
Короткий ответ Нужно сверить текст с документом ToV по конкретным пунктам (обращение, лексика, табу-слова, эмодзи, длина) с помощью чек-листа, а не просто «на глаз» оценивать, звучит ли текст «похоже на бренд». Как это работает подробнее чек-лист превращает субъективное ощущение «похоже/не похоже» в список конкретных проверяемых пунктов, что снижает расхождения между разными авторами команды. Что использовать на практике Подход. перед публикацией автор или редактор проходит по пунктам: форма обращения верна? нет табу-слов? эмодзи в пределах нормы? тон соответствует эмоции повода (праздник/нейтральная новость/жалоба)? Пример. Чек-лист из 5 пунктов применён к черновику «Уважаемые клиенты, информируем вас о скидке 10%»: обращение «вы» вместо принятого в ToV «ты» — нарушение; слово «информируем» слишком канцелярское для дружелюбного тона — нарушение. Текст отправлен на переписывание до публикации. Проверка — повторный прогон по чек-листу после правок. Подводные камни Ошибка. пропускать проверку для «быстрых» пост
brand-guidelinesbrand-management
JuniorDevOps Engineer > Контейнеры и доставка > Надёжность и инцидент-менеджмент
Короткий ответ Единственный надёжный способ — регулярно выполнять полное восстановление бэкапа в изолированное окружение и проверять целостность и работоспособность данных, а не только убеждаться, что файл бэкапа создался и имеет ненулевой размер. Как это работает подробнее процесс бэкапа может завершиться "успешно" по коду возврата, но содержать повреждённый, неполный или несовместимый с текущей версией СУБД файл; это выявляется только при попытке восстановления и проверки данных (чексуммы, количество строк, работоспособность приложения на восстановленных данных). Пример / кейс Ожидаемое поведение: скрипт должен завершаться с `RESTORE_OK` и числом строк, близким к ожидаемому; отсутствие вывода или ошибка `pg_restore` должны генерировать алерт команде ещё до того, как бэкап понадобится в реальном инциденте. Пример кода Что использовать на практике Практический подход. Автоматизируют периодическое (например, еженедельное) восстановление бэкапа в тестовую среду с прогоном smoke-тестов поверх восстановленных дан
backupdatabase-reliability
JuniorData Analyst > SQL и данные > SQL
Короткий ответ Нужно сравнить общее количество строк в таблице с количеством уникальных значений этого столбца: SELECT COUNT(*), COUNT(DISTINCT order_id) FROM orders; — если числа совпадают, столбец уникален. Как это работает подробнее COUNT(*) считает все строки, а COUNT(DISTINCT order_id) — только уникальные значения столбца; если order_id действительно не повторяется, оба числа будут равны. Если второе число меньше первого, значит есть повторяющиеся значения. Пример кода Что использовать на практике эту проверку стоит делать перед тем, как использовать столбец как ключ соединения (JOIN) — если ожидаемый уникальный ключ на самом деле содержит дубликаты, JOIN по нему может незаметно размножить строки («fan-out») и искажённо увеличить последующие суммы. Если total_rows = 5000 и unique_ids = 4980, значит есть 20 «лишних» дублирующихся строк, которые нужно расследовать отдельным запросом с GROUP BY order_id HAVING COUNT(*) > 1. Подводные камни проверяют уникальность только «на глаз», просматривая первые несколь
data-qualitydistinct
SeniorData Analyst > SQL и данные > SQL
Короткий ответ Правдоподобная цифра не доказывает корректность. Начните с формулировки зерна каждой CTE и ожидаемой кардинальности каждого соединения, затем проверьте результат на малом наборе с известным ответом. Как это работает подробнее Fan-out выявляют сравнением количества строк, уникальных бизнес-ключей и сумм до и после JOIN. Для связи many-to-many нужна предварительная агрегация или явная bridge-таблица. Диапазоны времени безопаснее писать как timestamp >= start AND timestamp . Это избегает двойного учёта границы и проблем с точностью. SRM проверяют по числу единиц рандомизации, а не по числу событий. Пример кода Что использовать на практике Требуйте инварианты. Автор заранее пишет, что должно сохраняться и в каких пределах. Проверяйте данные, а не стиль. Форматирование автоматизируется, смысл зерна — нет. Соразмеряйте глубину. Продакшен-дашборд требует строже ревью, чем одноразовый низкорисковый срез. Подводные камни SUM после one-to-many JOIN. Сумма повторяется для каждой дочерней строки. BETWEEN д
code-reviewdate-time
MiddleSMM Manager > Общее > Контент-стратегия
Короткий ответ Контент-аудит — это анализ опубликованного за прошлый период контента по рубрикам, форматам и этапам воронки с метриками по каждой категории, чтобы понять, что оставить, что изменить и что убрать из стратегии, а не просто общее впечатление «контент был неплохой». Как это работает подробнее собирают данные по каждому посту (рубрика, формат, площадка, этап воронки, охват, ER, конверсии) за выбранный период и группируют их для сравнения категорий между собой. Что использовать на практике На практике. аудит проводят перед квартальным или годовым пересмотром стратегии, чтобы решения о новых пилларах и рубриках опирались на данные, а не только на интуицию. Пример. Аудит за квартал показывает, что рубрика «Истории клиентов» даёт в среднем ER 6%, а «Новости компании» — 1,5%. Проверка: решение о сокращении рубрики «Новости компании» в новой стратегии подтверждается этими цифрами, а не субъективным мнением. Подводные камни Частые ошибки. анализировать только лучшие или только последние посты, игнорируя с
content-auditcontent-strategy
MiddleSMM Manager > Общее > Публикация и кампании
Короткий ответ Нужно разобрать запуск по фактам (что было запланировано, что произошло, на каком этапе и почему возникло отклонение) без поиска виноватого, зафиксировать конкретные изменения процесса или чек-листа, которые предотвратят повторение проблемы, и назначить ответственного за внедрение этих изменений с проверкой на следующем запуске. Как это работает подробнее пост-мортем обычно строится по структуре «что планировалось → что произошло → где возникло расхождение → почему → что изменить в процессе»; важно фокусироваться на системных причинах (отсутствие проверки, нехватка времени на тест), а не только на непосредственном исполнителе ошибки. Что использовать на практике На практике. разбор без конкретных action items (кто, что и к какому сроку меняет в процессе) превращается в формальность, которая не предотвращает повторения проблемы — выводы должны быть зафиксированы письменно и проверены на следующем похожем запуске, чтобы подтвердить, что изменение действительно сработало. Пример. После неудачного
campaign-managementpostmortem
MiddleDevOps Engineer > Контейнеры и доставка > Инженерные практики и взаимодействие с командами
Короткий ответ Проверяю не только синтаксис, а итоговые правила до и после изменения, привязанные ресурсы и соответствие least privilege. Для production нужны plan из CI, ограниченный CIDR, понятный владелец, проверка после apply и обратимый план. Как это работает подробнее Security group может быть общей для нескольких сервисов, поэтому локальная правка имеет больший blast radius. Динамические блоки Terraform также способны изменить или удалить правила, которые плохо заметны в исходном diff. Источник и назначение. Проверить, кто инициирует соединение и действительно ли сервис слушает указанный порт. Границы доступа. Предпочесть конкретные security group или CIDR вместо широкого 0.0.0.0/0. Зависимости. Найти все ресурсы, использующие группу, и оценить последствия удаления существующего правила. Пример кода Что использовать на практике Автоматизация. Запускать plan и policy checks в CI, запрещающие чувствительные порты для всего интернета. Временный доступ. Ограничивать CIDR офиса или VPN, задавать владельца и
code-reviewleast-privilege
MiddleSMM Manager > Общее > Контент-стратегия
Короткий ответ Анализ конкурентов используют, чтобы понять общие паттерны рынка (какие темы и форматы вызывают отклик у похожей аудитории) и найти незанятые ниши, а не чтобы копировать конкретные посты; выводы адаптируют под собственное позиционирование, аудиторию и ресурсы бренда. Как это работает подробнее собирают данные по контенту 3–5 конкурентов (рубрики, частота, вовлечённость, форматы) и ищут закономерности — что системно работает у нескольких игроков рынка, а что является случайным выбросом у одного поста. Что использовать на практике На практике. по результатам анализа формулируют гипотезы для собственной стратегии («у конкурентов хорошо работает формат разбора кейсов — попробуем адаптировать под свою экспертизу»), а не задачи «сделать точно так же». Пример. Анализ 3 конкурентов в нише доставки еды показывает, что у всех высокий ER получают посты с юмором от лица курьера. Гипотеза для своего бренда: ввести рубрику с похожим форматом, но с собственным персонажем и голосом бренда. Проверка: ER новой р
competitive-analysiscontent-strategy