- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF135:Mantis
Материал из Linuxformat.
- Mantis' Разверните свою собственную систему отслеживания ошибок
Содержание |
Инциденты: Найти и обезвредить
Систему отслеживания ошибок предоставляет практически любая служба хостинга проектов, но вы можете захотеть сделать все сами. Если это так, то Никита Шультайс готов вам помочь.
Если вы пишете небольшую программу для однокурсницы, то возникающие в ней ошибки нетрудно удержать и в голове; но когда речь заходит о серьезных проектах, без системы отслеживания ошибок уже не обойтись. Сегодня можно найти множество таких программ-«багтрекеров» [англ. bug tracker], причем распространяемых под свободными лицензиями, но мы остановимся на Mantis.
Установка
Скачайте Mantis с официального сайта (http://www.mantisbt.org), разместите его на своем сервере под управлением Apache и перей-дите в браузере по заданному для Mantis адресу, чтобы приступить непосредственно к установке.
На первом этапе происходит прединсталяционная диагностика: Mantis проверяет, установлен ли PHP и поддерживает ли он безопасный режим. Тут же нам предлагается выбрать тип базы данных (MySQL, MS SQL, PostgreSQL, Oracle и др.), причем большая часть из них работает в экспериментальном режиме. Далее необходимо ввести параметры БД: имя и пароль для доступа, название базы и имя и пароль администратора БД (если требуется создать новую базу данных). После нажимайте Install/Upgrade Database и смотрите на диагностические сообщения.
Обычно всё проходит отлично, и вы видите напротив каждой строки слово GOOD на зеленом фоне. Самая частая причина сбоя – запрет на запись в директорию проекта, из-за чего Mantis не может создать конфигурационный файл config_inc.php, поэтому вам надо либо заранее обеспечить Apache соответствующими правами, либо переименовать config_inc.php.sample в config_inc.php в корне проекта вручную и задать необходимые настройки в файле: их можно посмотреть на той же web-странице в разделе Write Configuration File. После успешной установки откройте в браузере ваш сайт; вам будет предложено ввести имя и пароль, а также удалить учетную запись administrator или сменить ей пароль (root по умолчанию) и удалить папку admin – проделайте это. Авторизуйтесь и первым делом перейдите по ссылке MyAccount, где в поля Password и Confirm password введите новый пароль, затем снова авторизуйтесь и в меню MyAccount > Preferences смените язык [Language] с английского на русский.
Базовые настройки
Практически вся настройка системы производится вручную с помощью файла config_inc.php, и первое, что мы предпримем – русифицируем Mantis. До этого мы выбрали язык для единст-венного пользователя системы – администратора, но если вы зайдете на сайт, например, из другого браузера, перед вами откроется англоязычный интерфейс. Чтобы поправить дело, добавьте в config-inc.php две строки:
$g_default_language = 'russian'; $g_language_choices_arr = array('english', 'russian');
Первая отвечает за язык по умолчанию, а вторая – за доступные языки. В нашем случае по умолчанию выбран русский, а в настройках учетной записи можно указать еще и английский. Чтобы задать название окна браузера и вкладок, используйте $g_window_title, а заголовок, который отображается на всех страницах вверху и по центру, задается в переменной $g_page_title.
Переменные $g_favicon_image и $g_logo_image содержат путь до иконки сайта (favicon) и логотипа соответственно. Эти переменные принимают путь до изображений относительно директории, в которой установлен Mantis, например, images/my_logo.jpg. Конечно, картинка должна там уже находиться.
Параметр $g_show_realname = ON; заставляет систему показывать реальное имя пользователя, а не ник. Заметьте, что вокруг ON нет кавычек, так как это не строка, а заранее определенная переменная. А если добавить в конфигурационный файл строку $g_show_avatar = ON; то к комментариям будут подгружаться аватары с сайта http://www.gravatar.com – конечно, если у ваших пользователей есть на нем учетная запись.
Перед началом практического использования Mantis необходимо также произвести несколько нехитрых действий: задать категории ошибок, создать пользователей и проекты.
Категории ошибок
Любая ошибка или нововведение, регистрируемые в системе, должны быть отнесены к определенной категории – например, при разработке сайта (далее по тексту мы будем настраивать Mantis под web-проект) можно выделить категории
- CSS
- HTML
- Ввод данных
- Панель администрирования
- Фильтрация данных
В Mantis существуют глобальные и локальные категории. Первые доступны для всех проектов, у которых выбрано поле Наследовать глобальные категории; локальные же создаются для каждого проекта в отдельности. Добавить глобальные категории можно на странице Управление > Управление проектами. Помимо названия, для каждой категории можно назначить ответственного: скажем, при регистрации ошибки в CSS или HTML она сразу передастся верстальщику. Если ответственный не определен, то ошибки сперва просматривает менеджер проекта, который назначает исполнителя. Заметим, что ответственный за категорию должен иметь уровень доступа не ниже участника.
Управляем пользователями
Чтобы назначать для категорий ответственных, нужно сначала добавить их в систему. Это делается на странице Управление > Управление пользователями. Нажмите на кнопку Создание новой учетной записи и заполните несколько несложных полей.
После создания пользователя вас перенаправят на страницу управления его учетной записью, где можно настроить все поля более детально.
В Mantis существует несколько уровней доступа. Каждый следующий уровень получает все возможности предыдущего плюс свои собственные. Например,
- Наблюдатель имеет минимальные возможности, он может лишь просматривать ошибки.
- Инициатор может самостоятельно добавлять записи о найденных ошибках, отслеживать их, а также устанавливать видимость для вопроса. Такой тип пользователя отлично подойдет для тестеров.
- Редактор может изменять основные параметры ошибки: серьезность, воспроизводимость, состояние, приоритет, видимость, решение и т. д.
- Участник, руководитель и администратор имеют почти одинаковый набор прав, ознакомиться с которыми и изменить их можно на странице Управление > Управление конфигурацией > Пороги процесса.
Один пользователь может иметь несколько уровней доступа: один глобальный и несколько индивидуальных (для каждого из проектов). Если в проекте явно не указывать уровень доступа пользователя, то используется глобальный.
Теперь, когда учетная запись создана, можно назначить её ответственной за какую-нибудь категорию. Если вы разрабатываете коммерческий проект или же у вас есть другие причины ограничить доступ к Mantis, то в конфигурационный файл следует добавить строку
$g_allow_signup = OFF;
которая запретит пользователям регистрироваться в системе. Если мы добавим $g_send_reset_password = OFF; то забывчивые пользователи не смогут восстановить свой пароль в автоматическом режиме: им придется обращаться к администратору сайта.
$g_max_failed_login_count = OFF;
снимает ограничение по количеству попыток авторизоваться. Замените OFF на какое-нибудь число, и злоумышленники не смогут бесконечно подбирать пароли учетных записей. С помощью параметра $g_signup_use_captcha можно включить или выключить отображение кода подтверждения (Captcha) при регистрации.
Создание проекта
Mantis – многопользовательская и многопроектная среда, и прежде чем добавлять ошибки, нужно создать хотя бы один проект. Перейдите в меню Управление > Управление проектами и нажмите на кнопку Создать новый проект. Перед вами появится форма с несколькими полями:
- Название проекта.
- Состояние Разрабатываемый, выпущенный, стабильный, устаревший.
- Видимость Если выбрать Общая, то ошибки, зарегистрированные для проекта, будут доступны любому пользователю; если выбрать Ограниченная, то данный проект смогут увидеть только те пользователи, которые «связаны» с проектом вручную, и администраторы.
- Наследовать глобальные категории О них мы писали выше.
- Путь для загружаемых файлов Можно указать как абсолютный путь, так и путь от каталога, в котором находится Mantis. Главное, чтобы все директории существовали и у web-сервера были права на запись в них. По умолчанию файлы всё равно будут сохраняться в базе данных; чтобы изменить такое поведение, добавьте строку $g_file_upload_method = DISK; в конфигурационный файл. Кроме загрузки на диск и в базу данных, можно передавать файлы по FTP. Необходимые для этого настройки указаны в документации. Так же можно задать максимальный размер загружаемых файлов, допустимые и запрещенные форматы.
- Для более детального описания проекта заполните поле Подробности.
После того как проект создан, становятся доступными множество настроек: надо лишь перейти на страницу проекта, которая состоит из нескольких блоков. Сначала идет блок подпроектов – более мелких проектов, входящих в крупный. Например, при разработке городского интернет-портала можно выделить в подпроекты новостной портал, сервис поиска работы, продажу недвижимости и т. д. Затем идет блок категорий: вверху расположены глобальные категории, внизу – локальные, которые задаются тут же на странице. В следующем блоке мы создаем версии проекта. Проставляя галочки напротив соответствующих полей, можно отметить версию как выпущенную или устаревшую, или, если оставить поля пустыми, то версия будет находится в процессе разработки. Самый нижний блок отвечает за пользователей, которые должны получить доступ к проекту. Если видимость проекта задана как Общая и нет ни одного пользователя, связанного с ним, то все участники будут иметь доступ в соответствии с настройками своей учетной записи. Если видимость проекта ограничена, нужно назначить каждого участника и его роль в проекте вручную. Для этого выберите нужного человека из списка пользователей, которые доступны в системе, определите для него уровень доступа и нажмите на кнопку Добавить.
Когда пользователь добавится в проект, в окне Управление учетными записями в поле Действия для этого участника будет доступна кнопка Удалить, которая не удаляет пользователя из системы, а лишь разрушает его связь с проектом.
Зарегистрируем ошибку
Пройдя сквозь дебри настроек, мы добрались до регистрации ошибок, которые в версии 1.2 называются «инцидентами», а раньше были «вопросами». На самом деле под инцидентом может регистрироваться не только ошибка, но и обращение пользователя в службу поддержки или запланированное нововведение.
Кликните на ссылку Создать инцидент в верхнем меню. Перед вами откроется форма со множеством полей, которые нам предстоит заполнить. В первой строчке мы выбираем категорию вопроса из списка, сформированного нами ранее. Следующее поле отвечает за воспроизводимость ошибки. Одни проблемы возникают у всех пользователей, другие – только в определенных версиях браузера, а ошибки проектирования вроде Race Condition проявляются в случайные моменты времени и «затихают» при попытке их локализовать.
Далее определяется серьезность ошибки, причем первым в списке стоит пункт Нововведение, который отвечает за будущие возможности программы. Остальные пункты следуют в порядке увеличения серьезности. Еще одним параметром важности ошибки является Приоритет её обработки и решения.
Следующая группа полей отвечает за платформу, на которой зарегистрирована ошибка, а также за операционную систему и её версию. Нам предлагается выбрать профиль или заполнить данные вручную. Сейчас ни один профиль не доступен, но его всегда можно добавить в разделе Управление > Управление глобальными профилями. Для web-сайтов они обычно оставляются пустыми, потому что web-приложения работают внутри браузера, а не ОС.
В поле Версия продукта указывается версия, в которой была зарегистрирована ошибка. Причем в списке выбора доступны только те версии, которые сейчас актуальны – отмеченные как «устаревшие» туда не попадают. Еще одно важное поле – это Целевая версия, т. е. версия, в которой предполагается решить эту проблему. Если выбрать разрабатываемую версию продукта, то инцидент попадет на страницу План развития, ссылка на которую находится в верхнем меню. Вы всегда можете зайти на эту страницу и посмотреть, как обстоят дела с новыми проектами, сколько процентов нововведений и ошибок уже закрыто и какие остались до запуска.
Между текущей и целевой версией находится поле Назначить, в котором можно выбрать ответственного за ошибку. Если вы уже выбрали категорию, к которой прикреплен исполнитель, то можно оставлять поле пустым; его также можно не заполнять, пока не станет ясно, кто будет отвечать за инцидент. Если для категории определен исполнитель, а вы назначаете другого участника, то значение по умолчанию будет переопределено. Заметим, что задавать целевую версию и исполнителя могут только члены с уровнем доступа не ниже участника. Инициаторы и редакторы могут только указывать версию программы, в которой была обнаружена ошибка.
Теперь самое время описать саму ошибку. Для этого предназначены обязательные поля Суть и Подробности, а также необязательные Шаги по воспроизведению и Дополнительные сведения. В конце вы можете приложить к ошибке файл – например, экранный снимок – а также указать для ошибки видимость.
Если есть вероятность того, что ошибку могут увидеть злоумышленники и затем использовать её в своих целях, видимость следует ограничить. Если же большая часть ошибок не должна быть доступна общественности, то добавьте в конфигурационный файл строку $g_default_bug_view_status = VS_PRIVATE; чтобы по умолчанию выбиралась ограниченная видимость.
Нажмите на кнопку Сохранить инцидент, чтобы зарегистрировать ошибку в базе данных.
Настроим поля
Как я уже упомянул, для web-проектов нет большой разницы, в какой ОС они работают, а вот в каком браузере – есть. Правда, в форме добавления инцидента нет такого поля, но мы можем его создать. Зайдите в Управление > Управление настраиваемыми полями, введите название поля (латиницей, browser) и нажмите Создать настраиваемое поле, после чего вас перенесет на страницу детальной конфигурации. Здесь вы можете изменить имя поля, задать его тип (список, целое, вещественное и т. д.) или определить допустимые значения с помощью регулярного выражения. Вы также можете выбрать значение по умолчанию и задавать параметры доступа и отображения поля.
Добавим список со множественным выбором из популярных интернет-браузеров – для этого выберите соответствующий тип, а в поле Допустимые значения введите без кавычек разделенные вертикальной чертой названия браузеров любой|Opera 8.x|Opera 9.x|Internet Explorer 8.x|Internet Explorer 9.x|Firefox 2.x|Firefox 3.x|другой. В качестве значения по умолчанию установите «любой». Откройте доступ на чтение наблюдателю, а инициатору позвольте запись. Затем разрешите показывать поле при создании и изменении инцидента, установив галочки в соответствующих полях, и нажмите на кнопку Изменить настраиваемое поле. После снова зайдите в настраиваемое поле и привяжите его к вашим проектам.
Теперь при создании ошибки вам будет предложено выбрать браузеры, в которых она возникает. Единственный минус – имя поля отображается латиницей, но это мы легко исправим. Откройте файл lang/strings_russian.txt и добавьте в конец строку
$s_browser = 'Браузер';
Просмотр
Добавленные ошибки и нововведения можно посмотреть на странице Список инцидентов (верхнее меню). Она состоит из двух частей: фильтра и собственно списка инцидентов. По умолчанию фильтр свернут, и чтобы использовать всю его мощь, кликните на символ + (плюс) слева от слова Поиск. Перед вами раскроется множество полей, которые можно изменять, щелкая по названиям, подчеркнутым и выделенным синим цветом как ссылки. После выбора нужных значений нажмите на кнопку Фильтровать и смотрите результат.
Фильтры можно сохранять для последующего использования или создавать на них постоянные ссылки, в том числе и короткие (TinyURL). Сразу под фильтром идет разноцветный список инцидентов. Каждая строка отвечает за одну ошибку или нововведение, а её цвет – за состояние вопроса, которое также пишется в столбце Состояние вместе с именем исполнителя (если он назначен).
Столбец с буквой «П» отвечает за приоритет инцидента. Приоритеты отображаются графически в виде черточек (низкий приоритет) и перевернутых галочек (высокий); число черточек и галочек варьируется в зависимости от степени важности.
Следующий столбец содержит семизначные номера ошибок, а за ним следует колонка с названием #, которая отвечает за наличие и количество комментариев к инциденту. Назначение осталь ных столбцов понятно из их названий.
Остановимся на дате – сейчас она представлена в иностранном формате ГГГГ-MM-ДД, что неудобно для русскоязычных пользователей. Исправить такое поведение можно, добавив в конфигура ционный файл строки:
$g_short_date_format = 'd.m.y'; $g_normal_date_format = 'd.m.y H:i'; $g_complete_date_format = 'd.m.Y H:i';
Помимо стандартных столбцов, можно показывать и свои собственные (в том числе настраиваемые) поля. Добавим, например, колонку с названием браузеров. Зайдите в Управление > Управление конфигурацией > Отображаемые столбцы. В поле Все имеющиеся столбцы найдите custom_browser и скопируйте его в поле Просмотр инцидентов, предварительно поставив запятую.
Рабочий процесс
Создавать и просматривать ошибки мы научились; пора узнать, как их изменять и каким образом ошибки переходят из одного состояния в другое. Самый простой способ внести изменения – это выбрать нужную запись из списка инцидентов с помощью «галочек», а затем применить одно из быстрых действий, доступных под таблицей. Например, выбираем ошибки без исполнителя, Назначить и жмем ОK, а на следующей странице указываем ответственного. Изменить каждую ошибку в отдельности можно, щелкнув по иконке с карандашом. И третий вариант – это зайти на страницу с описанием инцидента (кликнув на его номере) и работать с кнопками под строкой Вложенные файлы.
Как вы уже поняли, ошибки могут быть в нескольких состояниях:
- Новый Ошибка только что создана, и пока не ясно, кто её будет решать. Обычно новые ошибки добавляют тестировщики.
- Нужен отклик Используется, когда ошибка создана нестандартным способом – например, закрыта и опять возобновлена.
- Рассмотрен Ошибка просмотрена разработчиками и является вполне допустимой, но пока её никто не повторил.
- Подтвержден Разработчики смогли воспроизвести ошибку, но еще не назначен ответственный за её решение.
- Назначен Определен ответственный за эту ошибку.
- Отработан Ошибка решена, но еще не проверена инициатором – например, тестировщиком, который её добавил.
- Закрыта – ошибка решена и проверена инициатором. Именно инициатор и закрывает её.
Кроме состояний, жизненный цикл ошибок определяется решением (открыт, решен, повторно открыт и т. д.). Различные сочетания состояний и решений дают ясную картину, в какой стадии ошибка находится сейчас и какие уже прошла. Посмотреть эту информацию можно на странице ошибки в блоке История изменений.
Кроме просмотра списка инцидентов, Mantis позволяет получать различные срезы и отчеты об ошибках. Первым является сводка авторизованного пользователя (пункт верхнего меню Моя сводка), где участник системы может посмотреть все инциденты, которые как-то с ним связаны. Вторым является статистика всех инцидентов, зарегистрированных в Mantis.