需求分析实例
回答:海底行 神 10月22日 10:37 尽量把客户所持的假设解释清楚,特别是那些发生冲突的部分。
从字里行间去理解以明确客户没有表达清楚但又想加入的特性或特征。
Gause 和Weinberg(1989)提出使用“上下文无关问题”—这是一个高层次的问题,它可以获取业务问题和可能的解决方案的全部信息。
客户对这些问题的回答诸如“产品要求怎样的精确度”或“你能帮我解释一下你为什么不同意某人的回答吗?”这些回答可以更直接地认识问题,而这是封闭(close-end)问题所不能做到的。
需求获取利用了所有可用的信息来源,这些信息描述了问题域或在软件解决方案中合理的特性。
一个研究表明:比起不成功的项目,一个成功的项目在开发者和客户之间采用了更多的交流方式(Kiel and Carmel 1995)。
与单个客户或潜在的用户组一起座谈,对于业务软件包或信息管理系统(MIS)的应用来说是一种传统的需求来源。
直接聘请用户进行获取需求的过程是为项目获得支持和买入(buy-in)的一种方式。
尽量理解用户用于表述他们需求的思维过程。
充分研究用户执行任务时作出决策的过程,并提取出潜在的逻辑关系。
流程图和决策树是描述这些逻辑决策途径的好方法。
在需求获取的过程中,你可能会发现对项目范围的定义存在误差,不是太大就是太小。
如果范围太大,你将要收集比真正需要更多的需求,以传递足够的业务和客户的值,此时获取过程将会拖延。
如果项目范围太小,那么客户将会提出很重要的但又在当前产品范围之外的需求。
当前的范围太小,以致不能提供一个令人满意的产品。
需求的获取将导致修改项目的范围和任务,但作出这样具有深远影响的改变,一定要小心谨慎。
正如经常所说的,需求主要是关于系统做什么,而解决方案如何实现是属于设计的范围。
这样说虽然很简洁,但似乎过于简单化。
需求的获取应该把重点放在“做什么”上,但在分析和设计之间还是存在一定的距离。
你可以使用假设“怎么做”来分类并改善你对用户需求的理解。
在需求的获取过程中,分析模型、屏幕图形和原型可以使概念表达得更加清楚,然后提供一个寻找错误和遗漏的办法。
把你在需求开发阶段所形成的模型和屏幕效果看成是方便高效交流的概念性建议,而不应该看成是对设计者选择的一种限制。
需求获取讨论会中如果参与者过多,就会减慢进度。
人数大致控制在5到7人是最好的。
这些人包括客户、系统设计者、开发者和可视化设计者等主要工程角色。
相反地,从极少的代表那里收集信息或者只听到呼声最高、最有舆论影响的用户的声音,也会造成问题。
这将导致忽视特定用户类的重要的需求,或者其需求不能代表绝大多数用户的需要。
最好的权衡在于选择一些授权为他们的用户类发言的产品代表者,他们也被同组用户类的其它代表所支持。
没有一个简单、清楚的信号暗示你什么时候已完成需求获取。
当客户和开发者与他们的同事聊天、阅读工业和商业上的文献及在早上沐浴时思考时,他们都将对潜在产品产生新的构思。
你不可能全面收集需求,但是下列的提示将会暗示你在需求获取的过程中的返回点。
1. 如果用户不能想出更多的使用实例,也许你就完成了收集需求的工作。
用户总是按其重要性的顺序来确定使用实例的。
2. 如果用户提出新的使用实例,但你可以从其它使用实例的相关功能需求中获得这些新的使用实例,这时也许你就完成了收集需求的工作。
这些新的使用实例可能是你已获取的其它使用实例的可选过程。
3. 如果用户开始重复原先讨论过的问题,此时,也许你就完成了收集需求的工作。
4. 如果所提出的新需求比你已确定的需求的优先级都低时,也许你就完成了收集需求的工作。
5. 如果用户提出对将来产品的要求,而不是现在我们讨论的特定产品,也许你就完成了收集需求的工作。
以上知识大致上讨论需求分析应该如何做,实际上对于需求分析的方法有很多很多,已经形成了一定的理论,当然这种理论比较偏向与方法学,而方法学的应用主要还是要靠个人。
所以,大家在实际应用的时候,不妨结合自己的实际,有选择性的采用一些方法,那你就是成功的。
用例在需求分析中的使用 多年来,分析者总是利用情节或经历来描述用户和软件系统的交互方式,从而获取需求(McGraw and Harbison 1997)。
Ivar Jacobson(1992)把这种看法系统地阐述成用例(用例)的方法进行需求获取和建模。
虽然用例来源于面向对象的开发环境,但是它也能应用在具有许多开发方法的项目中,因为用户并不关心你是怎样开发你的软件。
而最重要的,用例的观点和思维过程带给需求开发的改变比起是否画正式的用例图显得更为重要。
注意用户要利用系统做什么远远强于询问用户希望系统为他们做什么这一传统方法。
用例的重要功能是用画用例图的功能来鉴别和划分系统功能。
它把系统分成角色(actor)和用例(用例)。
角色(actor)表示系统用户能扮演的角色(role)。
这些用户可能是人,可能是其他的计算机一些硬件或者甚至是其它软件系统,唯一的标准是它们必须要在被划分进用例的系统部分以外。
它们必须能刺激系统部分并接收返回。
用例描述了当角色给...
软件需求管理这本书怎么样
作者采用一种非形式化、易于接受的风格,讲述他们自己的实战经历,并通过大量的个例研究,向我们展示了设计和开发人员如何把用例技术和传统的软件表达形式相结合,高效地确定需求。
书中还介绍了一些经过实践证明的用以确定、实现和确认需求的技术。
书中给出了在整个项目生命周期中,管理需求的六大团队技能;分析问题,理解用户需要,定义系统,管理范围,细化系统定义和构建正确的系统。
本书特别强调不断地管理变更,描述了一个过程,确保成功定义项目范围,并使所有涉众达成共识。
书中讨论的主要问题包括: ·问题分析的五个步骤 ·业务建模和系统工程 ·从客户和涉众那里启发需求的技术 ·建立和管理项目范围 ·应用和细化用例 ·产品管理 ·从需求到设计和实现的过渡 ·从用例到测试用例的过渡 ·敏捷需求方法
软件测试需求分析的主要步骤是什么
软件测试就是在软件交付用户使用或投入运行前,对软件需求规格说明、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。
软件测试是为了发现错误而执行程序的过程。
软件测试在软件生命周期中横跨两个阶段:通常在编写出每一个模块之后就需要对它做必要的测试(称为单元测试)。
编码和单元测试属于软件生命周期中的同一个阶段。
在结束这个阶段后对软件系统还要进行各种综合测试,如集成测试、系统测试、性能测试和配置测试等,这是软件生命周期的另一个独立阶段,即测试阶段。
软件测试的目的:1、测试的最终目的是为了避免错误的发生,确保应用程序能够正常高效的运行;2、好的测试用例在于发现至今未发现的错误;3、成功的测试是发现了至今未发现的错误的测试;4、好的测试工程师应该做到不仅发现问题,还能够帮助开发人员分析问题;软件测试的原则:1、应把“尽早和不断地进行软件测试”作为软件开发者的座右铭,实践证明单元测试能够尽早发现问题,减少后期测试的错误量。
可以采用Junit和Jtest来辅助进行单元测试。
2、测试用例应由测试输入数据、测试执行步骤和与之对应的预期输出结果三部分组成。
3、应当避免由程序员检查自己的程序。
(指后期系统测试阶段,不包括单元测试)4、测试用例的设计要确保能覆盖所有可能路径。
在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。
不合理的输入条件是指异常的,临界的,可能引起问题的输入条件。
5、充分注意测试中的群集现象。
经验表明,测试后程序残存的错误数目与该程序中已发现的错误数目或检错率成正比。
应该对错误群集的程序段进行重点测试。
6、严格执行测试计划,排除测试的随意性。
测试计划应包括:所测软件的功能,输入和输出,测试内容,各项测试的进度安排,资源要求,测试资料,测试工具,测试用例的选择,测试的控制方法和过程,系统的配置方式,跟踪规则,调试规则,以及回归测试的规定等等以及评价标准。
7、应当对每一个测试结果做全面的检查。
8、妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。
软件测试的对象:软件测试并不单纯等同于程序测试。
软件测试应该贯穿整个软件定义与开发整个期间。
因此需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应该是软件测试(评审)的对象。
在对需求理解与表达的正确性、设计与表达的正确性、实现的正确性以及运行的正确性的验证中,任何一个环节发生了问题都可能在软件测试中表现出来 希望对你有用
如何才能写好一个软件的测试用例
写好一个软件的测试用例的建议有:1、测试用例名称,也叫测试用例标题,一定要写得简洁、明了,需要用概括的语言描述该用例的出发点和关注点,使得测试人员第一眼看到测试用例名称就能够明白测试用例的目的。
用例名称中一般要求不能存在假设性的语句,并且原则上每个用例的名称不能重复。
2、预置条件要明确,包括测试环境、测试数据、测试场景。
因为许多BUG只有在特定的环境、特定的场景下才可以重现。
没有正确的前提条件,就无法进行后面的测试步骤或无法得到预期的结果。
3、测试步骤描述要简单、清晰,并且要清楚每一个步骤的描述,比如:第一步,输入用户姓名;第二步,输入登录密码;第三步,用户点击登录。
步骤写的明确时就利于提高用例的可操作性。
4、用例的预期结果要完整而且清晰,并且要将各个输出的结果写出来,包括:返回值的内容、数据库相关字段的记录、界面的响应结果、输出结果的规则符合度、日志的检查和对其它业务影响的检查。
5、测试用例级别要划分清楚,这样在测试执行时有主次之分。
6、测试用例的划分也要单一,一个测试用例只检查功能点的一种情况。
一个用例检查的情况太多,会导致用例的目的不明确。
而且这样组织用例,有利于需求覆盖率的统计。
一个功能点我们测试了哪些情况,以及哪些功能点我们在重点测试,一目了然。
谁有软件测试用例模板、测试总结模板、测试报告模板
测试计划测试概述: 测试背景:测试手段:手工测试测试范围:功能测试 界面测试 接口测试 容错测试 安全测试 性能测试 稳定性测试 恢复测试 配置测试 安装测试 文档测试 可用性测试测试环境:软件环境 操作系统 被测软件 其他软件硬件配置PC 配置:CPU内存 :1G外部设备测试策略: 一.功能测试1.菜单点击相应标题菜单,验证其功能是否能实现2.工具栏 点击相应工具栏,验证其功能是否实现3.按钮 4.快捷键5.下拉框6.单选按钮7. 复选按钮8.切换按钮9.编辑按钮 10.触发键: 11.链接:二 .界面测试 点击相应按钮是否满足UI设计1登陆界面2总界面3 输入界面 4处理界面5输出界面6提示界面三. 容测测试 是否满足数据库设计要求 主键容错非空容错 四、接口测试 点击相应的菜单 按钮 工具栏按钮 弹出相应的接口界面,验证其功能是否能正确实现 模块之间的调用 是否满足概要设计的要求 1.内部接口 2.业务流程测试 3.外部接口五、安全测试1.应用级安全测试 2.系统级安全测试 点击相应菜单,验证其功能是否实现 六.性能侧试七.负载测试 八.稳定性测试九 .恢复测试十.配置测试 十一. 安装测试十二.文档测试软件需求 概要设计 测试计划 测试用例 技术文档的 质量通过评审 来保障在线帮助安装手册使用手册七.测试进度安排 工作内容 开始时间 结束时间 责任人 提交的结果 备注编写测试计划 设计发短信测试用例 设计资费测试用例 搭建测试环境 集成测试 执行发短信测试用例 执行资费测试用例 集成测试分析报告 系统测试 性能测试 恢复测试 配置测试 系统测试分析报告
怎么写测试用例,测试用例的定义
黑盒测试根据详细设计说明书规定的功能来设计测试用例,检查程序的功能是否符合规格说明的要求。
编写有效的测试用例能检验出测试人员的测试水平。
1.根据用户需求所要求的产品特性写出黑盒功能测试用例。
客户通过使用测试用例以确认是否达到了期望的要求。
还要从测试用例追溯回功能需求以确保没有需求被疏忽,并且确保所有测试结果与测试用例相一致。
同时,要使用测试用例来验证需求模型的正确性,如对话框图和原型等。
·2.测试用例的代表性:a.能够代表各种合理和不合理的、合法的和非法的、边界和越界的,以及极限的输入数据、操作和环境设置等;b.测试结果的可判定性:即测试执行结果的正确性是可判定的或可评估的; c.测试结果的可再现性:即对同样的测试用例,系统的执行结果应当是相同的。
英等[-]对此都有研究,笔者在北京地区
怎么做需求分析(下)
Ivar Jacobson(1992)把这种看法系统地阐述成用例(用例)的方法进行需求获取和建模。
虽然用例来源于面向对象的开发环境,但是它也能应用在具有许多开发方法的项目中,因为用户并不关心你是怎样开发你的软件。
而最重要的,用例的观点和思维过程带给需求开发的改变比起是否画正式的用例图显得更为重要。
注意用户要利用系统做什么远远强于询问用户希望系统为他们做什么这一传统方法。
用例的重要功能是用画用例图的功能来鉴别和划分系统功能。
它把系统分成角色(actor)和用例(用例)。
角色(actor)表示系统用户能扮演的角色(role)。
这些用户可能是人,可能是其他的计算机一些硬件或者甚至是其它软件系统,唯一的标准是它们必须要在被划分进用例的系统部分以外。
它们必须能刺激系统部分并接收返回。
用例描述了当角色给系统特定的刺激时系统的活动。
这些活动被文本描述。
它描述了触发用例的刺激的本质,输入和输出到其他活动者,和转换输入到输出的活动。
用例文本通常也描述每一个活动在特殊的活动线时可能的错误和系统应采取的补救措施。
这样说可能会非常复杂,其实一个用例描述了系统和一个角色(actor)的交互顺序。
用例被定义成系统执行的一系列动作,动作执行的结果能被指定角色察觉到。
用例可以: 用例捕获某些用户可见的需求,实现一个具体的用户目标。
用例由角色激活,并提供确切的值给角色。
用例可大可小,但它必须是对一个具体的用户目标实现的完整描述。
在UML中,用例表示为一个椭圆。
角色是指用户在系统中所扮演的角色。
其图形化的表示是一个小人。
在某些组织中很可能有许多角色实例(例如有很多个销售员),但就该系统而言,他们均起着同一种作用,扮演着相同的角色,所以用一个角色表示。
一个用户也可以扮演多种角色。
例如,一个高级营销人员既可以是贸易经理,也可以是普通的营销人员;一个营销人员也可以是售货员。
在处理角色时,应考虑其作用,而不是人或工作名称,这一点是很重要的。
我们使用不带箭头的线段将角色与用例连接到一起,表示两者之间交换信息,称之为通信联系。
角色触发用例,并与用例进行信息交换。
单个角色可与多个用例联系;反过来,一个用例可与多个角色联系。
对同一个用例而言,不同角色有着不同的作用:他们可以从用例中取值,也可以参与到用例中。
需要注意的是角色在用例图中是用类似人的图形来表示,尽管执行的,但角色未必是人。
例如,角色也可以是一个外界系统,该外界系统可能需要从当前系统中获取信息,与当前系统有进行交互。
一个用例可能包括完成某项任务的许多逻辑相关任务和交互顺序。
因此,一个用例是相关的用法说明的集合,并且一个说明(scenario)是用例的实例。
这种关系就像是类和对象的关系。
在用例中,一个说明被视为事件的普通过程(normal course),也叫作主过程,基本过程,普通流,或“满意之路” (happy path)。
在描述普通过程时列出执行者和系统之间相互交互或对话的顺序。
当这种交互结束时,执行者也达到了预期的目的。
在用例中的其它说明可以描述为可选过程(alternative coruse)。
可选过程也可促进成功地完成任务,但它们代表了任务的细节或用于完成任务的途径的变化部分。
在交互序列中,普通过程可以在一些决策点上分解成可选过程,然后再重新汇成一个普通过程。
角色类和角色实例 软件产品最终是给一些用户来使用的,而用户之间的差异是非常大的。
造成差异的原因包括了对计算机的认知程度的不同,使用习惯的不同,在软件目标组织中所处的地位不同,地理位置不同,业务熟练程度不同。
不同的用户都有自己一系列的功能需求和非功能需求。
对电脑熟练程度不同的人可能就会有不同的要求,熟练程度低的用户可能希望有一个友好的界面,熟练程度高的用户可能更希望有快捷键或宏的操作以提高工作效率。
考虑到用户的差异性,将用户分类并研究用户类的行为特征是非常有必要的。
所以在做具体的需求之前,先将用户分局行为和特点进行分类,对于研究、收集用户的需求是非常有帮助的。
可以利用一个简单的表格列出一些原始的分类,然后不断的完善这个表格。
确认你的分类之间没有交集。
并充分描述用户分类的行为,目的,要求等。
在企业分析中,比较常见的分类可能包括,供应商,客户,部门等。
就像C++中的类和对象一样,我们把分析出的用户分类称为“角色类”,把实际的用户称为“角色实例”。
在得到用户分类之后,最重要的就是要选出用户代表,用户代表不仅仅是在需求阶段中参与项目,还必须对项目的全过程负责。
用户代表能够代表用户分类的需求。
抓住用户代表的需求就大致把握住了用户类的需求。
当然,需求分析还是需要在用户中做大规模的调查的,只是要把重点放在用户代表上。
确保和用户直接进行沟通!大家有没有玩过传话的游戏,可能看过。
一群人排成一列,一句话从排头挨个向后传,到最后,那句话已经是面目全非了。
所以,一定要保证项目组能够直接和用户接触。
对于和用户直接沟通这一点,一般的针对特定企业的应用系统当然是不成问题,可是如果是开...
为什么要在做测试计划前对软件需求进行评审和测试?
需求是不断更新的,当客户加上某点或是删去某点功能,需求变更随时都可能发生。
需求的开发是贯穿整个开发过程的,不是做测试计划前就完成。
这是一个不断循环迭代的过程。
需求验证活动可以确保需求符合优秀需求称述的特征,并且符合好的需求规格说明的特征。
因此,在部分需求确定下来时,就对这些已经发现的需求进行评审和测试,尽快开发测试用例,就能够及早发现需求方面的缺陷和问题,这样就可以只用较低的费用解决这些问题。
若是在测试结束后,才发现遗漏了某个重要需求;对于某个不是很重要的需求,开发过程中却将其作为重点等等这些问题,那么这个损失就巨大了,需要开发人员重新开发,甚至于重新回到原点,这样将耗费巨大的人力物力。
业务需求,用户需求,功能需求是什么意思?有什么区别
我们的软件产品或者项目,其需求都有三个层级和三个方面。
一、我们首先看需求的三个层次软件需求包括3个不同的层次――业务需求、用户需求和功能需求。
业务需求 (Business requirement)表示组织或客户高层次的目标。
业务需求通常来自项目投资人、购买产品的客户、实际用户的管理者、市场营销部门或产品策划部门。
业 务需求描述了组织为什么要开发一个系统,即组织希望达到的目标。
使用前景和范围(vision and scope)文档来记录业务需求,这份文档有时也被称作项目轮廓图或市场需求(project charter 或 market requirement)文档。
用户需求 (user requirement)描述的是用户的目标,或用户要求系统必须能完成的任务。
用例、场景描述和事件――响应表都是表达用户需求的有效途径。
也就是说用户需求描述了用户能使用系统来做些什么。
功能需求 (functional requirement)规定开发人员必须在产品中实现的软件功能,用户利用这些功能来完成任务,满足业务需求。
功能需求有时也被称作行为需求 (behavīoral requirement),因为习惯上总是用“应该”对其进行描述:“系统应该发送电子邮件来通知用户已接受其预定”。
功能需求描述是开发人员需要实现什 么。
注意:用户需求不总是被转变成功能需求。
产品特性,所谓特性(feature),是指一组逻辑上相关的功能需求,它们为用户提供某项功能,使业务目标 得以满足。
对商业软件而言,特性则是一组能被客户识别,并帮助他决定是否购买的需求,也就是产品说明书中用着重号标明的部分。
客户希望得到的产品特性和用 户的任务相关的需求不完全是一回事。
一项特性可以包括多个用例,每个用例又要求实现多项功能需求,以便用户能够执行某项任务。
系统需求 (system requirement)用于描述包含有多个子系统的产品(即系统)的顶级需求。
系统可以只包含软件系统,也可以既包含软件又包含硬件子系统。
人也可以是系统的一部分,因此某些系统功能可能要由人来承担。
业务规则 包 括企业方针、政府条例、工业标准、会计准则和计算方法等。
业务规划本身并非软件需求,因为它们不属于任何特定软件系统的范围。
然而,业务规则常常会限制谁 能够执行某些特定用例,或者规定系统为符合相关规则必须实现某些特定功能。
有时,功能中特定的质量属性(通过功能实现)也源于业务规则。
所以,对某些功能 需求进行追溯时,会发现其来源正是一条特定的业务规则。
功能需求记录在软件需求规格说明(SRS)中。
SRS完整地描述了软件系统的预期特性。
SRS我们一般把它当作文档,其实,SRS还可以是包含需求信息的数据库 或电子表格;或者是存储在商业需求管理工具中的信息;而对于小型项目,甚至可能是一叠索引卡片。
开发、测试 、质量保证、项目管理和其他 相关的项目功能都要用到 SRS。
除此之外,对于需求层次,我们还有其它的分法:组织级需求->业务需求->用户需求->功能需求(有时也叫行为需求)。
组织级需求: 一 般代表着组织的愿景和目标。
对于大的公司,一般是通过资深的咨询顾问和咨询公司得出的,呈现的方式是咨询报告。
比如在ITSM或者企业信息化这方面。
典型 的组织级的需求是:降低成本、减少库存成本、提升IT服务部门在企业中的价值、通过ISO20000、提高IT服务的效率、提高员工的满意度等。
业务需求: 是要完组织的使命,达成组织的愿景的各个业务流程和业务单元具有的需求。
业务需求服从于组织需求。
用户需求: 用户级的需求,是在业务级的需求下,各个岗位协作完成业务而具有的需求。
我们在软件需求规格说明书中表述的需求其实主要是这一部分需求。
功能需求: 同样,它代表着产品或者软件需求具备的能力。
一般是管理人员或者产品的市场部门人员负责定义软件的业务需求,以提高公司的运营效率(对信息系统而言)或产品的市场竞争力(对商业软件而言)。
所有的用 户需求都必须符合业务需求。
需求分析员从用户需求中推导出产品应具备哪些对用户有帮助的功能。
开发人员则根据功能需求和非功能需求设计解决方案,在约束条 件的限制范围内实现必需的功能,并达到规定的质量和性能指标。
当一项新的特性、用例或功能需求被提出时,需求分析员必须思考一个问题:“它在范围内 吗?”。
如果答案是肯定的,则该需求属于需求规格说明,反之则不属于。
但答案也许是“不在,但应该在”,这时必须由业务需求的负责人或投资管理人来决定: 是否扩大项目范围以容纳新的需求。
这是一个可能影响项目进度和预算的商业决策。
二、需求的三个方面 除了功能需求外,SRS中还包含非功能需求,包括性能指标和对质量属性的描述。
质量属性 (quality attribute)对产品的功能描述作了补充,它从不同方面描述了产品的各种特性。
这些特性包括可用性、可移植性、完整性、效率和健壮性,它们对用户或 开发人员都很重要。
其他的非功能需求包括系统与外部世界的外部界面,以及对设计与实现的约束。
还有一项称为可用性(usability)的质量属性,它规 定了业务需求中“有效”(efficiently)一词的含义。
约束(constraint)限制了开发人员设计和构建系统时...
测试用例的设计
(一)白盒技术白盒测试是结构测试,所以被测对象基本上是源程序,以程序的内部逻辑为基础设计测试用例。
⒈逻辑覆盖程序内部的逻辑覆盖程度,当程序中有循环时,覆盖每条路径是不可能的,要设计使覆盖程度较高的或覆盖最有代表性的路径的测试用例。
下面根据图7-1所示的程序,分别讨论几种常用的覆盖技术。
⑴语句覆盖。
为了提高发现错误的可能性,在测试时应该执行到程序中的每一个语句。
语句覆盖是指设计足够的测试用例,使被测试程序中每个语句至少执行一次。
如图7-1是一个被测试程序流程图:⑵判定覆盖。
判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次“真”值和“假”值,从而使程序的每一个分支至少都通过一次,因此判定覆盖也称分支覆盖。
⑶条件覆盖。
条件覆盖是指设计足够的测试用例,使得判定表达式中每个条件的各种可能的值至少出现一次。
⑷判定条件覆盖。
该覆盖标准指设计足够的测试用例,使得判定表达式的每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次。
⑸条件组合覆盖。
条件组合覆盖是比较强的覆盖标准,它是指设计足够的测试用例,使得每个判定表达式中条件的各种可能的值的组合都至少出现一次。
⑹路径覆盖。
路径覆盖是指设计足够的测试用例,覆盖被测程序中所有可能的路径。
在实际的逻辑覆盖测试中,一般以条件组合覆盖为主设计测试用例,然后再补充部分用例,以达到路径覆盖测试标准。
⒉循环覆盖⒊基本路径测试(二)黑盒技术⒈等价类划分⑴划分等价类。
①在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。
②在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类。
③在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。
④在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。
⑤在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
⑥在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。
⑵确定测试用例。
①为每一个等价类编号。
②设计一个测试用例,使其尽可能多地覆盖尚未被覆盖过的合理等价类。
重复这步,直到所有合理等价类被测试用例覆盖。
③设计一个测试用例,使其只覆盖一个不合理等价类。
⒉边界值分析使用边界值分析方法设计测试用例时一般与等价类划分结合起来。
但它不是从一个等价类中任选一个例子作为代表,而是将测试边界情况作为重点目标,选取正好等于、刚刚大于或刚刚小于边界值的测试数据。
⑴如果输入条件规定了值的范围,可以选择正好等于边界值的数据作为合理的测试用例,同时还要选择刚好越过边界值的数据作为不合理的测试用例。
如输入值的范围是[1,100],可取0,1,100,101等值作为测试数据。
⑵如果输入条件指出了输入数据的个数,则按最大个数、最小个数、比最小个数少1、比最大个数多1等情况分别设计测试用例。
如,一个输入文件可包括1--255个记录,则分别设计有1个记录、255个记录,以及0个记录的输入文件的测试用例。
⑶对每个输出条件分别按照以上原则⑴或⑵确定输出值的边界情况。
如,一个学生成绩管理系统规定,只能查询95--98级大学生的各科成绩,可以设计测试用例,使得查询范围内的某一届或四届学生的学生成绩,还需设计查询94级、99级学生成绩的测试用例(不合理输出等价类)。
由于输出值的边界不与输入值的边界相对应,所以要检查输出值的边界不一定可能,要产生超出输出值之外的结果也不一定能做到,但必要时还需试一试。
⑷如果程序的规格说明给出的输入或输出域是个有序集合(如顺序文件、线形表、链表等),则应选取集合的第一个元素和最后一个元素作为测试用例。
⒊错误推测在测试程序时,人们可能根据经验或直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的测试用例,这就是错误推测法。
⒋因果图等价类划分和边界值方法分析方法都只是孤立地考虑各个输入数据的测试功能,而没有考虑多个输入数据的组合引起的错误。
⒌综合策略每种方法都能设计出一组有用例子,用这组例子容易发现某种类型的错误,但可能不易发现另一类型的错误。
因此在实际测试中,联合使用各种测试方法,形成综合策略,通常先用黑盒法设计基本的测试用例,再用白盒法补充一些必要的测试用例。
·能发现到目前为止没有发现的缺陷的用例是好的用例。
首先要申明,其实这句话是十分有道理的,但我发现很多人都曲解了这句话的原意,一心要设计出发现“难于发现的缺陷”而陷入盲目的片面中去,忘记了测试的目的所在,这是十分可怕的。
我倾向于将测试用例当作一个集合来认识,对它的评价也只能对测试用例的集合来进行,测试本身是一种“V&AMp;V”的活动,测试需要保证以下两点:程...
嗫?暁雲?