Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Тестирование передачи значений через параметры в SQL запрос #4405

Open
gsbelarus opened this issue Jun 28, 2023 · 2 comments
Assignees
Milestone

Comments

@gsbelarus
Copy link
Member

gsbelarus commented Jun 28, 2023

  1. Создать табличку в базе с полями всех возможных типов:
    1. INT16
    2. INT32
    3. INT64
    4. SINGLE PRECISION
    5. DOUBLE PRECISION
    6. NUMERIC -- необходимое количество полей, для того чтобы протестировать 0, 1, 2, 4, 6, 8 знаков после запятой и размещение значений в INT16, INT32, INT64 поле. Если разработчик не понимает как хранятся в базе данных значения типа NUMERIC -- он должен обратиться к документации Firebird.
    7. наш булевский тип с использованием домена DBOOLEAN.
  2. Написать макрос для тестирования:
    1. В основе тестирования лежит запись в поле некоторого значения через параметр, т.е. запрос вида INSERT INTO table (field) VALUES (:value), последующее считывание запросом SELECT field FROM table и сверка с эталонным значением. Запись, после окончания теста следует удалить запросом DELETE FROM table.
    2. Каждое поле протестировать на запись в него NULL, Empty, Undefined, True, False значений.
    3. Создаем тестовую матрицу, где храним для каждого из полей (из п.1) список записываемых значений и соответствующих им правильных считываемых значений.
    4. Список тестируемых значений должен включать 0, 1, -1, максимальное значение для данного типа, минимальное значение, максимальное значение +1, минимальное значение -1, другие тестовые величины, чтобы протестировать корректное сохранение нужного количества знаков после запятой.
    5. Согласно матрице, прогоняем тест с записью-чтением для кадого типа поля.
    6. При несоответствии записанного и считанного значения -- сообщаем пользователю.
  3. Сохраняем таблицу и макрос в ПИ Тестирование.Платформа.БазаДанных.ТипыДанных. Записываем в репозиторий gedemin-apps в корневую папку Тестирование.

Обратить внимание Записываемые значения и считываемые в некоторых случаях могут отличаться. Это нормально. Например при записи числа с 5 знаками после запятой в поле NUMERIC с четырьмя знаками. Главное, чтобы округление в таком случае выполнялось корректно. Проверить серединные значения! И округления для четных и нечетных целых частей числа. Положительных и отрицательных.

@Polfath
Copy link

Polfath commented Jul 28, 2023

AsVariant во всех случаях работает корректно. Пробовал все значения как ParamByNameA.sVariant и как FieldByName.AsVariant

@Polfath Polfath moved this to Ready for verification in Delphi7 Jul 28, 2023
@gsbelarus
Copy link
Member Author

надо проверить все As... AsInteger, AsFloat, AsBoolean... и т.п.

только не очень много на это потратить времени.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Ready for verification
Development

No branches or pull requests

2 participants