软件测试工程师如何做好需求分析

发表于:2013-05-24来源:博客园作者:qileilove点击数: 标签:需求分析
软件测试工程师如何做好需求分析?什么是需求 需求是产品必须完成的事以及必须具备的品质。 功能性需求 功能性需求是产品必须完成的那些事,要求一定的功能和品质。 例子:培训机构的班主任可以给所在班级学员打考勤 非功能性需求 非功能性需求是产品必须具备的属性或品

  什么是需求

  需求是产品必须完成的事以及必须具备的品质。

  功能性需求

  功能性需求是产品必须完成的那些事,要求一定的功能和品质。

  例子:培训机构的班主任可以给所在班级学员打考勤

  非功能性需求

  非功能性需求是产品必须具备的属性或品质。诸如观感、可用性、安全性和法律限制等。

  例子: 平台用户数为5万人,每天登录用户数为10000左右,网络的带宽为100M带宽。在工作时间根据资料名称条件进行搜索,可以在3秒内得到搜索结果。

  这类需求通常在产品的功能确定之后(但并非总是如此)。也就是说,一旦知道了产品要做的事情,就可以确定它的行为方式,它需要具备什么品质以及它的响应速度、可用性、可读性和安全性。

  限制条件

  限制条件是全局性的需求。它们可以是对项目本身的限制,或是对产品最终设计的限制。

  例子:南京平台必须在2010年开学的第一学期上线

  客户是在说,如果顾客不能在给定的时间前使用该产品,那么它就没有什么用了。其效果是,需求分析师必须对需求进行限制,只包括那些在最后期限前能够提供最大价值的需求。

  需求分析的重要性

  背景:冯大勇吃鱼时嗓子被鱼刺卡住了。现在正坐在椅子上候诊。

  大夫:(在桌上拿起一份挂号单,大声的喊)冯大勇!

  冯大勇:(病怏怏的样子,边走边咳嗽)我是。

  大夫:怎么了?(低头整理手中的资料,自言自语,并打手势,示意冯大勇坐下)

  冯大勇:我...(咳嗽)...我今天...(咳嗽)

  大夫:不用说了,我知道了。(从桌子下面拿出一个大盒子,放在桌子上)我看你适合吃这种药。这是本院独家开创的哮喘新药“咽喉糖浆”,疗程短,见效快,一个疗程吃3盒,平均每天只需花费3块钱。给你先开6盒吧!(边说边开药方)

  冯大勇非常惊讶地瞪大眼睛并止不住地弯腰大声咳嗽,以至于把鱼刺都咳出来了。冯大勇从口里掏出一条巨型鱼刺,递给医生。医生见到鱼刺先是吃惊,而后又非常尴尬。

  医生不了解病人的需求就用药,是草菅人命;销售员不了解客户的需求就进行推销,不仅自己要徒劳无功地浪费很多口舌,更重要的是完不成销售的目标。给客户 推销软件产品,也相当于医生给病人治病,应当首先充分、全面地了解客户的需求所在、期望所在,然后才能带给他一个完美的解决方案。

  需求分析没有做好的后果一般会有下列现象:

  1、浪费时间和资源来满足用户并不需要的需求(过度实现一些功能);

  2、开发出来的产品技术上先进,但不满足用户需求;

  3、总是需要比较长的时间来达成对产品设计的共识;

  4、在产品设计,开发和测试工作中对于用户需求的解释不一致;

  5、员工会厌倦因需求不断被重新解释而导致的返工;

  6、未说明的或不正确的需求会导致员工与用户间的不满;

  7、不稳定的产品,用户的不满意对我们未来的市场造成损失;

  8、浪费时间,增加成本,使得在一些投标的项目中不能低价;

  1、如果你在编码的时候发现某几行有误,那么改掉这几行就行了。而如果在编码阶段发现需求有误,那么你很可能需要改变所有代码来适应新的需求

  2、在需求阶段消除问题的代价最小,而如果需求问题等到产品发布出去后才发现的话,那修复的成本就会N倍的增加。

  3、稳定的需求是软件开发的关键。有了稳定的需求,软件开发工作可能从结构设计到详细设计到代码到测试都会平稳顺利的进行。

  为什么要做需求分析

  1、“决策性”--要不要做这个产品,通过对市场需求的分析来决策项目是否需要立项;

  2、“方向性”--良好的需求分析可以对项目人员明确方向,让项目成员知道下面应该如何实施;

  3、“策略性”--既然知道了为什么要做需求分析,就需要了解什么是需求分析,及如何做。需求分析并不是简单的对与错,比如说做一个产品,“做技术最先进的软件,还是做最好卖的软件”,这个需求有错吗,没有,只能说需要从不同的地方去考虑,去定位。

  如何进行需求分析

  “ 需求分析”不代表“用户要求什么就是什么”也不代表“我们能做什么就做什么”,做为需求人员,在进行需求分析的时候,首先应该明白用户的需求,然后再加上 自己的分析处理过程,知道哪些我们现在能做,哪些我们做不了,哪些我们咬咬牙齿能做,需求人员在做需求分析的时候不能一味的成为客户的传话筒,要有自己的 分析。

  一般可以从三个方面去考虑:

  1、功能需求--产品应该完成哪些功能,即向用户提供的功能,一般来说这个都是比较硬性的标准;

  2、非功能性需求--用户可能不能明确告诉你的一些需求,比如说性能达到什么要求,可靠性方面,响应时间,扩展性,性能方面等,这块的内容并不 是说用户需要,而是说不知道需要做成什么样的,我们不能不做,做了只会对自己受益。要不然等到后期用户使用感觉这慢,那不爽,那倒霉的还是是自己;

  3、限制条件--在需求分析中需要考虑一些条件约束,规则等,比如客户的约束,行业的约束,法律的约束以及自己的约束等,这些都需要在需求分析考虑清楚,要不然做出一款白人狂殴黑人的游戏给黑人玩,那就惨了……

  测试需求分析的步骤

  1 、 熟悉需求背景及商业目标:

  a) 了解清楚项目发起的原因,是为了解决用户的什么问题。

  b) 当前的解决方案是不是最优的,为什么会这样做?

  2 、业务模型法:

  a) 考虑本项目与外部系统的交互,划分系统边界(除了本项目的需求中要求做的事情,其他的都可以是外部系统,本系统和外部系统之间的交互就是系统的边界),可以参考系统分析说明书。

  b) 确定测试范围和关注点。系统的边界是测试的重点,特别需要关注边界交互时的数据交互。

原文转自:http://www.blogjava.net/qileilove/archive/2013/05/20/399492.html