功能性测试与非功能性测试:只进行一种测试而不进行另一种测试吗

了解功能性和非功能性需求之间的区别,这两种类型在软件测试过程中的位置,以及它们对成本的影响

功能测试和非功能测试是对不同类型的软件测试进行分类的最流行的方法。这两个类别指的是测试过程的本质以及正在测试的内容。如果您以前从未深入研究过这两种测试类别,那么关于功能性测试和非功能性测试有两件事情需要了解。

第一,非功能性测试和功能性测试之间的区别并非一成不变,对于某些测试类型,对它们进行分类并非易事。第二,功能性测试和非功能性测试对于您的软件测试项目的成功都是必不可少的,尽管方式不同。今天,我们将更仔细地研究功能性和非功能性需求之间的区别,这两种类型的测试在软件测试过程中的位置,以及它们如何影响测试成本。

什么是功能测试?

根据 ISTQB,功能测试是一种检查组件或整个系统功能的测试类型。简单地说,功能测试可以帮助我们确保软件产品的特定功能正在按照预期的方式工作。例如,如果我们将软件产品与汽车进行比较,功能需求就是它从 A 点到 B 点的能力。换句话说,这就是每次你想使用产品的时候,你所期望的完美无缺的产品,也是你使用这个产品的原因。

什么是非功能性测试?

ISTQB 将非功能性测试定义为一种处理与其功能无关的系统组件的测试类型。非功能性测试的范围可以是完全没有止境的,并且在很大程度上取决于产品的具体情况。非功能性需求更多地与产品为最终用户工作的方式有关,而不是与预期的结果有关。继续我们的汽车类比,非功能性需求可以是任何东西,从车辆可以达到的最大速度到它需要的步骤数量,以找到必要的电台在汽车收音机。

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

功能性测试和非功能性测试之间没有区别,因为这两种类型的测试彼此独立存在。它也不在那里,因为它对质量保证工程师来说太重要了。对于他们中的大多数人来说,重要的是测试的结果,一个没有错误、漏洞和不一致性的软件产品。

“由于我们正在测试面向终端用户的产品,因此我们非常关心用户对产品的接收和交互方式,这反过来会给客户带来期望的结果。”

Igor Kovalenko 质量保证小组组长

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

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

有几十种功能性和非功能性测试类型,每一种都有其自身的重要性。我们不会冒险说某些类型的测试对于一个项目比其他类型的测试更重要,因为没有适用于每个项目的通用测试集。尽管如此,几种类型的功能性和非功能性测试经常被执行,当正确执行时,对最终产品的质量有特别明显的影响。下面是其中一些测试类型。

功能测试

功能测试技术可以帮助 QA 团队了解产品是否符合开发人员为其设置的初始需求。每天都要执行多种类型的功能测试,但这是最常见的三种。

  • UI 测试。在大多数情况下,图形用户界面是你产品的受众与之互动的唯一途径。错误的界面是一个致命的障碍,阻止用户访问产品的某些特性,甚至完全使用产品。有许多不同的 UI 方面需要测试,从功能验证到拼写
  • QA 工程师在测试新创建或最近更新的软件产品时,可以尽可能精确。单元测试处理最小的代码片段,可以是手动的以获得最大的精度,也可以是自动的以获得最大的效率
  • Security testing. 安全测试Security 在软件系统中一直是重要的,但它的重要性达到了一个 空前的高. 随着2019冠状病毒疾病大流行的开始。由于股价处于历史最高水平,企业承担不起数据安全和品牌忠诚度方面的任何安全风险。一些公司专门从事安全性测试,但它也可以作为功能测试包的一部分来完成
  • 非功能性测试

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

  • 用户体验测试。这种类型的测试有助于开发人员了解产品是否易于最终用户操作。用户体验测试经常和 UI 测试一起提到,但是它们在用户情景的不同层次上运行。同时UI 测试 确保界面的所有方面都在那里并且正常工作,用户体验测试确保它们都是为了一个令人满意的用户旅程
  • ”用户体验和用户界面测试是不同类型的测试,它们不能一起使用。UX 是一种非功能性的测试类型,而 UI 是功能性的。没有一种产品可以跳过这些类型的测试。即使产品没有用户界面,最终用户仍然会以某种方式与之交互,这就是为什么用户体验和用户界面测试都是必不可少的。而且它们也不能互换。例如,一个应用程序可以有一个按钮,从用户界面的角度看,它看起来正常,但它在某些屏幕上显得太小。而当终端用户主要是在这些屏幕上使用产品时,用户体验将受到影响。”

    Andrii Nikitenko 质量保证小组组长

  • 性能测试. .性能测试既是一种分析软件产品的应用程序大小、速度和可靠性的测试,也是一组功能测试,其中可能包括压力测试、负载测试、配置测试、尖峰测试、可伸缩性测试和其他几种类型的测试。这些非功能性测试确保在任何情况下性能稳定
  • 相容性测试. 考虑到你的软件产品可以在多种平台上使用,相容性测试测试是项目中最基本的非功能性测试类型之一。QA 团队将针对不同类型的硬件、软件、移动设备、操作系统及其版本、浏览器和 络测试您的应用程序,以确保它们的性能保持一致
  • 有时被忽视但仍然非常重要的测试类型

    根据我们作为软件测试公司的经验,请求 QA 服务的客户主要有两种类型。第一种类型完全取决于 QA 团队在过程的每个阶段的专业知识,包括测试类型的选择和测试范围。第二种类型有一组需要完成的特定需求和测试类型。然而,在第二种情况下,在测试计划中经常存在一些基本类型的测试缺失的风险。这三种测试有时会被忽视,但不值得被忽视:

  • 安装测试。人们对用户与产品交互的方式给予了很多关注,但这种方式在应用程序首次启动之前就已经开始了。确切地说,当应用程序或其他类型的软件产品安装在用户的设备上时,它就开始了。用户在这个过程中遇到的障碍越少,他们对产品就越满意
  • 本地化测试。很少有软件产品,例如 站或应用程序,只打算在一个国家或地区内使用。随着产品的发布,您将覆盖的世界范围越广,您就越需要关注适当的本地化。它涉及到从正确的时间和日期格式和货币设置到遵守每个州的法律法规的任何事情
  • 集成测试。在系统测试的层次结构中,单元测试是第一位的,然后是集成测试,最后是系统测试。当然,没有人会忽视单元测试来测试产品或系统测试的各个组件,以了解它们如何彼此交互。尽管如此,它的集成测试,处理软件模块拉入组,有时被错误地视为一个事后
  • 功能测试和非功能测试: 它们在测试过程中处于什么位置?

    创建详细的测试计划和设计测试过程是确保整个测试工作顺利进行的方法之一,并且确保系统的任何功能性和非功能性方面都得到了测试。但是功能测试和非功能测试在测试过程中处于什么位置呢?

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

    在我们20多年的软件测试公司的经验中,我们通过检查随代码而来的文档来开始每个测试项目。文档本身就应该告诉我们足够的信息,以帮助我们正确地设计测试过程,并确保它不会遗漏任何重要的东西。

    但是,在某些情况下,缺少文档或文档不足。在这种情况下,我们的质量保证工程师将首先在探索性测试探索性测试的帮助下进行巡回演出。它通常被视为一种独立的测试技术,不包括在功能性或非功能性测试类别中。它帮助工程师制定测试过程,并决定需要测试的产品的功能性和非功能性需求。或者,当软件产品具有相对标准的规范和体系结构时,我们可以执行基于检查表的测试。

    一旦探索性测试产生了可观的结果,工程师就可以看到即将到来的测试过程的大局和细节。通常,我们将首先测试产品的功能,然后转向其非功能方面。然而,这也不是唯一正确的做事方式。可以在功能测试期间或在探索阶段测试产品的一些非功能方面。例如,一个经验丰富的 QA 工程师已经能够发现产品的可用性和用户体验问题,同时仍然能够定义测试的范围。

    变化相关测试及其重要性

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

    正如它们的名称所证明的那样,与变更相关的软件测试只有在对代码进行了许多变更之后才会进行。这包括烟雾测试、健康测试、回归测试测试和重新测试。然而,从软件测试过程的角度来看,与变更相关的测试可以在产品的功能性和非功能性组件变更之后的任何阶段进行。

    执行与变更相关的测试ーー最重要的是回归测试测试ーー可能会将产品的发布推迟几周。然而,这是一个经过良好测试的产品最关键的方面之一。与变更相关的测试可以帮助你确保你的产品无论是功能性的还是非功能性的方面都不会因为最近的代码变更而受到负面影响,并且没有旧的 bug 在没有被及时的回归测试检测到的情况下再次出现。

    功能测试与非功能测试: 成本的视角

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

    功能测试和非功能测试如何计入成本?

    对于大多数软件产品所有者来说,测试项目的成本是继测试服务质量之后的第二大问题。由于在开发过程中投入了如此多的资源,大多数开发人员和产品所有者都无法承担相似的测试费用。这就是为什么他们经常想知道功能性和非功能性测试对测试项目总成本的影响。

    这里需要理解的重要一点是,您的测试项目的预算并没有那么多地由功能性和非功能性测试来定义,这些测试需要由您选择的合作模型来执行。除了一些突出的测试类型,包括安全性测试、用户体验测试和性能测试,QA 工程师不会对特定类型的测试收取更高的费用。这就是为什么在编制项目预算时不应该区分功能性测试和非功能性测试。

    影响测试成本的因素

    除了影响测试项目成本的最明显的因素,如您决定的合作模式和项目规模,还有一些其他因素直接影响总体价格。这就是在每个测试项目中以这样或那样的方式表现出来的五个特征。

  • 团队的规模,资历和位置。选择一个 QA 团队是建立一个新的测试项目的最关键的方面之一,包括它的成本。团队规模和资历水平背后的逻辑很简单,但团队的位置也很重要。例如,在乌克兰雇佣一个质量保证团队比在美国或西欧雇佣一个质量保证团队的成本要低得多
  • 功能复杂性。你不需要成为一个软件工程师来理解一个应用程序拥有越多的特性,它就需要越多的资源来进行彻底的测试。例如,在电子商务 站上使用数千种产品进行测试总是比使用单一核心特性(如闹钟)测试应用程序更昂贵
  • 用户体验和用户界面的复杂性。您的产品可能具有最具开创性的功能,但如果与一个无法导航、充满 bug 或外观过时的界面配对,那么它就没有多大价值。产品拥有的 UI 元素越多,用户与产品交互的方式越多,这部分测试就越复杂和昂贵
  • 手动及自动化测试自动化测试.手工和自动化测试的数量都会影响软件测试项目的成本,但是方式不同。许多 QA 工程师的共识是,尽管测试自动化的设置成本更高,但从长远来看,它通常被证明更具成本效益,因为测试可以重用。相比之下,手工测试需要手工执行,因此其成本不会随着项目的进展而发生太大变化
  • 功能测试和非功能测试的数量。功能测试的范围远远超过了测试产品的功能。单元测试、系统测试和 用户验收测试用户验收测试。会影响工程的成本。非功能性测试也是如此。您希望对安全性、性能、兼容性和其他类型的非功能性测试做得越彻底,您的项目成本就越高
  • “项目的持续时间取决于产品的复杂性、需求的清晰度、团队之间的沟通水平、客户回答问题的准备程度、项目规模、技术范围、平台的多样性以及屏幕的数量。该项目的成本取决于类似的因素。”

    Andrii Nikitenko 质量保证小组组长

    功能测试和非功能测试的 ROI

    在软件测试 区中,投资回 是一个有争议的话题。一些人说没有确定的方法来计算软件测试的 ROI,而另一些人甚至声称软件测试的 ROI 是一个神话。

    事实往往介于两者之间。不幸的是,计算您的软件测试工作的投资回 是非常困难的: 您可以确切地知道您的测试项目的成本,但是您不能确切地知道它是如何影响您的利润的。

    就其本身而言,无论是功能性的还是非功能性的软件测试都不会产生利润。但是在及时测试的帮助下,您可以通过防止软件错误、安全问题、可用性问题以及其他对您的产品在市场中的地位产生负面影响的因素来增加您的利润。

    那么功能性测试和非功能性测试在 ROI 方面有什么区别吗?如果我们看看这两种类型的测试在测试过程中的位置,我们会发现功能性测试通常比非功能性测试发生得更早。我们从 Boehm 定律中知道,越早发现 bug,花在修复它们上的资源就越少。另外,功能性错误通常更容易定位,特别是在有足够的文档的情况下。所有这些都使得功能测试具有显著的成本效益。

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

    然而,您应该始终记住,非功能性测试不应该被视为次于功能性测试。这些测试类型直接影响软件产品的接收,因此即使在 ROI 与您的预期不同的情况下,也不应该限制您的测试工作。

    为了省钱,你能跳过一些测试吗?

    如果我们谈论的是一个抽象的软件产品,那么是的,如果您缺乏资源,有时可以缩小测试的范围。但是,您的测试项目仍然需要包括功能测试和非功能测试。

    你只能在开发一个普通用户无法交互的产品时完全跳过非功能性测试,比如一个没有用户界面的实用程序产品。即使这样,您可能还需要测试它的性能、安装、承受不同负载的能力,以及其他影响软件产品成功的因素。

    为什么非功能性测试和功能性测试在投入时间和金钱时一样重要

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

    这里的底线很简单: 一个不充分或缺少非功能性测试的软件产品永远不会在市场上表现得像一个每个非功能性方面都被测试到尽可能小的细节的产品那样好。因此,您在这里的工作不是试图减少非功能性测试,以减少资源的使用,而是找到一个完全适合您的需求和预算的 QA 团队。

    “在当今时代,几乎没有任何行业或产品类型可以把非功能性测试作为事后的考虑,因为产品的每个新功能都是为最终用户设计的。”

    Igor Kovalenko 质量保证小组组长

    最后的想法

    如果您希望您的产品能够按照功能需求工作,并且受到用户的欢迎,那么跳过任何类型的测试或者最小化它们的重要性都是一个最终会适得其反的决定。另一方面,根据项目的规范和公司的内部资源设计一个全面的测试计划是一个总是有回 的策略。

    本人抖音账 :里面有最新最流行的automation devops等技术的系列视频介绍,欢迎大家留言点赞。

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2022年5月16日
    下一篇 2022年5月16日

    相关推荐