Если приложение не умеет общаться с внешним миром (банками, CRM, AI-сервисами), оно бесполезно для бизнеса.
Нужен мгновенный ответ пользователю (например, логин на сайте)? Используем REST/gRPC (Синхрон).
Нужно отправить тяжелый отчет или обработать миллион транзакций без зависания интерфейса? Зовите брокеров сообщений (Kafka, RabbitMQ). Асинхронность — это про масштабируемость и отказоустойчивость.
Сначала пишем спецификацию (OpenAPI/Swagger), утверждаем поля, типы данных и обязательность, и только потом разработчики пишут код. Нет контракта — нет интеграции.
Сервис-получатель упал? (Нужны Retry-политики).
Запрос ушел, а ответ не пришел? (Привет, таймауты).
Пользователь нажал кнопку «Оплатить» дважды? (Здесь нужна идемпотентность).
Итог: Хороший аналитик знает, как передать данные. Отличный аналитик знает, почему именно так, и что делать, если все сломается.
#INTEGRATION
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
ИИ уже не “будущее” — он тихо стал частью повседневности.🤖
Нейросети помогают писать тексты, генерировать изображения, анализировать данные, искать ошибки в коде и даже придумывать идеи для бизнеса. Но самое интересное — ИИ не заменяет человека, а усиливает того, кто умеет правильно задавать вопросы.🧠
Главный навык ближайших лет — не просто пользоваться технологиями, а понимать, как с ними сотрудничать.
IT + ИИ + нейро = новая реальность, где побеждает не тот, кто знает всё, а тот, кто быстрее учится. 🚀
Забрать папку 🎁
Добавиться в папку ⚡️
Нейросети помогают писать тексты, генерировать изображения, анализировать данные, искать ошибки в коде и даже придумывать идеи для бизнеса. Но самое интересное — ИИ не заменяет человека, а усиливает того, кто умеет правильно задавать вопросы.🧠
Главный навык ближайших лет — не просто пользоваться технологиями, а понимать, как с ними сотрудничать.
IT + ИИ + нейро = новая реальность, где побеждает не тот, кто знает всё, а тот, кто быстрее учится. 🚀
Забрать папку 🎁
Добавиться в папку ⚡️
Telegram
PRO IT🧠
Арина🔥 Романова invites you to add the folder “PRO IT🧠”, which includes 36 chats.
Представьте: CRM система 📋 и складская система 🏭 «договорились» обмениваться данными о заказах. На совещании всё понятно. Но когда дело доходит до кода — начинается хаос 🤯.
📌 ПРОБЛЕМА «УСТНЫХ ДОГОВОРЕННОСТЕЙ 🎤 → 💥
• «Поле
userName или username?» 🤔• «Сумма заказа — целое число или с копейками?» 💰
• «Дата в UTC или в местном времени?» 🕐
• «
status: "active" или "enabled"?» 🔄Эти мелкие нестыковки ломают интеграции в production 💥. Системный аналитик здесь — не просто посредник, а *архитектор коммуникации* 🏗, который формализует диалог систем в виде исполняемого контракта 📜.
💡 КЛЮЧЕВАЯ МЫСЛЬ. В современной разработке; КОД — это и есть самая точная документация 📖 → 💻. Поэтому лучший способ согласовать интеграцию — начать с написания её формального описания на специальном 'языке контрактов' ✍️.
🎯 ДЛЯ ЧЕГО ЭТО НУЖНО АНАЛИТИКУ 🎓:
1️⃣ Устранить неоднозначность требований ✅
2️⃣ Позволить командам работать параллельно 🚀
3️⃣ Обнаруживать breaking changes до деплоя 🔍
4️⃣ Автоматически генерировать клиентские библиотеки ⚙️
🛠 ПРАКТИЧЕСКИЙ ИНСТРУМЕНТАРИЙ🧰:
• 📊 OpenAPI/Swagger — для REST API
• 🔄 AsyncAPI — для событийных шин (Kafka, RabbitMQ)
• 🕸 GraphQL Schema — для гибких запросов
• ⚡️ Protobuf/gRPC — для высокопроизводительных RPC
📋 ПРОСТОЙ ПРИМЕР: как выглядит «договор» между системой заказов 🛒 и системой доставки 🚚:
# 📜 Контракт на создание заказа (OrderCreated.event.yaml)
event: OrderCreated
version: 1.0.0
description: 🎉 Заказ успешно создан и оплачен 💳
payload:
type: object
required: 📌
- orderId
- customerId
- items
- totalAmount
properties:
orderId:
type: string
format: uuid
example: "550e8400-e29b-41d4-a716-446655440000" 🆔
customerId:
type: string
format: uuid 👤
items:
type: array
minItems: 1 📦
items:
type: object
properties:
productId: { type: string } 🏷
quantity: { type: integer, minimum: 1 } 🔢
price: { type: number, minimum: 0 } 💵
totalAmount:
type: number
minimum: 0
exclusiveMinimum: true 💰
currency:
type: string
pattern: '^[A-Z]{3}$'
default: "RUB" ₽
createdAt:
type: string
format: date-time
description: "⏰ Время в формате ISO 8601 (UTC)"
🔍 ПОЧЕМУ ИМЕННО ФОРМАЛЬНЫЙ КОНТРАКТ, А НЕ ДОКУМЕНТ В CONFLUENCE? 📄❌
1️⃣ 🤖 МАШИНОЧИТАЕМОСТЬ:
• Можно автоматически сгенерировать код на Java ☕️, Python 🐍, C# ⚡️
• Можно провести валидацию данных в рантайме ✅
• Можно создать mock-сервер для тестирования 🧪
2️⃣ ✅ ВЕРИФИЦИРУЕМОСТЬ:
Если система-потребитель ожидает поле deliveryAddress 🏠, а система-источник его не отправляет — тест упадёт на этапе CI/CD 🔧, а не в production 💥.
3️⃣ 🔄 ЭВОЛЮЦИОННОСТЬ:
Версии контракта позволяют плавно мигрировать. Можно добавить новое поле discountAmount 🎁, не ломая старых потребителей.
🎭 РОЛЬ СИСТЕМНОГО АНАЛИТИКА В ЭТОМ ПРОЦЕССЕ 👨💼 → 🏗:
Вы становитесь не просто «собирателем требований», а проектировщиком языка общения между системами 🗣. Ваша задача:
1️⃣ 🎯 Выявить ключевые сущности и их атрибуты
2️⃣ 📝 Определить обязательные и опциональные поля
3️⃣ ⚙️ Установить форматы данных (даты 📅, валюты 💱, идентификаторы 🆔)
4️⃣ 🚨 Спроектировать сценарии ошибок и их обработки
5️⃣ 🔮 Предусмотреть будущие расширения
📈 КОНКРЕТНЫЙ РЕЗУЛЬТАТ ДЛЯ БИЗНЕСА 📊:
• ⏱️ Сокращение времени на интеграцию на 30-40%
• 🛡 Уменьшение инцидентов в production на 60-70%
• 🔌 Возможность быстрого подключения новых систем
• 🔍 Прозрачность взаимодействия между командами
💎
В мире микросервисов и распределённых систем 🌐, интеграция — это не «подключили и забыли» 🔌. Это постоянный диалог 🗣, где код выступает в роли формального протокола 📜.
Системный аналитик, который умеет проектировать эти протоколы 🏗, становится ключевым звеном 🔑 в создании устойчивых, масштабируемых и понятных IT-ландшафтов 🏙.
#INTEGRATION
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
📂 Подборка каналов по ИИ и IT технологиям
Подборка каналов для тех, кто работает в IT, хочет держать руку на пульсе без мониторинга сотни источников и сделать АПГРЕЙД своего информационного поля.
Что внутри:
🔗 [Добавить папку]
Подборка каналов для тех, кто работает в IT, хочет держать руку на пульсе без мониторинга сотни источников и сделать АПГРЕЙД своего информационного поля.
Что внутри:
– AI: реальные инструменты и внедрения, без хайпа;
– IT технологии: тренды, обзоры, инсайты от первых лиц;
– Карьера: как расти и не выгорать;
– HR Tech: кто и как нанимает профессионалов сейчас;
– AI life hacks: применение ИИ для удаленки и работы за рубежом.
🔗 [Добавить папку]
👌2❤1🔥1🎉1
ДЛЯ РОСТА НЕ ВСЕГДА ОБЯЗАТЕЛЬНО НУЖНО КУДА-ТО БЕЖАТЬ, ЧТО-ТО ВПАРИВАТЬ И/ИЛИ КОГО-ТО ДОГОНЯТЬ ... * На деле — часто достаточно просто оказаться в том месте, где "дышится" иначе ✔️
Мы собрали для тебя ПОДБОРКУ каналов про продажи с IT & AI, в которую хотим тебя пригласить. Там всё без надрыва:
🚫 Без кричащих заголовков
🚫 Без "купи прямо сейчас, иначе потом будет дороже"
🚫 Без ощущения, что ты что-то упускаешь
▪️ Там про другое:
— про то, как слышать клиента, а не продавливать
— про сделки, после которых не чувствуешь себя выжатым
— про Telegram как про живое пространство, где хочется быть
— и про деньги, которые приходят не через манипуляции, а через доверие
Делимся знаниями и аудиторией — растём вместе ⚡️ Забирай ПАПКУ бесплатно. * Отписаться можно в любой момент. Остаться — тоже. ✔️
Ссылка ➡️ https://t.me/addlist/3sxzEXxFW2Q5YTNk
Мы собрали для тебя ПОДБОРКУ каналов про продажи с IT & AI, в которую хотим тебя пригласить. Там всё без надрыва:
🚫 Без кричащих заголовков
🚫 Без "купи прямо сейчас, иначе потом будет дороже"
🚫 Без ощущения, что ты что-то упускаешь
▪️ Там про другое:
— про то, как слышать клиента, а не продавливать
— про сделки, после которых не чувствуешь себя выжатым
— про Telegram как про живое пространство, где хочется быть
— и про деньги, которые приходят не через манипуляции, а через доверие
Делимся знаниями и аудиторией — растём вместе ⚡️ Забирай ПАПКУ бесплатно. * Отписаться можно в любой момент. Остаться — тоже. ✔️
Ссылка ➡️ https://t.me/addlist/3sxzEXxFW2Q5YTNk
🆒2👍1🔥1
🧩 🔤 🔤 🔤 🔤 🔤 🔤 🔤 🔤 🔤 — это ваш навигатор в проекте
Умение писать и читать SQL-запросы даёт вам, как аналитику, три ключевых преимущества:
Глубокое понимание «анатомии» системы. Вы видите, как данные связаны между собой, и можете предсказать, где возникнут проблемы при масштабировании.
Проверка требований на реализуемость. Можно сразу набросать структуру будущих таблиц и выявить противоречия в требованиях до этапа разработки.
Предотвращение архитектурных ошибок. Помогает оценить, как сегодняшнее решение повлияет на завтрашние возможности системы. Часто проще потратить день на проектирование, чем месяцы на исправление «костылей».
💥 Боль из реальных проектов: когда незнание SQL било по срокам
Давайте на примерах. Думаете, я преувеличиваю?
Кейс 1: ФИО одной строкой. В проекте было решено хранить ФИО пользователя в одном поле full_name. Казалось бы, мелочь. Но когда потребовалась интеграция с госсистемой, где ФИО передаются тремя раздельными полями, пришлось:
Писать хрупкий алгоритм разбивки строки (а как быть с двойными фамилиями или отчествами вроде «оглы»?).
Менять API, интерфейсы и все интеграции.
Результат: три месяца незапланированной работы вместо одной маленькой фичи.
Кейс 2: Один владелец на машину. В системе для автосервиса изначально заложили, что у машины один владелец. В жизни же часто бывает два-три совладельца. Пришлось экстренно менять связь в БД с «один-ко-многим» на «многие-ко-многим», что потянуло за собой лавину изменений.
Этих проблем можно было бы избежать, если бы на этапе анализа и проектирования кто-то спросил: «А как эти данные лежат в базе?» и смог проверить это сам.
🛠 Ваш базовый арсенал: SQL-запросы, которые стоит освоить в первую очередь
Теория — это хорошо, но давайте к практике. Вот 5 типов запросов, которые стоит отточить. Для примеров возьмем упрощенную модель интернет-магазина.
🚀🔤 🔤 🔤 🔤 🔤 🔤 🔤 🔤 🔤 ❓
1. SELECT и WHERE: Видеть и фильтровать
Базовый запрос — ваш главный инструмент изучения данных.
sql
-- Выбрать всех активных пользователей из Москвы, зарегистрированных после 2023 года
SELECT first_name, last_name, email
FROM customers
WHERE city = 'Москва'
AND registration_date >= '2023-01-01'
AND status = 'active';
2. JOIN: Связывать сущности
Суть реляционных баз — в связях. JOIN помогает их восстановить.
sql
-- Узнать, какие товары и в каком количестве заказал каждый клиент
SELECT c.first_name, c.last_name, p.product_name, oi.quantity
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id
JOIN order_items oi ON o.order_id = oi.order_id
JOIN products p ON oi.product_id = p.product_id;
3. GROUP BY и агрегатные функции: Считать и обобщать
Для анализа и отчетов без этого никуда.
4. Подзапросы и CTE (WITH): Декомпозировать сложные вопросы
Когда запрос становится слишком сложным, его нужно разбить на части.
5. Оконные функции (OVER): Анализировать в контексте
Мощный инструмент для скользящих сумм, ранжирования и сравнений без потери детализации.
#SQL
Умение писать и читать SQL-запросы даёт вам, как аналитику, три ключевых преимущества:
Глубокое понимание «анатомии» системы. Вы видите, как данные связаны между собой, и можете предсказать, где возникнут проблемы при масштабировании.
Проверка требований на реализуемость. Можно сразу набросать структуру будущих таблиц и выявить противоречия в требованиях до этапа разработки.
Предотвращение архитектурных ошибок. Помогает оценить, как сегодняшнее решение повлияет на завтрашние возможности системы. Часто проще потратить день на проектирование, чем месяцы на исправление «костылей».
💥 Боль из реальных проектов: когда незнание SQL било по срокам
Давайте на примерах. Думаете, я преувеличиваю?
Кейс 1: ФИО одной строкой. В проекте было решено хранить ФИО пользователя в одном поле full_name. Казалось бы, мелочь. Но когда потребовалась интеграция с госсистемой, где ФИО передаются тремя раздельными полями, пришлось:
Писать хрупкий алгоритм разбивки строки (а как быть с двойными фамилиями или отчествами вроде «оглы»?).
Менять API, интерфейсы и все интеграции.
Результат: три месяца незапланированной работы вместо одной маленькой фичи.
Кейс 2: Один владелец на машину. В системе для автосервиса изначально заложили, что у машины один владелец. В жизни же часто бывает два-три совладельца. Пришлось экстренно менять связь в БД с «один-ко-многим» на «многие-ко-многим», что потянуло за собой лавину изменений.
Этих проблем можно было бы избежать, если бы на этапе анализа и проектирования кто-то спросил: «А как эти данные лежат в базе?» и смог проверить это сам.
🛠 Ваш базовый арсенал: SQL-запросы, которые стоит освоить в первую очередь
Теория — это хорошо, но давайте к практике. Вот 5 типов запросов, которые стоит отточить. Для примеров возьмем упрощенную модель интернет-магазина.
🚀
1. SELECT и WHERE: Видеть и фильтровать
Базовый запрос — ваш главный инструмент изучения данных.
sql
-- Выбрать всех активных пользователей из Москвы, зарегистрированных после 2023 года
SELECT first_name, last_name, email
FROM customers
WHERE city = 'Москва'
AND registration_date >= '2023-01-01'
AND status = 'active';
2. JOIN: Связывать сущности
Суть реляционных баз — в связях. JOIN помогает их восстановить.
sql
-- Узнать, какие товары и в каком количестве заказал каждый клиент
SELECT c.first_name, c.last_name, p.product_name, oi.quantity
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id
JOIN order_items oi ON o.order_id = oi.order_id
JOIN products p ON oi.product_id = p.product_id;
3. GROUP BY и агрегатные функции: Считать и обобщать
Для анализа и отчетов без этого никуда.
-- Посчитать выручку и средний чек по каждому городу
SELECT
c.city,
COUNT(o.order_id) as total_orders, -- количество заказов
SUM(o.total_amount) as total_revenue, -- общая выручка
AVG(o.total_amount) as avg_order_value -- средний чек
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id
GROUP BY c.city;
4. Подзапросы и CTE (WITH): Декомпозировать сложные вопросы
Когда запрос становится слишком сложным, его нужно разбить на части.
-- Найти клиентов, которые делали заказы на сумму больше средней
WITH avg_order_value AS ( -- CTE: вычисляем средний чек один раз
SELECT AVG(total_amount) as avg_amount FROM orders
)
SELECT c.first_name, c.last_name, o.total_amount
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id
WHERE o.total_amount > (SELECT avg_amount FROM avg_order_value);
5. Оконные функции (OVER): Анализировать в контексте
Мощный инструмент для скользящих сумм, ранжирования и сравнений без потери детализации.
-- Для каждого заказа показать сумму заказа и общую сумму всех заказов его клиента
SELECT
o.order_id,
o.customer_id,
o.total_amount,
SUM(o.total_amount) OVER (PARTITION BY o.customer_id) as customer_lifetime_value
FROM orders o;
#SQL
Please open Telegram to view this post
VIEW IN TELEGRAM
Science & Education 🌍🔬
Папка для тех, кто погружен в мир научных исследований, современных образовательных технологий и задумывается о международной карьере.
Мы отобрали каналы, которые реально помогают в обучении и работе: от свежих научных публикаций и EdTech-трендов, советов по управлению сложными интеллектуальными проектами до актуальных подборок стипендий и грантов по поступлению в топовые вузы мира🔥
👉 ОТКРЫТЬ ДОСТУП
Папка для тех, кто погружен в мир научных исследований, современных образовательных технологий и задумывается о международной карьере.
Мы отобрали каналы, которые реально помогают в обучении и работе: от свежих научных публикаций и EdTech-трендов, советов по управлению сложными интеллектуальными проектами до актуальных подборок стипендий и грантов по поступлению в топовые вузы мира🔥
👉 ОТКРЫТЬ ДОСТУП
Взрывной микс: какими навыками должен обладать системный аналитик в 2024? 💥
Знаете ли вы, что общего у AI, микросервисов и… системного аналитика? 🤔 Оказывается, сегодня он должен разбираться во всем этом!
Автор с опытом в разработке и анализе делится жестким выводом: одних технических скиллов НЕ хватит. Приходится качать:
🧱 Основы: Без этого — никуда. Жизненный цикл ПО, роли в команде, процессы.
🛠 Hard-Skills: Здесь настоящая битва трендов!
→ Раньше: SQL, документирование, UML.
→ Сейчас: Векторные БД, C4-модель, Docs-as-Code, принципы AI/ML.
🧠 Soft-Skills: Тот случай, когда «софты» решают всё. Коммуникация, критическое мышление, управление временем.
Почему так стало? Виноваты усложнение систем, гибридные архитектуры и бешеная скорость разработки. ⚡
Вывод: Основа — вечна, но чтобы оставаться на плаву, нужно постоянно учиться и адаптироваться к новым вызовам.
#OTHER
Знаете ли вы, что общего у AI, микросервисов и… системного аналитика? 🤔 Оказывается, сегодня он должен разбираться во всем этом!
Автор с опытом в разработке и анализе делится жестким выводом: одних технических скиллов НЕ хватит. Приходится качать:
🧱 Основы: Без этого — никуда. Жизненный цикл ПО, роли в команде, процессы.
🛠 Hard-Skills: Здесь настоящая битва трендов!
→ Раньше: SQL, документирование, UML.
→ Сейчас: Векторные БД, C4-модель, Docs-as-Code, принципы AI/ML.
🧠 Soft-Skills: Тот случай, когда «софты» решают всё. Коммуникация, критическое мышление, управление временем.
Почему так стало? Виноваты усложнение систем, гибридные архитектуры и бешеная скорость разработки. ⚡
Вывод: Основа — вечна, но чтобы оставаться на плаву, нужно постоянно учиться и адаптироваться к новым вызовам.
#OTHER
В начале мая сразу несколько новостей показали, куда двигается рынок: спрос на готовые ИТ-бизнесы вырос на 30%, а компании всё активнее пересобирают процессы вокруг ИИ и инфраструктуры. Плюс бизнесу снова приходится быстро адаптироваться к новым правилам и ограничениям — без хороших ориентиров это уже не про рост, а про выживание.
Чтобы не тратить время на случайные каналы и шум, собрали папку с экспертами по IT и бизнесу. Внутри — люди, которые разбирают рынок по делу: без лишней теории, с практикой, кейсами и нормальной аналитикой.
Это подборка для тех, кто хочет быстрее понимать, что происходит в рынке, и принимать решения без лишней суеты.
Сохранить папку себе 📨
Чтобы не тратить время на случайные каналы и шум, собрали папку с экспертами по IT и бизнесу. Внутри — люди, которые разбирают рынок по делу: без лишней теории, с практикой, кейсами и нормальной аналитикой.
Это подборка для тех, кто хочет быстрее понимать, что происходит в рынке, и принимать решения без лишней суеты.
Сохранить папку себе 📨
🔍 ТЕСТИРОВАНИЕ ДЛЯ АНАЛИТИКА: КОД, КЕЙСЫ, ИНСАЙТЫ
Привет, коллеги! 👋 Хороший аналитик не просто пишет требования, но и участвует в тестировании. Почему? Потому что именно вы знаете, как система должна работать на самом деле. Сегодня покажу на реальных кейсах с примерами кода, как аналитик может помочь QA и разработке находить баги до продакшена. 🚀
📌 Кейс 1: Интеграция и ретраи (код на Python)
Ситуация: Платежный шлюз иногда возвращает 503 (сервис временно недоступен). В требованиях написано: «При ошибке повторить запрос». Разработчик сделал один повтор через 1 секунду.
Что сделал аналитик: Написал простой скрипт, который показал, что 1 секунда — слишком мало, сервис не успевает восстановиться.
Результат: Баг нашли на тестовом стенде. В ТЗ добавили экспоненциальную задержку (1, 2, 4 сек) и 3 попытки. 🎯
📌 Кейс 2: Граничные значения (тестируем форму)
Ситуация: В форме заказа есть поле «Количество товаров» от 1 до 999. Разработчик сделал валидацию, но пропустил ноль и отрицательные числа.
Что сделал аналитик: Написал параметризованный тест на Python с библиотекой pytest:
Результат: Тест показал, что 0 и отрицательные числа пропускаются. Разработчик исправил валидацию до выкладки. ✅
📌 Кейс 3: Регрессия (автотест на проверку баланса)
Ситуация: Добавили новую фичу — скидки постоянным клиентам. Нужно убедиться, что старый функционал (списание баланса) не сломался.
Что сделал аналитик: Простой скрипт для smoke-теста:
Результат: Запускаем перед каждым релизом — спим спокойно. 😴
📌 Инструменты для аналитика
Postman — коллекции с автотестами для API (проверка статусов, схем ответа).
Python + requests — быстрые скрипты для сложных сценариев.
pytest — параметризация, фикстуры, отчёты.
Gherkin (Cucumber) — сценарии на понятном бизнесу языке:
🎯 ИТОГ: ЧТО ДЕЛАТЬ АНАЛИТИКУ?
Писать проверяемые требования — с цифрами, диапазонами, примерами.
Готовить тестовые сценарии — включая негативные и граничные.
Автоматизировать рутину — простые скрипты экономят часы ручных проверок.
Участвовать в код-ревью тестов — подсказывать QA, какие кейсы важны.
Помните: Баг, найденный на этапе анализа или тестирования, стоит в 10 раз дешевле, чем на проде. Аналитик с навыками тестирования — золото для команды.💰
#TESTING
Привет, коллеги! 👋 Хороший аналитик не просто пишет требования, но и участвует в тестировании. Почему? Потому что именно вы знаете, как система должна работать на самом деле. Сегодня покажу на реальных кейсах с примерами кода, как аналитик может помочь QA и разработке находить баги до продакшена. 🚀
📌 Кейс 1: Интеграция и ретраи (код на Python)
Ситуация: Платежный шлюз иногда возвращает 503 (сервис временно недоступен). В требованиях написано: «При ошибке повторить запрос». Разработчик сделал один повтор через 1 секунду.
Что сделал аналитик: Написал простой скрипт, который показал, что 1 секунда — слишком мало, сервис не успевает восстановиться.
```python
import requests
import time
def test_payment_retry():
url = "https://payment-gateway/api/pay"
payload = {"order_id": 123, "amount": 1000}
for attempt in range(3):
response = requests.post(url, json=payload)
if response.status_code == 503:
wait_time = 2 ** attempt # 1, 2, 4 секунды
print(f"Попытка {attempt+1} не удалась, ждём {wait_time}с")
time.sleep(wait_time)
else:
assert response.status_code == 200
print("Успех!")
return
assert False, "Все попытки исчерпаны"
Результат: Баг нашли на тестовом стенде. В ТЗ добавили экспоненциальную задержку (1, 2, 4 сек) и 3 попытки. 🎯
📌 Кейс 2: Граничные значения (тестируем форму)
Ситуация: В форме заказа есть поле «Количество товаров» от 1 до 999. Разработчик сделал валидацию, но пропустил ноль и отрицательные числа.
Что сделал аналитик: Написал параметризованный тест на Python с библиотекой pytest:
import pytest
def validate_quantity(q):
return 1 <= q <= 999
@pytest.mark.parametrize("input,expected", [
(0, False), # граница снизу
(1, True), # минимальное допустимое
(500, True), # среднее значение
(999, True), # максимальное допустимое
(1000, False), # граница сверху
(-5, False), # отрицательное
("abc", False) # не число
])
def test_quantity_validation(input, expected):
assert validate_quantity(input) == expected
Результат: Тест показал, что 0 и отрицательные числа пропускаются. Разработчик исправил валидацию до выкладки. ✅
📌 Кейс 3: Регрессия (автотест на проверку баланса)
Ситуация: Добавили новую фичу — скидки постоянным клиентам. Нужно убедиться, что старый функционал (списание баланса) не сломался.
Что сделал аналитик: Простой скрипт для smoke-теста:
def test_balance_after_purchase():
# Данные тестового пользователя
user_id = 999
initial_balance = get_balance(user_id) # предположим, 1000
# Покупаем товар за 300
purchase(user_id, 300)
# Проверяем новый баланс
new_balance = get_balance(user_id)
expected = initial_balance - 300
assert new_balance == expected, f"Ожидалось {expected}, получено {new_balance}"
print("Баланс обновился корректно")
Результат: Запускаем перед каждым релизом — спим спокойно. 😴
📌 Инструменты для аналитика
Postman — коллекции с автотестами для API (проверка статусов, схем ответа).
Python + requests — быстрые скрипты для сложных сценариев.
pytest — параметризация, фикстуры, отчёты.
Gherkin (Cucumber) — сценарии на понятном бизнесу языке:
Feature: Бонусы за регистрацию
Scenario: Новый пользователь получает 500 бонусов
Given пользователь не зарегистрирован
When он регистрируется с телефоном "+79991234567"
Then его бонусный счёт равен 500
🎯 ИТОГ: ЧТО ДЕЛАТЬ АНАЛИТИКУ?
Писать проверяемые требования — с цифрами, диапазонами, примерами.
Готовить тестовые сценарии — включая негативные и граничные.
Автоматизировать рутину — простые скрипты экономят часы ручных проверок.
Участвовать в код-ревью тестов — подсказывать QA, какие кейсы важны.
Помните: Баг, найденный на этапе анализа или тестирования, стоит в 10 раз дешевле, чем на проде. Аналитик с навыками тестирования — золото для команды.
#TESTING
Please open Telegram to view this post
VIEW IN TELEGRAM
В этой папке собраны каналы по ИИ, которые помогают быстрее разобраться в сфере, находить идеи и экономить время на поиске информации.
Please open Telegram to view this post
VIEW IN TELEGRAM
📊 SQL ДЛЯ АНАЛИТИКА: ОКОННЫЕ ФУНКЦИИ — СЛЕДУЮЩИЙ УРОВЕНЬ
Привет, коллеги! 👋 Вы уже знаете SELECT, JOIN и GROUP BY. Но есть вещь, которая выводит анализ на новый уровень — оконные функции. Они позволяют считать скользящие средние, приросты, доли и ранги без сложных подзапросов. Сегодня разберём на реальных задачах. Поехали! 🚀
📌 Кейс 1: Сравнение продаж с прошлым месяцем (LAG)
Менеджер просит: «Покажи помесячную динамику и прирост к прошлому месяцу». Без оконных функций пришлось бы делать self-join или подзапрос. А так:
Что получим: месячная выручка, прошлая выручка и процент роста. Всё одним запросом! 🔥
📌 Кейс 2: Топ-3 товара в каждой категории (ROW_NUMBER)
Нужно для каждой категории выделить три самых продаваемых товара. Раньше — муть с подзапросами. Теперь:
Результат: аккуратный топ по каждой категории. А если нужны все товары с повторами (если продажи одинаковые) — используйте RANK() или DENSE_RANK(). 🏆
📌 Кейс 3: Скользящее среднее за 7 дней (AVG OVER)
Для отчёта по трендам нужно сгладить дневные скачки. Скользящее среднее — идеально:
Теперь видно тенденцию без шума. Маркетологи будут благодарны! 📈
📌 Кейс 4: Доля товара в общей выручке (SUM OVER)
ABC-анализ: надо понять, какие товары дают 80% выручки. Считаем долю накопленным итогом:
Видим, где граница 80%. Классика для категорийных менеджеров. 📦
🎯 ПОЧЕМУ ЭТО ВАЖНО ДЛЯ АНАЛИТИКА?
Скорость: один запрос вместо трёх.
Гибкость: можно комбинировать с группировками и фильтрами.
Точность: меньше шансов ошибиться в логике.
Освойте оконные функции — и бизнес будет носить вас на руках за быстрые и точные ответы. 💪
#SQL
Привет, коллеги! 👋 Вы уже знаете SELECT, JOIN и GROUP BY. Но есть вещь, которая выводит анализ на новый уровень — оконные функции. Они позволяют считать скользящие средние, приросты, доли и ранги без сложных подзапросов. Сегодня разберём на реальных задачах. Поехали! 🚀
📌 Кейс 1: Сравнение продаж с прошлым месяцем (LAG)
Менеджер просит: «Покажи помесячную динамику и прирост к прошлому месяцу». Без оконных функций пришлось бы делать self-join или подзапрос. А так:
SELECT
DATE_TRUNC('month', order_date) as month,
SUM(amount) as revenue,
LAG(SUM(amount)) OVER (ORDER BY DATE_TRUNC('month', order_date)) as prev_revenue,
(SUM(amount) - LAG(SUM(amount)) OVER (ORDER BY DATE_TRUNC('month', order_date))) /
LAG(SUM(amount)) OVER (ORDER BY DATE_TRUNC('month', order_date)) * 100 as growth_percent
FROM orders
GROUP BY month
ORDER BY month;
Что получим: месячная выручка, прошлая выручка и процент роста. Всё одним запросом! 🔥
📌 Кейс 2: Топ-3 товара в каждой категории (ROW_NUMBER)
Нужно для каждой категории выделить три самых продаваемых товара. Раньше — муть с подзапросами. Теперь:
WITH ranked_products AS (
SELECT
category_id,
product_id,
SUM(quantity) as total_sold,
ROW_NUMBER() OVER (PARTITION BY category_id ORDER BY SUM(quantity) DESC) as rn
FROM order_items
GROUP BY category_id, product_id
)
SELECT category_id, product_id, total_sold
FROM ranked_products
WHERE rn <= 3;
Результат: аккуратный топ по каждой категории. А если нужны все товары с повторами (если продажи одинаковые) — используйте RANK() или DENSE_RANK(). 🏆
📌 Кейс 3: Скользящее среднее за 7 дней (AVG OVER)
Для отчёта по трендам нужно сгладить дневные скачки. Скользящее среднее — идеально:
SELECT
date,
revenue,
AVG(revenue) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) as avg_7d
FROM daily_revenue
ORDER BY date;
Теперь видно тенденцию без шума. Маркетологи будут благодарны! 📈
📌 Кейс 4: Доля товара в общей выручке (SUM OVER)
ABC-анализ: надо понять, какие товары дают 80% выручки. Считаем долю накопленным итогом:
WITH product_revenue AS (
SELECT
product_id,
SUM(amount) as revenue,
SUM(SUM(amount)) OVER () as total_revenue
FROM sales
GROUP BY product_id
)
SELECT
product_id,
revenue,
revenue / total_revenue * 100 as percent,
SUM(revenue / total_revenue * 100) OVER (ORDER BY revenue DESC) as cumulative_percent
FROM product_revenue
ORDER BY revenue DESC;
Видим, где граница 80%. Классика для категорийных менеджеров. 📦
🎯 ПОЧЕМУ ЭТО ВАЖНО ДЛЯ АНАЛИТИКА?
Скорость: один запрос вместо трёх.
Гибкость: можно комбинировать с группировками и фильтрами.
Точность: меньше шансов ошибиться в логике.
Освойте оконные функции — и бизнес будет носить вас на руках за быстрые и точные ответы. 💪
#SQL