Перейти к содержанию

Тестирование производительности SAP: нагрузка, параллельная работа и инструменты

Тестирование производительности SAP доказывает до go-live, что система выдерживает, когда на неё одновременно приходится много пользователей и заданий. Тесты параллельной работы на маскированных данных продуктивного уровня, оценённые по критериям, согласованным заранее.

Два монитора с графиками времени отклика и диаграммой нагрузочного тестирования
Содержание
  1. Почему S/4HANA и SAP HANA изменили тестирование производительности
  2. Сначала параллельная работа: тесты, которые важны
  3. Сценарии высокого риска, которые нужно прописать
  4. Тестовые данные продуктивного уровня
  5. Критерии приёмки, по которым можно тестировать
  6. Инструменты, ответственность и облако
  7. Инструменты тестирования производительности SAP
  8. RISE with SAP разделяет ответственность
  9. Public cloud сужает объём
  10. Частые ошибки
  11. С чего начать на этой неделе
  12. Часто задаваемые вопросы

Тестирование производительности SAP доказывает до go-live, что критичные транзакции, фоновые задания и интерфейсы укладываются в согласованное время отклика, когда одновременно работает много пользователей и заданий. По моему опыту, важны именно тесты параллельной работы: на маскированных данных продуктивного объёма и по критериям «пройдено» и «не пройдено», которые бизнес согласовал до первого прогона.

Это руководство для ИТ-директоров, руководителей программ и руководителей тестирования в программах S/4HANA, включая RISE with SAP. В нём: что тестировать, какие данные нужны, как писать критерии приёмки, какие инструменты справляются с задачей и кто за что отвечает. О том, где производительность стоит среди других видов тестирования, лучше начать с моего обзора тестирования SAP.

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

Плитки Fiori падают по тайм-ауту, когда сотни пользователей входят в систему в начале смены. Z-отчёт зависает, потому что кто-то запустил выборку за весь финансовый год без ограничений по очень большой таблице. Фоновые задания пересекаются в конце месяца, и прогон проводок прерывается.

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

Инфраструктура центра обработки данных, поддерживающая среды тестирования производительности SAP и продуктивные нагрузки при одновременной работе пользователей

Тестирование производительности по фазам SAP Activate

  1. Explore

    Выявите риски производительности в проекте решения. Архитектура и устройство отчётов определяют результат раньше, чем написан код.

  2. Realize

    Проводите тесты объёма и нагрузки по мере стабилизации настроек. Частичные настройки дают вводящие в заблуждение результаты.

  3. До UAT

    Завершите полный цикл тестирования производительности до UAT, а не в его рамках.

  4. Переход

    Утверждайте переход по заранее согласованным критериям приёмки, а не по мнению.

  5. Гиперподдержка

    Следите за ключевыми показателями в эксплуатации от 30 до 60 дней. Большинство регрессий проявляется в первом цикле закрытия.

В системе ECC на традиционной базе данных тестирование производительности означало нагрузочное тестирование сервера приложений и базы данных: время выполнения ABAP, производительность SQL и планирование заданий. Интерфейсом пользователя был SAP GUI, который редко кого-то удивлял.

В S/4HANA с интерфейсами Fiori, расширениями на SAP BTP и интеграцией через SAP Cloud Integration производительность зависит сразу от нескольких уровней. Медленная плитка Fiori может означать долгий вызов ABAP, тайм-аут шлюза, сервис OData, не рассчитанный на параллельные запросы, или сетевую задержку в гибридной конфигурации. Тестирование одного бэкенда этого не найдёт.

Где может скрываться медленная плитка FioriКаждый уровень может пройти проверку сам по себе. Сквозное тестирование проходит весь путь, а именно его и ждёт пользователь.
  1. Запуск плиткиЛавина входов в начале смены
  2. Вызов ODataТайм-ауты шлюза, сервисы не рассчитаны на параллельную работу
  3. Обработка ABAPДолгие вызовы ABAP
  4. Чтение из базы данныхВыборки без ограничений по большим таблицам
  5. ОтрисовкаПлюс сетевая задержка для удалённых площадок

Одно время отклика, измеренное от начала до конца

У тестирования производительности SAP HANA при конверсии есть своя особенность. Стабильный код ECC ведёт себя иначе на базе данных в оперативной памяти. Многие программы становятся намного быстрее, а некоторые дают неожиданные профили на определённых структурах данных, поэтому регрессия тяжёлого собственного кода, специфичная для конверсии, обязательна.

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

Тестирование производительности должно пройти до go-live. Важными я считаю тесты параллельной работы: много пользователей и заданий одновременно обращаются к одним и тем же транзакциям, таблицам и сервисам.

Один пользователь, создающий заказ клиента за две секунды, почти ничего не доказывает. Тот же заказ, когда 150 человек вводят заказы, в фоне идёт прогон поставок, а интерфейс проводит входящие сообщения, это тест, который предсказывает первый день.

Эта таблица показывает, что доказывает каждый вид теста и когда его проводить:

ТестЧто он доказываетКогда проводитьЧто он обычно находит
Параллельная работаМного пользователей и заданий могут одновременно работать с одними и теми же объектамиRealize, когда настройки стабильны, и ещё раз до UATОжидания блокировок, лавины входов, узкие места шлюза
НагрузкаСистема укладывается во время отклика при ожидаемом пиковом объёмеRealize, после того как скрипты параллельной работы заработалиМедленные сервисы OData, тяжёлые Z-отчёты
СтрессГде система ломается выше проектных пределовДо UAT, если ожидается ростПробелы в сайзинге, пределы очередей
Длительная нагрузка (soak)Система часами держит стабильную нагрузкуДо UAT, в идеале на смоделированном закрытииРост потребления памяти, конфликты цепочек заданий при повторных прогонах
Сквозной тестВесь путь, который ждёт пользователь, укладывается в целевое значениеВместе с нагрузочными тестамиПроблемы, невидимые при тестировании каждого уровня по отдельности

Ключевое слово в нагрузочном тестировании: ожидаемый. Нужны реальные объёмы транзакций, числа пользователей и шаблоны сеансов. Нагрузочный тест, построенный на оценках объёма, про которые все и так знали, что они оптимистичны, даёт «пройдено», которое ничего не значит.

Длительную нагрузку пропускают чаще всего. Тестирование на объёмах вообще сокращают чаще всего, когда сроки сжимаются, и жалеют об этом больше всего.

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

  1. Пересменка и пиковый вход в систему. Когда несколько сотен пользователей одновременно открывают Fiori launchpad, аутентификация и отрисовка launchpad дают пик. Система, которая нормально работает вне пика, может стать непригодной в это окно, если одновременные входы никогда не тестировались.
  2. Закрытие месяца и года. Большие объёмы проводок, цепочки заданий со строгой последовательностью и финансовая команда, которая работает наперегонки с жёстким сроком. Прогоняйте цепочки заданий закрытия целиком на объёмах закрывающего периода, а не на средних дневных.
  3. Пересекающиеся фоновые задания. Пакетные задания обычно тестируют по одному, а это не отражает реальность. Одно плохо оптимизированное задание может заблокировать несколько других, и закрытие выходит за своё окно.
  4. Z-отчёты без ограничений выборки. Отчёт, который мгновенно отвечает на тестовых данных, может работать минутами на полном финансовом году. Тестируйте типичные и наихудшие выборки и блокируйте выборки без ограничений.
  5. Пользователи в нескольких регионах. Сетевая задержка влияет на каждую транзакцию. RISE переносит хостинг к SAP, но задержка по-прежнему зависит от выбранного региона и маршрута до ваших пользователей, поэтому тестируйте с самых удалённых площадок.

Где тестирование конверсии вписывается в общий план, описано в моём руководстве по миграции ECC в S/4HANA.

Тестовые данные продуктивного уровня

От данных зависит, имеет ли всё это хоть какой-то смысл. Я настаиваю на маскированных данных продуктивного уровня: продуктивный объём и продуктивная реалистичность, с замаскированными персональными и чувствительными полями.

Клиент с 200 000 открытых позиций заказов ведёт себя иначе, чем клиент с 5 000. Фильтры, которые мгновенно отвечают в скудном тестовом манданте, в продуктивной системе падают по тайм-ауту. Наполните объёмом области высокого риска, используйте репрезентативный набор транзакций и делайте реальные вызовы интерфейсов, где это возможно.

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

Согласуйте критерии с бизнесом в фазе Prepare, до любого прогона. Каждый критерий называет транзакцию или задание, нагрузку и порог.

Эти примеры показывают форму. Свои цифры задайте исходя из операционных потребностей:

ОбъектУсловие нагрузкиПорог прохожденияОтветственный
Создание заказа клиента (VA01 или приложение Fiori)150 одновременных пользователей, вводящих заказыМенее 3 секунд для 95% транзакцийВладелец процесса «от заказа до оплаты»
Первая загрузка Fiori launchpad в начале сменыПиковое число одновременных входов для самой крупной сменыМенее 5 секунд для 95% пользователейРуководитель ИТ-эксплуатации
Цепочка заданий закрытия месяцаОбъёмы закрывающего периода, полная последовательностьЗавершается в согласованное окно закрытия без прерыванийФинансовый контролёр
Интерфейс входящих заказовПиковый часовой объём сообщенийНет очереди сообщений старше 15 минутРуководитель по интеграции
Z-отчёт с большим объёмомПолный продуктивный объём данных, типичная выборкаМенее 60 секунд; выборки без ограничений заблокированыВладелец отчёта

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

Если система прошла проверку, потому что пользователи UAT сказали, что она работает быстро, у вас мнение, а не критерий приёмки. Сделайте результаты формальной контрольной точкой перед переходом, как описано в моём руководстве по quality gates в SAP. Общий план циклов с критериями входа и выхода для каждой фазы тестирования должен быть в вашей стратегии тестирования S/4HANA.

Риски производительности закладываются при проектировании: в выборе архитектуры, в структуре отчётов, в том, сколько логики вынесено в ABAP. Если ждать, пока система будет полностью построена, вы тестируете последствия. К тому моменту переделки обходятся дорого.

Инструменты тестирования производительности SAP

Тесту производительности нужны три вещи: генератор нагрузки, который умеет работать с протоколами SAP, мониторинг на стороне SAP и место для управления тестовыми сценариями и результатами. LoadRunner это инструмент нагрузки, которым пользовались мои команды в программах SAP. Назовите инструмент в плане тестирования рано, потому что на лицензии, генераторы нагрузки и навыки написания скриптов нужно время.

Основные варианты в 2026 году:

ИнструментРольЧто нужно знать
OpenText Professional Performance EngineeringГенерация нагрузкиПродукт, ранее называвшийся LoadRunner Professional. Его пакеты протоколов охватывают SAP, SAP GUI и SAP Web
Tricentis NeoLoadГенерация нагрузкиTricentis заявляет поддержку SAP GUI, Fiori, RFC и IDoc, и он может повторно использовать ресурсы Tricentis Tosca
Apache JMeterГенерация нагрузкиОткрытый исходный код. Генерирует HTTP-трафик, например вызовы Fiori и OData
SAP Cloud ALMУправление тестированиемГотовит и выполняет ручные и автоматические тестовые сценарии и отслеживает дефекты. Сам нагрузку не генерирует
SAP Solution ManagerУправление тестированиемОсновная поддержка заканчивается 31 декабря 2027 года, поэтому новую работу планируйте в Cloud ALM

Более широкий обзор функциональных инструментов и средств автоматизации есть в моём сравнении инструментов тестирования и проверки SAP. Инструмент важен меньше, чем скрипты, данные и критерии.

RISE with SAP разделяет ответственность

В RISE with SAP SAP отвечает за инфраструктуру: сайзинг, регион гиперскейлера, сеть и доступность платформы. Клиент и партнёр отвечают за уровень приложений.

Документ SAP о ролях и обязанностях в RISE говорит об этом прямо. Выполнение нагрузочных тестов и настройка дорогих SQL-запросов относятся к SAP Cloud Application Services за дополнительную плату. Если вы их не покупаете, эту работу делает клиент.

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

  1. SAP: доступность инфраструктуры и отклик на уровне платформы
  2. Партнёр: производительность приложений при определённой нагрузке, включая расширения и интеграционные потоки
  3. Клиент: результаты на уровне процессов, такие как время закрытия и пропускная способность по заказам, и решение о приёмке

Public cloud сужает объём

В public edition облачной ERP от SAP система работает на общей платформе, которой управляет SAP. Прежде чем планировать нагрузочный тест на тенанте, письменно спросите SAP, разрешён ли он и за сколько нужно предупредить.

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

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

  1. Считать функциональное тестирование тестированием производительности. Функциональные тесты доказывают, что транзакция даёт правильный результат. Они ничего не говорят о 150 людях, которые выполняют её одновременно.
  2. Оставлять производительность команде Basis. Basis отвечает за сайзинг и планирование заданий. Она не отвечает за проектирование отчётов, архитектуру сервисов OData или проектирование интеграционных потоков, а именно они определяют производительность приложений.
  3. Отдавать ответственность одному QA. QA проводит тесты и сообщает результаты, но решения, которые вызывают проблемы производительности, принимаются при проектировании. Руководителю тестирования или архитектору уровня программы нужны полномочия оспаривать их рано, а матрица RACI должна указывать, кто может заблокировать go-live из-за производительности.
  4. Принимать пробелы как известные проблемы. Большинство программ с проблемами производительности в продуктивной системе не пропускали тестирование. Они тестировали без согласованных критериев или тестировали, а затем принимали сбои под давлением графика.

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

Затем проверьте две вещи: что в плане есть обновление маскированных данных продуктивного объёма и что цикл тестирования параллельной работы заканчивается до начала UAT.

Если вам нужен независимый взгляд на план тестирования производительности или решение о go-live, я помогаю организациям с этим. Вы можете связаться со мной здесь.

Что такое тестирование производительности SAP?

Оно проверяет, как SAP ведёт себя при реалистичной нагрузке: время отклика пользовательских транзакций, время выполнения фоновых заданий, пропускную способность интерфейсов и использование ресурсов, когда одновременно работает много людей. Его нужно провести до go-live.

Функциональная правильность и производительность это разные свойства. Транзакция, которая правильно работает для одного пользователя, может упасть по тайм-ауту для 200.

Когда начинать тестирование производительности в программе SAP?

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

Завершите последний цикл до UAT, а не во время него. Дефекты производительности, найденные в UAT, сжимают график и создают давление принять их как известные проблемы.

В чём разница между нагрузочным тестированием и тестированием параллельной работы в SAP?

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

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

Какие тестовые данные использовать для тестирования производительности SAP?

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

Какие инструменты используются для тестирования производительности SAP?

Нагрузку создают генераторы нагрузки, такие как OpenText Professional Performance Engineering (ранее LoadRunner Professional), Tricentis NeoLoad и Apache JMeter. SAP Cloud ALM или SAP Solution Manager управляют тестовыми сценариями и результатами, а мониторинг на стороне SAP показывает, что делала система под нагрузкой.

Кто отвечает за тестирование производительности в RISE with SAP?

SAP отвечает за инфраструктуру: сайзинг, регион, сеть и доступность платформы. Документ SAP о ролях и обязанностях в RISE оставляет выполнение нагрузочных тестов и настройку дорогих SQL-запросов за клиентом, если только SAP Cloud Application Services не куплены за дополнительную плату.

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

Noel D'Costa

Автор

Noel D'Costa

25 лет в ERP-программах на SAP и Oracle: авиация, госсектор, финансы, ритейл и производство. Начинал в финансах. Я помогаю руководству честно определять масштаб трансформации, спасать проблемные программы и строить системы, которые выдерживают первый год продуктивной эксплуатации.

Следующий шаг

Ведёте ERP-программу прямо сейчас?

Если эта статья затронула программу, в которой вы участвуете прямо сейчас, 30-минутный разговор обычно даёт больше, чем ещё неделя внутреннего анализа.