译者 | 李睿
审校 | 孙淑娟
功能测试和非功能测试是对不同类型的软件测试进行分类的流行方法。这两个类别指的是测试过程的本质以及正在测试的内容。如果以前从未深入研究过这两个测试类别,那么需要了解什么是功能测试和非功能测试。
首先,功能测试和非功能测试之间的区分并不是一成不变的,对于某些测试类型来说,对它们进行分类并非易事。其次,功能测试和非功能测试对于软件测试项目的成功都是至关重要的,尽管方式不同。以下将仔细研究功能性需求和非功能性需求之间的区别,这两种类型的测试在软件测试过程中的位置,以及它们如何影响测试成本。
根据国际软件测试资质认证委员会(ISTQB)的定义,功能测试是一种检查组件或整个系统功能的测试。简而言之,功能测试帮助企业确保软件产品的特定功能完全按照预期工作。例如,如果采用车辆对软件产品进行类比,其功能需求将是车辆从A点行驶到B点的能力。换句话说,这就是每次想使用该产品时都希望它完美地做到的事情以及使用该产品的原因。
国际软件测试资质认证委员会(ISTQB)将非功能测试定义为一种处理与系统功能无关组件的测试。非功能测试的范围可能是无穷无尽的,并且很大程度上取决于产品的具体情况。非功能性需求更多地与产品为最终用户工作的方式有关,而不是与预期结果有关。如果以汽车作为类比,非功能性需求可以是任何事物,从汽车最高速度到在汽车收音机上找到所需电台的步骤数。
功能测试和非功能测试之间没有区别,因为这两种类型的测试相互独立。它们对质量保证(QA)工程师来说太重要了。对于大多数质量保证工程师来说,重要的是测试的结果,是一个没有错误、漏洞和不一致的软件产品。
质量保证团队负责人Igor Kovalenko说,“由于我们正在测试面向最终用户的产品,因此非常关心用户接收和交互产品的方式,这反过来又会为客户提供所需的结果。”
功能测试和非功能测试之间存在任何区别的最大原因是客户的便利性。通过明确的类别和分组方法,客户可以更轻松地选择对其项目至关重要的测试类型,并不选择与他们的需求特别相关的测试类型。
如今有几十种功能测试和非功能测试类型,每种类型都有其自身的重要性。因此不要贸然说某些类型的测试对一个项目比其他类型的测试更重要,因为没有适用于每个项目的通用测试集。尽管如此,仍会特别频繁地执行几种类型的功能测试和非功能测试,并且如果执行得当,会对最终产品的质量产生特别显著的影响。以下是其中一些测试类型。
功能测试技术帮助质量保证(QA)团队了解产品是否符合开发人员为其设定的初始要求。每天都会进行多种类型的功能测试,以下是最常见的三种。
非功能测试处理系统作为一个整体的运行方式,而不是它包含的特定功能。当然,系统的每个非功能性测试本身都很重要,但某些类型的非功能性测试适用于任何软件项目:
质量保证(QA)团队负责人Andrii Nikitenko说,“UX测试和UI测试是不同类型的测试,它们不能一起使用。UX是一种非功能测试,而UI是功能测试。没有任何类型的产品可以跳过这些类型的测试。即使产品没有用户界面,最终用户仍然会以某种方式与之交互,这就是为什么UX测试和UI测试都是必不可少的。而且它们也不能互换。例如一个应用程序可以有一个从UI角度看起来很正常的按钮,但它在某些屏幕上显得太小了。当最终用户主要在这些屏幕上使用产品时,用户体验就会受到影响。”
根据软件测试公司的经验,有两种主要类型的客户需要QA服务。第一种类型完全取决于QA团队在流程每个阶段的专业知识,包括测试类型的选择和测试范围。第二种类型有一组需要完成的特定要求和测试类型。但是,在第二种情况下,测试计划中通常存在一些基本类型的测试缺失的风险。这些是有时被忽视但不应该被忽视的三种类型的测试:
制定详细的测试计划和设计测试过程是确保整个测试工作顺利进行,并且系统的功能和非功能方面都是经过测试的方法之一。但是功能性和非功能性测试与测试过程的关系在哪里呢?
一般来说,关于测试过程需要了解的一个关键问题是,没有适合每个项目和场景的通用方法。与其相反,在每一个新的测试项目中,工程师都会考虑几十个不同的因素,从项目的规模到目标受众。
根据软件测试公司的经验,通过查看随代码附带的文档来开始每个测试项目。仅文档就应该提供足够的信息来帮助正确设计测试过程,并确保它没有遗漏任何重要的东西。
但是,在某些情况下,文档缺失或不足。在这种情况下,QA工程师将首先在探索性测试之旅的帮助下进行探索性测试。它通常被视为一种独立的测试技术,不包括在功能或非功能测试类别中。它帮助工程师规划测试过程,并决定需要测试的产品功能和非功能需求。或者,当软件产品具有相对标准的规范和架构时,可以执行基于清单的测试。
一旦探索性测试产生了可观的结果,工程师就可以看到即将到来的测试过程的大局和细节。通常情况下,将会先测试产品的功能,然后再进行非功能方面的测试。然而,这也不是唯一正确的做事方式。在功能测试或探索阶段测试产品的某些非功能方面是可能的。例如,经验丰富的QA工程师已经发现产品的可用性和UX问题,同时仍然定义测试范围。
虽然对软件测试进行分类的最常见方法是将所有测试类型分为功能性测试和非功能性测试,但许多专业的QA工程师现在区分了第三类软件测试,也就是与变更相关的测试。
正如其名字所证明的那样,与更改相关的软件测试仅在对代码进行多次更改后才会发生。这包括冒烟测试、健全性测试、回归测试和重新测试。但是,从软件测试过程的角度来看,与变更相关的测试可以在任何阶段进行,无论是在产品的功能组件和非功能组件更改之后。
执行与变更相关的测试(最重要的是回归测试)可能会让企业的产品发布延迟几周。但是,它是经过良好测试的产品最关键的方面之一。与更改相关的测试可以帮助企业确保产品的功能或非功能方面都不会受到最近代码更改的负面影响,并且不会在没有及时回归测试的情况下再次出现原有的错误。
无论企业是从头开始开发软件项目并最终对其进行测试,还是准备发布最近完成的产品并将软件测试视为未完成项目和已完成项目之间的最终边界,成本都很重要。
对于大多数软件产品所有者来说,测试项目的成本是继测试服务质量之后的下一个大问题。由于大量资源投入到开发过程中,大多数开发人员和产品所有者在测试方面无法承担类似的费用。这就是为什么他们经常想知道功能测试和非功能测试对测试项目总成本的影响的原因。
这里要理解的重要一点是,企业的测试项目的预算不是由其选择的合作模型需要执行的功能和非功能测试来定义的。除了一些出色的测试类型(包括安全测试、UX测试和性能测试)之外,QA工程师不会对特定类型的测试收取更多费用。这就是为什么在预算项目时不应该区分功能测试和非功能测试的原因。
除了影响测试项目成本的最明显因素之外,例如选择的合作模式和项目规模,还有一些其他因素直接影响整体价格。以下在每个测试项目中都以一种或另一种方式出现的五个因素。
QA团队负责人Andrii Nikitenko说,“项目的持续时间取决于产品的复杂性,需求的明确度,团队之间的沟通水平,客户回答问题的准备程度、项目规模、技术范围、平台的种类和屏幕的数量。项目的成本取决于类似的因素。”
投资回报率在软件测试社区中是一个颇具争议的话题。有人说没有确定的方法来计算软件测试的投资回报率,而另一些人甚至声称计算软件测试的投资回报率是一个误区。
在通常情况下,真相就在其中。不幸的是,计算软件测试工作的投资回报非常困难:可以确定测试项目的成本,但无法确切知道它如何影响企业的利润。
就其本身而言,功能性或非功能性软件测试都不会产生利润。但是在及时测试的帮助下,企业可以通过防止软件错误、安全问题、可用性问题和其他对其产品在市场上的地位产生负面影响的因素来提高利润。
那么就投资回报率而言,功能测试和非功能测试有区别吗?如果看一下这两种测试在测试过程中的位置,就会发现功能测试通常比非功能测试发生得更早。越早发现错误,修复它们花费的资源就越少。此外,功能性错误通常更容易定位,尤其是当有足够的文档时。所有这些都使功能测试具有明显的成本效益。
另一方面,非功能测试通常发生在软件产品开发的最后阶段,有时甚至发生在其发布之后。在这一点上,修复错误需要花费更多的时间和费用。此外,非功能性错误通常更难发现,因为它们涉及软件产品操作的更精细方面。
但是,始终牢记不应将非功能测试视为功能测试的次要内容。这些测试类型直接影响企业的软件产品的接受度,因此即使在投资回报率(ROI)与其预期不同的情况下,也不是限制测试工作的理由。
在各种情况下,测试范围都是在本文前面讨论的因素定义的。然而,在大多数情况下,QA工程师对软件产品运行功能测试和非功能测试。这样做是为了使测试过程全面而有效,这将产生一个经过彻底测试的产品,并将故障概率降至最低。
如果谈论的是一个抽象的软件产品,那么确实如此,如果缺乏资源,有时可以缩小测试范围。但是,企业的测试项目仍然需要包括功能测试和非功能测试。
只有在开发不打算与用户交互的产品时,才能完全跳过非功能测试,例如没有用户界面的实用软件产品。即使这样,企业也可能需要测试它的性能、安装、承受不同负载的能力以及其他影响软件产品成功的因素。
对于功能测试的重要性通常不会引起太多争论,因为它直接处理产品的预期功能——而这正是设计它的目的。然而,对于那些刚接触软件开发和测试的人来说,非功能性测试似乎并不重要。此外,由于非功能测试往往是资源密集型的,产品所有者经常怀疑这是否值得投资。
非功能测试不足或缺失的软件产品在市场上的表现永远不会像每个非功能方面都经过尽可能的细节测试的产品那样好。因此,在这里的工作不是试图减少非功能性测试以减少资源消耗,而是找到一个适合企业的需求和预算的QA团队。
QA团队负责人Igor Kovalenko说,“在这个时代,几乎没有任何行业或产品类型能够将非功能测试视为事后的想法,因为产品的每一个新特性都是为最终用户而设计的。”
将测试分为功能性和非功能性只是对软件测试进行分类的一种可能方法,但这是一个非常重要的区别。本文旨在展示功能测试和非功能测试对于企业的软件项目的成功来说至关重要。
如果企业希望其产品按照功能要求工作并受到客户的好评,那么跳过任何一种类型的测试或将其重要性最小化将会是一个最终适得其反的结果。另一方面,企业根据其项目规范和内部资源设计一个全面的测试计划是一种最终会得到回报的策略。
原文标题:Functional vs. Non-functional Testing: Can You Have One Without the Other?,作者:Anna Smith
网站名称:功能测试vs.非功能测试:能否非此即彼地进行选择?
文章网址:http://www.shufengxianlan.com/qtweb/news29/430679.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联