什么是非功能测试

核心提示译者:李睿功能测试和非功能测试是对不同类型的软件测试进行分类的流行方法。这两个类别指的是测试过程的本质以及正在测试的内容。如果以前从未深入研究过这两个测试类别,那么需要了解什么是功能测试和非功能测试。首先,功能测试和非功能测试之间的区分并不

译者:李锐

功能测试和非功能测试是对不同类型的软件测试进行分类的常用方法。这两个类别指的是测试过程的性质和被测试的内容。如果你之前没有深入学习过这两个测试类别,你需要知道什么是功能测试和非功能测试。

首先,功能测试和非功能测试的区分不是一成不变的。对于某些类型的测试,不容易对它们进行分类。其次,功能测试和非功能测试对软件测试项目的成功至关重要,尽管方式不同。下面将仔细研究功能性需求和非功能性需求的区别,这两类测试在软件测试过程中的地位,以及它们如何影响测试成本。

什么是功能测试?

根据国际软件测试资格认证委员会的定义,功能测试是检查组件或整个系统功能的测试。简而言之,功能测试帮助企业确保软件产品的某些功能完全按照预期工作。举个例子,如果用车辆来类比一个软件产品,那么它的功能需求将是车辆从A点行驶到b点的能力,换句话说,这就是我希望这个产品在我每次想使用它的时候都能完美完成的事情,也是我使用这个产品的原因。

什么是非功能性测试?

国际软件测试资格认证委员会将非功能测试定义为一种处理与系统功能无关的组件的测试。非功能测试的范围可能是无止境的,很大程度上取决于产品的具体情况。非功能性需求更多地与产品为最终用户工作的方式有关,而不是与预期的结果有关。如果用汽车做类比,非功能性需求可以是任何东西,从汽车的最大速度到在汽车收音机上找到所需电台的步数。

为什么功能测试和非功能测试有区别?

功能测试和非功能测试没有区别,因为这两种类型的测试是相互独立的。它们对于质量保证工程师来说太重要了。对于大多数质量保证工程师来说,重要的是测试结果,这是一个没有错误、漏洞和不一致的软件产品。

质量保证团队负责人伊戈尔·科瓦连科(Igor Kovalenko)表示,“由于我们正在为最终用户测试产品,我们非常关注用户接收产品和与产品互动的方式,这反过来将为客户提供所需的结果。”

功能测试和非功能测试之间的最大区别是客户的便利性。通过清晰的分类和分组方法,客户可以更容易地选择对他们的项目至关重要的测试类型,而不是那些与他们的需求特别相关的测试类型。

功能测试与非功能测试:主要区别

什么类型的功能测试和非功能测试是最重要的?为什么?

现在功能测试和非功能测试类型有几十种,每一种都有自己的重要性。所以不要急着说某些类型的测试对一个项目来说比其他的更重要,因为没有适用于每个项目的通用测试集。尽管如此,几种功能性测试和非功能性测试仍然会非常频繁地被执行,如果执行得当,它们会对最终产品的质量产生特别重大的影响。以下是一些测试类型。

功能测试

功能测试技术有助于质量保证团队了解产品是否满足开发人员设定的初始需求。每天都要进行各种类型的功能测试。下面是最常见的三种。

用户界面测试。在大多数情况下,图形用户界面是观众与产品互动的唯一方式。错误的界面是阻止用户访问产品的部分功能甚至完全使用产品的致命障碍。从功能验证到拼写,有几十个不同的用户界面方面需要测试。

单元测试。在单元测试的帮助下,质量保证工程师可以尽可能准确地测试新创建或最近更新的软件产品。单元测试可以手动处理最小的代码片段以获得最大的准确性,或者自动处理以获得最大的效率。

安全测试。软件的安全性一直很重要,但随着2019年新冠肺炎的爆发,其重要性达到了历史最高水平。因为风险处于历史最高水平,很多企业在数据安全和品牌忠诚度上承担不起任何安全风险。一些企业专门从事安全测试,但是它也可以作为功能测试包的一部分来完成。

非功能测试

非功能性测试处理系统作为一个整体的运行模式,而不是它所包含的特定功能。当然,系统的每个非功能测试本身都很重要,但是一些类型的非功能测试适用于任何软件项目:

用户体验测试。这种类型的测试有助于开发人员了解产品是否易于最终用户操作。UX测试通常和UI测试一起被提及,但是它们运行在不同层次的用户场景中。虽然用户界面测试确保界面的所有方面都存在并正常工作,但UX测试确保它们都有助于令人满意的用户体验。

质量保证小组的负责人安德里·尼基滕科(Andrii Nikitenko)说,“UX测试和UI测试是不同类型的测试,它们不能一起使用。UX是非功能性测试,而UI是功能性测试。任何类型的产品都不能跳过这些类型的测试。即使产品没有用户界面,最终用户仍然会以某种方式与之交互,这就是为什么UX测试和UI测试都是必不可少的。并且它们不可互换。例如,一个应用程序可以有一个从UI角度看起来很正常的按钮,但是在某些屏幕上它太小了。当终端用户主要在这些屏幕上使用产品时,用户体验就会受到影响。”

性能测试。性能测试是一种测试,用于分析软件产品的应用规模、速度和可靠性。是另一套功能测试,可能包括压力测试、负载测试、配置测试、峰值测试、可扩展性测试等。这些非功能性测试可以确保在任何情况下的稳定性能。

兼容性测试。由于企业软件产品可以在各种平台上使用,兼容性测试是项目中要考虑的最重要的非功能性测试类型之一。QA团队将针对不同类型的硬件、软件、移动设备、操作系统及其版本、浏览器和网络测试企业的应用程序,以确保其性能一致。

有时被忽视但仍然非常重要的测试类型

根据软件测试公司的经验,需要QA服务的客户主要有两类。第一种类型完全依赖于QA团队在过程的每个阶段的专业知识,包括测试类型和测试范围的选择。第二种类型有一组需要完成的特定需求和测试类型。然而,在第二种情况下,通常会有遗漏测试计划中一些基本测试类型的风险。这是三种类型的测试,有时会被忽略,但也不应该被忽视:

安装测试。用户与产品的交互方式吸引了很多关注,但这是在应用程序首次推出之前就开始了。准确地说,当一个应用程序或其他类型的软件产品安装在用户的设备上时,它就会启动。用户在使用过程中遇到的障碍越少,对产品的满意度越高。

本地化测试。很少有软件产品只在单个国家或地区使用。一个企业的产品发布越是覆盖全球,就越需要关注正确的本地化。它涉及到从正确的时间和日期格式和货币设置到遵守各个国家的法律法规的任何事情。

测试。在系统测试的层次结构中,首先是单元测试,然后是集成测试,最后是系统测试。当然,没有人会忽略单元测试来测试产品的各种组件,或者忽略系统测试来理解它们如何相互作用。尽管如此,它仍然是一个集成测试,并且它处理被分组的软件模块,这有时被错误地认为是事后的想法。

功能性和非功能性测试:它们在测试过程中处于什么位置?

制定详细的测试计划,设计测试流程是为了保证整个测试的顺利进行,系统的功能性和非功能性是测试的方法之一。但是功能性和非功能性测试和测试过程的关系在哪里呢?

一般来说,测试过程中需要了解的一个关键问题是,没有适合每个项目和场景的通用方法。相反,在每个新的测试项目中,工程师都会考虑几十个不同的因素,从项目的规模到目标受众。

根据软件测试公司的经验,从查看代码附带的文档开始每个测试项目。文档本身应该提供足够的信息来帮助正确地设计测试过程,并确保它不会遗漏任何重要的东西。

然而,在某些情况下,文件丢失或不足。在这种情况下,QA工程师将首先在探索性测试行程的帮助下进行探索性测试。它通常被认为是一种独立的测试技术,不包括在功能性或非功能性测试的范畴内。它帮助工程师计划测试过程,并决定要测试的产品的功能性和非功能性需求。或者,当软件产品具有相对标准的规范和架构时,可以执行基于清单的测试。

一旦探索性测试产生了可观的结果,工程师就可以看到即将到来的测试过程的全貌和细节。通常会先测试产品的功能,再测试非功能方面。然而,这并不是唯一正确的做事方式。在功能测试或探索阶段测试产品的一些非功能方面是可能的。例如,有经验的QA工程师已经发现了产品可用性和UX问题,同时仍然定义了测试范围。

变更测试及其重要性

虽然最常见的软件测试分类方法是将所有测试类型分为功能测试和非功能测试,但现在很多专业QA工程师区分第三种类型的软件测试,即与变更相关的测试。

顾名思义,与变更相关的软件测试只会在对代码进行多次变更后才会发生。这包括冒烟测试、可靠性测试、回归测试和重新测试。但是,从软件测试过程来看,与变更相关的测试可以在任何阶段进行,无论是在产品的功能组件和非功能组件变更之后。

与变更相关的测试可能会将企业的产品发布延迟数周。然而,它是一个经过良好测试的产品的最关键的方面之一。与变更相关的测试可以帮助企业确保产品的功能性或非功能性方面不会受到最近代码变更的负面影响,并且如果没有及时的回归测试,原来的错误不会再次出现。

功能和非功能测试:成本方面

无论是企业从零开始开发一个软件项目并最终进行测试,还是准备发布最近完成的产品并将软件测试视为未完成项目和完成项目的最终边界,成本都是非常重要的。

功能性和非功能性测试如何影响成本?

对于大多数软件产品所有者来说,测试项目的成本是测试服务质量之后的下一个大问题。因为开发过程中投入了大量的资源,所以大部分开发者和产品负责人都负担不起测试方面类似的费用。这就是为什么他们经常想知道功能测试和非功能测试对测试项目总成本的影响。

这里需要理解的重要一点是,企业测试项目的预算并不是由它所选择的合作模型需要执行的功能性和非功能性测试来定义的。除了一些优秀的测试类型,QA工程师不会对特定类型的测试多收费。这就是为什么在预算项目时,不应该区分功能测试和非功能测试。

影响测试成本的因素

除了影响测试项目成本的最明显的因素,如选择的合作模式和项目规模,还有一些其他因素直接影响整体价格。以下五个因素以这样或那样的方式出现在每个测试项目中。

团队的规模、资历和位置。QA团队的选择是建立一个新的测试项目的最关键的方面之一。团队规模和资历级别背后的逻辑很简单,但团队的位置也很重要。比如在乌克兰雇佣的QA团队,薪资会明显低于美国或西欧的同一个团队。

功能复杂。企业的员工不需要成为软件工程师,但是他们对应用程序的功能了解得越多,就需要越多的资源来进行彻底的测试。例如,在包含数千种产品的电子商务网站上执行测试总是比测试具有单一核心功能的应用程序更昂贵。

和用户界面的复杂性。一个企业的产品可能具有最开创性的功能,但当它与一个无法导航、错误百出或看起来感觉过时的界面一起使用时,它的价值并不高。企业产品的UI元素越多,用户与产品交互的方式就越多,这部分测试的复杂度和成本就越高。

和手动测试的次数。手动测试和自动测试的数量都会影响软件测试项目的成本,但是方式不同。许多QA工程师的共识是,尽管测试自动化的建立成本更高,但从长远来看,它通常被证明更具成本效益,因为测试可以被重用。相比之下,手工测试需要手工进行,所以它的成本不会随着项目的进展而有太大的变化。

功能和非功能测试的数量。功能测试的范围不仅仅是测试产品的功能。单元测试、系统测试和用户验收测试的数量会影响项目的成本。非功能测试也是如此。企业希望进行的安全性、性能、兼容性和其他类型的非功能性测试越彻底,其项目成本就越高。

QA团队负责人Andrii Nikitenko表示,“项目的持续时间取决于产品的复杂程度、需求的清晰程度、团队之间的沟通水平、客户回答问题的准备程度、项目的规模、技术范围、平台的类型和屏幕的数量。项目的成本取决于类似的因素。”

功能和非功能测试的投资回报

投资回报在软件测试社区是一个有争议的话题。有人说软件测试的ROI没有确定的计算方法,有人甚至声称计算软件测试的ROI是错误的。

通常,真相就在其中。不幸的是,计算软件测试的投资回报是非常困难的:你可以确定测试项目的成本,但你无法确切知道它如何影响企业的利润。

至于本身,功能性或非功能性的软件测试都不会产生利润。然而,在及时测试的帮助下,企业可以通过防止软件错误、安全问题、可用性问题和其他对其产品在市场中的地位产生负面影响的因素来提高其利润。

那么在投资回报方面,功能测试和非功能测试有区别吗?如果你看看这两个测试在测试过程中的位置,你会发现功能性测试通常比非功能性测试发生的早。错误发现得越早,修复它们所需的资源就越少。此外,功能性错误通常更容易定位,尤其是当有足够多的文档时。所有这些都使得功能测试具有成本效益。

另一方面,非功能测试通常发生在软件产品开发的最后阶段,有时甚至是在发布之后。此时,修复错误需要更多的时间和费用。此外,非功能性错误通常更难发现,因为它们涉及软件产品操作的更细微方面。

但是,永远记住,非功能性测试不应该被视为功能性测试的次要内容。这些类型的测试直接影响到企业对软件产品的接受程度,所以即使投资回报与其预期不同,也不是限制测试工作的理由。

为了节省成本,可以跳过某些类型的测试步骤吗?

在每种情况下,测试范围都是由本文前面讨论的因素定义的。然而,在大多数情况下,QA工程师对软件产品进行功能测试和非功能测试。这样做是为了使测试过程全面而有效,这将产生一个经过彻底测试的产品,并将失败概率降至最低。

如果你说的是一个抽象的软件产品,那是真的。如果缺乏资源,有时可以缩小测试范围。但是,企业的测试项目仍然需要包括功能测试和非功能测试。

只有在开发不以与用户交互为目的的产品时,才能完全跳过非功能性测试,比如没有用户界面的实用软件产品。即便如此,企业可能需要测试其性能、安装、承受不同负载的能力以及其他影响软件产品成功的因素。

为什么非功能测试在投资时间和成本上和功能测试一样重要?

功能测试的重要性通常不会引起太多争论,因为它直接涉及产品的预期功能——这也是它的设计目的。然而,对于那些刚接触软件开发和测试的人来说,非功能性测试似乎并不重要。此外,由于非功能测试通常是资源密集型的,产品所有者经常怀疑是否值得投资。

非功能性测试不充分或缺失的软件产品在市场上的表现永远不会像那些非功能性方面已经过尽可能详细测试的产品那样好。所以,这里的工作不是试图减少非功能性测试来降低资源消耗,而是找到一个适合企业需求和预算的QA团队。

QA团队负责人伊戈尔·科瓦连科(Igor Kovalenko)说,“在这个时代,几乎没有哪个行业或产品类型可以将非功能测试作为事后的想法,因为产品的每一个新功能都是为最终用户设计的。”

结论

将测试分为功能性和非功能性只是软件测试分类的一种可能方式,但这是一个非常重要的区别。本文旨在说明功能测试和非功能测试对于企业软件项目的成功至关重要。

如果一个企业想要它的产品按照功能需求工作,并且被客户很好地接受,跳过任何类型的测试或者最小化它的重要性将会是最终适得其反的结果。另一方面,根据项目规格和内部资源设计一个全面的测试计划是一个最终会有回报的策略。

 
友情链接
鄂ICP备19019357号-22