|
Персональные инструменты |
|||
|
BugzillaМатериал из CustisWikiЭто снимок страницы. Он включает старые, но не удалённые версии шаблонов и изображений. Bugzilla — «система контроля ошибок», разработанная «The Mozilla Organization» Может также упоминаться (и с некоторыми оговорками использоваться) как:
Содержание
ВведениеКлючевым понятием системы является баг («Bug») — суть «issue» — некоторое задание, запрос, рекламация по поводу ошибки в системе, или просто сообщение, требующее обратной связи, и назначение системы — регистрация и предоставление заинтересованным лицам целостной информации об состоянии этого «issue», включая интерфейсы редактирования, запроса и поиска, механизмы почтового и RSS-оповещений. Сейчас Bugzilla используют более семиста компаний и организаций по всему миру. Из наиболее известных имен компаний и проектов: NASA, IBM, Mozilla, Linux Kernel, Gnome, KDE, Apache Project, Open Office. Анатомия багаСущность Bug имеет набор атрибутов, работа с которыми — редактирование и запросы — является основными сценариями использования Bugzilla.
СтруктурныеProduct«Продукт». Основной атрибут, задающий структуру. Каждый «Product» состоит из набора компонентов. Можно включить классификацию продуктов — дополнительное подразделение продуктов на группы (исключительно двухуровневое), что отразится на интерфейсе заведения новых багов и на интерфейсе запросов. Component«Компонент». Дополнительная структурная классификация. В зависимости от выбранного компонента, баг может иметь разный набор флагов. Атрибуты жизненного циклаStatus«Статус». Основной атрибут, определяющий текущее состояние бага, то есть меру его активности — от самого «начального» состояния, когда он даже не подтвержден, как баг, до благополучного завершения, когда баг исправлен/решен, что подтверждено Службой Качества. Набор состояний зависит от конкретной инсталляции и настройки Bugzilla, однако, стандартный набор:
Resolution«Резолюция», «Решение» — этот атрибут имеет смысл только для багов в состояниях «RESOLVED», «VERIFIED», «CLOSED». Также, набор «резолюций» можно настраивать, но стандартный набор следующий:
Также можно использовать:
ДиаграммаЖизненный цикл бага, он же граф переходов состояний, он же work flow, жестко задан в коде, и представлен ниже, на графе.
Связанные пользователиAssigned_ToЛицо (сотрудник, пользователь), ответственное за решение (исправление) бага. Подтверждение ответственности происходит при переводе бага из состояний «NEW» или «REOPENED» в состояние «ASSIGNED». ReporterПользователь, собственно составивший (заполнивший информацию) о баге. QAПользователь, ответственный за проверку решения бага. CC«СС list»: Список людей, извещаемых при изменениях бага. Описание багаSummaryАннотация задачи/проблемы одним предложением. В правилах «хорошего тона» обязательно дублировать (не обязательно дословно) при регистрации нового бага, содержимое «Summary» в первом комментарии, ибо атрибут «Summary» может быть несколько раз отредактирован, будет утерян смысл бага. Конечно, можно посмотреть историю изменений, но лучше, чтобы эта история была зафиксирована в комментариях, которые показываются всегда. VersionОбычно используется для указания конкретных версий продукта (вернее компонента продукта), в которых наблюдается описанная проблема. PriorityОтветственный указывает приоритет (именно свою оценку приоритета) описанной проблемы или задания. Поэтому менять приоритет у чужих багов-заданий считается неправильным. Стандартный набор значений — от «P1» (наивысший приоритет) до «P5» (наименьший). SeverityУказывает на критичность возникшей проблемы. Домен значений можно настраивать, стандартный набор следующий:
Target«Target Milestone», «Веха». Указание вехи, (версии, стадии) проекта, к которой баг должен быть решен. Не путать с версией. Например, баг может описывать ошибку, возникшую в версии «1.17», но которую было решено исправить к вехе «1_21», в которой будет выпущена версия продукта «1.21». Веха не обязательно должна быть привязана к версии продукта — она может быть привязана и к определенному времени. Набор вех — набор единых для каждого продукта событий, которые должны синхронизировать процессы исправления, тестирования и пронесения изменений. Каждый продукт имеет атрибут «Milestone URL», содержащий ссылку на документ, где вехи продукта должны быть поименованы и описаны, то есть где будет приведен некоторый «Roadmap» проекта. CommentsКомментарии. Первый комментарий по багу — это «Description», остальные в форме редактирования бага именуются «Additional Comments». Используется всеми связанными с багом пользователями для централизованных комментариев, которых Bugzilla рассылает всем (#Reporter,#CC,#QA,#CC) по почте. В нашей инсталляции, есть возможность «Silent»-комментариев (checkbox «Silent»), информация о которых не рассылается по почте. Использовать только в том случае, когда информация в комментарии действительно малоинтересна — например, просто worklog-запись о выполненной промежуточной (не «решающей» баг) работе, например, если основная ценность записи — с регистрация личных трудозатрат (см. #Учет времени (Timetracking)). Также, не стоит злоупотреблять комментарии, и превращать их в форум. Для обсуждения постановки задачи, продуктивней завести ассоциированную с багом статью в WikiWiki-системе, и обсуждать там (см. #Интеграция с Wiki). Зависимости между багамиВ Bugzilla регистрируется только один единственный вид зависимостей: «баг X зависит от решения бага Y». То есть нет разделения структурных зависимостей вида «проблема X подразделяется на проблемы X1,X2,X3» и сетевых зависимостей общего вида, но в целом, ничто не мешает представлять структурные зависимости в общем виде («баг X зависит от решения багов X1,X2,X3». Зарегистрированные зависимости видны и при просмотре атрибутов отдельно выбранных багов, и могут быть просмотрены в виде ориентированного графа вида:
В нашей инсталляции Bugzilla 3 графы зависимостей имеют две дополнительные особенности:
(Баг «11407» зависит от решенного «11406» и нерешенного «11405»). Depends onУказывает, от решения каких багов зависит данный баг. В нашей инсталляции, показывается также активность по блокирующим багам, а именно:
Blockers completed ~16%,
last changed 2009-02-12 12:57:45 BlocksУказывает, решение каких багов зависит от данного бага. MiscURLАссоциированный с багом URL, указывающий на документ с описанием/постановкой проблемы, если таковой имеется. В нашей инсталляции Bugzilla, можно также пользоваться автоматической связью между багом и ассоциированной с каждым компонентом WikiWiki-системой, в которой можно делать пристойно отформатированную постановку задачи и даже вести ее обсуждение (См. #Интеграция с Wiki). WhiteboardТекстовая зона свободной формы для задания кратких заметок или тегов к багу. KeywordsКлючевые слова, используемые для пометки и даже для классификации багов. Набор ключевых слов «глобальный», общий для всех продуктов внутри инсталляции Bugzilla, поэтому, рекомендуется ответственно относиться к заведению каждого нового ключевого слов, чтобы не «замусоривать» общее пространство. PlatformВычислительная платформа (железо), на которой наблюдается проблема. В нашей инсталляции Bugzilla этот атрибут не используется. OSОперационная система, на которой наблюдается проблема. В нашей инсталляции Bugzilla этот атрибут не используется. AttachmentsК багам можно прикреплять файлы (например сценарии тестирования, патчи) VotesСобрал ли баг сколько либо голосов (в нашей инсталляции отсутствует). Используется, в основном, для автоматического перевода бага из состояния «UNCONFIRMED» в состояние «NEW». Поиск баговОсновные атрибутыНа странице «Bugzilla Search» представлен интерфейс к поиску любых зарегистрированных багов, комментариев и патчей. Интерфейс позволяет задать поисковые значения для всех перечисленных полей бага, причем для некоторых полей может быть задано несколько значений из домена (с помощью списков с множественным выбором). Если значение не выбрано — атрибут бага может принимать любое значение. Хранение запросовЛюбой выполненный запрос можно сохранить под неким выбранным именем («Remember Search As»), тогда результат этого запроса можно будет всегда получить за один «клик», активировав одноименную с запросом ссылку, которая будет показываться внизу страницы, в линейке «Saved Searches». Временные условияМожно накладывать временные условия на изменение бага, запрашивая только баги, по которым было какое нибудь движение (изменение атрибутов, комментарии) в определенном интервале времени — см. группу полей «Bug Changes». Интервал времени можно задавать как в абсолютной форме (дата в ISO-формате yyyy-mm-dd), так и в форме, относительной текущей даты, таким образом можно сделать хранимый запрос, показывающий только баги измененные в течении предшествующих 24 часов (или недели, или месяца). Конкретно, можно использовать слова:
Можно добавить перед относительными датами знак «+», это будет означать, что относительная дата не вычитается из «Now», а прибавляется (в будущее). Полнотекстовый поискНачиная с версии 3.0, Bugzilla поддерживает честный полнотекстовый поиск по MySQL FULLTEXT-индексам, а с нашими доработками — и русскоязычную морфологию через стеммер Портера Lingua::Stem::Ru (порт из snowball). То есть, по слову «завтрака» ищется и «завтрак», и «завтраков» и т. п. Искать по словам можно из двух мест: со страницы поиска [1] и из поля «Quicksearch», расположенного в шапке и подвале страниц Bugzilla. По умолчанию ищутся баги, содержащие в описании и/или комментариях все введённые слова с учётом морфологии. Однако, также действует специальный синтаксис, на самом деле совпадающий с синтаксисом MySQL Fulltext Boolean Search. При встрече во введённом запросе любого элемента этого синтаксиса запрос автоматически переключается в режим поиска любого из введённых слов, если не указано обратное. Описание синтаксиса:
Кроме того, слова короче 3 символов в поиске не учитываются. Boolean ChartsМожно также задавать «продвинутые» запросы используя «Boolean Charts». Хотя использование «Boolean Charts» несколько менее «интуитивно» и возможно требует большего времени, чем задание атрибутов в основной форме, с их помощью можно построить запрос, практически произвольной сложности, вида [ NOT ] ( (Атрибут11 Операция11 Значение11) OR (Атрибут12 Операция12 Значение12) OR ....) [ AND (Атрибут21 Операция21 Значение21) OR (Атрибут22 Операция22 Значение22) OR ....) ] [ AND ... ] ) В частности, там можно накладывать условия по флагам, например,
В Bugzilla 3 появилась возможность, ранее имевшаяся только в нашей версии — «подзапросы» по сохранённым запросам поиска в лице операций «matched by saved search» (присутствует в списке, возвращаемом запросом таким-то), и «not matched by saved search» (отсутствует в списке, возвращаемом запросом таким-то) Например, вы можете сформулировать условие «Блокируется багом из списка, возвращаемого сохранённым запросом поиска My Bugs» — для этого нужно выбрать поле «Depends On», операцию «matched by saved search» и значение «My Bugs». Чуть менее тривиально: можно задавать и запросы вида «найти все мои баги в открытом состоянии, для которых все блокирующие выполнены». Для этого просто нужно создать сохранённый запрос, находящий все выполненные баги, и подменить в запросе из предыдущего абзаца My Bugs этим запросом. Желательно, чтобы вспомогательные запросы возвращали небольшое число багов, иначе это сильно влияет на скорость ответа. Также, весьма желательно, при использовании этих условий, задавать дополнительные, «простые» условия фильтрации. Заметим, запросы типа «баги, у которых нет блокирующих» или «баги, у которых нет зависимых» можно реализовать стандартными условиями типа: NOT(Depends On "contains regexp" "[0-9]+" ) NOT(Blocks "contains regexp" "[0-9]+" ) Списки баговПосле выполнения запроса система возвращает выборку — список удовлетворяющих запросу багов. Формат этого списка настраиваемый, по ссылке «Change Columns» можно настроить набор показываемых в списке атрибутов. Также можно включить настройку «Stagger headers» — разнесение заголовка таблицы списка на два уровня. После выбора списка, его можно отсортировать щелчками по заголовкам колонок (что приводить к сортировке списка в порядке возрастания выбранного атрибута-колонки). Другие полезные возможности вызываются ссылками, расположенными внизу списка:
Также есть 3 кнопки:
В нашей инсталляции Bugzilla, есть также пункты:
Заведение баговПроцедура заведения бага следующая:
Для быстрого заведения багов по образцу уже созданных — например, если происходит декомпозиция крупной проблемы на мелкие — можно применять клонирование багов. Импорт багов из Excel-листовНаша инсталляция Bugzilla 3 поддерживает массовый импорт багов из Excel-файлов — как бинарных Система подразумевает, что первая строка Excel-файла содержит заголовки колонок, а последующие — описания багов. Обязательными полями бага являются только продукт, компонент и заголовок. Процедура импорта багов из Excel-файла следующая делится на два этапа. На первом этапе вы выбираете Excel-файл и устанавливаете начальные параметры импорта. На втором этапе система разбирает загруженный файл и отображает его на веб-странице для проверки и, возможно, изменения каких-либо полей, или сопоставления каких-либо полей колонкам таблицы. После проверки и нажатия «Import selected bugs» отображается страница с результатами импорта:
Итак, для запуска Excel-импорта:
После нажатия кнопки «Parse File» будет показана страница с таблицей так, как её видит система. Если колонки в Excel-файле имели названия, совпадающие с названиями полей в багзилле, они автоматически сопоставятся нужным полям бага. Если же автоматическое сопоставление не удастся, то в любом случае по клику на название колонки будет показан выпадающий список для выбора нужного поля. Значения полей, то есть значения ячеек, должны в точности соответствовать значениям полей в Bugzilla. Все поля отображаются редактируемыми, и вы можете исправить любые значения, если увидите несоответствия. По результатам автоматической проверки существующих импортированных багов из списка будут установлены флажки слева каждой строки. По нажатию кнопки «Import selected bugs» будет предпринята попытка импорта только помеченных флажками багов. Также после успешно выполненного импорта вы увидите ссылку «Import another Excel file — you can bookmark this link as a template». В этой ссылке сохранена вся информация о сопоставлении полей и значениях полей для всех багов по умолчанию. Поэтому, переходя по ней, вы сможете импортировать другой файл того же формата без лишних усилий. Также вы можете сохранить её в закладки браузера, и воспользоваться ей в будущем. Редактирование баговРедактирование багов необходимо, для поддержания (и распространения по заинтересованным лицам) актуальной информации по обозначенной в описании бага проблеме или задаче. Редактирование бага включает изменение значений атрибутов бага (причем ведется полная история их изменения, и написания комментариев (по сути рабочих журналов по решению проблемы). То есть основной принцип «трекинга» — регистрация и хранение истории всех изменений. Поэтому, комментарии не удаляются и не редактируются, после того, как произошло их добавление в журнал комментариев к багу. Кроме текстовых комментариев, можно также («аддитивно») регистрировать различные вложения («attachments») — логи ошибок, скриншоты, примеры патчей («patches»), и т. п. В основном, редактированием основных атрибутов бага занимаются наиболее тесно связанные с багом участники, указанные в атрибутах Reporter, Assigned_To и QA, но конкретный регламент использования жестко не определен, и в принципе, любой пользователь (даже никак не связанный с багом), обладающий соотв. правами, может менять состояние бага и другие атрибуты. Впрочем, обычно:
Если в инсталляции включены функции регистрации времени (см., например, параметр «timetrackinggroup»), то можно, регистрировать предварительную оценку сложности задачи, и с каждым комментарием также регистрировать свои трудозатраты и корректировать оценку оставшийся работы (См. #Учет времени (Timetracking)). В окне редактирования бага можно выяснить различные аспекты решаемой проблемы, зарегистрированные как в Bugzilla:
так и в других системах (есть в нашей инсталляции):
КомментарииЗаметим, что комментарии к багу нельзя редактировать задним числом (это принципиальная позиция), разве что член специальной группы «insidergroup» может сделать их «private» — невидимыми для обычных пользователей. В нашей инсталляции можно воспользоваться ссылкой «Preview» (например, проверить, правильно ли «прогиперлинкуются» различные ссылки, см. #Автоматические ссылки), и убедившись, что все хорошо, вернуться кнопкой «Back» броузера и выполнить «Commit». В стандартной инсталляции для этого можно использовать страничку c адресом вида: http://bugs.office.custis.ru/bugs/page.cgi?id=linkify.html КлонированиеДля быстрого заведения новых багов (схожих с имеющимися) — например, если необходимо провести декомпозицию, то есть выделить некоторую подзадачу из крупной задачи, можно применять «клонирование», вызываемое ссылкой «Clone This Bug to other/same product». Клонирование бага приводит к заведению бага унаследовавшего все атрибуты (заполнять которых с нуля может быть очень муторно и долго) от исходного бага + являющегося блокирующим для родительского бага (впрочем, при клонировании можно и подредактировать родительские атрибуты и отказаться от блокирования родительского бага). «Клонирование в тот же продукт» выделено отдельной ссылкой, так как это ускоряет наиболее распространенный сценарий клонирования, исключая одну или две страницы выбора продукта. В нашей инсталляции также можно клонировать в баг любой комментарий исходного бага — через ссылку «clone as bug» над комментарием. ПолезностиАвтоматические ссылкиКомментарии в Bugzilla разрешены только plain текстом, то есть печатая<U>вы получите не подчеркнутый текст, а <U> Также нет списков и иных структурных элементов. Тем не менее, Bugzilla делает гиперссылки для определенного рода комментариев, например распознаются и «гиперлинкуются» основные типы URL, типа:
Дополнительно гиперлинкуются ссылки на внутрибагзильные элементы (баги, комменты, вложения):
Интеграция с системами контроля версийОчень важно, описать связь между багами (заданиями или сообщениями об ошибках) и производимым (или исправляемым) Разработчиком артефактом — программным кодом (включая документацию). В нашей Компании весь код (то есть практически все производимое Разработчиком) находится в репозиториях принятых в Компании систем управления версиями CVS и Subversion. Наша инсталляция Bugzilla интегрирована с системой ViewVC, в которую оперативно загружается информация о всех правках в CVS и Subversion-репозитариях Компании. Поэтому, если при работе над багом XXX, ведутся правки файлов, находящихся под CVS или Subversion, то при фиксации (то есть при выполнении «commit») не нужно писать длинных комментариев, описывающих суть изменений, а достаточно указать идентификатор заявки/задания (номер бага), например, выполнить cvs commit -m "Bug 1234" Комментарий можно вводить и через опции командной строки и через редактор, см. ссылки на документацию в CVS, Subversion. При соблюдении этого правила, для каждой заявки можно найти все коммиты, в комментариях к которым указан номер этой заявки, с помощью ссылки «Look for Bug in CVS/SVN» на странице редактирования бага. Ранее похожую функцию выполнял Bonsai, однако был сделан переход на ViewVC по причине поддержки не только системы контроля версий CVS, но также и Subversion последним. Посему ссылки «Look for Bug in CVS/SVN» теперь ведут именно в ViewVC. Интеграция с WikiBugzilla не является инструментом, подходящим для совместной работы над любым документом (пусть даже одностраничным), поэтому, при возникновении спорной или дискуссионной ситуации, когда нужно выработать постановку задачи (пусть даже и локальной), нужно использовать подходящий для этого инструмент: WikiWiki-систему. В нашей инсталляции Bugzilla, дополнительно к возможностям #Автоматические ссылки, можно делать читаемые гипертекстовые ссылки на статьи (и разделы статей) в CustisWiki, например wiki:Bugzilla#Автоматические_ссылки wiki:[[Bugzilla#Автоматические ссылки]] будет ссылаться на Bugzilla#Автоматические_ссылки. Если при работе над багом (заданием или запросом), требуется сделать документ-постановку задачи и/или провести его обсуждение, то можно воспользоваться ссылкой «Look for Bug in Wiki» на странице редактирования бага, и мгновенно перейти к одноименной с багом статье «Bug XXX», для чтения/редактирования/обсуждения. Рекомендуется после заведения статьи выполнить ее переименование (закладка «move/переименовать») в более дескриптивное название, например «Ошибка ORA-YYY при загрузке каталога (Bug XXX)» (что можно сделать в два клика используя только copy-paste атрибута «Summary» бага и мышь). Таким образом, будет создана статья с смысловым заголовком, и статья-перенаправление «Bug XXX». Однако, стоит помнить, что в CustisWiki не стоит помещать конфиденциальную информацию, так как тут уже не действует система прав Bugzilla. Учет времени (Timetracking)Пользователи, входящие в группу, указанную в настройках как «timetrackinggroup», могут вести учет трудоемкости каждого бага. Для каждого бага ведется учет следующих полей
Единица измерения — часы. Можно вводить нецелые значения 1.5 — полтора часа. Time SummaryОтчет «Time Summary», для выбранного списка багов показывает зарегистрированные трудозатраты за заданный период, с группировкой по месяцам, в разбивке по сотрудниками или багам. СоветыВ процессе использования Bugzilla было сделано много доработок. О них можно кратко (очень кратко) прочитать здесь Bugzilla: Список доработок#Доработки 3.x Поддерживайте целостность
ВложенияИспользуйте вложения, а не комментарии, для больших блоков текстовых данных, таких как отладочная информация, логи и т. п. Иначе комментарии к багу станет невозможно читать, да и люди получать бессмысленные жирные письма. Сделана специальная доработка (Bug:15001 и Bug:53638, которая позволяет присоединить текстовое вложение к багу через буфер обмена, без создания файла, с одновременным добавлением комментария, фиксацией времени и изменением некоторых других атрибутов бага. Таким образом, если Вы получили текстовое сообщение об ошибке с большим стеком, то надо не писать комментарий, а добавить вложение, где вставить это сообщение в текстовое окно вложения (переключив radio button Enter text), а ниже написать комментарий, где кратко сформулировать ошибку. Обрезайте и сжимайте скриншоты. Нет необходимости показывать весь экран, если вы хотите указать на проблему в одном окне. Не вкладывайте простые тестовые примеры (например HTML файл, ссылающийся на CSS и картинку) как архив. Вместо этого загрузите перечисленные файлы в обратном порядке, и отредактируйте вкладываемый HTML-файл, чтобы он ссылался непосредственно на загруженные вложения. Bugzilla хранит и использует «Content-Type» для каждого вложения (например «text/html»). Чтобы выгружать вложение с другим «Content-Type» (например «application/xhtml+xml»), надо добавить CGI-параметр «content-type» в URL, то есть &content-type=text/plain. КомментированиеЕсли вы изменяете баг, добавляйте комментарий только если вам действительно есть что сказать по делу, или если этого требует Bugzilla (для некоторых типов переходов). В противном случае, вы можете без нужды «заспамить» невинных людей. Например, люди могут настроить свой аккаунт (См. #«Field/recipient specific options») чтобы не получать извещений при событиях вида «изменился CC». Но если доброжелатель добавляя себя, добавит еще комментарий «Я, типа, себя добавил», то это будет уже добавление комментария и это обойдет вышеуказанный фильтр. Не используйте подписей в комментариях, особенно, модные многострочные подписи с ASCII-картинками. КонфликтыЕсли вы считаете, что отправленный вами баг некорректно помечен как «DUPLICATE of another», пожалуйста, задавайте вопросы-комментарии в вашем баге, а не в том, который считается багом-оригиналом. Смело добавляйте в «CC» бага человека, который принял такое решение, если его в «CC» нет. ФлагиФлаг — это некий атрибут, разновидность статуса, который может быть установлен на баг или вложение, чтобы указать, что этот баг/вложение находятся в некотором состоянии. Каждая инсталляция может определить свой собственных набор флагов, которых можно устанавливать на баг или вложение. Более того, флаги, в отличие от ключевых слов, имеющих «глобальную область» видимости для всех продуктов и компонентов, можно делать локальными, устанавливая набор продуктов и компонентов, в которых может быть установлен этот флаг. Если некий флаг определен в вашей конфигурации багзилла, то вы можете установить или сбросить этот флаг, и если разрешена функция запроса флагов (разрешается администратором системы), вы можете запрашивать другого пользователя установить флаг. Чтобы установить флаг, выберите «+», или «-» из выпадающего списка за списком «Flags». Значение этих символов зависит от флага и в этой документации описано быть не может, но в качестве примера, установление флага «review» в «+» может означать что баг или вложение одобрены, а «-» — отклонены. Чтобы сбросить флаг, выберите в выпадающем списке пустое значение. Если разрешено администратором, можно также делать «запрошенный флаг», устанавливая флаг в «?» и вводя рядом имя пользователя, от которого желается установка флага. Установленный флаг показывается на странице бага и странице «edit attachment», рядом с аббревиатурой установившего флаг пользователя. Например: Иван: review [ + ]. Аналогично показывается запрошенный флаг, только в скобках показывается имя пользователя, у которого запрошена установка флага, например Иван: review [ ? ] (Бибичев). В нашей инсталляции есть доработка, позволяющая не вводить «запрашиваемых флагами» пользователей руками, а выбирать их из списка пользователей ассоцированных с багом (Reporter, Assignee, QA, CC…). Отчеты и графикиВ дополнение к стандартному списку багов, багзилла имеет некоторые аналитические возможности — просмотр количества зарегистрированных багов в виде таблиц и графиков, с возможностью задания среза (перспективы) агрегации, + графики показывающие динамическое изменение состояния багов по времени. ОтчетыОтчет представляет собой некий информационный срез о текущем состоянии базы зарегистрированных багов. Можно сделать отчет как обычным, HTML-табличным, так и графическим, с различными видами графиков: линейными, круговыми, гистограммы (line/pie/bar), и переключаться между этими режимами просмотра онлайн. Очень удобно, что эти отчеты задаются с помощью стандартного интерфейса запросов и компактного интерфейса, определяющего выбор и расположение одного до трех измерений, по которым будет идти агрегация («трехмерная агрегация» — это когда на выходе будет соответственно набор двухмерных таблиц или графиков). Например, можно выбрать в поисковой форме «все баги в продукте XXX» и затем отрисовать их серьезность относительно каждого компонента продукта, чтобы увидеть, какой компонент имеет наибольшее число серьезных проблем. Или разработчик может выбрать все «свои» баги, распределив их по «критичности» и своей оценке приоритета, получив следующую таблицу, где каждая ячейка (например, «(major,P2)=> 2») является гиперссылкой на выборку соответствующих багов (то есть, в данном случае, двух багов, у которых, в дополнению к условиям общего запроса «Severity=major», а «Priority=P2»): Priority Severity P2 P3 P4 P5 Total major 2 . 1 . 3 normal 8 1 1 . 10 minor . . 2 2 4 trivial . 1 . . 1 enhancement . . 1 1 2 Total 10 2 5 3 20 От выборки багов можно снова перейти к таблице и продолжить детализацию далее (см. описание «Summary report» в #Списки багов).
В нашей инсталляции, кроме числа багов, можно просматривать агрегированные временные параметры бага:
То есть в вышеприведенном примере, разработчик может оценивать свою загрузку в временных единицах, сколько часов требуется от него на баги различной серьезности (и поможет например, ответить на вопрос — можно ли будет позволить себе отпуск в ближайший месяц или нет): Priority Severity P2 P3 P4 P5 Total major 32 . . . 32 normal 47.5 184 . . 231.5 minor . . . 192 192 trivial . 5 . . 5 enhancement . . 30 3 33 Total 79.5 189 30 195 493.5 Динамические графики (Charts)Динамические график, чарт (chart) — это просмотр эволюции состояния базы багов по времени. В данный момент в Bugzilla есть две системы построения таких графиков — «Old Charts» и «New Charts». «Old Charts» — это старая, давно используемая система, она отображает только изменения статусов и решений багов для каждого продукта. Она более не поддерживается и не развивается и будет вскоре исключена из системы. Развиваться будет система «New Charts», которая позволяет отрисовывать все, что можно задать поисковым запросом. Обе системы требуют, чтобы администратор настроил скрипт собирающий данные. Каждая отдельная линия в чарте представляется датасетом «data set», которые упорядочены в категории и подкатегории. Автоматически опеределяются категории/подкатегории на основе отношений Продукт/Компонент (для всех продуктов и компонентов), но также можно определять и любые другие категории. Датасеты могут быть публичными, которых могут видеть все, или приватными, доступными только создателю. Причем сделать датасет публичным могут только администраторы. Датасеты, даже приватные не должны пересекаться по набору (Категория, Подкатегория, Имя). Поэтому личные датасеты лучше заводить под Категорией со своим именем. Создание Динамических ГрафиковДля создания чарта, надо для каждого нужного датасета, выбрать его в списке и нажать «Add To List». В списке «List Of Data Sets To Plot» вы можете задать название-заголовок для каждого отображаемого датасета, также можно заказать суммирование подмножества выбранных датасетов (то есть можно просуммировать датасеты представляющие баги в состоянии RESOLVED, VERIFIED и CLOSED для выбранного продукта, тем самым получив полное число исправленных багов). Ошибочно добавленный датасет можно исключить с помощью чекбокса и «Remove». Если вы добавили больше чем один датасет, то в списке автоматически появится линия «Grand Total». Если она не нужна, то ее можно также удалить, как и любую другую линию. Также можно выбрать отрисовку только в определенном диапазоне дат, и аккумулирование результатов, то есть режим, когда каждая линия представляет собой сумму своего датасета и нижележащей линии, и верхняя линия представляет собой сумму всех датасетов. Лучше попробуйте, это проще, чем пытаться обьяснить. Для всех выбранных в список датасетов, если вы являетесь его владельцем или администратором можно редактировать его параметры — название, частоту и т. п. По окончании настроек нажмите «Chart This List» для получения чарта. Создание новых датасетовДля создания нового датасета следуйте ссылке «create a new data set» на странице «Create Chart». Там вы, используя стандартный интерфейс выбора определите нужную выборку, а внизу страницы, определите категорию, подкатегорию и имя для нового датасета. Если вы обладаете достаточными полномочиями, вы можете сделать датасет общедоступным, и сделать частоту сбора данных меньшей, чем неделя (значение по умолчанию). Настройки пользователяПосле того, как вы войдете в систему, вы можете поменять личные настройки Bugzilla, по ссылке «Edit prefs» внизу страницы. Настройки разбиты на три группы-закладки: Account SettingsНа этой закладке, вы можете менять основную информацию вашей личной записи — пароль, e-mail, настоящее имя. По соображениям безопасности, при изменении любых параметров на этой странице, вы должны подтвердить изменение вводом своего пароля. Если вы меняете свой email, то по обоим (старому и новому) адресам будет выслано письмо со ссылкой на подтверждение изменения. General SettingsСодержит простые настройки общеинтерфейсного плана. В нашей инсталляции, мы дополнительно включили настройки:
Email SettingsЭти настройки определяют когда и сколько писем будет вам слать Bugzilla. Если вы хотите получать максимальное объем писем — нажмите на кнопку «Enable All Mail». Если не хотите получать почту от Bugzilla вообще — нажмите «Disable All Mail». Администратор Bugzillы может также заблокировать получение почты пользователем через добавление имени пользователя в файл data/nomail. Но такие крутые меры применяются в исключительных случаях — например, для аккаунтов уволившихся сотрудников. Более детальную настройка описана ниже. «Global options»Раздел «Global options» содержит (пока?) только настройки извещений по флагам (см. #Флаги):
«Field/recipient specific options»Если вы хотите получать почту, но не во всех случаях, то используйте таблицу «Field/recipient specific options». Каждая запись в таблице соответствует событию бага (новый комментарий, изменение приоритета и т. п.). Колонки в таблице соответствуют вашей связи с багом:
Некоторые из описанных колонок могут отсутствовать, это определяется конфигурацией конкретной инсталляции. Определите, в каких случаях вы хотите получать письма от Bugzilla, и в каких отношениях с багом должны вы при этом находиться и поставьте/оставьте галочки только в соответствующих клетках. Почту также можно фильтровать по различным заголовкам X-Bugzilla-ЧтоНибудь, присутствующих во всех письмах от Bugzilla. См. #Дополнительные email заголовки. По умолчанию, Bugzilla рассылает почту вне зависимости от того, кто был автором измения бага, и вы будете получать почту, даже если вы будете единственным лицом, связанным с багом. Если вы не хотите получать письма после своих собственных изменений, поставьте галочки в строке [ «but not when» ] «The change was made by me». На самом деле, если использовать более-менее вменяемый почтовый клиент, лучше разрешить получать почту и комментарии при своих изменениях, добавив правило «помечать письма содержащие 'xxx@company.com changed:' как прочтенные» (Вместо «xxx@company.com» разумеется, подставьте ваш логин). Это даст вам возможность, установив локальный поисковик и проиндексировав почту, удобного полнотекстового поиска по всем комментариям «связанных» с вами багов. «User Watching»Если вы введете список (разделенный запятыми) пользовательских аккаунтов (обычно совпадающих с email-адресами) в «Users to watch», то вы будете получать копию всех писем рассылаемых пользователю Bugzillой (с учетом настроек безопасности). Если вы не видите это поле в настройках — значит была Bugzilla установлена без этой возможности, и для ее активации нужно обратиться к системному администратору. В этом же разделе, в информационном поле «Users watching you» перечислены пользователи «следящие» за вашим потоком извещений от Bugzilla. В нашей инсталляции, можно «подписываться» на почту других пользователей и «подписывать» (а также «отписывать») других пользователей на себя. Не злоупотребляйте этой возможностью! PermissionsЭто чисто информационная страница-закладка, описывающая все права пользователя в текущей инсталляции — какие группы продуктов доступны, может ли пользователь редактировать баги и осуществлять административные функции. AdvancedДополнительные email заголовкиBugzilla добавляет некоторые заголовки во все письма. Заголовки — это не subject, а внутренние заголовки письма, увидеть которые обычно можно, выбрав в почтовой программе пункт меню «View Message Headers» или подобный. В большинстве почтовых клиентов эти заголовки также можно использовать для фильтрации почты. Список заголовков:
Также есть набор заголовков, имеющих значением значение соответствующего атрибута бага (какого — несложно понять по названию):
ПримерЗадача 1: Фильтровать почту по багам, содержащую только изменения связанных багов. Решение 1: Заголовок X-Bugzilla-Added-Comments равен 0 и заголовок X-Bugzilla-Changed-Fields пуст. Задача 2: Перемещать в специальную папку письма по багам, назначенным на меня, созданным мной или содержащим вопрос ко мне. Решение 2: В Outlook создать правило, которое будет перемещать письма, содержащие в заголовке "X-Bugzilla-Reason: AssignedTo", или "X-Bugzilla-Reason: CC AssignedTo", или "X-Bugzilla-Type: request", или "X-Bugzilla-Reason: Reporter", в нужную папку. Просмотр ПатчейВажно: под патчем или исправлением, здесь имеется в виду именно патч, то есть файл в специальном стандартном текстовом формате (patch), представляющий собой инструкции для специальной программы-патчера по проносу изменений. А не какие-то тексты программ или инструкции для человека. Просмотр и ревизия исправлений в Bugzilla часто затруднена из-за недостатка контекста, несоответствующих форматов и других сложностей. «Patch Viewer» это дополнение Bugzilla, предназначенное для улучшения контекста, интеграции с Bonsai, LXR, CVS. «Patch Viewer» позволяет:
В нашей инсталляции, мы не используем PatchViewer, так как есть гораздо более удобная система просмотра версионных репозиториев ViewVC (см. #Интеграция с системами контроля версий). Просмотр в Patch ViewerСамый удобный способ для просмотра патчей вызывается по ссылке «Diff» в списке «Attachments», либо ссылкой «View Attachment As Diff» на странице «Edit Attachment». Изучение разницы между двумя исправлениямиДля просмотра разницы между двумя патчами, надо сначала в Patch Viewer войти в просмотр нового патча, затем выбрать в выпадающем списке нужный старый патч, и нажать на кнопку «Diff». Получение большего контекстаЕсли патч был получен с помощью «cvs diff», то можно при просмотре больший контекст (больше строк кода окружающих изменение или добавление). Для этого можно ввести нужное число контекстных строк в текстовое поле над Patch Viewer («Patch / File / [textbox]») и нажать «Enter». Дополнительно по ссылке «File» будут показаны изменения в контексте всего файла. Схлопывание и раскрытие разделов ИсправленияМожно просматривать исправления в разбивке по секциям-файлам — интерфейс понятен, нужно нажимать на ссылки «(+)» и «(-)» в каждом разделе или «Collapse All», «Expand All» (сверху страницы). Ссылки на разделы ИсправленияСсылки на BonsaiЧтобы перейти для детального изучения кода в Bonsai, надо проследовать по ссылке «Lines XX-YY» в заголовке раздела. Это будет работать даже если патч был к старой версии файла, так как Bonsai хранит все версии файлов. Bonsai признан устаревшим и не используется в нашей компании. Ему на замену пришла ViewVC. Создание стандартного DiffПатч может быть преобразован в «unified diff format» путем вызова ссылки «Raw Unified». Ссылки
Любые правки этой статьи будут перезаписаны при следующем сеансе репликации. Если у вас есть серьезное замечание по тексту статьи, запишите его в раздел «discussion». Репликация: База Знаний «Заказных Информ Систем» → «Bugzilla» Статья реплицируется в Wiki4IntraNet. Внимание! Данная статья выбрана для репликации в SMWiki. |
||