个人软件过程的缺陷管理
缺陷是指程序中存在的错误,例如语法错误、标点符号错误或者是一个不正确的程序语句,是任何影响程序完整而有效的满足用户要求的东西,是可以表示、描述和统计的客观事物。
有人把缺陷称为Bug,这是不正确的。当成为Bug时,令人想到的是那些令人讨厌的小虫子,应该把它们拍死或者不予理睬。这会使一些重要的问题被视为琐碎小事,会养成一种错误的态度。缺陷并不像无足轻重的Bug,更像是定时炸弹。大家可能会觉得有些夸大其词,绝大部分细小的缺陷没有引起严重后果。然而不幸的是,很小一部分看起来无关紧要的缺陷却能引起严重问题。虽然现在缺陷对你来说还不是一个严重问题,但很快就会成为一个重要的问题。
设计错误的复杂性和所导致的缺陷的影响没有直接关系,一些微小的编码错误却可能引起严重的系统问题。事实上,绝大多数软件缺陷都源于程序员的疏忽大意。
为了减小缺陷,就必须进行缺陷管理,研究已经引入的缺陷,确定引起这些缺陷的原因,并学会在将来如何避免重复同样的错误。
缺陷分类。在分析缺陷时,将缺陷进行分类是有帮助的。通过缺陷分类,可以迅速找出哪一类缺陷的问题最大,然后集中精力预防和排除这一类缺陷,这就是缺陷管理的关键。把精力集中到最容易引起问题的几类缺陷上,一旦这几类缺陷得到控制,在进一步找到新的容易引起问题的几类缺陷上。表4.1是Chillarege和他的IBM研究院的工作成果。
不要急于把10种类型的每一类细分出若干子类,直到你已经搜集到大量程序的缺陷数据。那时,才能够看出哪里需要更详细以及补充什么样的信息才是最有用的。
统计缺陷个数。采用缺陷记录日志,记录那些当你完成初始设计或编码后仍然留在产品中的缺陷。人们很容易对缺陷辩解,但是要管理好缺陷,就必须收集有关缺陷的准确数据。如果原谅缺陷,那只会自欺欺人。如果你这样做的话,就别指望有所提高。
为什么要尽早发现缺陷。不要期望一个简单拼凑出来的满是缺陷的程序,经过修改可以成为一个合格的产品。一旦生产出一个有缺陷的程序,它将永远是有缺陷的。虽然你可以修复所有已知的问题,并且让它通过所有的测试,但它还是一个有许多不定的有缺陷的程序。如果工程师能宽容有缺陷的工作,他将生产出低质量的产品。“我们忙,以后在修补吧”,这样的态度不可能出产出优质产品。
发现和修复缺陷的费用。在典型项目中,产品被分成很多小的模块,由不通的工程师负责开发。在模块设计、实现、编译后,工程师作初始的单元测试;单元测试后,多个模块组成一些大组件进行集成测试;经过各种级别的组件测试后,这些组件集成为产品进行产品设计;最后,将产品集成到系统中进行系统测试。随着系统的规模和复杂程度不同,单元测试、集成测试、组件测试、产品测试、系统测试的类型、持续时间、复杂程度有所不同,但几乎所有规模的软件产品,都需要这个过程。
研究证明,开发过程每前进一步,发现和修复缺陷的平均代价要增长10倍。尽管缺陷的修复时间变化很大,但平均时间总是遵循这样的规律,而与缺陷的类型无关。
发现和修复缺陷的方法。尽管没有办法不引入缺陷,但是在开发过程中尽早发现和修复缺陷还是可能的。有多种发现程序中的缺陷的方法,基本上都包括以下步骤:表示缺陷征兆;从征兆中推断出缺陷的位置;确定程序中的错误;决定如何修复缺陷;修复缺陷;验证这个修复是否已经解决了这个问题。
有多种工具和辅助手段来帮助完成这些步骤,工程师最常用的工具是编译器,它能够表示出大部分语法缺陷。但是编译器最基本的任务是生成目标代码,并且可能会在源程序有缺陷的情况下生成代码。因此,不能检查出所有的拼写、标点符号或其他不符合语法的缺陷。一般编译器仅提供了缺陷的征兆,你必须自己对问题定位,并确定是什么问题,通常很快能够做到这一点,但偶尔也需要较长的时间
另外一种常用方法就是上面讲述的测试。测试的质量是由测试用例覆盖所有程序功能的程度决定的。测试可以用来验证程序几乎所有的功能,但有自己的缺点:同编译器一样只能满足缺陷派出的第一个步骤,你仍必须从缺陷征兆找出问题的根源,然后才能修复;随着项目规模的扩大,全面的测试会花费大量的时间,要进行完全测试几乎不可能的。
最有效的发现和修复缺陷的方法是个人复查源程序清单。这种方法是负很难彻底清除程序中的缺陷,但事实证明,这是最快而且最有效的方法。
代码复查就是研究源代码,并从中发现错误。代码复查更有效的原因是:在复查时看到的是问题本身而不是征兆。从头到尾复查代码时,考虑的是程序应该做什么。因此,当看到某些地方不正确时,就可以看到可能的问题是什么,并立即去验证代码。复查的缺点是:非常耗时,而且很难恰当的进行;复查时一种技能,当然可以通过学习和实践来提高。
代码复查的第一步是了解自己引入的缺陷的种类,这是收集缺陷数据的主要原因。因为在下一个程序中引入的缺陷种类一般会与前面的基本类似,只要采用同样的软件开发方法,情况会一直如此。另一方面来说,当你有了技能和经验或改变了过程,缺陷的类型和数目会随之变化。但是到了一定程度后,改进就变得非常困难了。这是,就必须研究缺陷,这可以帮助你找到更好的发现和修复缺陷的方法。
如何进行代码复查。代码复查的目标是在软件过程中尽可能早和尽可能多的发现缺陷,缺陷发现时间越少越好。采用表4.3描述的一个有序的检查方法,在编译之前进行代码复查,是完成目标最好的方法。
编译之前进行复查。有几个原因说明应在编译之前进行代码复查:不论编译前或编译后,进行完整的代码复查的时间大约相同;不论编译前或编译后,对检查语法有效性的效果是一样的;先做复查将节省大量编译时间,若不做代码复查,一般要花12%~15%的开发时间进行编译,一旦使用代码复查后,编译时间可以缩短至3%或更少;编译程序后,代码一般复查很难彻底的进行; 经验证明,在编译阶段有大量的缺陷时,一般在测试阶段也有许多缺陷。
建立个人代码复查检查表。如果想发现和改正程序中的每一个缺陷,就必须遵照一个精确的规程。检查表可以确保遵循这个规程,它包括一系列程式的步骤。按照检查表去作时,就知道如何进行代码复查。
如果能够正确使用检查表,还能知道每个步骤发现了多少缺陷。这样就能测量出复查过程的效率,并进一步改进检查表。检查表包括了个人的经验。通过不断的使用和改进个人检查表,就可以帮助你用较少的时间发现这些缺陷。表4.4是一个C++程序代码复查表的范例。
定期更新检查表。随着时间的推移,检查表自然的要变大。但是,检查表的主要作用是帮助你把注意力集中在关键的方面。太大以后,你将失去重点。所以要定期复查缺陷数据,删除那些不能找到问题的表项。
从个人检查表的方法可以认识到,每个工程师都有各自的特点,某个工程师的实践经验对别人不一定适用。因而要设计出适合自己的检查表,并定期的对它进行检查以保证检查表更有效。只要你在代码复查中还遗漏缺陷,就要不断寻找改进检查表的方法。
进展是很缓慢的。最初,你发现缺陷的能力随着每次复查都有所提高。此后,提高将变得很困难。要坚持收集和分析缺陷数据,并坚持思考如何才能预防缺陷的产生或怎样更好的找到缺陷。只要坚持不断的做下去,就能在代码复查中不断进步,不断提高自己编写程序的质量。
编码标准。编码标准是被广泛接受的、能够作为工作样板的编码实践集。良好的编码标准将有效地帮助您避免开发有潜在危险的代码,有助于预防缺陷。例如,可以在编码标准中列出那些应该避免使用的方法,规定号循环入口或在说明是初始化变量,避免不良的变量命名等。编码标准还能有效地统一和规范整体开发活动。当其他开发人员加入到项目中来时,他们能够很好地适应这一切。代码也将变得更规范更易维护。
其他种类的代码复查。在软件组织中,一种常用的方法是同行评审,就是几个工程师彼此复查程序。组织良好的同行评审一般会发现程序中50%~70%的缺陷。互查虽然需要很多时间,但是可以有效发现缺陷,因为工程师往往难于发现自己的设计错误。他们创作这个设计,直到程序应该完整什么,即使概念有瑕疵、作了错误的设计或实现假定,他们往往很难发现。检查这可以帮助他们克服这些问题。对一个大的项目,最佳检查策略是,先做个人代码复查再进行编译,然后在任何测试前进时行同行检查。
细心工作是有回报的。当工程师觉得对自己开发的程序附有质量责任时,他就不会依赖于编译器或其他工具来发现缺陷。全面的代码复查要花费时间,但是他们节省出来的时间比花费的时间多得多,并能够生产出更好的产品。
引入缺陷是人类的正常现象,所有的工程师都会引入缺陷。因此所有的工程师都应该了解自己引入缺陷的类型和数据。
在开发过程中,总是可再进行一轮测试或代码复查,决定是否这样做的唯一方法就是分析缺陷数据。通过分析历史数据,可以估计出程序中缺陷的个数。通过把当前项目的数据??的质量情况。这样就能决定是否需要增加一些缺陷排除步骤。
缺陷率的预测。当开发一个新的程序时,可能会觉得很难估计你将引入多少缺陷,理由是缺陷的个数因程序的不同而不同。缺陷个数不稳定是有以下几个原因造成的。首先使经验问题,个人的技能是在不断提高的。开始编程序时,要面临着很多以前没有碰到过的问题。往往不能确定有些过程和函数是如何执行的,可能是语言的结构不清楚或者可能会遇到新的编译器或编程环境的问题。这些问题都会引起开发时间和缺陷路的波动。有了经验后,你将逐渐克服这些问题,犯的错误就减少了。这既减少缺陷的总数又减少缺陷数目的波动。缺陷的减少起初是由于经验的增加和对语言熟练程度的提高。经过这最初的提高后,就需要收集和分析缺陷数据来进一步改进了。
缺陷路波动的第二个原因是个体过程不稳定。当开始学习写程序时你也同时开始学习使用新的过程和方法。你的过程将随着实际的经验不断的发展,这就会引起完成不同程序任务的时间和引入缺陷的数据的波动。
最后,缺陷本身也是这种变化的原因,引入的缺陷越多,修复这些缺陷所花时间就越长。修复缺陷所花的时间越长,引入新的缺陷的几率也就会增加。因此缺陷的修改时间变动幅度很大。所以,很难对一个引入很多缺陷的过程进行预测。
随着开发过程的改进,过程会逐步稳定下来。这种稳定将提高缺陷预测的准确性。试验证明,如果在代码复查方面花了足够的时间,你的过程会迅速稳定下来。一旦你的过程相当稳定,缺陷也将容易预测。
根据对最近的程序跟踪每千行引入和排除的缺陷数,就可估计出在将来的程序中可能引入和排除的缺陷数。
软件测试中针对缺陷采取怎么样的管理流程
简单的概括如下: 1. 找到缺陷后, 记录缺陷的各方面信息(如:日志, 图片, 测试步骤, 是否能重复等等). 2. 提交缺陷报告. 3. 跟踪这个缺陷, 看其何时修复. 4. 当缺陷修复后, 再对其进行测试. 并对因这个缺陷而受影响的其它功能进行测试.(如果没有就不测) 5. 如果这个缺陷测试通过, 关闭这个缺陷报告. 如果没有通过, 则再次指回修复缺陷人员, 重新修复. (以此循环, 直到缺陷修复或者其它结论)
软件BUG管理流程?
1. 测试人员提交新的Bug入库,错误状态为New。
2. 高级测试人员验证错误,如果确认是错误,分配给相应的开发人员,设置状态为Open。如果不是错误,则拒绝,设置为Declined(拒绝)状态。
3. 开发人员查询状态为Open的Bug,如果不是错误,则置状态为Declined;如果是Bug则修复并置状态为Fixed。不能解决的Bug,要留下文字说明及保持Bug为Open状态。对于不能解决和延期解决的Bug,不能由开发人员自己决定,一般要通过某种会议(评审会)通过才能认可。
4. 测试人员查询状态为Fixed的Bug,然后验证Bug是否已解决,如解决置Bug的状态为Closed,如没有解决置状态为Reopen。
软件错误流程管理要点 为了保证错误的正确性,需要有丰富测试经验的测试人员验证发现的错误是否是真正的错误,书写的测试步骤是否准确,可以重复。
每次对错误的处理都要保留处理信息,包括处理姓名,时间,处理方法,处理意见,Bug状态。
拒绝或延期错误不能由程序员单方面决定,应该由项目经理,测试经理和设计经理共同决定。
错误修复后必须由报告错误的测试人员验证后,确认已经修复,才能关闭错误。
加强测试人员与程序员的交流,对于某些不能重复的错误,可以请测试人员补充详细的测试步骤和方法,以及必要的测试用例
常用的软件测试工具和缺陷管理工具都有那些!
这些工具都是现在比较流行且容易上手的
测试工具有(这个自动化就是尽量减少人工重复劳动的回归测试,性能就是找出软件的瓶颈)
1.性能测试:LOADRUNNER
2.自动化测试:QTP
缺陷管理工具有(说白了这就是用来记录bug的,程序员与测试员之间通过这个来修复bug):
1.QC
2.TD
书籍有:
软件测试的艺术,我觉得这本书不错,对新手来说
精通自动化测试LOADRUNNER
测试还需要懂写脚本语言
java c vbs等这些都可以用来写测试脚本的
暂时先就说这些。。。。。。
软件测试的项目有哪些常用的缺陷管理工具?
1.QC
QC的全称Quality center, 质量中心的意思,它是一款缺陷管理工具,可以组织和管理一个项目所有的测试阶段.
2.Bugzilla,
Bugzilla是一个Bug追踪系统设计用来帮助你管理软件开发。
Bugzilla是一开源Bug Tracking System,是专门为Unix定制开发的。但是在windows平台下依然可以成功安装使用.
3.Bugfree,
BugFree是借鉴微软的研发流程和Bug管理理念,使用PHP+MySQL独立写出的一个Bug
管理系统。简单实用、免费并且开放源代码(遵循GNU GPL)。
4.JIRA
JIRA是集项目计划、任务分配、需求管理、错误跟踪于一体的商业软件。
JIRA功能全面,界面友好,安装简单,配置灵活,权限管理以及可扩展性方面都十分出色。
JIRA创建的默认问题类型包括New Feature、Bug、Task和Improvement四种,还可以自己定义,所以它也一是过程管理系统。
Jira融合了项目管理、任务管理和缺陷管理,许多著名的开源项目都采用了JIRA。
JIRA 是目前比较流行的基于Java架构的管理系统,由于Atlassian公司对很多开源项目实行免费提供缺陷跟踪服务,因此在开源领域,其认知度比其他的产品要高得多,而且易用性也好一些。同时,开源则是其另一特色,在用户购买其软件的同时,也就将源代码也购置进来,方便做二次开发。
5.Mantis
Mantis是一个基于PHP技术的轻量级的缺陷跟踪系统,其功能与前面提及的JIRA系统类似,都是以Web操作的形式提供项目管理及缺陷跟踪服务。在功能上可能没有JIRA那么专业,界面也没有JIRA漂亮,但在实用性上足以满足中小型项目的管理及跟踪。更重要的是其开源,不需要负担任何费用。不过目前的版本还存在一些问题,期待在今后的版本中能够得以完善。
6.Readmine
Redmine是用ruby开发的基于web的项目管理软件,免费。JIRA收费
Redmine可以创建子任务,而jira不易创建子任务。
Redmine来管理项目,但它没有用例管理.
7.禅道
禅道项目管理软件是开源,集产品管理、项目管理、质量管理、文档管理、组织管理和事务管理于一体,是一款功能完备的项目管理软件,完美地覆盖了项目管理的核心流程。
8.TAPD
TAPD项目管理软件是基于敏捷开源,隶属腾讯开发出来的,集产品管理、项目管理、质量管理、文档管理、组织管理和事务管理于一体,是一款功能完备的项目管理软件,完美地覆盖了敏捷项目管理的核心流程。
9.TESTLINK
略
10.TD
略
如果想这块内容增强的小伙伴参考网上的相关知识(黑马程序员论坛等)
在工作过程中如何使用缺陷管理工具
软件中的缺陷(Defect或Bug)是软件开发过程中的”副产品”。缺陷的定义可以很广泛,在软件使用过程中所出现的任何一个可疑问题,或者导致软件不能符合设计要求或满足消费者需要的问题都可以是Bug。 每一个软件组织都知道必须妥善处理软件中的缺陷。这是关系到软件组织生存、发展的质量根本。可遗憾的是,并非所有的软件组织都知道如何有效地管理自己软件中的缺陷。 如果没有建立有效的缺陷跟踪管理流程,将可能导致如下的问题: 没有人记录自己发现的缺陷。 无法保证测试人员提交的缺陷报告符合规范要求。 测试人员发现的缺陷可能被开发人员忽略或遗忘。 没有人知道在新的软件版本里,究竟纠正了哪些缺陷,还有哪些缺陷未被纠正。 导致项目的交货期变得非常不可预测。 地域分散的开发团队, 通过email和文档交流,缺陷状态混乱,相关人员无法及时获得有关的变更信息。 无法对缺陷进行统计分析,查找原因并制定相应的预防改善措施。 URTracker在缺陷跟踪方面相对于其他软件的优势 可以对不同的项目定义不同的人员分组、事务字段和bug处理流程。当某个项目需要客户参与时,您可以创建“客户”组;当需要合作伙伴参与时,可以创建“合作伙伴”组;当市场人员需要参与时,可以创建“市场人员”组。 以“流转”的方式处理和更新Bug,而不是仅仅通过“编辑”操作(有权限的人都可以进行编辑,而只有bug的当前处理人才能将bug流转到下一个状态和待办人)。 在流转的过程中控制bug描述字段的填写和更新。如:在测试人员提交bug的时候,并不需要填写“优先级”“故障原因”“解决方案”等信息。因为测试人员本身无法确定这些信息,这些信息应该由项目经理在分配bug时填写。您可以通过对字段或步骤进行简单的设置即可实现这样的需求。 支持多种类型的系统预定义字段和用户自定义字段,支持丰富的输入输出控制特性。 控制每个工作组人员的权限。比如: 客户或合作伙伴所在的工作组,可以不允许其查看不是自己提交的bug; 只有项目经理所在的组成员可以删除某个bug,或者将bug重分配给另外一个开发人员处理; 可以对每个字段进行读写权限的控制。
一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?
你好:
1) 通用UI要统一、准确
缺陷报告的UI要与测试的软件UI保持一致,便于查找定位。
2) 尽量使用业界惯用的表达术语和表达方法
使用业界惯用的表达术语和表达方法,保证表达准确,体现专业化。
3) 每条缺陷报告只包括一个缺陷
每条缺陷报告只包括一个缺陷,可以使缺陷修正者迅速定位一个缺陷,集中精力每次只修正一个缺陷。校验者每次只校验一个缺陷是否已经正确修正。
4) 不可重现的缺陷也要报告
首先缺陷报告必须展示重现缺陷的能力。不可重现的缺陷要尽力重现,若尽力之后仍不能重现,仍然要报告此缺陷,但在报告中要注明无法再现,缺陷出现的频率。
5) 明确指明缺陷类型
根据缺陷的现象,总结判断缺陷的类型。例如,即功能缺陷、界面缺陷、数据缺陷,合理化建议这是最常见的缺陷或缺陷类型,其他形式的缺陷或缺陷也从属于其中某种形式。
6) 明确指明缺陷严重等级和优先等级
时刻明确严重等级和优先等级之间的差别。高严重问题可能不值得解决,小装饰性问题可能被当作高优先级。
7) 描述 (Description) ,简洁、准确,完整,揭示缺陷实质,记录缺陷或缺陷出现的位置
描述要准确反映缺陷的本质内容,简短明了。为了便于在软件缺陷管理数据库中寻找制定的测试缺陷,包含缺陷发生时的用户界面(UI)是个良好的习惯。例如记录对话框的标题、菜单、按钮等控件的名称。
8) 短行之间使用自动数字序号,使用相同的字体、字号、行间距
短行之间使用自动数字序号,使用相同的字体、字号、行间距,可以保证各条记录格式一致,做到规范专业。
9) 每一个步骤尽量只记录一个操作
保证简洁、条理井然,容易重复操作步骤。
10) 确认步骤完整,准确,简短
保证快速准确的重复缺陷,“完整”即没有缺漏,“准确”即步骤正确,“简短”即没有多余的步骤。
11) 根据缺陷,可选择是否进行图象捕捉
为了直观的观察缺陷或缺陷现象,通常需要附加缺陷或缺陷出现的界面,以图片的形式作为附件附着在记录的“附件”部分。为了节省空间,又能真实反映缺陷或缺陷本质,可以捕捉缺陷或缺陷产生时的全屏幕,活动窗口和局部区域。为了迅速定位、修正缺陷或缺陷位置,通常要求附加中文对照图。
附加必要的特殊文档和个人建议和注解
如果打开某个特殊的文档而产生的缺陷或缺陷,则必须附加该文档,从而可以迅速再现缺陷或缺陷。有时,为了使缺陷或缺陷修正者进一步明确缺陷或缺陷的表现,可以附加个人的修改建议或注解。
12) 检查拼写和语法缺陷
在提交每条缺陷或缺陷之前,检查拼写和语法,确保内容正确,正确的描述缺陷。
13) 尽量使用短语和短句,避免复杂句型句式
软件缺陷管理数据库的目的是便于定位缺陷,因此,要求客观的描述操作步骤,不需要修饰性的词汇和复杂的句型,增强可读性。
以上概括了报告测试缺陷的规范要求,随着软件的测试要求不同,测试者经过长期测试,积累了相应的测试经验,将会逐渐养成良好的专业习惯,不断补充新的规范书写要求。此外,经常阅读、学习其他测试工程师的测试缺陷报告,结合自己以前的测试缺陷报告进行对比和思考,可以不断提高技巧。
14) 缺陷描述内容
缺陷描述的内容可以包含缺陷操作步骤,实际结果和期望结果。操作步骤可以方便开发人员再现缺陷进行修正,有些开发的再现缺陷能力很差,虽然他明白你所指的缺陷,但就是无法再现特别是对系统不熟悉的新加入开发人员,介绍步骤可以方便他们再现。实际结果可以让开发明白错误是什么,期望结果可以让开发了解正确的结果应该是如何。
希望楼主采纳 ,谢谢!
现在世面上的软件测试的 缺陷管理工具和配件管理工具都有哪几种啊?
缺陷跟踪工具 trackrecord,Testtrack Lotus Notes Quality Center 配置管理工具 ClearCase,Version Control,Workspace Management,Build Management,Process Control
使用bugzilla缺陷管理工具对软件缺陷跟踪的管理流程是什么
1、当你发现问题的时候,可以新建一个BUG,将bug的信息填写完整;2、当bug被改好以后可将状态改为已修改或是标记或不确定状态;3、当bug再次出现的时候可以将状态改为再次打开;4、确定更改后关闭bug.
软件测试缺陷的管理原则是什么意思
软件测试缺陷的管理原则是分类管理,追踪管理,归零原则.具体说来,按功能缺陷,性能缺陷,可靠性缺陷等分类管理,按缺陷重要成为严重,重要,一般等,缺陷需要和测试用例建立追踪关系,缺陷需归零.