现在的位置: 首页 > 综合 > 正文

什么是测试需求

2013年01月12日 ⁄ 综合 ⁄ 共 3178字 ⁄ 字号 评论关闭

 

究竟什么是测试需求

 

         早上,刚打开电脑,看到一封德高望重的大姐给我发来一封邮件,询问什么是“测试需求”,以及测试需求和软件需求之间有什么联系和区别。责任重大,立即行动起来,不能让大姐失望啊。

说实话,这下可把我给难住了。在我的脑海里,根本没有“测试需求”这个概念。我读过与软件测试相关的很多文章、书籍和标准,记忆中,都没有提到过测试需求。于是我到百度百科、wikipedia找,无论中文还是英文,都没有对测试需求做定义。

接着,我用百度、谷歌搜索了一通,发现了几篇文章,话题大致是测试需求的。

尽管题目给人的暗示是:这篇文章将谈测试需求,但我没有找到对测试需求的定义。下面是我看到的几篇有代表性的网络文章,现展示给大家,以分享我的体验。

第一篇:“测试需求定义(参考RUP测试实践)[1]。无论从题目本身,还是从文章的写作,显得都很专业,是我看过的最正式的文章了。但该文只有两个小标题,“如何确定测试工作的范围”和“如何整理测试需求”,避开了对“测试需求”做定义,细读下来,发现作者赋予“测试需求”的含义是“确定测试范围”。通篇文章谈论的也是测试范围的变化以及如何应对:测试范围的检查、评审和变化跟踪等。

第二篇文章是“测试需求&其要点 [3] ”。打开网页,我看见一个小标题赫赫然印入眼帘:“什么是测试需求”,心想:这应该是我要找的答案。但接下来让我很快失望,作者在文中说:“套用软件需求的定义,我们可以说需求是指明测试什么的规格说明。它描述了我们测试系统的行为、特性或属性,是在测试过程中对测试的约束。”我的第一感觉是不知所云,连蒙带猜觉得他将“测试需求”理解成“测试什么”(What to be tested)。带着猜测接着往下读,证明我的猜测是正确的。

第三篇文章,“什么是测试需求[2]”,是网上流传最多。本以为这篇文章能回答的问题,可这篇文章一开始就说:“测试需求的概念比较简单。比方说,对于一个计算平方根的程序,如果输入一个大于或等于零的数,程序可以给出一个结果;如果输入一个小于零的数,程序将指出输入错误。对数值零进行测试;对零非常接近的负数进行测试,这就是两个具体的测试需求。”作者没给出测试需求的定义,只是打了个比方。细看起来,他所说的测试需求,其实是一种测试的设计。作者认为简单的问题,至此还是没有找到答案。

实在没有办法,我去英文的维基百科上搜索一下,在http://en.wikipedia.org/wiki/Main_Page我输入了”Software Testing Requirement”,发现维基百科也没有收录这个词条,是我翻译错了?“软件测试需求”难道不翻译成“Software Testing Requirement”吗?我正纳闷ing

如果真有“软件测试需求”规范的说法,我一定去创建这个词条,抢个头功。

失望,空手而归。但也澄清了一个事实:那就是测试需求不是个规范的概念,连提它的作者也无力给出定义。在头两篇文章作者的认识中,测试需求就是测试范围,那么确定测试范围的工作应在测试计划阶段完成,因为测试计划的任务包括了:the items to be tested, the features to be tested, the testing tasks to be performed [4]。这是IEEE的标准文档里规定的。第三篇作者说的是IEEE标准中的“测试设计”。按照IEEE的标准,测试设计的目的是:

Refines the test approach [defined in the test plan] and identifies the features to be covered by the design and its associated tests. It also identifies the test cases and test procedures, if any, required to accomplish the testing and specifies the feature pass/fail criteria.

我将测试设计目的翻译成如下文字:细化(Refine)测试计划中描述的测试途径(approach),确定要包含的特性(feature)和测试、确定完成测试所用到的测试用例和测试规程(procedure),最后给出测试失败和通过的标准。

也许标准天生就比较晦涩,也许我翻译或理解得有问题,下面我不妨举个实例说明什么是测试设计。

例如:我们要测试一个计算器程序。测试计算器加法功能时,我们要想到测试两个最大的数相加、两个最小的数相加、相加后的结果是2的幂(如256)等,如此这般的思考是测试设计的过程,形成文档就叫做“测试设计规格说明”。下面测试设计规格说明的片段:

         最大可能的值相加:                                 Test case ID#   15326

         对小可能的值相加:                                 Test case ID#   15327

         相加结果是2的幂:                                 Test case ID#   15328

注意,在这个例子中,我们没有写明测试用例的具体的输入/输出值,只是测试用例的引用,这使得《测试设计规格说明》显得简短、明了,便于理解测试者的意图。对每个测试用例在另一个文档(《测试用例规格说明》)中作详细描述。从这个例子中,我们也很清楚地看出,测试设计文档和测试用例是完全不同的两个文档。

据说中国软件测评中心也提到“测试需求规格说明”,我不知道他们这里的“需求”指的是“测试范围”还是“测试设计”,这要看他们内部的定义了。

按本人理解,软件测试确实存在一个需求,即测试需求。而我所理解的测试需求既不是“测试范围”,也不是“测试设计”,而是根据程序文件和质量目标对软件测试活动所提的要求。

众所周知,测试,哪怕只对一个很小的软件,测试都是永无止境的。既然,我们不能在有限的时间、资源范围内做完所有的测试,那么,什么样的测试才满足要求,什么时候可以停止测试呢?这是个非常有意思的问题,一般认为,经过评审的测试计划、测试设计和测试用例执行完毕之后,发现的软件缺陷在事先规定的范围内,产品就可以停止测试了。对测试所做的一定程度的限定,使测试成本和质量在一定程度上达成妥协,就是测试需求。

各个软件公司对测试要求是不一样的。大家也许听到传说,Microsoft要求测试的人员甚至比开发的人员水平高,人数还要多。相信,这比你公司的要求要高。或许我还相信,你所在的公司对测试提到过类似这样的要求:产品发布之前必须经过回归测试(Regression),必须经过性能测试,必须经过验收测试,测试的覆盖面必须达到的百分比,等等。

对测试提出的要求的总和,就是测试需求,我以为。不同的软件有不同的测试需求,不同的用户有不同的测试需求,不同的公司有不同的测试需求。但我相信,测试需求绝不是测试范围,也不是测试设计。

测试需求要视组织的质量目标而定,对关键系统(Critical System)的测试要求就高,对一般目的非关键的商用软件的测试要求就低。

 

参考文献

[1] Jackei. 测试需求定义(参考RUP测试实践) . http://www.cnblogs.com/winterwoo/

[2] Brian Marick. 什么是测试需求. http://www.rjzl.gov.cn/news.asp?id=1526

[3] SAP ABAPer. 测试需求&其要点. http://blog.csdn.net/mygod_cn/

[4] IEEE-SA Standards Board, IEEE-CS “IEEE Standard for Software Test Documentation”

【上篇】
【下篇】

抱歉!评论已关闭.