Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет kouzdra ([info]kouzdra)
@ 2007-10-31 18:25:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Entry tags:Компутерщина

Программистское
А вот такая естественная вещь - вот есть относительно свежевнесенный баг. Есть тест, который его выявляет.
Есть cvs (или там svn) с сорцами. В принципе - выяснить какое изменение привело к его появлению - довольно механическая
задача - взять и прогрнать его на всех версиях (а на практике - скорее методом половинного деления).

Интересно - какие-нибудь системы управления разработкой такое делают?



(Добавить комментарий)


[info]nit
2007-10-31 16:50 (ссылка)
Называется blame, в svn есть,
в git тоже есть.

(Ответить) (Ветвь дискуссии)


[info]pzz
2007-10-31 17:46 (ссылка)
Не надо путать annotate с тем, о чем говорит kouzdra.

Для того, о чем пишет kouzdra требуется, как минимум, интеграция системы контроля версий с автоматическими тестами. Интересно, есть хоть одна юзабельная система контроля версий, в которой это есть? (Rational ClearCase, наверное, может все, но говорят, им пользоваться невозможно).

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]gogabr
2007-10-31 19:40 (ссылка)
aegis

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]kouzdra
2007-10-31 19:49 (ссылка)
В принципе - достаточно интеграции системы тестирования с системой контроля версий. Я это к тому, что в моем случае скриптик-то написать можно за полдня максимум.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]gogabr
2007-10-31 20:00 (ссылка)
Aegis вообще очень сильно подминает весь процесс разработки под себя, включая тестирование. Она просто не даст закоммитить изменение, если оно не сопровождается тестом, и если старые тесты ломаются.
Другое дело, что нет там, насколько я знаю, такого: к уже имеющемуся коду добавить тест и проверить на старых версиях. Вроде бы, в Вашем случае именно это требуется.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]pzz
2007-10-31 23:08 (ссылка)
Ужос какой. Прям диктатура. Наверняка нормальному человеку при такой тоталитарной системе контроля версий жить невыносимо...

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]gogabr
2007-11-01 00:53 (ссылка)
Ужос-ужос.
Я ее в свое время за то и выбрал, что она диктует некоторую формализацию отношений в команде и приучает к дисциплине. Меня в том числе.
Разумеется, для конкретного изменения тесты отменить можно, но при этом хотя бы сам чувствуешь себя виноватым. Как когда goto пишешь или set! в почти-функциональном языке.

(Ответить) (Уровень выше)


[info]nit
2007-11-01 07:09 (ссылка)
Ой, да, был невменяем, перепутал.

(Ответить) (Уровень выше)


[info]pzz
2007-10-31 17:49 (ссылка)
Мне лично всегда казалось, что проще взять и починить баг, чем искать по старым версиям, когда он появился.

Поиск виноватого изменения лишь один из возможных способов локализации бага. Очень медленный и нудный, притом.

(Ответить) (Ветвь дискуссии)


[info]lenkasm
2007-10-31 17:51 (ссылка)
Если впадлу думать, наверное.

(Ответить) (Уровень выше)


[info]nvm
2007-10-31 19:22 (ссылка)
да, один из многих. Но иногда проще им воспользоваться, чем понять, что именно QA имели в виду.

(Ответить) (Уровень выше)


[info]kouzdra
2007-10-31 19:50 (ссылка)
Почему - я управился за пару часов. При этом совершенно не был уверен, что баг находится в моей зоне отвественности. Но еще одна вещь, которую я понял - что тоже самое в принципе мог сделать и скрипт вообще без моего вмешательства в процесс.

Таки машина должна работать, а человек думать :)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]pzz
2007-10-31 23:02 (ссылка)
В хорошо написанной программе ошибочное изменение должно приводить к assert'ы, из которого несложно понять, в чем именно заключается ошибка :-)

(Ответить) (Уровень выше)


[info]nvm
2007-10-31 20:09 (ссылка)
и плюс ещё вот -- если изменение что-то поломало, всё равно надо на него посмотреть внимательнее, может и ещё много чего сломалось.

(Ответить) (Уровень выше)


[info]qwerty
2007-10-31 21:04 (ссылка)
Если баг в сложной программе, то вполне подходящий способ. Пример - малость попортить сборщик мусора.

(Ответить) (Уровень выше)


[info]qwerty
2007-10-31 21:01 (ссылка)
По-моему, гораздо интереснее было бы сделать аналогичное с гораздо более мелкими изменениями, чем те, что кладутся в базу. Типа, есть рабочая (удовлетворяющая всем тестам) программа, к ней инкрементально прилагаются трансформации, оставляющие ее синтаксически корректной, результат оказался нерабочим, найти кривую трансформацию.

(Ответить)


[info]max630.livejournal.com
2007-11-01 03:51 (ссылка)
в darcs есть команда trackdown. не пользовался

(Ответить)


[info]pzz
2007-11-01 18:01 (ссылка)
Удивительное рядом. Таки наполовину это сделано в Mercurial, причем утверждается, что идея пришла из Git'а:

http://www.selenic.com/mercurial/wiki/index.cgi/BisectExtension

Собственно тестирование как таковое эта тулза оставляет в качестве домашнего задания пытливому читателю, но двоичный поиск делает сама.

(Ответить)

Continous Integration
[info]belonesox
2007-11-28 23:47 (ссылка)
В этом то и фишка Continous Integration, что прогон всех автоматических тестов выполняется сразу после каждого коммита. Т.е. штраф сразу после нарушения, а не детективное расследование задним числом. А для этого Cruise Control.

(Ответить)