Обновить
16K+
3
Дмитрий Федотов@fedotov-dev

Пользователь

21,2
Рейтинг
2
Подписчики
Отправить сообщение

xk6-sip: нагрузочное тестирование в CI — автоматизация с нуля до отчёта

Уровень сложностиПростой
Время на прочтение14 мин
Охват и читатели5.4K

Разберём, как настроить нагрузочное тестирование с нуля и встроить его в CI на примере xk6-sip — расширения нагрузочного инструмента k6 для VoIP/SIP-телефонии. На каждый push в GitHub Actions идут шесть функциональных звонковых сценариев и двухминутный нагрузочный прогон с порогами качества, а в артефактах сборки остаётся отчёт: JUnit, итоги k6 и скриншот дашборда Grafana за окно теста.

Это четвёртая статья серии. В первой мы разобрали, как описывать звонки как код и как устроен движок xk6-sip, во второй — настроили мониторинг нагрузки на Prometheus и Grafana. Здесь объединяем их в CI/CD-пайплайн на GitHub Actions, который проверяет АТС на каждый коммит.

Для VoIP/SIP-телефонии автоматизация тестирования в CI исторически давалась тяжело. Классический SIPp описывает сценарии в XML и не отдаёт ни метрики в Prometheus, ни JUnit-отчёт, поэтому в пайплайне его приходится обвязывать скриптами. В xk6-sip сценарий — обычный скрипт k6, а пороги, JUnit и экспорт метрик — стандартные возможности k6.

Нагрузочное тестирование часто живёт отдельно от разработки: раз в релиз инженер вручную запускает прогон, смотрит на графики и пишет отчёт. Деградация при этом обнаруживается через недели после коммита, который её принёс. Автоматизация нагрузочного тестирования в CI сокращает этот срок до минут: пороги производительности становятся quality gates, как юнит-тесты.

Всё ниже — из реального пайплайна репозитория xk6-sip: функциональные тесты занимают 40 секунд, нагрузка с мониторингом — 3,5 минуты, 401 звонок и 2 005 проверок за прогон.

Читать далее

xk6-sip: проверка качества звука в нагрузочных и автоматизированных функциональных тестах VoIP/SIP

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели7.4K

Разберём, как в xk6-sip, расширении нагрузочного инструмента k6 для тестирования VoIP/SIP-звонков, устроена проверка качества звука: запись звонка, оценка того, что услышал абонент, по эталону, и как это работает в функциональных тестах и под нагрузкой.

200 OK означает, что АТС соединила звонок, но не означает, что люди слышат друг друга. Исчерпанные порты медиасервера, ошибки NAT, перепутанные медиапотоки, транскодинг на пределе CPU дают звонок с успешной сигнализацией и тишиной, чужим голосом или хрипом в трубке. SIPp и большинство нагрузочных инструментов для телефонии проверяют сигнализацию, а RTP в лучшем случае считают пакетами. Для контакт-центра такой звонок — потерянный клиент, а в отчёте нагрузочного теста он зелёный.

В функциональных тестах телефонии эту проблему обычно решают эталонами: записывают, что должен услышать абонент в каждом кейсе, и сравнивают с записью звонка в CI. Подход рабочий, но эталон на каждый кейс нужно поддерживать, а под нагрузкой его не запустишь. В xk6-sip то же сравнение живёт прямо в скрипте k6 и работает на тысячах звонков.

В статье:

Читать далее

xk6-sip: мониторинг нагрузочного тестирования VoIP/SIP‑звонков

Время на прочтение15 мин
Охват и читатели7.6K

Разберём, как устроена observability в xk6-sip — расширении нагрузочного инструмента k6, которое позволяет автоматизировать нагрузочное и функциональное тестирование VoIP/SIP-звонков: откуда берутся метрики, как из них строятся панели и как по ним отличить деградацию АТС от деградации самого генератора.

Все графики и цифры от реального прогона нагрузочного теста: 100 одновременных звонков, 10 минут, 2000 звонков, 6,1 млн RTP-пакетов. Дашборд — 37 панелей в шести блоках; для каждого блока ниже есть источник данных, запрос, измеренное значение и признаки проблемы.

Читать далее

xk6-sip: SIP-телефония как код

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели11K

На дворе 2026 год. Веб-сервисы тестируют облачные оркестраторы: тысячи виртуальных пользователей поднимаются из пайплайна, метрики падают в Prometheus, деградации ловит алерт до того, как их заметит клиент. А в телефонии, которая до сих пор держит колл-центры, банки, скорую помощь и диспетчерские, релиз АТС часто проверяют так же, как двадцать лет назад: тестировщик берёт два телефона и звонит сам себе. Нагрузку дают SIPp со сценариями в XML, где каждая сторона звонка — отдельный процесс, а проверка медиа — ещё один непростой кусок сценария.

xk6-sip — моя попытка закрыть этот разрыв. Это расширение k6/x/sip для Grafana k6, в котором звонок описывается кодом на JavaScript: абоненты регистрируются, звонят друг другу через тестируемую АТС, отвечают, переводят, ставят на удержание, передают DTMF и проверяют, что слышат друг друга. Один и тот же скрипт работает как функциональный тест из одного звонка и как нагрузочный тест на тысячи одновременных разговоров.

По сути это инфраструктурный сдвиг: SIP-коммуникации начинают описываться так же, как Infrastructure as Code. Сценарий лежит в Git, проходит ревью, запускается из CI и оставляет после себя метрики.

Расширение подано в официальный реестр расширений k6 Grafana Labs и проходит там ревью. Код открыт под Apache-2.0: github.com/Dmitry-Fedotov-Dev/xk6-sip.

Я работал 4 года в телефонии и прошёл путь от стажёра-ручника QA в команде ядра до Performance Engineer продукта. Идея описывать тест действиями абонентов вдохновлена внутренним инструментом, который я написал во время работы в телекоме. Всё остальное — код, нагрузка, медиа, метрики, SIP-стек — написано в xk6-sip заново.

Читать далее

Разработка платформы координации ПСР во время реальной спасательной операции

Уровень сложностиПростой
Время на прочтение24 мин
Охват и читатели6.8K

12 августа в Алайском районе начали искать пропавших альпинистов. Дрон снимал склоны, материал копился часами, и команда ПСР разбирала его вручную, своими средствами.

15 августа я отдал организаторам платформу, где всё собрано в одном месте. Следующие семь дней я правил платформу прямо по ходу работы волонтёров. Дальше — про эти правки и про то, как всё уместилось в один ноутбук с домашним интернетом и забитым диском.

Читать далее

Информация

В рейтинге
355-й
Зарегистрирован
Активность