功能测试与非功能测试

作者:郑文强

时间:2019年7月19日

谈到功能测试和非功能测试,让我们先了解ISTQB参考的质量模型标准:ISO/IEC 25010。在ISTQB FL基础级2011版本中,其参考的质量模型是ISO 9216,而在2018版本中参考的是ISO 25010。具体ISO 25010质量模型框架见文章最后。

测试过程中,经常会将质量特性分为功能和非功能两类。在ISO 25010质量模型中,我们可以将第一项功能适用性(Functional Suitability)看成是功能测试范畴,而将剩下的质量特性看成是非功能测试范畴。

1、功能测试

提到功能测试,首先了解一下什么是功能需求和功能测试的定义:

1)功能需求:指定组件或系统必须能够执行的功能的需求。

2)功能测试:为评估某组件或系统是否符合功能要求而进行的测试。

功能指的是被测对象应该“做什么”。功能需求通常在典型V模型左边输出的工作产品中描述,例如:业务需求说明、系统需求说明、功能说明、用例或用户故事等。功能需求也可能没有文档记录,只是存在于开发人员的头脑中。

典型V模型右边的每个测试级别都需要开展功能测试,尽管它们关注点会不一样,例如:组件测试通常关注在每个组件内部的要求,而集成测试需关注在不同组件之间的接口部分。功能测试考虑的是被测对象的外部行为,因此黑盒测试技术都可以作为获取被测对象的测试条件和测试用例的手段。例如:针对与不同逻辑条件下可以得到不同结果的场景,判定表测试和因果图技术是首选的测试技术。同时通过黑盒测试技术也可以细化前期识别的测试条件、选择测试数据作为输入,以及确定测试输入的组合。

功能测试的完整性可以通过功能覆盖来测量。功能覆盖指的是通过测试执行了某种类型的功能元素的范围,并以所覆盖类型的百分比来表示。例如:假如测试用例覆盖的是被测对象的系统需求,那么就可以计算已测试的需求的百分比;假如测试用例覆盖的是被测对象的接口,可以计算已测试的接口的百分比。为了更好的确定测试的功能覆盖,实现测试用例和被测对象的功能元素之间的可追溯性就很重要(关于可追溯性,可以参考文章:测试过程中的可追溯性)。同时,根据计算的功能覆盖数据,与测试计划中的覆盖目标进行比较,就可以识别出当前在覆盖方面还存在的缺口。

开展功能测试需要测试人员深入了解被测对象的领域和业务知识,例如:软件解决的特定业务问题(例如,石油和天然气行业的地质建模软件)或软件服务的特定作用(例如,提供交互式娱乐的计算机游戏软件)的知识。同时需要一些测试设计和执行技术的支撑。

2、非功能测试

先定义什么是非功能需求和非功能测试:

1)非功能需求:描述组件或系统将如何做它打算做的事情的需求。

2)非功能测试:为评估某组件或系统是否符合非功能需求而进行的测试。

非功能测试是用来评估被测对象的非功能特性,例如易用性、性能效率或安全性。更多关于软件产品质量特性的分类,参见 ISO/IEC 25010标准。非功能测试是测试被测对象运行的“表现如何”。

同样地,典型V模型右边的任何一个测试级别,都应该开展非功能测试。假如条件允许,非功能测试也应该在项目早期尽早介入,例如:参与易用性评审,以尽早发现一些严重非功能缺陷。对于项目的成功而言,在项目后期才发现非功能性缺陷是非常危险的。可以使用黑盒技术帮助识别一些非功能测试的测试条件和测试用例,例如,边界值分析可用于定义性能测试的压力条件。

非功能测试的完整性可以通过非功能覆盖来衡量。非功能覆盖是指通过测试执行某种类型的非功能元素所达到的程度,并且以所覆盖的元素类型的百分比形式来表示。例如,根据移动应用程序的测试和支持的设备之间的可跟踪性,可以计算出通过兼容性测试的设备所占百分比,发现潜在的覆盖缺口。

你可能感兴趣的:(功能测试与非功能测试)