李 英,薛 岚
(江西信息应用职业技术学院 计算机技术系,南昌 330043)
软件测试技术之功能测试方法探讨与分析
李英,薛岚
(江西信息应用职业技术学院计算机技术系,南昌330043)
摘要:软件产品随着计算机信息产业技术的迅速发展而规模越来越大,软件测试技术也随之发展,它是贯穿于整个软件项目开发的过程检验软件产品质量的最有效的方法之一,主要确认产品是否完成需求规格说明书中所设定的功能。本文主要讨论了软件测试技术的黑盒测试方法的功能测试,功能测试也可以被称之为正确性测试,它主要检查软件产品的功能是否能够满足用户的要求。由于功能测试牵涉到了软件产品的正确性,所以功能测试在整个软件测试技术中也是极为重要的。
关键字:软件测试技术;软件产品质量;功能测试;黑盒测试;正确性
软件测试技术黑盒测试—功能测试也可以称之为正确性测试。在测试过程中,把程序比作一个看不清、打不开的黑匣子,在完全不考虑程序的内部情况的前提下,测试人员只对程序的外部进行功能性测试。在进行功能性测试时,只是通过输入数据、操作数据、输出结果来检验软件系统是否能够按照需求规格说明书中用户所要求的功能正常使用。
功能测试不可能把所有的输入都作为测试用例来进行穷举测试,所以我们必须从无限的输入数据中选出极具有典型的测试数据来进行测试。功能测试的方法有很多种,其中有等价类划分法、边界值分析法、因果图法、错误推测法、场景分析法等等。下面介绍几种常用的功能测试方法:等价类划分法、边界值分析法、错误推测法和因果图法。
2.1等价类划分
等价类的划分根据程序的需求规格说明可以分成两种不同等价类的情况:
(1)有效等价类:是指有意义的,合法的输入数据构成的集合。
(2)无效等价类:是指无意义的,非法的输入数据构成的集合。
在设计测试用例时,要在输入域中分别对有效区域和无效区域进行有效等价类和无效等价类的设计;如何进行正确的等价类划分?划分等价类时有如下五个原则:
(1)如果输入的条件是一个取值的范围,那么则可以划分成一个有效等价类(合法值,即取值合法的区域内)和两个无效等价类(非法值,即取值的区域两端外)。
(2)如果输入的条件含有某种条件,比如说“必须如何”等,或者如果是有一组输入值的集合,那么则可以划分成一个有效等价类(满足必须条件的所有值或输入值的集合)和一个无效等价类(不满足必须条件的所有值和除输入值集合之外的所有值)。
(3)如果输入条件是一个“True”或“False”的布尔值,那么则可以划分一个有效等价类(布尔值为True)和一个无效等价类(布尔值为False)。
针对基于信号处理的滚动轴承复合故障诊断难的问题,提出一种基于NCA的滚动轴承复合故障智能诊断方法.为提高NCA的分类正确率及效率,用常规时域特征提取方法,对滚动轴承不同运行状态的信号进行特征提取,将提取后的特征向量作为NCA的训练及测试样本,取得理想的分类效果.通过滚动轴承3种复合故障振动数据及正常状态数据,验证了所述方法的有效性.此外,通过与PCA分类效果对比,证明了所述方法的优越性,具有更高的分类正确率.
(4)如果输入条件是程序对一组数据值要进行分别处理时,也就是程序定义了一组数据输入的值,那么则N个有效等价类(每一个输入值)和一个无效等价类(所有不允许的输入值的一组集合)。
(5)如果输入条件规定了一系列必须要遵守的规则,那么则可以划分一个有效等价类(满足所有要遵守的规则)和N个无效等价类(从若干个不同角度违反规则)。
等价类划分完之后就可以建立等价类表,最后从划分出的等价类表中设计选择合适的测试用例。
输入条件有效等价类无效等价类………………………………
2.2边界值分析法
边界值分析法是对输入值临界情况的一种考虑,它可以认为是对等价类划分法的一种补充,也可以另外一个层面上来理解,也就是等价类划分法中的一种特殊情况。
程序输入值的数据类型可以有各种类型,例如数值、字符、位置、数量、速度、地址、尺寸等,这些类型都会包含确定的边界,所以边界值分析法应考虑边界的情况,即临界的值;此测试方法如果仅仅测试边界线上的最后一个合法数据点往往是不够充分的,它还应测试刚超过边界的非法数据。
2.3错误推测法
错误推测法是通过测试人员的经验和直觉推测程序中可能存在的各种错误,然后再根据所推测的错误设计具有针对性的测试用例。
2.4因果图法
在一般情况下,因果法用来检查需求规格说明书中所定义的输入条件的各种组合情况,它是一种利用图解的方法来解释因与果之间的关系,基本符号通常有Ci(表原因)、Ei(表结果)和结点(有状态0和1),其中原因和结果之间存在恒等、非、或和与四种关系;而原因与原因之间与结果与结果之间存在的约束条件有E(互斥)、I(包含)、O(唯一)、R(要求)和M(屏蔽)五种条件。
利用因果图法设计测试用例的步骤如下:
(1)根据软件需求规格说明书中所描述的内容列出哪些是原因,哪些是结果,并给每条原因和每条结果分别赋予唯一的标识符。
(2)依据软件需求规格说明书中所描述的语义分析原因与结果的四种关系以及原因与原因、结果与结果之间所对应的约束条件,并画出因果图。
(3)在因果图上标识出哪些原因与原因,原因与结果之间不可以出现的情况。
(4)把因果图转换成判定表。
(5)根据判定表的每一列分别设计测试用例。
通过上述主要的四种功能测试方法的学习,我们不难发现功能测试的优缺点。
优点:(1)功能测试相对白盒测试比较简单,因为它不需要了解程序的内部代码的实现过程;(2)功能测试是基于需求规格说明书的文档测试,也是站在用户的角度出发的测试,它能够很清楚地了解用户需要哪些功能,以及可能会遇到哪些问题;(3)功能测试是基于文档的测试,即软件需求规格说明书;(4)功能测试做自动化测试比较方便,可以大大的节约人力成本。
缺点:(1)经验表明,功能测试大概只能覆盖到总代码的30%,因此功能测试代码覆盖率低;(2)自动化测试的重用性低。
因此,要对一个软件产品做一个全面的测试时,仅仅运用功能测试方法是远远不够的,要功能和结构测试相结合,使软件产品的质量得到最大的保证。
参考文献:
[1]朱少民,软件测试方法和技术[M].北京:清华大学出版社,2005.
[2]张向宏主编.软件测试理论与实践教程[M].北京:人民邮电出版社,2009.