软件需求及分类
1、软件需求的定义
IEEE软件工程标准词汇表(1997年)定义软件需求:
-用户解决问题或达到目标所需条件或权能(Capability);
-系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或权能(Capability)。
一种反映上面(1)或(2)所述条件或权能的文档说明。它包括功能性需求及非功能性需求
经验总结的概念:就是用户想要软件实现的功能。
就是用户亟需解决的问题及需要实现的功能、非功能性的需求,汇总为一个支持合同、项目书等的一个文档说明。
2、软件需求的分类:
-业务需求(Business requirement)表示组织或客户高层次的目标。
-用户需求(user requirement)描述的是用户的目标,或用户要求系统必须能完成的任务。
-功能需求(functional requirement)规定开发人员必须在产品中实现的软件功能,用户利用这些功能来完成任务,满足业务需求,属于系统需求的一部分。
举例:1、通信行业个人订购套餐业务。
2、微信。业务需求是偏向宏观的,偏向生产者的。腾讯微信团队开发微信这款产品的目标:做一个流量大,覆盖范围广的即时通讯软件→做多平台入口,购物金融等等→未来如何引导用户使用,如何盈利,如何推广运营,这些都属于微信的业务需求。
用户需求以用户为中心,设定场景,事件或用例,分析用户需要的功能。微信中用户希望可以个性化设定自己的头像,于是上传用户头像是一定要满足的用户需求之一。延续上传头像的用户需求,图片格式有很多种,但上传的头像一定只能是有限的某几种格式,所以,只能上传XXX格式的图片作为头像属于功能需求,即系统需求的范畴。另,微信好友数量上限也属于功能需求之一。
软件测试的需求及分析
1、测试需求的定义-基于经验的定义
测试需求是测试人员在需求阶段的初始阶段,通过多方渠道收集的需求文件,进行可测性分析而形成的需求,此内容也是后续测试活动开展的依据之一。
2、测试需求分析的目的
明确测试的范围:什么业务、测试哪些功能、测试哪些非功能特性
明确测试类型、测试阶段:了解和掌握测试工作中的功能、非功能测试有哪些;不同测试类型涉及到哪些测试阶段,例如单元测试,集成测试等;
识别需求优先级:明确哪些测试目标优先级高、哪些目标优先级低。
收集测试需求、分析测试需求、参加需求评审会
收集测试需求:
需求人员、用户、开发人员、运维人员
收集测试需求的形式:
面面访谈、问卷调查、
为什么软件需求说明书是软件缺陷存在问题较多的地方?而不是代码阶段?
- 用户一般是非计算机专业人员,软件开发人员和用户的沟通存在较大困
难,对要开发的产品功能理解不一致。 - 由于软件产品还没有设计、实现,完全靠想象去描述系统的实现结果,
所以有些特性在当时不可能很清晰 - 需求变化的不一致性,用户的需求总是在不断地变化,这些变化应该在
与需求相关的各类文档中得到描述,但往往被忽略,并容易引起前后文、
上下文的矛盾 - 没有得到开发团队或管理层的足够重视,在需求分析和定义上投入的人
力、时间不足 - 在整个开发队伍中没有进行充分沟通,不同角色之间对需求的理解不一
致
需求评审的内容
确认需求和软件目标的一致性,识别出功能、非功
能需求,为后续测试工作提供依据;
确认需求规格说明书的正确性——经验在丰富的需
求人员也可能有需求遗漏或疏忽;
使项目相关角色,对需求理解达成一致,降低修改
和沟通成本;
需求评审的主要对象是需求规格说明书。
需求评审的形式
a相互评审、交叉评审
b轮差
c走差
d小组评审
e审查
需求评审的方法
分内容评审
a. 目标性需求——指整个系统需要达到的业务目标,是最高层次的、基本的
需求,是企业的高层管理人员所关注的。
b. 功能性需求——指某些系统需要实现的功能和任务。
c. 操作性需求——指完成每个具体任务的需求。
分阶段评审
a. 形成目标需求时做第一次评审。
b. 功能细化成几个部分后,对各部分分别评审。
分阶段多次评审,可以降低需求分析返工的风险,提高评审质量。
需求评审的主要内容
a) 系统定义的目标是否与用户的要求一致;
b) 系统需求分析阶段提供的文档资料是否齐全;
c) 文档中的所有描述是否完整、清晰,准确地反映用户要求;
d) 与所有其他系统成份的重要接口是否都已经描述;
e) 被开发项目的数据流与数据结构是否足够、确定;
f) 所有图表是否清楚,在不补充说明时能否理解;
g) 主要功能是否已包括在规定的软件范围之内,是否都已充分说明;
h) 软件的行为和它必须处理的信息、必须完成的功能是否一致;
i) 设计的约束条件或限制条件是否符合实际;
j) 是否考虑了开发的技术风险;
k) 是否考虑过软件需求的其他方案;
l) 是否考虑过将来可能会提出的软件需求;
m) 是否详细制定了检验标准,它们能否对系统定义是否成功进行确认;
n) 有没有遗漏、重复或不一致的地方;
o) 用户是否审查了初步的用户手册或原型;
p) 项目开发计划中的估算是否受到了影响。
测试需求分析实战
开源需求管理工具
1、禅道
禅道是由青岛易软天创公司开发的一款开源的项目管理软件。禅道特点是将软件研发中
的产品管理,项目管理,测试管理三个核心流程融合在一套工具里面,是一款软件生命周期
管理软件。
2、TestLink
TestLink用于进行测试过程中的管理,通过使用TestLink提供的功能,可以将测试过程从
测试需求、测试设计、到测试执行完整的管理起来,同时,它还提供了好多种测试结果的统
计和分析,使我们能够简单的开始测试工作和分析测试结果
商用需求管理工具
ALM
HP Application Lifecycle Management(HP ALM)系统是一个复杂的过程管理系统。
无论你的组织架构是Agile、迭代或瀑布,有效的生命周期管理可以使得应用程序具有更好
的可预测性,更高的重复性,更好的质量和更强的应变性。