Магические числа.
Рассмотрим форму, о которой идет речь [1].
Приемочный тест: Заполнить обязательные поля и сохранить.
В ходе дальнейшего тестирования выясняется, что приложение не падает, если войти в комбобокс и выбрать форму собственности. Можно даже ту же самую.
Дальнейшее исследование показывает:
• Если форму собственности не выбирать, то значение не устанавливается и передается NULL
• В БД данных запрещен ввод неопределенного значения в данное поле и проставлено значение по умолчанию «2»
• Ранее такой идентификатор имела запись в справочнике форм собственности, но в связи с изменением политики идентификаторов, ей был присвоен другой номер.
Ошибки программирования. Несмотря на отображаемое значение по умолчанию, форма передает неустановленное значение. Это плохая практика. Если отображаешь значение по умолчанию, то устанавливай его принудительно в форме, на уровне пользовательского интерфейса. Все остальные уровни: бизнес логика, ядро, БД – должны получать правильные данные. Но самое отвратительное, это способ постановки заплатки. Программист перенес часть логики программы на уровень хранимых данных, использовав магическое число “2″. Это примерно то же самое, как если бы правила умножение в Excel, зависели от введенных данных [2].
И самый главный вывод для тестера:
Даже если оттестированный код и структура БД не менялись, и вы проверили это лично, не надеясь на заверения программиста, приемочные тесты прогнать все-таки стоит.
——————————————————————————
Примечания.
[1] Форма упрощена.
[2] Иногда, без магических чисел не обойтись.
17 Июль 2008 в 11:56
Сергей, спасибо! Очень интересный текст. Жаль, рисунок в начале данной заметки не отражается. Может исправишь?