|
11.03.2011, 09:57 | #1 |
Участник
|
|
|
11.03.2011, 11:09 | #2 |
MCP
|
Цитата:
Вы работали с таблицей, в которой система заполняла поле для вашего алгоритма, ваш алгоритм успешно оттестирован и работает уже много лет. А потом объявляется разработчик, который не знал про то что вы завязаны на это поле (поле нестандартное, стандарт не так часто ломают), и изменяет код заполнения этого поля. Его задача тестируется - переносится на рабочую, а ваш алгоритм превращается в реальную ошибку. Виноват в такой ситуации не ваш код, он был действительно работающим, тут вы правы. Но бывают и такие "преобразования Фурье" Последний раз редактировалось kornix; 11.03.2011 в 11:11. |
|
12.03.2011, 22:43 | #3 |
Участник
|
Цитата:
Сообщение от kornix
Вы работали с таблицей, в которой система заполняла поле для вашего алгоритма, ваш алгоритм успешно оттестирован и работает уже много лет. А потом объявляется разработчик, который не знал про то что вы завязаны на это поле (поле нестандартное, стандарт не так часто ломают), и изменяет код заполнения этого поля. Его задача тестируется - переносится на рабочую, а ваш алгоритм превращается в реальную ошибку.
Виноват в такой ситуации не ваш код, он был действительно работающим, тут вы правы. ..... Последний раз редактировалось Мартынов Дмитрий; 12.03.2011 в 22:44. Причина: ино |
|
12.03.2011, 23:47 | #4 |
Участник
|
Цитата:
Сообщение от kornix
потом объявляется разработчик, который не знал про то что вы завязаны на это поле (поле нестандартное, стандарт не так часто ломают), и изменяет код заполнения этого поля. Его задача тестируется - переносится на рабочую, а ваш алгоритм превращается в реальную ошибку.
Виноват в такой ситуации не ваш код, он был действительно работающим, тут вы правы. Но бывают и такие "преобразования Фурье" |
|
13.03.2011, 11:59 | #5 |
MCP
|
Цитата:
Сообщение от gl00mie
По-моему, если якобы протестированный код при изменении входных данных перестает работать (и не просекает, что данные некорректны), то такой код просто недостаточно корректно реализован с точки зрения контрактного программирования. Более скользкие случаи - это расширение списка значений enum'ов, которые на самом деле могут стать подставой (как, к примеру, RContractPartnerType, где всю жизнь были лишь клиенты и поставщики, а потом вдруг нарисовался персонал), но строго говоря даже при работе с каким-нить ModuleCustVend надо в switch предусматривать default, где выбрасывать исключение - мол, не знаю, что сделать с новым значением.
Цитата:
а его незащищенность от подобных изменений, а именно: отсутствие регрессионнных тестов, проверяющих функциональность данного кода.
|
|
13.03.2011, 16:32 | #6 |
Участник
|
Цитата:
К тому же тесты сейчас делают редко
Цитата:
причина проста: код может прекрасно пройти все тесты, но при этом оказаться не пригоден к задаче..
Цитата:
Так что главный тест - это работа в реальных условиях, а следовательно описанные выше баги неизбежны...
Цитата:
2 kuntashov: Вы делаете регрессионное тестирование каждой модификации?
__________________
С уважением, Александр Кунташов |
|
13.03.2011, 11:16 | #7 |
Участник
|
а его незащищенность от подобных изменений, а именно: отсутствие регрессионнных тестов, проверяющих функциональность данного кода.
__________________
С уважением, Александр Кунташов |
|
13.03.2011, 11:47 | #8 |
Участник
|
Цитата:
К тому же тесты сейчас делают редко - причина проста: код может прекрасно пройти все тесты, но при этом оказаться не пригоден к задаче... Опять к тому, что вопрос написания правильных тестов сравним по сложности с написанием ТЗ и кода... Кто будет писать тесты? Заказчик - он не умеет, затем он и нанял специалиста. А специалист сам себе напишет правильных тестов и сдаст проект, который не работает. Так что главный тест - это работа в реальных условиях, а следовательно описанные выше баги неизбежны... Последний раз редактировалось Мартынов Дмитрий; 13.03.2011 в 11:52. Причина: дополнил |
|
|
За это сообщение автора поблагодарили: kornix (1). |