Каким образом можно правильно проверить математическую формулу?

Добрый день! У меня есть вопрос. У нас есть формула (предположим, xyz=c), где xyz представляет собой набор коэффициентов (констант), которые зависят от выбора пользователя. Я провела тестирование с помощью PyRVA и получила 63 комбинации на выходе, не учитывая негативные проверки. Несмотря на то что с точки зрения тестирования это может показаться небольшим числом, в условиях ограниченного времени это может быть критично, учитывая необходимость написания тестов.

В связи с этим, достаточно ли будет прогнать каждый коэффициент один раз, чтобы убедиться, что: во-первых, система принимает эти поля; во-вторых, коэффициенты соответствуют заданным значениям; в-третьих, система производит правильные расчёты? Например, для x1y1z1=c1 и x2y2z2=c2.
  • 21 февраля 2025 г. 20:44
Ответы на вопрос 2
Добрый день! Проверка математической формулы и правильности ее реализации – важный этап в тестировании. Чтобы убедиться, что ваша формула работает корректно в разных условиях, можно следовать ряду рекомендаций:

1. **Проверка граничных значений**: Проверьте крайние значения входных параметров (максимум, минимум) для каждого коэффициента. Это поможет выявить ошибки, которые могут проявляться именно на границах допустимых значений.

2. **Тестовые случаи**: Создайте отдельные тесты для каждого из 63 наборов коэффициентов (а также для особых случаев, например, если один из коэффициентов равен 0, если c < 0 и т.д.). Это поможет убедиться, что формула работает корректно при каждом из конкретных значений.

3. **Позитивные и негативные тесты**: Как вы уже упомянули, позитивные тесты проверяют, что система принимает корректные значения. Не забудьте добавить негативные проверки. Например, что произойдёт при вводе нечисловых значений? Как система реагирует на некорректные значения (например, отрицательные, если они не допустимы)?

4. **Тестирование логики расчёта**: Для каждого теста проверки работы формулы сравнивайте результаты, полученные из системы с ожидаемыми значениями, рассчитанными вручную или с использованием другого инструмента. Если значения совпадают для всех тестов, это хороший показатель правильности реализации.

5. **Кросс-тестирование**: Если возможно, используйте различные инструменты или библиотеки для кросс-проверки результата (например, используйте Excel или другой язык программирования).

6. **Регрессионное тестирование**: Если ваша формула или расчетные методы будут изменяться в будущем, позаботьтесь о том, чтобы сохранить тестовые случаи для автоматизированного регрессионного тестирования. Это поможет быстро обнаружить ошибки при внесении изменений.

7. **Документация и код-ревью**: Обязательно документируйте ваши тесты и результаты. Проведение код-ревью с другими членами команды может помочь выявить потенциальные пропуски в тестировании.

В итоге, повторный прогон каждого коэффициента должен быть частью комплексного подхода к тестированию, который включает как позитивные, так и негативные сценарии, а также тестирование на границах. Это поможет убедиться в надежности и правильности формулы.
достаточно ли будет, если я прогоню каждый коэффициент по 1 разу
Тут нет общего ответа. Иногда можно срезать углы, иногда нельзя.
предположим xyz=c
Тогда срезайте, если уверены, что кроме этой формулы больше нигде не используются x,y,z.
А предположим, что 1/(x+y-z+4)=c, а у вас случайно не будет теста x=1, y=1, z=6 (или аналогичного), который обязан зафейлиться.
"А-а-а? Э-э-э!" (с)

Необходимость тех или иных тестов можно понять только когда известны зависимости, известны диапазоны, известна логика программы (что и для чего мы вычисляем, какой смысл несёт результат работы программы). Если всего этого не знать, то будет по принципу GIGO - garbage in, garbage out - бесполезная работа.
Похожие вопросы