Тест-дизайн для денег и дат
В финтехе самые дорогие баги живут в двух местах: суммы и время. Мой набор граничных проверок
💰 Деньги Плавающая точка. 0.1 + 0.2 = 0.30000000000000004. Проверьте, что суммы не считаются через float и double: введите 0.1 + 0.2 и сравните итог. Правило округления. Банковское (HALF_EVEN) и математическое (HALF_UP) расходятся на значениях вида x.5: в Python round(2.5) = 2. Сверьте реализацию с требованиями, иначе копейки «поплывут» на больших объёмах. Знаки после запятой зависят от валюты. У рубля 2, у японской иены 0, у кувейтского динара 3. Если система мультивалютная, не хардкодьте два знака. Отрицательные и нулевые суммы, максимум разрядности. Что будет, если прислать 0, −0.01 или 9999999999999.99? Сумма частей равна целому. Разделите 100 на 3 части и проверьте, куда ушла «лишняя» копейка.
🕐 Даты Конец дня. 23:59:59 и 23:59:59.999 - это разные моменты. Проверьте дедлайны именно на границе. Таймзоны. Сервер в UTC, пользователь в UTC+3: заявка, поданная в 01:00 по Москве, попадёт во вчерашний отчёт. Конец месяца. Что даст «31 января + 1 месяц»? 28 февраля, 3 марта или ошибку? Ответ должен быть в требованиях, а не в коде. 29 февраля. Проверьте годовые периоды и ежегодные события. Сохраните себе как чек-лист.
Что бы вы добавили? Всех обняла!