了解功能性和非功能性需求之间的区别,这两种类型在软件测试过程中的位置,以及它们对成本的影响
功能测试和非功能测试是对不同类型的软件测试进行分类的最流行的方法。这两个类别指的是测试过程的本质以及正在测试的内容。如果您以前从未深入研究过这两种测试类别,那么关于功能性测试和非功能性测试有两件事情需要了解。
第一,非功能性测试和功能性测试之间的区别并非一成不变,对于某些测试类型,对它们进行分类并非易事。第二,功能性测试和非功能性测试对于您的软件测试项目的成功都是必不可少的,尽管方式不同。今天,我们将更仔细地研究功能性和非功能性需求之间的区别,这两种类型的测试在软件测试过程中的位置,以及它们如何影响测试成本。
什么是功能测试?
根据 ISTQB,功能测试是一种检查组件或整个系统功能的测试类型。简单地说,功能测试可以帮助我们确保软件产品的特定功能正在按照预期的方式工作。例如,如果我们将软件产品与汽车进行比较,功能需求就是它从 A 点到 B 点的能力。换句话说,这就是每次你想使用产品的时候,你所期望的完美无缺的产品,也是你使用这个产品的原因。
什么是非功能性测试?
ISTQB 将非功能性测试定义为一种处理与其功能无关的系统组件的测试类型。非功能性测试的范围可以是完全没有止境的,并且在很大程度上取决于产品的具体情况。非功能性需求更多地与产品为最终用户工作的方式有关,而不是与预期的结果有关。继续我们的汽车类比,非功能性需求可以是任何东西,从车辆可以达到的最大速度到它需要的步骤数量,以找到必要的电台在汽车收音机。
为什么功能测试和非功能测试有区别?
功能性测试和非功能性测试之间没有区别,因为这两种类型的测试彼此独立存在。它也不在那里,因为它对质量保证工程师来说太重要了。对于他们中的大多数人来说,重要的是测试的结果,一个没有错误、漏洞和不一致性的软件产品。
“由于我们正在测试面向终端用户的产品,因此我们非常关心用户对产品的接收和交互方式,这反过来会给客户带来期望的结果。”
Igor Kovalenko 质量保证小组组长
功能性测试和非功能性测试之间存在区别的最大原因是客户端的便利性。有了清晰的分类和分组方法,客户就可以更容易地选择对他们的项目至关重要的测试类型,而不选择那些与他们的需求不太相关的测试类型。功能测试与非功能测试的主要区别
哪些类型的功能测试和非功能测试是最重要的? 为什么?
有几十种功能性和非功能性测试类型,每一种都有其自身的重要性。我们不会冒险说某些类型的测试对于一个项目比其他类型的测试更重要,因为没有适用于每个项目的通用测试集。尽管如此,几种类型的功能性和非功能性测试经常被执行,当正确执行时,对最终产品的质量有特别明显的影响。下面是其中一些测试类型。
功能测试
功能测试技术可以帮助 QA 团队了解产品是否符合开发人员为其设置的初始需求。每天都要执行多种类型的功能测试,但这是最常见的三种。
非功能性测试
非功能性测试处理的是系统作为一个整体运行的方式,而不是它所包含的特定功能。当然,系统的每一个非功能方面本身都很重要,但是一些类型的非功能测试适用于任何软件项目:
”用户体验和用户界面测试是不同类型的测试,它们不能一起使用。UX 是一种非功能性的测试类型,而 UI 是功能性的。没有一种产品可以跳过这些类型的测试。即使产品没有用户界面,最终用户仍然会以某种方式与之交互,这就是为什么用户体验和用户界面测试都是必不可少的。而且它们也不能互换。例如,一个应用程序可以有一个按钮,从用户界面的角度看,它看起来正常,但它在某些屏幕上显得太小。而当终端用户主要是在这些屏幕上使用产品时,用户体验将受到影响。”
Andrii Nikitenko 质量保证小组组长
有时被忽视但仍然非常重要的测试类型
根据我们作为软件测试公司的经验,请求 QA 服务的客户主要有两种类型。第一种类型完全取决于 QA 团队在过程的每个阶段的专业知识,包括测试类型的选择和测试范围。第二种类型有一组需要完成的特定需求和测试类型。然而,在第二种情况下,在测试计划中经常存在一些基本类型的测试缺失的风险。这三种测试有时会被忽视,但不值得被忽视:
功能测试和非功能测试: 它们在测试过程中处于什么位置?
创建详细的测试计划和设计测试过程是确保整个测试工作顺利进行的方法之一,并且确保系统的任何功能性和非功能性方面都得到了测试。但是功能测试和非功能测试在测试过程中处于什么位置呢?
一般来说,关于测试过程需要了解的关键事情之一是,没有适合每个项目和场景的通用方法。相反,在每一个新的测试项目中,工程师都会考虑几十个不同的因素,从项目的规模到目标受众。
在我们20多年的软件测试公司的经验中,我们通过检查随代码而来的文档来开始每个测试项目。文档本身就应该告诉我们足够的信息,以帮助我们正确地设计测试过程,并确保它不会遗漏任何重要的东西。
但是,在某些情况下,缺少文档或文档不足。在这种情况下,我们的质量保证工程师将首先在探索性测试探索性测试的帮助下进行巡回演出。它通常被视为一种独立的测试技术,不包括在功能性或非功能性测试类别中。它帮助工程师制定测试过程,并决定需要测试的产品的功能性和非功能性需求。或者,当软件产品具有相对标准的规范和体系结构时,我们可以执行基于检查表的测试。
一旦探索性测试产生了可观的结果,工程师就可以看到即将到来的测试过程的大局和细节。通常,我们将首先测试产品的功能,然后转向其非功能方面。然而,这也不是唯一正确的做事方式。可以在功能测试期间或在探索阶段测试产品的一些非功能方面。例如,一个经验丰富的 QA 工程师已经能够发现产品的可用性和用户体验问题,同时仍然能够定义测试的范围。
变化相关测试及其重要性
虽然将软件测试分类的最常见方法是将所有测试类型划分为功能性测试和非功能性测试,但是许多专业的 QA 工程师现在将软件测试分为第三类ーー变更相关测试。
正如它们的名称所证明的那样,与变更相关的软件测试只有在对代码进行了许多变更之后才会进行。这包括烟雾测试、健康测试、回归测试测试和重新测试。然而,从软件测试过程的角度来看,与变更相关的测试可以在产品的功能性和非功能性组件变更之后的任何阶段进行。
执行与变更相关的测试ーー最重要的是回归测试测试ーー可能会将产品的发布推迟几周。然而,这是一个经过良好测试的产品最关键的方面之一。与变更相关的测试可以帮助你确保你的产品无论是功能性的还是非功能性的方面都不会因为最近的代码变更而受到负面影响,并且没有旧的 bug 在没有被及时的回归测试检测到的情况下再次出现。
功能测试与非功能测试: 成本的视角
无论你是从零开始开发一个软件项目并最终需要进行测试,还是准备发布一个最近完成的产品并将软件测试视为一个未完成项目和已完成项目之间的最终边界,成本都是非常重要的。
功能测试和非功能测试如何计入成本?
对于大多数软件产品所有者来说,测试项目的成本是继测试服务质量之后的第二大问题。由于在开发过程中投入了如此多的资源,大多数开发人员和产品所有者都无法承担相似的测试费用。这就是为什么他们经常想知道功能性和非功能性测试对测试项目总成本的影响。
这里需要理解的重要一点是,您的测试项目的预算并没有那么多地由功能性和非功能性测试来定义,这些测试需要由您选择的合作模型来执行。除了一些突出的测试类型,包括安全性测试、用户体验测试和性能测试,QA 工程师不会对特定类型的测试收取更高的费用。这就是为什么在编制项目预算时不应该区分功能性测试和非功能性测试。
影响测试成本的因素
除了影响测试项目成本的最明显的因素,如您决定的合作模式和项目规模,还有一些其他因素直接影响总体价格。这就是在每个测试项目中以这样或那样的方式表现出来的五个特征。
“项目的持续时间取决于产品的复杂性、需求的清晰度、团队之间的沟通水平、客户回答问题的准备程度、项目规模、技术范围、平台的多样性以及屏幕的数量。该项目的成本取决于类似的因素。”
Andrii Nikitenko 质量保证小组组长
功能测试和非功能测试的 ROI
在软件测试 区中,投资回 是一个有争议的话题。一些人说没有确定的方法来计算软件测试的 ROI,而另一些人甚至声称软件测试的 ROI 是一个神话。
事实往往介于两者之间。不幸的是,计算您的软件测试工作的投资回 是非常困难的: 您可以确切地知道您的测试项目的成本,但是您不能确切地知道它是如何影响您的利润的。
就其本身而言,无论是功能性的还是非功能性的软件测试都不会产生利润。但是在及时测试的帮助下,您可以通过防止软件错误、安全问题、可用性问题以及其他对您的产品在市场中的地位产生负面影响的因素来增加您的利润。
那么功能性测试和非功能性测试在 ROI 方面有什么区别吗?如果我们看看这两种类型的测试在测试过程中的位置,我们会发现功能性测试通常比非功能性测试发生得更早。我们从 Boehm 定律中知道,越早发现 bug,花在修复它们上的资源就越少。另外,功能性错误通常更容易定位,特别是在有足够的文档的情况下。所有这些都使得功能测试具有显著的成本效益。
另一方面,非功能性测试通常发生在软件产品开发的最后阶段,有时甚至在产品发布之后。在这一点上,修复错误需要更多的时间和金钱。此外,非功能性错误通常更难发现,因为它们处理软件产品操作的细微方面。
然而,您应该始终记住,非功能性测试不应该被视为次于功能性测试。这些测试类型直接影响软件产品的接收,因此即使在 ROI 与您的预期不同的情况下,也不应该限制您的测试工作。
为了省钱,你能跳过一些测试吗?
如果我们谈论的是一个抽象的软件产品,那么是的,如果您缺乏资源,有时可以缩小测试的范围。但是,您的测试项目仍然需要包括功能测试和非功能测试。
你只能在开发一个普通用户无法交互的产品时完全跳过非功能性测试,比如一个没有用户界面的实用程序产品。即使这样,您可能还需要测试它的性能、安装、承受不同负载的能力,以及其他影响软件产品成功的因素。
为什么非功能性测试和功能性测试在投入时间和金钱时一样重要
功能测试的重要性通常不会引起太多争论,因为它直接涉及产品的预期功能ーー设计它的确切目的。然而,对于那些刚刚接触软件开发和测试的人来说,非功能性测试似乎并不那么重要。此外,由于非功能性测试往往是资源密集型的,产品所有者经常想知道它是否是一个值得的投资。
这里的底线很简单: 一个不充分或缺少非功能性测试的软件产品永远不会在市场上表现得像一个每个非功能性方面都被测试到尽可能小的细节的产品那样好。因此,您在这里的工作不是试图减少非功能性测试,以减少资源的使用,而是找到一个完全适合您的需求和预算的 QA 团队。
“在当今时代,几乎没有任何行业或产品类型可以把非功能性测试作为事后的考虑,因为产品的每个新功能都是为最终用户设计的。”
Igor Kovalenko 质量保证小组组长
最后的想法
如果您希望您的产品能够按照功能需求工作,并且受到用户的欢迎,那么跳过任何类型的测试或者最小化它们的重要性都是一个最终会适得其反的决定。另一方面,根据项目的规范和公司的内部资源设计一个全面的测试计划是一个总是有回 的策略。
本人抖音账 :里面有最新最流行的automation devops等技术的系列视频介绍,欢迎大家留言点赞。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!