Архив за Июнь, 2005

Магические числа.

Пятница, Июнь 17th, 2005
При прогоне приемочных тестов была обнаружена ошибка. Приложение падало при попытке сохранения новой формы.
Рассмотрим форму, о которой идет речь [1].
form_1.PNG
Форма, как форма. «Название организации» обязательно к заполнению, «Комментарий» необязателен, «Форму собственности» нельзя не выбрать (комбобокс без неопределенного значения).
Приемочный тест: Заполнить обязательные поля и сохранить.
Это было странно. Данный участок кода ранее был хорошо оттестирован и не нуждался в доработке. Беседа с программистами еще более увеличила удивление. Очень давно в код не вносилось изменений. Структура БД так же не менялась. Но приложение падает. Стектрейс говорит о нарушении ссылочной целостности. При этом в БД такая форма есть.
В ходе дальнейшего тестирования выясняется, что приложение не падает, если войти в комбобокс и выбрать форму собственности. Можно даже ту же самую.
Дальнейшее исследование показывает:
• Если форму собственности не выбирать, то значение не устанавливается и передается NULL
• В БД данных запрещен ввод неопределенного значения в данное поле и проставлено значение по умолчанию «2»
• Ранее такой идентификатор имела запись в справочнике форм собственности, но в связи с изменением политики идентификаторов, ей был присвоен другой номер.

Ошибки программирования. Несмотря на отображаемое значение по умолчанию, форма передает неустановленное значение. Это плохая практика. Если отображаешь значение по умолчанию, то устанавливай его принудительно в форме, на уровне пользовательского интерфейса. Все остальные уровни: бизнес логика, ядро, БД – должны получать правильные данные. Но самое отвратительное, это способ постановки заплатки. Программист перенес часть логики программы на уровень хранимых данных, использовав магическое число “2″. Это примерно то же самое, как если бы правила умножение в Excel, зависели от введенных данных [2].

И самый главный вывод для тестера:
Даже если оттестированный код и структура БД не менялись, и вы проверили это лично, не надеясь на заверения программиста, приемочные тесты прогнать все-таки стоит.
——————————————————————————
Примечания.
[1] Форма упрощена.
[2] Иногда, без магических чисел не обойтись.

Тестирование полей ввода

Понедельник, Июнь 13th, 2005

Для полей ввода проверяются:

  1. Обработка корректных данных
  2. Обработка граничных условий
  3. Обработка некорректных данных внутри граничных условий
  4. Обработка некорректных данных вне граничных условий
  5. Обработка сложных данных

(more…)

Ошибка с двадцатилетним стажем.

Пятница, Июнь 10th, 2005

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

(more…)