В своем проекте я некоторое время назад использовал сторонний компонент XComboBox и наполнил его список доступных элементов вот таким образом:
foreach(object obj in list) {
comboBox.Items.Add(obj.Name);
}
Однако через очень небольшое время один из пользователей сообщил мне, что некоторые тексты с символами HTML разметки показываются неверно. Это частая ошибка в разработке веб приложений и решается она довольно легко с помощью вызова всего лишь одного метода:
foreach(object obj in list) {
comboBox.Items.Add(HttpUtility.HtmlEncode(obj.Name));
}
На этот код я написал юниттест и проверил что в контроле текст в доступных элементах действительно правильно обработан для различных ситуаций. В таком виде код успешно помогал пользователям делать их работу несколько лет...
Однако недавно пришел другой клиент и сообщил, что моя программа замечательная, только некоторые символы его родного турецкого языка она превращает в "ü"... Видимо опять кодировка... Но тесты ведь ходят... Как же так?
Оказывается, разработчики контрола рассмотрели необходимость явного кодирования текстов в коде приложений и в последней версии контрол сам выполняет это кодирование. Мне нужно просто удалить свой вызов этого метода.
Эта ситуация не входит в круг задач, которые решают юнит тесты: мой метод по прежнему работает в соответствии с определенной для него спецификацией. Произошли внешние изменения, которые должны были вылиться в изменение спецификации на мой код. Быстрая и внутренняя обработка таких ситуаций - это задача для другого инструмента обеспечения качества, нацеленного именно на долгосрочные проекты, мигрирующие на новые версии компонент, браузеров или операционных систем.
ЗЫ: Какие тесты мне помогают?
ЗЫ: Какие тесты мне помогают?
Комментариев нет:
Отправить комментарий