Как строить небольшие проверки поведения ABAP-кода: тестовые классы, фикстуры, тестовые двойники и границы между модульными и интеграционными тестами.
4 мин чтения·База знаний
Ревизия 2Общие понятияЧастичное покрытиеКонтекст: CTX-GENERALдокументальная опора: недостаточно данных
Справочный материал. Контракты данных, архитектурные решения и ограничения применения. Источники приведены в материалах, где используются внешние основания.
ABAP Unit - встроенная в ABAP платформа проверки поведения небольших тестируемых единиц, например методов классов. Тесты пишутся на ABAP в тестовых классах и могут запускаться через инструменты разработки и проверки кода. Это позволяет повторять проверку после изменения логики и включать тесты в практику контроля качества; наличие тестового класса само по себе не доказывает полноту проверок.
Тестовый класс помечается FOR TESTING, а тестовые методы вызываются фреймворком ABAP Unit. Условия проверяются утверждениями, в частности методами CL_ABAP_UNIT_ASSERT. Каждый тест должен выражать наблюдаемое поведение и иметь понятное имя: исходное условие, действие и ожидаемый результат должны быть различимы.
Тестовая фикстура подготавливает минимальное состояние для проверки и очищает ресурсы, если они создавались. Изолируйте тестируемую логику от базы данных, часов, пользователя, внешнего сервиса и случайных исходных данных там, где эти зависимости не являются предметом теста. Для этого проектируйте явные интерфейсы и передавайте зависимости; тестовый двойник заменяет реальную зависимость контролируемым поведением.
Для финансовой логики полезны проверки границ периода, нулевых и отрицательных значений, округления, валюты и единиц измерения, дубликатов и повторной обработки. Ожидаемые суммы и строки рассчитывайте независимо от производственного кода, иначе одна и та же ошибка может присутствовать в реализации и тесте.
Модульный тест проверяет логику изолированно и быстро. Он не подтверждает корректность customizing, авторизаций, интеграции с реальной базой, фонового планирования или результата полного финансового процесса. Для этого нужны отдельные интеграционные и сквозные проверки в подходящей системе с фиксированными входными данными и контрольными результатами.
У тестовых классов могут быть атрибуты уровня риска и длительности. Выбирайте их честно по побочным эффектам и стоимости выполнения. Документация SAP указывает, что ABAP Unit нельзя запускать в продуктивно используемых системах; исполняйте тесты в согласованной среде разработки или тестирования.
Результат нужно читать только в границах реально выполненной проверки. Документация описывает задокументированное поведение и ограничения инструмента, но не подтверждает настройку конкретной системы или выполнение кода. Статический анализ, тест, трасса и сквозная сверка дают разные свидетельства.
Вид свидетельства
Что он подтверждает
Чего он сам по себе не подтверждает
Документация SAP
Описанный контракт, предпосылки и ограничения для указанного продукта и версии
Наличие настройки, подходящих полномочий или успешный запуск в целевой системе
ABAP Unit
Результат выбранных тестовых методов для кода, входов и зависимостей конкретного запуска
Полноту тестовых случаев, интеграцию с реальной конфигурацией или правильность всего финансового процесса
ATC
Найденные или не найденные замечания в выбранном наборе объектов при заданном варианте и доступных проверках
Поведение во время выполнения; чистый результат ATC не заменяет ABAP Unit или процессную сверку
Отладчик и runtime/SQL trace
Наблюдаемое поведение конкретного сценария и выбранные во время запуска показатели
Корректность других входов, систем, нагрузок и ветвей выполнения
Интеграционная или сквозная проверка с финансовой сверкой
Результат конкретного потока с зафиксированными данными, настройками и контрольными суммами
Все возможные сценарии и версии, которые не входили в проверку
Для воспроизводимости прикладывайте идентификатор системы и клиента, продукт и релиз, версию кода или транспорта, дату запуска, имя теста или вариант ATC, область объектов, параметры и подмены зависимостей, фактический отчёт и ограничения охвата. Для трассы фиксируйте пользователя/запуск, сценарий и временной интервал. Для финансовой проверки сохраняйте исходный снимок и сверяйте ключи и суммы в нужных разрезах. Не записывайте секреты и персональные данные в общедоступные отчёты.
ABAP: отладчик, трассы и ATC подробнее разбирает, что показывают статический анализ, отладчик и трассировка. Здесь описан порядок интерпретации свидетельств; ABAP Unit, ATC и SAP runtime для этой публикации не запускались.
ABAP Unit is an integrated framework for checking small testable units such as class methods. Tests are written in ABAP test classes and can run through development and code-quality tools. This supports repeatable checks after changes, but the presence of tests alone does not prove that coverage is complete.
A test class is marked FOR TESTING, and the framework calls its test methods. Assertions, including methods of CL_ABAP_UNIT_ASSERT, verify conditions. Each test should express observable behavior with a clear setup, action, and expected result.
A fixture creates the minimum state needed and cleans up resources where necessary. Isolate tested logic from databases, clocks, users, external services, and random inputs when those dependencies are not the test subject. Design explicit interfaces and inject dependencies; a test double substitutes controlled behavior.
For financial logic, useful checks include period boundaries, zero and negative amounts, rounding, currencies and units, duplicates, and repeated processing. Calculate expected amounts independently from production code so the same defect is not copied into implementation and test.
A unit test checks isolated logic quickly. It does not establish correctness of customizing, authorization, integration with a real database, background scheduling, or a complete financial process. Those require separate integration and end-to-end checks in a suitable system with fixed inputs and control results.
ABAP Unit test classes can have risk and duration attributes. Choose them according to side effects and execution cost. SAP documentation states that ABAP Unit cannot be run in productively used systems; run tests in an agreed development or test environment.
Interpret each result within the boundary of the check that actually ran. Documentation describes documented behavior and tool limits; it does not confirm a target system's configuration or code execution. Static analysis, tests, traces, and end-to-end reconciliation provide different kinds of evidence.
Evidence
What it supports
What it does not establish by itself
SAP documentation
The documented contract, prerequisites, and limits for the stated product and version
Configuration, authorizations, or a successful run in the target system
ABAP Unit
The result of selected test methods for the code, inputs, and dependencies in that run
Complete test coverage, integration with real configuration, or correctness of the full financial process
ATC
Findings or no findings for the selected objects under the chosen variant and available checks
Runtime behavior; a clean ATC result does not replace ABAP Unit or process reconciliation
Debugger and runtime/SQL trace
Observed behavior and selected measurements for one executed scenario
Correctness for other inputs, systems, loads, or execution paths
Integration or end-to-end check with financial reconciliation
The outcome for one flow with identified data, settings, and control totals
Scenarios and releases outside the executed check
For reproducibility, retain the system and client identifiers, product and release, code or transport version, execution date, test name or ATC variant, object scope, parameters and dependency doubles, actual report, and coverage limits. For traces, record the user/run, scenario, and time window. For financial checks, preserve the source snapshot and reconcile keys and amounts at the required dimensions. Do not put secrets or personal data into public reports.
ABAP: debugger, traces, and ATC explains what static analysis, debugging, and tracing can show. This article describes how to interpret the evidence; ABAP Unit, ATC, and SAP runtime were not run for this publication.