Выбор системы отслеживания ошибок

9 января 2009 в 19:30 | |

Для «Алтимы», как и для любой организации, занимающейся разработкой и поддержкой программных продуктов, проблема организации рабочего процесса стоит достаточно остро. Как правило, все начинается просто — с фиксации проблем и отслеживания процесса их решения, но с ростом клиентской базы этого становится недостаточно. Появляется необходимость в ведении общей «базы знаний» компании, учета рабочего времени сотрудников, организации командной работы и кучи всего остального.

Вариантов решения проблемы несколько.

  1. Оставить все как есть, пусть разработчики сами решают как им быть дальше. Вариант самый простой, но про последствия писать, думаю, излишне.
  2. Напрячь разработчиков — пусть пишут «самую лучшую в мире BTS в отдельно взятой конторе». Если клиенты могут подождать, и денег/времени не жалко — отличный вариант.
  3. Использовать готовое решение и при необходимости доработать его под свои нужды. Вот на этом, пожалуй и остновимся.

Итак, перед нами стоит задача выбора системы отслеживания ошибок (bug tracking system, BTS) удовлетворяющую следующим базовым требованиям

  • Поддержка большого количества проектов
  • Удобный и функциональный web-интерфейс
  • Наличие интеграции с системами контроля версий
  • Поддержка многоязычности
  • Учет и планирование рабочего времени
  • Организация внутрикомандного взаимодействия разработчиков
  • Работа с базами знаний (к примеру, wiki)
  • Легкость доработки под нужды компании.
  • Легкость установки и сопровождения.

В процессе поиска было найдено несколько десятков различных решений от самых разных производителей.

Закрытые проприетарные разработки мы отметаем сразу как минимум потому что что-либо поменять в них при не обходимости возможным не представлятся.

Open Source разработки представлены добрым десятком проектов. Рассмотрим самые популярные из них.

Итак, список кандидатов:

  • Bugzilla
  • Mantis Bug Tracker
  • Trac
  • Redmine

Начнем с Bugzilla. (http://www.bugzilla.org)

Проект достаточно взрослый, первый релиз вышел в 2001 году. Написан на perl. В дистрибутиве debian lenny присутствует, что довольно таки упрощает его установку.

Ставим, смотрим.

bugzilla-1bugzilla-2bugzilla-3

Картина, прямо скажем, не очень. Поддержки разных языков из коробки нет (хотя можно загрузить и поставить ручками). Интеграции хотябы с SVN — нет. Wiki отсутствует, как прикрутить — сходу не ясно. Управление правами пользователей довольно неочевидно. Пробуем создать новый проект, пару-тройку багов и понимаем, что до вменяемого вида его еще пилить и пилить.
Смотрим на полсотни перловых скриптов, открываем process_bug.cgi с 2200+ строк перлового кода и молча сносим bugzilla до лучших времен.

Следующий кандидат — Mantis Bug Tracker. (http://www.mantisbt.org)
Написан на php, в установке простой донельзя.

mantis-1mantis-2mantis-3

Первое что бросается в глаза — весьма унылый внешний вид. Понятно разработчики настолько суровы, что им в общем-то все равно, как интерфейс сверстан, но ведь есть еще и клиенты, которым иногда тоже нужно открывать баги, принимать участие в обсуждениях.. Идем дальше. Wiki нет, хотя судя по документации некая Docu Wiki к нему прикручивается, интеграциию с svn видимо тоже придется реализовывать кувалдой и сварочным аппаратом. Таймтрекинг присутствует в зачаточном состоянии в виде какого-то плугина. Особенно настораживают многочисленные отзывы о проблемах с unicode. Взглянув на исходники, мысль о переделке или дописыванию рассасывается как по волшебству — около мегабайта слабо струкурированного php кода без малейшего намека на mvc и на стройный api мало кого вдохновит на подобные подвиги. Вывод: лучше не надо.

Trac (http://trac.edgewall.org)

trac-1trac-2trac-3

Написан на питоне. Поставился на первый взгляд без особых проблем, но дальшейшие разборки с отдельными модулями и apache преватились в довольно увлекательный квест. Вдоволь наматерившись я его таки поборол, но пожелать подобного развлечения могу разве что конкурентам (и то не всяким). Как впоследствии оказалось, я не один такой счастливчик — 161000 результатов в выдаче гугла по запросу ‘trac install problem’ мягко говоря настораживают.
В целом система довольно приятная, но есть ряд довольно серьезных «но».
Работа с несколькими проектами требует довольно нетривиальных телодвижений, в частности создания отдельного окружения для каждого нового проекта. Когда их 3-5 это еще терпимо, но если 30-50? а 150? Да и python как-то оптимизма не добавляет…
Вывод: проект интересный, перспективный, но не для нас. увы.

Redmine. (http://www.redmine.org)

redmine-1redmine-2redmine-3

Написан на Ruby on Rails. Установился влёт — читая документацию, на установку я затратил около 15 минут. Сразу порадовала поддержка целой кучи баз данных — начиная от sqlite и заканчивая postgres. Интерфейс — весьма приятный, кое-где используется ajax, формы читабельные и понятные. В общем — клиенту показать не стыдно. Кстати, из коробки присутствует поддержка около 30 языков (в том числе русский и украинский). Пристуствует встроенный движок wiki, форум, совместногое хранилище файлов. Интеграция из коробки с svn, cvs, git, mercurial и рядом других систем хранения версий. Гибкая и, главное, понятная система разграничения прав доступа пользователей, дополнительных полей в сообщениях об ошибках и проектах. Не найдя сходу к чему придраться, решил заглянуть в код чтобы забраковать по причине сложности доработки, и… Не получилось. Фреймворк RoR вполне оправдал ожидания — MVC во всей своей красе. Представление отделено от логини обработки, логика отделена от данных. Красота.

Погоняв систему в тестовом режиме месяц глюков замечено не было, за исключением проблем с падением mongrel (решено уходом на fastcgi за 10 минут)

Вывод: redmine — наш выбор несмотря на «всего лишь» 3 летний срок существования проекта. Система идеально подходит как и для текущей работы, так и в качестве «трамплина» для разработки своей системы отслеживания ошибок. Именно эта система с этих пор используется в «Алтиме» — так что будем сообщать о дальнейшей ее эксплуатации.

Записи по теме:

    Ничего нет :(

Google Bookmarks Digg Reddit del.icio.us Technorati Slashdot Yahoo My Web БобрДобр.ru RUmarkz Memori.ru rucity.com МоёМесто.ru

Метки: ,

  • petr

    Видимо автор слабо посмотрел системы.
    Вам будет полезна табличка:
    http://en.wikipedia.org/wiki/Comparison_of_issue_tracking_systems
    Полагаю большая часть информации собранные wiki cообществом близки к истине.
    И конечно же документация: http://www.bugzilla.org/docs/tip/en/html/integration.html Вам поможет.
    Насчет bugzilla, добавлю 5 копеек — bugzilla очень гибкая система. Судить о ней по дефолтовой инсталляции нельзя. Там много сущностей, которые позволяют очень гибко затачивать систему под свои задачи. И уж тем более там есть кастомные поля и справочники. Политику статусов и их набор можно менять. В настоящее время, это весьма зрелая и мощная система. У меня сложилось впечатление, что пилить ее руками Вам придется не скоро — ибо большая часть сущностей кастомизируется прямо из интерфейса. Поставьте ее еще раз и посмотрите внимательно. Это очень пластичный инструмент.
    Хотя код, который я смотрел более 6 лет назад меня не порадовал — он был весьма избыточен. Впрочем для соборной разработки это естественно.

    Mantis, как был суров в 2002 году, так им и остался, не думаю, что достоен для серьезного рассмотрения на перспективу.

    Рекомендую проверить работоспособность системы при большом объеме данных
    Так например проект(ы) с хорошей историей разработки, вполне может содержать десятки и сотни тысяч тикетов, которые в свою очередь содержат множество полей, историю изменений, комментариий и атачи. Все это может влегкую раздуть базу до нескольких гигабайт, а то и их десятков. При хорошей одновременной работе важна производительность. Плюсом выбора является и отраслевая унификация решения (смотрите табличку в wiki).

    p.s. Дайте кто-нибудь инвайт на хабр. Поделюсь своим опытом.

  • nicolnx

    Автор на эту табличку в вике смотрел. Считаем — из почти 70 bts-ок только 20 с открытым исходным кодом. Большая часть из этих 20 находятся на этапе, далеком от боевого применения.
    Что касается гибкости bugzilla — да, есть в ней и кастомные поля, и справочники. И разумеется можно ее тщательно обработать напильником… Но порой необходимо вносить изменения в бизнес-логику системы. Нужно быть настоящим джедаем с массой свободного времени чтобы делать это в багзилле. За те 6 лет, что прошли с тех пор как вы смотрели ее код, этот монстрик здорово подрос -)
    А по нагрузочной способности — да, было бы интересно задуть в них 200 000 тестовых тикетов и поглядеть как оно будет ворочатся…

  • petr

    В том то и дело — бизнес-логика правится через интерфейс, это показатель зрелости системы. Я сам быд удивлен увидев это.
    Насчет 200 тыс тикетов — все рядом (их там больше 400 тыс) :-)
    https://bugzilla.mozilla.org/buglist.cgi?product=Core&product=Firefox&product=Mozilla+Application+Suite&product=Thunderbird&product=Toolkit&bug_status=UNCONFIRMED,NEW,ASSIGNED,REOPENED,RESOLVED&chfield=Bug%20creation&chfieldfrom=-24h

SEO Powered by Platinum SEO from Techblissonline