Формулы калькуляторов: считаю в браузере, проверяю тестами

0

Формулы ♡

Формулы калькуляторов: считаю в браузере, проверяю тестами
Верить
цифрам —
только после
тестов ♡

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

Где считается

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

У каждой формулы есть и серверная версия на PHP. Форму можно отправить на сервер, и результат будет тот же. Обе версии обязаны давать один ответ, поэтому в файле с расчётами для браузера так и написано: формулы совпадают с классами модулей. Как я проверяю, что они и правда совпадают, описано в статье про PHP и JavaScript.

Две версии, один ответ ♡
Две версии, один ответ ♡

Русские числа

Люди пишут «1 000,5»: с пробелом между разрядами и запятой. Для калькулятора это ещё не число, пока ввод не подготовлен. Привет, локали, мы по вам не скучали.

Поэтому разбор чисел у всех модулей общий. Он убирает пробелы, в том числе неразрывные, меняет запятую на точку, а если получилось не число, отвечает понятным «Введите число». Вывод работает в обратную сторону: 100000 превращается в «100 000», а 0,50 в «0,5».

Как я проверяю формулу

  1. Беру пример, ответ на который можно проверить вручную или другим расчётом.
  2. Записываю в тест точный ответ, а не «примерно».
  3. Запускаю тесты. Если ответ расходится, чиню формулу, а не тест (подкрутить тест до зелёного соблазн знакомый всем).
  4. Отдельно проверяю обратные расчёты: налог и зарплата «на руки» должны возвращать исходную сумму.

Контрольные цифры

Несколько случаев из тестов. Формулы отвечают на них так:

  • 8 884,88 ₽ платёж по кредиту 100 000 ₽ на год под 12%
  • 122 039,10 ₽ 100 000 ₽ под 10% на 2 года, проценты добавляются каждый месяц
  • 110 471,31 ₽ вклад 100 000 ₽ под 10% на год с капитализацией
  • 23 890,78 ₽ отпускные за 14 дней при доходе 600 000 ₽ за год

Про округление

Формула, которая выглядит верной, легко ошибается на округлении, и копейки тут вообще не шутка. Поэтому в тестах у меня точные значения до копейки: если ответ изменится хотя бы на копейку, тест сразу скажет об этом.

Что покрыто тестами, а что нет

Тестами закрыты платёж по кредиту с переплатой, сложный процент и вклад с капитализацией и без, НДФЛ в обе стороны, отпускные, площадь, обои, объём бетона и фундамент, единицы, температура, даты и рабочие дни.

Чего калькулятор не обещает: предложения банка (это прикидка порядка суммы), замены бухгалтера, точного расхода материалов (запас на подрезку зависит от укладки) и учёта праздников в рабочих днях, потому что производственный календарь каждый год меняется.

Тест проверяет только то, о чём я подумала заранее, поэтому новые случаи буду добавлять, если кто-то найдёт расхождение. Нашли косяк, пишите в комментариях, я не обижусь. Ну, почти. А как сделать, чтобы такие страницы вообще нашли, читайте в статье про SEO для калькуляторов.

Комментарии

Буду рада вашим мыслям, идеям и вопросам!
Давайте обсуждать ♡

Пока никто не написал.
Станьте первым! ♡