标题：缺陷跟踪系统
缺陷跟踪系统简介
缺陷跟踪系统（Defect Trace System ）简称DT  S
随着软件产业的发展，软件的质量已经越来越成为软件产品成功的关键性因素，质量保证的一个重要方法就是通过测试活动来尽早的发现问题。
对于项目管理，缺陷跟踪是很重要的一个环节，它除了可以对需求的完成度进行控制，同时也可以对软件本身的质量进行控制，以保证软件开发迭代的顺利进行。原来的软件项目开发中的缺陷跟踪都是通过EXCEL表格的形式来完成的，这种表格虽然也可以进行项目管理和项目执行度的交互，但效率与实时性不高，同时也不 好维护和统计，因此就出现了缺陷跟踪系统，通过软件技术来解决软件项目的管理问题。
测试的重要性主要体现在: 
1、确保软件需求和设计的一致性；
2、尽早的发现问题,降低维护成本； 
3、经验表明,测试投入通常要占到研发投入的30%~50%；
测试的主要成果为测试报告，通常也称之为问题报告单或缺陷记录。缺陷跟踪管理系统主要完成对缺陷报告的记录、分析和状态更新等管理。一个完善的缺陷跟踪管理系统对于测试的成功实施是非常重要的。 
在项目或产品研发过程中,经常遇到以下问题： 
已经修改的错误重复出现；
无法清晰的描述当前版本的缺陷状态；
对测试中发现的问题,主要依靠记忆得方式来记录;能记录的数量有限,并且经
常遗忘；
采用了记录单或问题表单的方式来记录缺陷,但只是简单的记录了错误内容,没
有分析和流程跟踪能力；
研发经验教训得不到继承,重复同样的错误；
缺陷跟踪管理系统可以规范项目中开发、测试、缺陷处理的流程.
缺陷跟踪系统的使用
缺陷跟踪系统的主要目标缺陷跟踪系统的主要目标在于为改正那些应该改正的缺陷提供帮助。任何不直接支持这个目标的问题，都不是关键问题。有些其他的目标（如形成某些管理报告）都完全兼容于系统的主要目标，每当为系统提议添加新的任务和目标时，都应该将其与主要目标作比较。偏离了系统主要目标的任何目标都应该被排除。
缺陷跟踪系统的任务为实现缺陷跟踪系统的目标，必须确保以下几点：
1）问题一旦报告，所有需要了解该问题的人必须立即获知。
2）不能有任何错误仅因为被某人遗忘而未得到改正。
3）不能有任何错误因为某个程序员的一念之差而未得到改正。
4）使仅因为沟通不畅而未得到改正的错误尽量少。
保持这个任务列表的最小化是基本的要求。
缺陷跟踪系统的概述一个缺陷跟踪系统，需要实现几部分的功能：
1）缺陷的上报，当问题被发现后，可以通过系统进行提交、保留，方便跟踪。
2）缺陷录入系统后，项目经理应该可以通过缺陷跟踪系统进行浏览，定期获得最新的缺陷问题报告。
3）项目经理将缺陷问题报告通过缺陷跟踪系统转交给程序员，程序员可以通过缺陷跟踪系统知道自己负责的修正的缺陷问题报告。
4）缺陷问题的修正处理，当程序员修复问题后，可以通过跟踪系统，通知项目经理问题已修复。
5）对于无法根据缺陷报告重现的问题，也可以通过跟踪系统，向项目经理及测试人员要求更多更详细的信息，并将缺陷问题返回至项目经理重新处理。
6）问题暂缓及申诉过程处理，对于缺陷报告提到的问题，如在当前版本无法实现或者缺陷与需求有冲突的时候，可以将问题置为“暂缓处理”或“提出申诉”。
7）对于优先等级较低的缺陷问题，可能不能被及时处理掉，但必须可以被查询。
8）缺陷跟踪系统可以提供跟踪项目的状态报告。
缺陷跟踪系统的使用者在实际工作中，可能有没有那么细致，或者一个人担任好几个角色。
1）主任测试员 领导项目的测试工作，并对测试和问题报告的质量负有责任。他可能是惟一被允许关闭问题抱高的测试人员。
2）普通测试员 提交缺陷报告，并关注问题如何解决。
3）项目经理 负责按期交付高质量的软件产品。平衡成本、可靠性、产品能力及时间进度，决定哪些缺陷应被改正，优先等级如何划分，对整个项目的进行管理控制。
4）程序员 负责根据缺陷跟踪系统的报告进行缺陷重现、修改、反馈。
5）产品经理 关注的是任何会影响产品销售或技术支持成本的问题。
6）技术支持 负责为客户提供信息、为管理层降低服务费用，并使产品评价起来更为优秀。技术支持与每个暂缓处理或被遗忘的缺陷、每个被拒绝改正的设计问题、用户手册中的每个错误或不清晰之处息息相关，因为它们会导致用户打来电话，耗费支持人员的时间，并且需要支持人员收集信息提供给用户。
7）文档编写人员 负责编写用户手册，编写同时，也会发现缺陷，因此也需要通过缺陷跟踪系统。
8）测试经理 负责测试工作的质量以及管理测试人员。
至于有些项目甚至配备律师角色，他也需要浏览缺陷报告以了解情况。
缺陷跟踪系统的输出1）输出每个新缺陷问题的详细信息。
2）输出每周的项目状态报告。
3）输出项目测试周期完工报告。
4）输出项目的已处理问题和未处理问题报告。
5）输出项目暂缓处理的问题报告。
6）输出项目进展总结报告。
7）输出项目开发结束的产品发布报告单。
尽可能都能提交以上的报告，可以方便所有使用缺陷跟踪系统的角色获取需要的信息。
缺陷跟踪系统的进一步思考对于如何使用缺陷跟踪系统，应该进一步反思，毕竟缺陷跟踪系统只与缺陷有关，与行政无关，但实际情况往往不是如此，缺陷跟踪系统成为了衡量项目参与者工作量的指标，为参与的项目人员造成压力，例如，对于测试人员，衡量他们工作量的是他们对项目提交的缺陷数量，往往为了这个目的，测试人员可能不断的提交缺陷，甚至乎与其他人提交的缺陷相似，这样一来就对程序员造成了压力，容易使工作变得复杂。因此如何使用缺陷跟踪系统需要在实际中讨论进行！
缺陷管理流程中的角色
1、 测试[1]人员：进行测试的人员，缺陷的发起者；
2、 项目经理：对整个项目负责，对产品质量负责的人员；
3、 开发人员：执行开发任务的人员，完成实际的设计和编码工作；
4、 评审委员会：对缺陷进行最终确认，在项目成员对缺陷达不成一致意见时，行使仲裁权力。
目前主流的缺陷跟踪系统
URTracker[2]是一款优秀的国产缺陷跟踪系统软件。相比较其他的缺陷跟踪软件，URTracker提供一些非常必要的其他特性，如：自定义字段功能、自定义流程功能、灵活的权限控制、丰富的通知和提醒、全中文操作、导入导出、协作处理等。[　目前缺陷跟踪系统还是比较多的，比较有名的像Mercury的TestDirector，Seapine的Test Track Pro，TechExcel的DevTrack，Atlassian的JIRA以及今天要重点介绍的Mantis。[2]
目前缺陷跟踪系统还是比较多的，比较有名的像Mercury的TestDirector，Seapine的Test Track Pro，TechExcel的DevTrack，Atlassian的JIRA以及今天要重点介绍的Mantis。 
l TestDirector 
在 工业级软件项目领域，由于Mercury是测试软件领域的老大（比较有名的如LoadRunner、WinRunner等），因此它的TD也成为了缺陷跟 踪系统的标杆产品。其也是最早通过Web方式来进行管理的缺陷跟踪软件。不过由于其早期版本不能灵活的对项目管理流程进行配置，又由于其昂贵的价格，因此 目前应用的企业也不是很多。 
l Test Track Pro 
Seapine 公司主要也是做项目管理软件的，Test Track Pro同其同门配置管理产品Surround SCM可以完美结合并实现完整的代码级管理。其主要架构为Client/Server，同时提供了CGI的Web访问接口，不过其高昂的价格也会让很多公 司望而却步。其License分为两种，Named和Floating，分别为US$295和US$795。 
l DevTrack 
TechExcel 可以说是CRM系统以及HelpDesk系统的老大，它的产品在很多大公司（如Oracle、IBM等）里面都有应用，最新发布的DevTrack功能也 确实强大，在其项目配置的部分可以提供用户对各级项目相关人员的UI进行配置，同时也提供了最大的灵活度给客户，可视化自定义跟踪流程可以实现任何复杂的 配置处理。与Test Track Pro相比，其功能可谓更胜一筹，用他们自己的话讲：“DevTrack – The market leading defect and project tracking tool from TechExcel”。官方网站上没有详细的报价，只是对其SBE(Small Business Edition)有一个大概的报价是含维护费每人每年149美金。其价格也确实符合其产品的层次。 
l JIRA 
JIRA 是目前比较流行的基于Java架构的缺陷跟踪系统，由于Atlassian公司对很多开源项目实行免费提供缺陷跟踪服务，因此在开源领域，其认知度比其他 的产品要高得多，而且易用性也好一些。同时，开源则是其另一特色，在用户购买其软件的同时，也就将源代码也购置进来，方便做二次开发。正因为其开放性，价 格上自然也相当不菲，对于中小型的软件企业做项目管理，则又要另寻出路。 
l Mantis 
Mantis 是一个基于PHP技术的轻量级的缺陷跟踪系统，其功能与前面提及的JIRA系统类似，都是以Web操作的形式提供项目管理及缺陷跟踪服务。在功能上可能没 有JIRA那么专业，界面也没有JIRA漂亮，但在实用性上足以满足中小型项目的管理及跟踪。更重要的是其开源，不需要负担任何费用。不过目前的版本还存 在一些问题，期待在今后的版本中能够得以完善。 
Mantis安装准备 Mantis采用了目前比较流行的LAMP（Linux + Apache + MySQL + PHP）架构，不过也可以通过各个软件的Windows版本进行配置。本文中的运行环境就是基于Windows平台搭建的。 
Mantis安装的软件环境： 
OS：Windows 2003 Server 
Application Server：Apache HTTP Server 2.0.54 or later 
Database Server：MySQL 5.0.10a Beta or later 
Language：PHP 5.1.2 
Mantis：Mantis 1.0.0