1. 什么是测试需求?

  确切地讲,所谓的测试需求是在项目中要测试什么。我们在测试活动中,首先需要明确测试需求(What),才能决定怎么测(How),测试时间(When),需要多少人(Who),测试的环境是什么(Where),测试中需要的技能、工具以及相应的背景知识,测试中可能遇到的风险等等,以上所有的内容结合起来构成了测试计划的基本要素。而测试需求是测试计划的基础与重点。

  像软件的需求一样,测试需求根据不同的公司环境,不同的专业水平,不同的要求,详细程度也是不同的。但是,对于一个全新的项目或者产品,测试需求力求详细明确,以避免测试遗漏与误解。

  2. 为什么要做测试需求分析

  如果要成功的做一个测试项目,首先必须了解测试规模、复杂程度与可能存在的风险,这些都需要通过详细的测试需求来了解。所谓知己知彼,百战不殆。测试需求不明确,只会造成获取的信息不正确,无法对所测软件有一个清晰全面的认识,测试计划毫无根据可言。活在自己世界里的人是可悲的,只凭感觉不做详细了解下定论的项目是失败的。

  测试需求越详细,表明对所测软件的了解越深,对所要进行的任务内容越清晰,更有把握保证测试的质量与进度。

  如果把测试活动比作软件生命周期,测试需求相当于软件的需求规格,测试策略相当于软件的架构设计,测试用例相当于软件的详细设计,测试执行相当于软件的编码过程。只是在测试过程中,我们把”软件”两个字全部替换成了”测试”。这样,我们明白了整个测试活动的依据来源于测试需求。

  3. 测试需求的依据与收集

  测试需求通常是以待测对象的软件需求为原型进行分析而转变过来的。但测试需求并不等同于软件需求,它是以测试的观点根据软件需求整理出一个checklist,作为测试该软件的主要工作内容。

  测试需求主要通过以下途径来收集:

  1)  与待测软件相关的各种文档资料。如软件需求规格、Use case、界面设计、项目会议或与客户沟通时有关于需求信息的会议记录、其他技术文档等。

  2)  与客户或系统分析员的沟通。

  3)  业务背景资料。如待测软件业务领域的知识等。

  4)  正式与非正式的培训。

  5)  其他。如果以旧系统为原型,以全新的架构方式来设计或完善软件,那么旧系统的原有功能跟特性成为了有效的测试需求收集途径。

  在整个信息收集过程中,务必确保软件的功能与特性被正确理解。因此,测试需求分析人员必须具备的沟通能力与表达能力。

  4. 测试需求的分析

  目前不少的书籍与网站资料开始重视测试需求的分析,同时也提出了一些测试需求分析的方法。这里也提出一些自己的看法。

  测试需求需要考虑几个层面的因素:

  第一层:测试阶段。系统测试阶段,需求分析更注重于技术层面,即软件是否实现了具备的功能。如果某一种流程或者某一角色能够执行一项功能,那么我们相信具备相同特征的业务或角色都能够执行该功能。为了避免测试执行的冗余,可不再重复测试。而在验收测试阶段,更注重于不同角色在同一功能上能否走通要求的业务流程。因此需要根据不同的业务需要而测试相同的功能,以确保系统上线后不会有意外发生。但是否有必要进行这种大量的重复性质的测试,不过也是见仁见智的做法,要看测试管理者对测试策略与风险的平衡能力了。

  目前,大多数的测试都会在系统测试中完成,验收测试只是对于系统测试的回归。此种情况也是合理的,关键看测试周期与资源是否允许,以及各测试阶段的任务划分。

  第二层:待测软件的特性。不同的软件业务背景不同,所要求的特性也不相同,测试的侧重点自然也不相同。除了需要确保要求实现的功能正确,银行/财务软件更强调数据的精确性,网站强调服务器所能承受的压力,ERP强调业务流程,驱动程序强调软硬件的兼容性。在做测试分析时需要根据软件的特性来选取测试类型,并将其列入测试需求当中。

  第三层:测试的焦点。测试的焦点是指根据所测的功能点进行分析、分解,从而得出 的着重于某一方面的测试,如界面、业务流、模块化、数据、输入域等。目前关于各个焦点的测试也有不少的指南,那些已经是很好的测试需求参考了,在此仅列出业务流的测试分析方法。