没有需求文档的时候如何来设计测试用例?(08-06-20)(获奖名单已公布)
测试用例应该依照需求文档来开发,但是我们的项目根本就没有需求文档?那测试用例该如何开发呢?
感谢会员水印无痕提供此精彩问题!如果你也有问题想提出来和大家一起讨论,请点击此处>>
说不定下期讨论的问题就是由你提出的哦,请快快参与吧!
非常感谢各位会员积极参与,截止至6月27日17:30分,从该贴所有评论中选出部分作出精彩评论的会员予以奖励。礼品和积分将在下周内送出。
获奖名单奖项获奖名单奖励答案链接一等奖zhuzx当当购物卡50元12#二等奖love笨笨300论坛积分7#hjjlearning8#三等奖testman100论坛积分
21#goal186023#江南飞雪27# 支持7#,他写的和我们的实际情况有些相似,处理方式也有些相似;
没有需求文档的时候,一定要和用户经常沟通,这个过程中有个引导用户的过程.比如界面应该是怎样的,处理过程是怎样的.等等细节.当然了在和用户沟通的过程一定是对系统宏观有了初步了解为前提的,然后对细节进行引导.
其次,收集资料就象楼上所说,没有需求文档,一定有和项目相关的其他文档,收集尽可能多的相关资料并了解它;
开发设计的过程中,对于缺少需求文档时可能采取原型法开发,此时我们就需要和开发人员进行有效的沟通,对于已经开发的界面,我们可以在进行测试计划后进行测试用例的编写,功能和流程方面还是主要以开发现有的资料以及开发的模型为主;
需求随着项目的进度会不断的完善,我们的测试用例也会不端的完善,系统也会不断的完善.等项目后期,我们的用例还是完善的.等系统测试或者验收测试的时候,用例启到重要作用!
回复 1# 的帖子
我也常常碰到这样的问题,我的经验是跟系统开发人员多沟通以便了解到他们的开发流程、思路、注意细节等等,用笔记下来(俗话说“好记性不如烂笔头”嘛),理顺思路,然后再运用设计测试用例的等价类划分、边界值分析等方法对照系统各模块进行设计! 沟通与经验通常是解决她的好办法 没有文档对于单元测试来说也是一个难题,弄不好会使测试毫无意义。前段时间,我收到用户反馈说,单元测试的效果不好,经了解,情形是这样的:没有详细设计文档,由测试部门做单元测试,由于没有文档,测试员只好读代码来判断程序功能,预期输出是读代码后自已算出来的,结果效果不好。例如:
int func(int a, int b){return a-b;};
本来是计算两个数的和的,结果程序员将加号写成了减号。
测试时,如果有文档,哪怕是很简单的写一句:返回两个数的和,那么,测试员就可以这样设计用例:输入两个1,判断返回值是不是2,马上就能发现错误,但由于没有文档,测试员不知道代码的设计功能,根据代码,自己算出一个输出:0,这种测试基本上就没有意义了。
我们推荐的解决办法有:
办法一:由开发部门补充文档,可以不要求太正规,只要让测试员想得清楚:什么输入应该产生什么输出就OK了。
办法二:测试员只是设定用例的输入,输出全部设为FALSE,然后由开发部门设定输出。
办法三:由开发部门做基本功能测试,测试部门补充用例。由于已有基本用例,测试员根据现有用例就可以判断程序功能。
办法四:程序员编码时,边开发边测试代码的基本功能,测试部门只是补充用例。与办法三的区别是:办法三是事后测试,办法四是测试驱动开发。
越是排在后面的办法,推荐指数越高。如果这些全部做不到,那我的最后建议是:重新考虑测试是否值得。
[ 本帖最后由 VisualUnit 于 2008-6-22 10:40 编辑 ] 1、要求项目组提供测试特性;
2、如果项目组由于各种因素不能提供,则要测试人员自己写测试特性。
3、组织评审,要求对模块熟悉的人员(项目经理、需求、开发)参加。
4、根据测试特性,写测试点,再组织评审。
……
总之,开始一项工作之前,一定要问清楚是什么,完成标准是什么。测试工作的血泪史告诉我们:如果这时讲义气,后面就要遭殃了。 多与用户沟通,同时了解开发的过程文档和资料.通过参加评审会以及相关的文档资料了解项目.尽而有目的的进行测试. 答题的人还不多嘛,我来抛个砖!
这应该是一个非常普遍的问题,目前很多公司的现状就是这样!
没有需求文档,最头疼的问题就是不知道开发的产品应该是个什么样,要完成哪些功能,达到什么指标。下面几个步骤应该可以帮助你明确目标:
1、首先可以查找其他相关文档。比如产品策划书、Feature List,不可能什么文档都没有吧。我们可以收集一切相关的文档来帮助理解所要测试的产品需要完成的目标。
2、尽量多参加该项目组内的会议。比如需求讨论、设计讨论、计划讨论等会议,尽管没有白纸黑字的文档,但讨论过程中也能让你加深对产品的理解。
3、咨询相关人员。经过以上两个过程,应该对产品有了一个初步的理解,花点时间自己把大致的功能点整理一下,遇到不明确的、有疑问的,可以咨询项目负责人或者相关市场人员,他们应该对整个产品心中有数,否则这个产品真的就没法做下去了。这里有一个前提是,在对产品有了初步了解后,才有针对性的去咨询,否则在什么都不知道的情况下,第一,对方没有耐心和时间向你介绍整个产品;第二,对于对方的讲解,估计最多也只能了解个大概,不能很好理解。
4、使用旧版本。如果当前开发的产品是以前做过产品的升级版,或者和以前某个项目类似,这样就最好了,有个实实在在的“demo”给你用,当然理解也更深入了。
5、召集相关人员,对你整理的结果进行讨论。整理以上几步得出的结论,总结成文档,发给相关人员,包括项目负责人、市场部代表、开发人员等,让他们帮助评审check,根据意见对文档不断进行补充完善。当最后通过评审后,这个文档就可以当作依据来设计你的测试用例了。 这里写出我的一点意见。
从做测试过程中发现,一般没有需求说明文档有3种情况
1、开发人员的意识不足,开发流程不规范,可能是以前做项目一直都是拿到市场可行性分析,然后项目管理人员进行简单模块划分,任务就分配下去了,更不就不写需求文档,或者只是简单书写大体功能点。
2、项目进度紧张,后期需求变动可能比较大,来不及书写详细的需求文档
3、项目是从原有项目上进行迭代开发,开发人员认为不要再进行需求文档编写。
针对上述2点提出个人意见:
对于第一种情况:
1、测试负责人应该坚持开发没出需求文档,就不进行测试,要坚持让开发输出项目需求文档,哪怕是写的不够详细也好。
2、需求文档要进行评审,评审做会议记录,并有专门人员对需求文档进行修改
3、最后就是测试人员进行测试需求分析,再根据测试需求点进行测试用例编写了。
对于第二种和第三种情况:
1、测试人员尽量找到已存在的资料,比如市场调研书,可行性分析报告,收集一切对项目有用的文档。并提出其中的功能点需求
2、如果是迭代项目开发,则找到前期项目的一些需求文档,概要设计,详细设计,测试需求,用例等。提起里面的功能点
3、咨询相关人员,获取项目一些大体功能,最好能知道大体项目的框架,然后记录咨询到的功能点。
4、了解项目大体框架后,可以在网上寻找同类产品,把里面的一些亮点功能点进行提起
5、整合上面的几点,测试人员应该书写一份你认为的测试需求点,然后分发给每个和项目有关人员,如测试人员,开发人员,市场人员。组织进行一个会议评审,在评审中详细记录修改的地方
6、最后整理出一份评审过的测试需求点,进行设计测试用例。
没有需求文档对于编写测试用例来说,确实很困难,做为测试人员,在没有测试需求文档情况下,我们不能等着开发人员输出,应该主动点,尽可能去多了解项目的一些情况,多知道一点,对测试用例就能多写点。
欢迎访问我的BLOG:http://www.51testing.com/?18049
[ 本帖最后由 hjjlearning 于 2008-6-27 19:42 编辑 ] 一般碰到没有需求说明的情况是发起者不了解测试需要相关的文档,我是将该测试需求退回发起者。假如对方因项目紧急说先测再补充文档,那我可以先进行。
进行的步骤如下:
1、要求发起者对测试需求进行口述测试点及注意事项。
2、由口述获取到的信息编制测试流程,注意,这里是测试流程不是测试用例,假如对方无法提供具体的比如某个输入域的字段长度或者类型,那所谓的边界值等价类就无法运用了。
3、凭经验测试。凭借着对项目的理解,对同行业相关软件的认识等进行。
总结,楼主发的这个主题我个人感觉主要会发生在测试管理流程规范没到位或者发起者不是相关的项目组成员,比如某个老总或者高级别的客户,突然找到测试人员要测试人员进行某某测试。我个人认为这都是属于越权。再紧急的任务,如果目的不是走过场,而是要获得比较准确可靠的测试结果,那就要提供相关的说明,即使是小功能点,也要告知(口述、内部论坛、即时通、简单邮件等途径)用途、设计时的安排等事项。
另外还有种情况是发起者与测试人员都是项目组中的老成员了,非常熟悉项目功能,这时确实可以先省略需求文档然后再补充。
注:我这边一般获取测试任务时发起者都会些测试需求说明书,测试要点说明等。可能与楼主单纯的那种项目需求文档会有些出入。
假如是项目需求说明书那也不能进行测试用例设计的,我们知道这是需求详细设计说明书或者数据库设计等相关文档,所以我对‘没有需求文档’的理解是没有测试需求说明书。 一.上报'没有需求文档将无法进行测试用例设计'的事实给高层管理者(练口才的时候到了),引起他们的重视,让他们尽可能推动开发组或产品组完成需求文档;
二.高层都推动不了的时候,那么先说明测试组可以开始写测试用例(总不能罢工吧:)), 但是责任要划清:完成的测试用例会召集各方人员参加评审,包括开发组/产品组等等的相关人(最好由高层推动其全部到场),当场记录评审意见,根据评审意见修订完成的测试用例即为最终版本,纳入基线;后期又由开发或产品组提出的变更,将执行严格的变更流程,并且把变更情况上报给高层管理者; 个人意见:
1.多和开发人员、项目经历、市场人员沟通交流
2.在开发的时候应该有详细设计吧,可以根据这个写test case
3.既然没有需求,那功能点应该是都齐全吧,那就根据开发根据开发人员的思路设计 test case(违背常理,但是没有办法的)
我以前的团队中的做法,仅供参考
这个问题出题很新颖,着重是考察公司的测试Leader应对突发事件的能力?以前我们公司招测试Leader的面试题目中也有类似的一个题目?我面试了很多人,回答都不是很理想,都只能够回答上几句话,并且都有“需求不明确”等同感,只是工作中太忙缺少总结,给出一个常见的很熟悉的问题,马上作答不知道如何说起。
下面是我的一些看法,恳请各位同行批评指正:
1.根据客户的功能点整理测试需求追朔表:
一般的客户都要把要开发软件的功能点写成一个表格交给市场部,让市场部门转交研发部。所以客户的功能点是编写测试用例一个最最重要的依据。
2.根据开发人员的Software Specification List整理我们的功能测试点:
一般来说,开发人员实现一个功能都要把该功能分成几个子模块来实现,所以Software Specification List也是我们参考的另一个比较重要的依据。
3.开展项目跨部门讨论会:
可以抽出时间,叫市场部的项目负责人、产品经理、项目经理、软件开发经理和软件开发人员,分别讲讲他们对整个产品的认识和设计模式,对每个功能点的理解和认识,理顺思路,达成共识,测试人员负责记录,测试Leader负责整理汇总,形成测试的部分参考文档。
4.测试人员整理用例需求疑问递交项目组和客户代表回复:
测试人员根据项目讨论会后的理解,测试过程中可能碰到的问题(如:边界值、输入数据类型等等)和需求不明确的问题,整理用例需求疑问,让相关的模块负责人在“用例需求疑问”表格中回复,并给出详细解释和说明。
5.项目内部用例评审:
测试人员根据对项目的理解,编写测试用例要点,测试组内部评审修改后,可以召集项目组的成员,帮助Review一下,然后进行修改。经过多次修改和评审以后,测试用例要点可能会更加全面一些。
6.邮件和客户代表确认部分争议问题:
测试人员与开发人员、项目组成员,在需求问题上讨论有时候观点不一致,各说各有理,这种情况下最好把争议问题写成邮件,发给客户让客户来拍板,确定那种需求合理,到底如何做?抄送项目组的全体成员,方便大家都了解客户的意见。最后编写测试用例的时候,以客户的邮件内容为准。
7.项目Demo和部分已开发系统:
大部分的系统,由于没有需求,为了避免项目风险,开发方一般都要做成Demo,不断让客户确认后签字,不断展现新开发的功能,以达到吸引客户的目的。如果项目中有Demo,Demo也是参考标准。如果什么都没有,那已经开发的部分功能模块,要去随时让用户了解了解,并提出部分修改意见,也可以为我们熟悉系统提供部分依据。
8.参考同行业和竞争对手的类似产品:
假如说是做一个网上书店类似的网站,我们编写测试用例的时候,可以看看“当当网”,“China—pub”等等类似成熟相关的网站。很容易发现本公司产品的问题,无意识给产品添加了竞争力。对于竞争对手的了解一定不能够少。
9.交叉模块的测试,最容易被人忽略:
一般的产品,功能部分的交叉,即是说在A模块中设置了参数,在B模块和C模块中体现该参数的实际运用。比较难的如我们现在测试的“银行系统”中的交叉模块,还可能牵涉到不同的用户,3个以上的模块之间的调用。即是有了需求也很少写,同时也是需求编写的一个薄弱环节。这样的测试用例编写问题,一般初级测试工程师很难考虑全。对于有这种交叉功能的模块,必须要求项目组中的精兵强将,画出相关的调用关系图,表明调用关系,方便后面编写测试用例。
10.可以使用电话、MSN、Skype等网络聊天工具咨询部分需求:
我们做的产品,大多数的客户都在国外,测试经理也可以用这些网络聊天工具和客户确认部分需求疑问。不过要要事先越好时间,并注意异地的“时差”。
我以前的团队中主要使用这些方法,如果大家有什么好的方法,请大家补充,完善!!
zhuzx楼主,你太强了
看了你2期题目的答题情况,真是受益匪浅,论坛中答题不能没有你??呵呵!!继续加油加油,帮助我们这些新手吧!!唉,我什么时候能够变成强人呢?
看到楼主们回答得都这么好,我真的很惭愧,什么时候能够变成强人呢??不过很感谢51Testing,有了这样一个平台,我成长也很快。 需求的不确定会导致软件设计过程中的风险过大。千万不要一上来就动手写case。
那么一方面就需要让客户或PM(具体情况视工作流程而定)给出尽可能多的信息。包括截图,客户的使用场景,预期的数据量等等。而且可以通过email/yahoo/photo等方式尽可能的获取你所需要的信息。总之一句话,有什么要什么。
另一方面就要通过与Dev的沟通来确定客户的需求大概可能会是怎样的,那我们应该如何实现,往往code设计决定了测试,以及如何进行测试。测试策略是什么如否应该进行性能测试,测试关键点和难度是什么等等。在条件允许的情况下可以广纳建议结合QA对产品的熟悉基础上进行的想法(这种情况下要求QA有一定的想像力)来最终确定客户一个比较粗的框架需求。对于那些很细节或者说虽功能性的问题如UI设计等等,可以暂时不要考虑,也没这个必要。
接下来要做的就是搭建一个主要的功能点框架,类似于写文章时的提纲。再往往这个框架里填东西。在需求没有得到进一步确认之前,千万记住此时QA的主要工作应该只是写框架,而不是写具体到哪个button放在哪个位置。即使写的很详细,一旦客户需求产生变化,那么有可能之前写的case就得推倒重写。既浪费了时间,又浪费了精力,你的工作也就变得徒劳了。过渡的折磨自己去写有可能无用的case,还不如聪明的学会适当偷懒放松自己。当然这是针对大方向的需求不确定的情况。对于那种小需求改动的情况另当别论。在没有进一步的需求信息之前,case设计基本到此为止了。
以上是我个人的一些想法和意见,大家仁者见仁,智者见智吧。我看楼主也没有一个标准的答案。如有说的不对的地方,欢迎指正。 我们公司也是经常没有需求文档,等开发接近尾声了,才通知我们,可以准备测试了.
通常是,我们一边操作系统,熟悉系统,然后写测试用例,
遇到什么问题,问开发人员,或者请开发人员跟我们说明系统流程.
这样做,往往会导致系统单元测试,做得不全面. 没有需求文档的时候,我们是通过产品的介绍文档,help文档进行产品熟悉,然后对重要的,或者是版本新添的内容进行测试。
其实这个题目会有点歧义,就是需求文档时现在还没有,还是就根本没有这个东西。如果现在没有,那么我们在寻求产品目标,设计源头等的过程应该就是在形成需求文档了。或者和客户沟通,把内容记录到需求文档中。如果要是根本没有这个东西,我们也不能通过一些途径自己完成这个类似的文档,那么我们只能遵照测试的基本概念,关于那个不该有的功能不能有,该有的功能不能缺,没提到的功能不能有等等。最简单,但是最有效。而这个东西,说明书或者help文档应该是最明确的介绍了。 没有需求文档时
我们当初的做法
1.通过质量管理,或者上级部门协商让开发人员补一份简易的需求;
2.参照之前所有相关会议(项目周会,立项会议),其他相关文档(立项方案,设计文档等),列出测试点;
3.最重要的是 ,做出测试用例文档后,需要开发人员进行评审,划定基线;
4.注意测试用例描述是,要便于跟踪变更。因为需求不确定的项目,变更是最容易发生的。
个人见解。。 我就纳闷了,如果没有需求文档,那后面的工作要如何开展哦,如果后面的工作可以开展,那么肯定需要参照什么文档,或是从客户那里收集到的原始需求。
另外我们可以根据这些文档或是原始需求来制定测试计划,写测试用例,当然过程中肯定会有不清楚或是不详细的地方,这时候我们就需要与客户沟通,直至弄清楚为止。
但是我们弄清楚了,可开发人员是不是也弄清楚了呢?看来还需要与开发人员进行深入交流,使大家对于客户的需求达到一致。
这过程中我们要尽量避免想当然的思维方式。
请大家指教……:handshake